Skip to content

feat: add "Open in Flashpoint" game action#3845

Merged
gantoine merged 4 commits into
masterfrom
feat/flashpoint-launch-action
Jul 20, 2026
Merged

feat: add "Open in Flashpoint" game action#3845
gantoine merged 4 commits into
masterfrom
feat/flashpoint-launch-action

Conversation

@gantoine

Copy link
Copy Markdown
Member

Description
Explain the changes or enhancements you are proposing with this pull request.

Adds a v2 game action, Open in Flashpoint, that launches a title in the locally installed Flashpoint launcher.

When a ROM has a flashpoint_id (its Flashpoint game UUID, already present on the ROM schema), the action hands that UUID to the OS flashpoint://<uuid> protocol handler. The launch uses a synthesized, self-removing <a> element rather than window.open, so no blank tab is left behind when the handler takes over. The button/menu item only appears when the ROM actually has a flashpoint_id.

Changes:

  • useGameActions composable: new canOpenInFlashpoint gate and openInFlashpoint() handler.
  • GameActionBtn.vue: new "flashpoint" action + preset (mdi-rocket-launch-outline).
  • GameActions.vue and GameActionsList.vue: render the action when available.
  • Added the rom.open-in-flashpoint key to all 18 locales (English value; translators can localize later).

No backend changes are needed; flashpoint_id is already exposed on the ROM schema.

This is a frontend-v2-only feature, so it is gated behind the v2 UI.

AI assistance disclosure: This PR was implemented with AI assistance (Claude Code). The feature was reimplemented against the latest master, and all code and locale entries were AI-generated and human-reviewed.

Checklist
Please check all that apply.

  • I've tested the changes locally
  • I've updated relevant comments
  • I've assigned reviewers for this PR
  • I've added unit tests that cover the changes

Screenshots (if applicable)

🤖 Generated with Claude Code

Adds a v2 game action that hands a ROM's flashpoint_id to the OS
`flashpoint://` protocol handler so the locally installed Flashpoint
launcher starts the title. The action only appears when the ROM has a
flashpoint_id.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 20, 2026 01:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@greptile-apps

greptile-apps Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds an Open in Flashpoint action to the v2 interface. The main changes are:

  • Adds a flashpoint:// launch handler and availability gate.
  • Adds the action to the game action bar and overflow menu.
  • Adds the action label to all supported locales.

Confidence Score: 4/5

The launch URI needs input validation before merging.

  • The UI wiring and reactive ROM access follow existing action patterns.
  • The backend permits non-UUID values, while the new launch path assumes every non-empty value is a valid identifier.
  • URI delimiters in a stored value can make Flashpoint receive the wrong game ID.

frontend/src/v2/composables/useGameActions/index.ts

Important Files Changed

Filename Overview
frontend/src/v2/composables/useGameActions/index.ts Adds the Flashpoint availability check and protocol launch handler; arbitrary stored IDs can produce malformed launch URIs.
frontend/src/v2/components/GameActions/GameActionBtn.vue Adds the Flashpoint action type, icon, label, and click callback.
frontend/src/v2/components/GameActions/GameActions.vue Conditionally adds the labeled Flashpoint button to the main action group.
frontend/src/v2/components/GameActions/GameActionsList.vue Conditionally adds the Flashpoint action to the overflow menu.
frontend/src/locales/*/rom.json Adds the Open in Flashpoint label to all 18 locale catalogs.

Fix All in Claude Code

Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
frontend/src/v2/composables/useGameActions/index.ts:292
**Unvalidated ID Changes Launch URI**

The ROM update API can store any non-empty string in `flashpoint_id`, but this line inserts that value directly into the URI. A stored value such as `game#variant` or `game?variant` is parsed as a fragment or query, so Flashpoint receives the wrong identifier and the enabled action silently fails. Validate the value as a UUID before exposing and launching this action.

Reviews (1): Last reviewed commit: 23ff801 | Re-trigger Greptile

Comment thread frontend/src/v2/composables/useGameActions/index.ts
gantoine and others added 3 commits July 19, 2026 22:15
The ROM update API accepts any non-empty string in flashpoint_id. A value
containing `#` or `?` would be parsed as a URI fragment/query, launching the
wrong title. Gate both the action's visibility and the launch on a UUID match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gantoine
gantoine merged commit 3aa774f into master Jul 20, 2026
12 checks passed
@gantoine
gantoine deleted the feat/flashpoint-launch-action branch July 20, 2026 02:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants