Repository navigation
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Note
Re-lands #5358 (
aaf6a4e17), which was reverted in #5366. It is the same change, cherry-picked ontomasterwith Sam Dornan kept as the commit author.Games matched to a Steam app (
steam_idset by the Steam metadata provider, a(steam-N)filename tag, or a manual match) get a new Open in Steam action. It appears as a button in the game's action row (with the Steam logo, next to Flashpoint's) and as an item in the More menu. Clicking it openssteam://run/<appid>, which hands the game to the Steam client on the device the browser is running on.useGameActionsexposescanOpenInSteam/openInSteam. It only offers the action for a positive integer app ID, so a bad value never turns into a malformed URL.openAppLink(href)helper, used by both actions.rom.open-in-steamkey, translated in all 18 locales.Known limits, the same as the Flashpoint action:
This is the first step toward importing a user's Steam library. Imported games will have no file on disk, so this action will be how they're launched.
Checklist
Local verification:
vue-tsc --build,trunk check, the fullappVitest project (338 files, 3237 tests),npm run build, and both i18n checks all pass. In a browser against a local backend: the Steam-matched game shows the button and menu item in both themes, the SNES game shows neither, a click sends exactlysteam://run/220, and the button sits in the Tab order between "Copy download link" and "Favorite", with a visible focus ring.Screenshots (if applicable)
Screenshots of the action row (dark and light), the More menu entry and the keyboard focus ring were captured during the browser pass. They'll be attached in a follow-up edit, since the session that opened this PR could not upload images.
AI assistance
This PR was written by Claude Code (code, tests, translations and this description), at the request of and reviewed by the contributor.
Generated by Claude Code
🤖 Generated with Claude Code