prometeu-runtime/discussion/workflow/plans/PLN-0163-render-hub-suspended-game-kill-control.md

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
DEC-0040
hub
lifecycle
game
ui

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 Game is 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

  1. 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.
  2. Add resident-game status to the Hub view model.

    • Read only Game resident/suspended state.
    • Include the game title needed for display.
    • Keep the value absent for shell/system apps and for no resident game.
  3. 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.
  4. 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 Game resident/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 Game exists.
  • 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