3.2 KiB
3.2 KiB
| id | ticket | title | status | created | ref_decisions | tags | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0163 | hub-suspended-game-kill-affordance | Render Hub Suspended Game Kill Control | open | 2026-07-05 |
|
|
Briefing
DEC-0040 requires the Hub to show a red bottom-right control when a Game cartridge is resident/suspended, displaying only the game title and killing the game immediately on click.
Objective
Render and handle the Hub suspended-game kill control using the lifecycle operation from PLN-0164.
Dependencies
- Source decision: DEC-0040.
- Depends on PLN-0164 for the callable resident-game termination operation.
Scope
- Show a red box in the bottom-right of the Hub only when a
Gameis resident/suspended. - Render only the suspended game's title in that box.
- Register a click/hitbox for the box.
- On click, call the canonical resident-game termination operation.
- Keep the Hub active after the click.
- Remove the indicator immediately after the resident game is no longer present.
Non-Goals
- Do not add confirmation or two-click arming.
- Do not show shell/system apps in this control.
- Do not redesign the Hub layout beyond the minimal bottom-right control.
- Do not add save-state or suspend-state management.
Execution Method
-
Identify the Hub rendering and input code.
- Primary target:
crates/console/prometeu-system/src/programs/prometeu_hub/prometeu_hub.rs. - Determine how Hub cards/buttons currently compute layout and hit testing.
- Primary target:
-
Add resident-game status to the Hub view model.
- Read only
Gameresident/suspended state. - Include the game title needed for display.
- Keep the value absent for shell/system apps and for no resident game.
- Read only
-
Render the kill control.
- Position it in the bottom-right of the internal viewport.
- Use a red filled box with restrained dimensions.
- Draw only the game title.
- Keep the text inside the box for long titles by truncating or fitting according to existing Hub text conventions.
-
Add click handling.
- Use the box hit region.
- On click, call the resident-game termination operation from PLN-0164.
- Do not navigate away from Hub.
- Ensure the next Hub frame no longer renders the control when the resident game is gone.
Acceptance Criteria
- The control appears in Hub only while a
Gameresident/suspended game exists. - The control displays only the game title.
- The control is visually red and placed in the bottom-right of the Hub.
- Clicking the control kills the resident game immediately.
- The Hub remains in Hub after the click.
- The control disappears after the game is killed.
- Shell/system apps do not appear in this control.
Tests
- Hub render/unit test for presence when a resident
Gameexists. - Hub render/unit test for absence when no resident game exists.
- Hub render/unit test for absence for non-Game app modes.
- Hub click/hitbox test proving the termination operation is invoked.
- Test for long title handling if existing Hub layout tests cover text bounds.
Affected Artifacts
crates/console/prometeu-system/src/programs/prometeu_hub/prometeu_hub.rs- Any Hub facade/view-model modules used by the program
- Hub rendering/input tests