Structure
Main stays narrow and is the entry point. Behind it are pages that are wide, where list and detail sit next to each other. Everything about one platform is in one place, Sync gets its own page. Drawn at the Deck's real metrics, measured on the device: 854 × 534 CSS px at 1.5× scale, so a wide page is the full screen, and the panel below Steam's top bar is 454 px tall.
New decided
Main narrow Notices · Status · Sync button · Downloads · Menu ├─ Sync wide Preview · History · Force Full Sync · Restart Steam ├─ Library wide │ ├─ Platforms List + detail: Sync · Core · BIOS · Remove │ └─ Collections Filter + wide list ├─ Settings wide Sections left, content right ├─ Data Management wide only global operations └─ Downloads narrow like today, through "View All"
Today
Main narrow Status · Sync · Preview · Downloads · Menu
├─ Library Platforms (Sync) · Collections
├─ System Core · BIOS per platform
├─ Settings eight sections stacked
├─ Data Management global + per platform (Shortcuts, Saves, BIOS)
└─ Downloads reachable only when the queue has entries
| Action | Today | New |
|---|---|---|
| Start a sync | Main | Main, the button opens the Sync page |
| Check and apply the sync preview | Main, one row | Sync, as a table |
| Force Full Sync, Skip preview | Main | Sync |
| Restart Steam now (session budget) | Main | Sync (Main links to it) |
| Turn syncing a platform on/off | Library | Library › Platforms |
| Choose the emulator core | System | Library › Platforms |
| Download BIOS | System | Library › Platforms |
| Delete BIOS | System, Data Management | Library › Platforms |
| Remove a platform's shortcuts | Data Management (modal) | Library › Platforms |
| Delete a platform's save files | Data Management (modal) | Library › Platforms |
| Repair the RetroArch input_driver | Main, Settings | Settings › Controller (Main links to it) |
| Migrate the save sorting | Settings (Main links to it) | Settings › Save Sync (Main links to it) |
| Pause, cancel a download | Downloads | Downloads |
| Clean up removed RomM games | Data Management (modal) | Data Management, as a page |
Why everything about one platform in one place
- Today there are three platform lists on three pages from three callables. Setting up a platform means Library, then System, then Data Management. Now one list and one detail.
- "System" disappears as a page, and with it the question of what to call it.
- Data Management becomes unambiguous: only what concerns the whole library.
- Rejected: Library keeps only Sync, a page "Emulation" gets Core and BIOS, Data Management keeps the per-platform actions. It separates by topic but leaves three platform lists standing.
Why Sync is its own page
- Main loses eight rows of sync controls and becomes status plus one button.
- The preview gets the room for a table per platform (#886) and for the import choice (#1364).
- Everything that concerns a sync run is in one place: preview, progress, history, Force Full Sync, the session budget with Restart Steam.
Main
Narrow. What you see when you open it: notices, status, the sync button, running downloads, the menu.
Notes
- 1
Notices report a problem and jump to the place where you fix it. Without exception. The input driver fix has its button only in Settings › Controller, the save sort migration in Settings › Save Sync, "Restart Steam now" on the Sync page. Main shows the notice and the jump.
- 2
Status stays as it is today. Connection, Last sync, Library, Steam memory. The block gets a title so the notices above it do not blur into it (#1442).
- 3
One button, four states. No preview: "Sync Library" computes one and opens the Sync page. A valid preview is waiting: the button reads "Review changes · 13 new" and opens the Sync page with exactly that preview, without computing again. A run is paused: "Resume Sync" continues it with one press, as today. A sync is running: progress and cancel as today. A preview is never discarded on Main, that happens only on the Sync page through Cancel or "Refresh preview".
- 4
Downloads. Two rows at most, "View All" only when there are entries. As today.
- 5
Menu. Sync, Library, Settings, Data Management. "System" sits inside Library › Platforms.
What goes away
- The preview card with Apply, Cancel, expiry time and budget notice. Skip preview and Force Full Sync. The session budget box with Restart Steam.
- The duplicated input driver fix and the duplicated save sort card.
- Four untitled sections separated only by lines.
Sync
Wide. The preview as a table, the import choice side by side, history and options on the right. Everything that concerns a sync run is here.
| Scope | New | Updated | Removed |
|---|---|---|---|
| PlayStation | 4 | 1 | 0 |
| SNES | 8 | 2 | 0 |
| Game Boy Advance | 0 | 0 | 2 |
| 11 more platforms | 0 | 0 | 0 |
| Collections | 1 | 0 | 1 |
| Total | 13 | 3 | 3 |
Adds shortcuts while Steam runs. Pauses if Steam's memory gets high.
Writes shortcuts directly and restarts Steam. Faster above ~500 games.
Notes
- 1
Preview as a table. Today one row: "Games: 12 new / 3 updated" plus scope text. Wide, what happens is listed per platform. That makes the discrepancy from #886 visible instead of hidden in a total row.
- 2
Import choice side by side. #1364 wants to offer two ways after the preview and describes them today as two sentences of prose, because two options do not fit next to each other in 300 px. Here they would have their room. It only comes with #1364, the page leaves the gap.
- 3
Options move here from Main. Skip preview gets persisted in the process; today it is only local state and off again the next time you open the panel. Force Full Sync no longer sits directly under the sync button.
- 4
History. Today only "last attempt HH:MM (status)" as a second row under Last sync. Three to five runs with their result are cheap here.
- 5
The session budget lives here. The box with "Restart Steam now" and resuming, today on Main. Main only shows the notice "Last sync paused" with the jump to here.
Flow
- "Sync Library" on Main opens this page and computes the preview. Apply happens here.
- If a valid preview is already waiting, the button on Main opens this page with exactly that one. It is computed again only through "Refresh" next to the preview, and discarded only through Cancel.
- With "Skip preview" on, the sync runs straight away and Main shows the progress as today. This page shows it too, with fine detail and cancel.
Library
Wide. Two tabs via L1/R1: Platforms and Collections. The Platforms tab is list plus detail.
| File | On disk | Contents | |
|---|---|---|---|
| scph5500.bin Japan | ✓ | verified | |
| scph5501.bin USA | ✓ | verified | |
| scph5502.bin Europe | ✓ | differs | |
| scph1001.bin USA, alt | missing | — | Download |
| psxonpsp660.bin optional | missing | — | Download |
| Collection | Type | Owner | ROMs | Sync |
|---|---|---|---|---|
| Favorites | Standard | me | 37 | |
| Couch co-op | Standard | me | 24 | |
| Kids | Standard | me | 18 | |
| RPG backlog | Standard | me | 61 | |
| Speedrun practice | Standard | me | 9 | |
| Translation patches | Standard | me | 14 | |
| Shmups | Standard | me | 33 | |
| Finished 2026 | Standard | me | 7 |
Notes
- 1
Two tabs, at the top, via L1/R1. With two to four views of equal rank, tabs go to the top. The left column is for lists whose entries have a detail.
- 2
The list on the left. Focus selects the platform, A toggles Sync. Green dot: BIOS complete. Yellow: BIOS missing. No dot: needs none. Enable all and Disable all at the top as today.
- 3
Emulator core with the same context menu as today on the System page. The notice about save compatibility stays.
- 4
BIOS files as a table: File, On disk, Contents. Contents is the third column from #1803. Download per file is #164; today one row encodes two facts in label and description and has no room for an action.
- 5
Remove at the very bottom: the actions from today's platform modal in Data Management, without Delete BIOS, which already sits one group higher. Red, last, with a confirmation.
- 6
Collections has no detail, so a wide list. A type filter instead of the hand-built button row, a row with name, type, owner, count, toggle. Favorites and Mine/All at the top. The search stays, and so does the cap of 50 results.
Applies to every wide page
- List and detail scroll separately. The page fills the panel height instead of growing with its content.
- Groups on the right have titles. Tables for anything with more than two facts per row. Destructive things red and last.
Settings
Wide. Sections on the left, content on the right, like Steam's own settings. Five sections instead of eight.
| Device | Client | Last seen |
|---|---|---|
| deck-living-room (this device) | tender 1.8.0 · SteamOS | now |
| deck-bedroom | tender 1.7.2 · SteamOS | 3 days ago |
| desktop-pc | romm-gavel 0.4 · Linux | 2 weeks ago |
Notes
- 1
Sections on the left. Five instead of eight: Save Sort Migration becomes a notice, Registered Devices moves into Save Sync, SteamGridDB moves to the other services under Connections. That is where RomM, RetroAchievements (account and sign-in state, the home from #1627) and SteamGridDB sit. Focus on the left changes the content on the right, as in Steam's settings.
- 2
Dots on sections that need action. Yellow on Controller: the input driver fix is waiting there. Green on Connections: signed in.
- 3
The home of the save sort migration. Main shows the notice and links here. Migrating and dismissing only here.
- 4
Devices as a table. Today client, version, platform, "last seen" and the shortened ID stand in one description row separated by dots.
What stays
- Modals for text entry stay modals: RomM URL, account, API key, default slot. The on-screen keyboard needs the room.
- The Library section keeps the two collection settings; they were deliberately moved there.
Data Management
Wide. The operation on the left, explanation, result and confirmation on the right. The cleanup dialog turns from a modal into a page.
| Game | Platform | Installed | Recovery bundle |
|---|---|---|---|
| Example Game A | PlayStation | 612 MB | |
| Example Game B | SNES | 2 MB | |
| Example Game C | Dreamcast | 1.1 GB | |
| Example Game D | Game Boy Advance | not installed | |
| Example Game E | PlayStation | 1.7 GB |
Notes
- 1
The operations on the left. Five, all of them concern the whole library. The number on the right says what is waiting. The per-platform actions have moved to Library › Platforms.
- 2
The candidate list as a table instead of a modal. Today an 886-line modal with scope toggles, a paged list, Load More and free space. As a page it has room and a way back.
- 3
Confirming as today. Two taps or a modal, that stays. The progress of a running cleanup then stands in the same place.
The other four
- Remove all shortcuts, Uninstall all ROMs, Orphaned grid images: on the right an explanation of what happens and what does not, then the button, then status. As today, only with room for the explanation.
- Non-Steam games: on the right the whitelist as a table with search, the button with the RetroDECK warning underneath.
Downloads
Narrow, unchanged. Reachable through "View All" on Main.
Notes
- Stays narrow. A queue does not need a second axis.
- The buttons still stand as their own rows under the list. If that is a problem, it is a separate change that needs no width: a tap on the row opens Pause / Resume / Cancel as a menu.
- Stays reachable only through "View All"; an empty Downloads entry in the menu helps nobody.