Skip to content

Add "Download missing" action to the platform list - #271

Open
nixxou wants to merge 1 commit into
rommapp:mainfrom
nixxou:feature/download-missing-platform
Open

Add "Download missing" action to the platform list#271
nixxou wants to merge 1 commit into
rommapp:mainfrom
nixxou:feature/download-missing-platform

Conversation

@nixxou

@nixxou nixxou commented Sep 2, 2026

Copy link
Copy Markdown

What

Adds a Download missing action to the home platform list. With a platform focused, R1 downloads every game of that platform that isn't on the device yet.

  • Gathers the not-yet-downloaded games for the focused platform (from cache; refreshes from the server if the cache is empty)
  • Confirmation modal: Download N missing game(s) for X?
  • Hands off to the existing DownloadScreenDownloadManager, so the progress modal, cancel, and artwork/unzip/gamelist handling are all reused
  • Result modal: Downloaded N of M game(s).

Why

Today you can only download one game at a time, or hand-pick a multi-selection in the game list. "Give me everything new for this system" means a lot of scrolling and tapping; this is one gesture from the screen you're already on.

Notes / decisions

  • Key: R1 via TertiaryActionButton — free on this screen and present on Miyoo (Select is taken by reorder).
  • Kid mode: action + footer hint hidden.
  • No per-row cost: the missing set is computed only on the R1 press, for the one focused platform. The home list's load path is unchanged — nothing scans every platform's library on open.
  • "Collections" row: no-op (just redraws the list).
  • i18n: active.en.toml updated. Parameterised strings use %d/%s + fmt.Sprintf (same as ui/bios_download.go) so they render correctly even for locales that haven't picked up the new keys yet. Happy to run task i18n / add translations_todo entries if you'd prefer that in-PR.
  • Follows existing patterns: executeMultiDownloadUI / executeDownloadUI in app/helpers.go, action enum + transition case in app/transitions.go.

Testing

  • go build ./..., cross-compiled for muOS (arm64) via Docker — green
  • go test ./ui/... — new TestMissingGames (single-file / multi-file / missing-slug)
  • On-device (muOS, French locale): confirm modal, progress + cancel, files land in the mapped rom dir, cursor restored after, kid mode hides it

Per the contributing guide I'm happy to take the UX discussion to Discord first (key choice, whether this also belongs on the collection→platform screen) — just let me know.

R1 on a focused platform in the home list downloads every game of that
platform that isn't on the device yet: it gathers the not-downloaded
games, asks for confirmation, then reuses the existing download pipeline
(DownloadScreen -> DownloadManager), so progress, cancel, artwork and
unzip handling all come for free.

- Hidden in kid mode.
- No per-row work on the platform list; the missing set is computed only
  when R1 is pressed, so the home screen keeps its current load cost.
- New ui.DownloadMissingForPlatform helper + missingGames, unit tested.
- Parameterised strings use %d/%s + fmt.Sprintf (as bios_download.go
  does) so they render even before the locale catalogs are updated.
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.

1 participant