4.3 KiB
4.3 KiB
| id | ticket | title | status | created | ref_decisions | tags | |
|---|---|---|---|---|---|---|---|
| PLN-0134 | system-run-cart | Wire Home Game List Launch Flow | done | 2026-07-03 |
|
Briefing
After PLN-0133, SystemOS can discover a local Game library but Home still
does not present or launch those entries. This plan wires the discovered
library into Prometeu Hub/Home and routes a selected game to firmware
LoadCartridge.
Objective
Make Home display a minimal clickable games list and launch the selected Game
through a system-owned firmware/SystemOS path, without reintroducing userland
run_cart.
Dependencies
- Source decision:
DEC-0036. PLN-0132for documented contract.PLN-0133for--games-rootplumbing and the internal library entry model.- Existing Prometeu Hub Home profile and firmware state transitions.
Scope
- Provide the discovered games library to Prometeu Hub/Home.
- Render a minimal Home list showing
title,app_id, andapp_version. - Add Home hit-testing/click handling for game entries.
- Extend the system profile action model with a system-owned game launch action.
- Handle that action in firmware/SystemOS by loading the selected cartridge via
the existing cartridge loader and entering
LoadCartridge. - On load failure, log/record the error and keep or return the machine to Home.
- Preserve existing native shell launch behavior.
Non-Goals
- No polished launcher UI.
- No icons, screenshots, search, filtering, or marketplace metadata.
- No return-to-Home while a Game is running.
- No Game A -> Home -> Game B foreground orchestration.
- No
.pmclaunch support. - No guest syscall.
- No direct-boot behavior changes.
Execution Method
- Extend the SystemOS/Hub action type currently represented by
SystemProfileAction::LaunchNativeShellwith a game-launch action that carries a stable reference to the selected library entry or cartridge path. - Update the Prometeu Hub state in crates/console/prometeu-system/src/programs/prometeu_hub.rs or its local modules to accept the discovered game entries.
- Render the Home games list with stable dimensions and simple clickable rows.
Rows must display only
title,app_id, andapp_versionfor v1. - Add hit-testing so selecting a row emits the game-launch action immediately.
- Update crates/console/prometeu-firmware/src/firmware/steps/firmware_step_hub_home.rs to consume the new action.
- In the firmware action handler:
- call the existing cartridge loader for the selected path;
- on success, return
FirmwareState::LoadCartridge(...); - on failure, log/record the error and remain in the Home path.
- Ensure shell launch still works exactly as before.
- Add unit or integration tests for:
- Home list presentation data;
- click-to-action emission;
- firmware action handling success;
- firmware action handling failure.
Acceptance Criteria
- Starting the host with
--games-root <dir>exposes valid Game entries in Home. - The Home list displays
title,app_id, andapp_version. - Clicking a listed Game routes through a system action and enters
LoadCartridge. - The launch path does not use a guest syscall and does not mention
system.run_cart. - Invalid or failing launch paths remain in Home and record an error.
- Existing native shell Home actions continue to work.
- Direct
--runremains separate and unchanged.
Tests
- Run
cargo test -p prometeu-systemfor Hub action and presentation behavior. - Run
cargo test -p prometeu-firmwarefor firmware transition behavior. - Run
cargo test -p prometeu-host-desktop-winitif runner integration changes. - Run
discussion validate.
Affected Artifacts
crates/console/prometeu-system/src/programs/prometeu_hub.rscrates/console/prometeu-system/src/services/crates/console/prometeu-firmware/src/firmware/steps/firmware_step_hub_home.rscrates/console/prometeu-firmware/src/firmware/firmware.rscrates/host/prometeu-host-desktop-winit/src/runner.rsdiscussion/workflow/plans/PLN-0134-wire-home-game-list-launch-flow.md