Skip to content

Add "Tachyon" (unstable) release stream#33162

Merged
peppy merged 5 commits intoppy:masterfrom
smoogipoo:photon-release
May 19, 2025
Merged

Add "Tachyon" (unstable) release stream#33162
peppy merged 5 commits intoppy:masterfrom
smoogipoo:photon-release

Conversation

@smoogipoo
Copy link
Copy Markdown
Contributor

@smoogipoo smoogipoo commented May 16, 2025

Supersedes/closes ppy/osu-deploy#183
Supersedes/closes #30706

Inspired by ppy/osu-deploy#183 (comment), this is my take at adding a "Photon" (beta) release stream. Unlike the implementation above, this one only relies on the pre-release flag which I believe to be advantageous:

  • We don't have to upkeep multiple concurrent release streams. All existing tooling continues to work without change as this is only a flag on the releases page itself. This also includes osu!web and the README, both of which link to releases/latest and will continue to link to the latest non-pre-release version.
    image
  • We're not locked into this. If we decide this isn't working for us we can also revert the change and delete the pre-release versions without worrying about people being stuck on streams and having to rename streams. If later down the track we want to add a second beta stream (i.e. stable/beta/ce), we can decide how to handle it at that point in time. If we want to use the old-style stream naming, then we can also do that.
2025-05-16.21-43-11.mp4

Notably, we should do one release prior to deploying any super experimental stuff (Satori GC) so that people have the Photon setting in the dropdown.

@peppy peppy changed the title Add "Photon" release stream Add "Tachyon" release stream May 17, 2025
@peppy peppy changed the title Add "Tachyon" release stream Add "Tachyon" (unstable) release stream May 17, 2025
private void onReleaseStreamChanged()
{
updateManager = new UpdateManager(new GithubSource(@"https://github.com/ppy/osu", null, false), new UpdateOptions
updateManager = new UpdateManager(new GithubSource(@"https://github.com/ppy/osu", null, releaseStream.Value == ReleaseStream.Tachyon), new UpdateOptions
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this safe? Spawning a new update manager every time the config setting is changed. Won't the old one still continue its processing?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It probably won't cause any issues but I suppose we can make this a little bit safer.

@pull-request-size pull-request-size bot added size/L and removed size/M labels May 17, 2025
@peppy peppy force-pushed the photon-release branch from a312557 to b6ce627 Compare May 17, 2025 18:58
@peppy peppy closed this May 17, 2025
@peppy peppy reopened this May 17, 2025
@peppy
Copy link
Copy Markdown
Member

peppy commented May 17, 2025

Ignore the close, misclick button.

I'd like to add something to ensure that the release stream is restored to Lazer on reinstalling the game (over an existing install).

Seems the best way may be to set a static IsFirstRun on OsuGameDesktop from

app.WithFirstRun(_ => WindowsAssociationManager.InstallAssociations());
, and then write to the config?

@Susko3
Copy link
Copy Markdown
Member

Susko3 commented May 17, 2025

I'd like to add something to ensure that the release stream is restored to Lazer on reinstalling the game (over an existing install).

Wouldn't this make installing Tachyon over an existing install change the stream to Lazer? I guess the bigger problem is how does an installed game know if it's from a Lazer or a Tachyon release stream.

@peppy
Copy link
Copy Markdown
Member

peppy commented May 18, 2025

I guess setting a build-time flag would make the implementation simpler, for sure. Or even basing this on a suffix in the version string.

@smoogipoo
Copy link
Copy Markdown
Contributor Author

smoogipoo commented May 18, 2025

This PR avoids using build-time flags or suffixes to not require deploy (including auth) changes, and honestly who knows what else (likely another osu!web release stream too, for instance). We couldn't use the pre-release flag at all because you wouldn't be able to promote a version to the stable stream.

Wouldn't this make installing Tachyon over an existing install change the stream to Lazer?

That's fine by me. The releases page is chronologically ordered so I wouldn't want players entering directly into Tachyon in the first place if they happen to accidentally download the pre-release version.

@peppy
Copy link
Copy Markdown
Member

peppy commented May 18, 2025

Yeah I'm not too fussed about users downloading the prerelease directly (they probably shouldn't). But I'd still like a user to be able to recover by installing non-prerelease over the top, as I originally mentioned. Are you okay with a static hacky approach to that?

@smoogipoo
Copy link
Copy Markdown
Contributor Author

I don't think it needs to be a static on the game class. Can be a static in Program and passed through.

@peppy peppy self-requested a review May 18, 2025 09:49
@peppy
Copy link
Copy Markdown
Member

peppy commented May 18, 2025

I've tested d19e65b in various scenarios and it looks to work as expected.

@smoogipoo requesting your re-check on my changes.

Comment on lines +189 to +200
app.WithFirstRun(_ => WindowsAssociationManager.InstallAssociations());
app.WithFirstRun(_ =>
{
isFirstRun = true;
WindowsAssociationManager.InstallAssociations();
});
Copy link
Copy Markdown
Contributor Author

@smoogipoo smoogipoo May 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe you'll want to put this in the parent method, because as-is this will only run on Windows.

i.e. I think it should be fine to:

app.WithFirstRun(_ => isFirstRun = true);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, good catch.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've tested on macOS and it doesn't seem that this code will run on re-"install". Which makes sense since there's no installer.

I guess it is what it is for now and the user will have to switch their release stream.

@peppy peppy force-pushed the photon-release branch from d19e65b to b0c0e8b Compare May 18, 2025 12:45
@peppy peppy force-pushed the photon-release branch from 0948df0 to 9ad5716 Compare May 19, 2025 05:55
@peppy peppy merged commit c339977 into ppy:master May 19, 2025
8 of 9 checks passed
@peppy peppy deleted the photon-release branch June 7, 2025 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants