Skip to content

feat: Xbox-style console interface with tabs, Steam background and sounds - #117

Merged
lippdev merged 3 commits into
mainfrom
feat/console-ui-tabs-background-sounds
Sep 30, 2026
Merged

lippdev merged 3 commits into
mainfrom
feat/console-ui-tabs-background-sounds

Conversation

@lippdev

@lippdev lippdev commented Sep 30, 2026

Copy link
Copy Markdown
Owner

What

Reworks the console interface so it reads like a console and is driven by the pad.

  • Tabs Home / Session / System, switched with LB / RB (L1 / R1); the page slides in from the side it came from (off when Windows animations are off). Home: play banner plus a current-setup row; Session: the screens drawn as monitors lit by their role, and the quick settings with icons; System: every setting.
  • Background: by default a collage of the covers of the installed Steam games, read from Steam's own librarycache (never bundled), under a solid-colour gradient; or only the gradient, or a picture of the user's own.
  • Sounds: short blips for move / confirm / back, synthesised in code (no audio files) and played through winmm; can be turned off.
  • Controller navigation fixes: up/down did nothing when the target card wasn't in the same column (the fallback used the Next/Previous directions, which always throw with a search root); the focus landed on invisible ItemsControl containers; a tab change moved the focus before the page was laid out. L1/R1 are read on XInput, Windows.Gaming.Input, Sony HID and generic HID; the keyboard arrows use the same navigator.

The Xbox layout is only an inspiration: no Microsoft art, icons or sounds are used.

Verification

Built locally (0 errors); dotnet test passes (216, 31 new: sound synthesis, Steam cover discovery, L1/R1 mapping). Checked in the running app by screenshots at 1936x1048 and 960x760 and by driving focus with the keyboard arrows (same navigator as the pad). Not exercised: a physical pad, the focus growth animation, the sounds by ear, the file picker for "my picture". Checklist: docs/TESTING.md §0b.

Stacked on #116.

🤖 Generated with Claude Code

…unds

Reworks the console interface so it reads like a console and is driven
entirely by the pad.

Layout
- A top bar with three tabs: Home (the play banner and a "current setup" row
  that opens each choice), Session (the screens, drawn as monitors lit by what
  will happen to each, plus the quick settings with icons) and System (every
  setting). LB / RB (L1 / R1 on PlayStation) switch tabs; the new page slides
  in from the side it came from unless Windows animations are off.
- Cards get a white outline and grow a little when focused; the Modo desktop
  button is back in the top bar.

Background
- By default a collage of the covers of the installed Steam games (read from
  Steam's own librarycache, never bundled) under a solid-colour gradient; it
  can be only the gradient or a picture of the user's own.

Sounds
- Short blips for moving, picking and going back, synthesised in code (no audio
  files, nothing copied from any console) and played through winmm. They can be
  turned off in Settings.

Controller navigation
- Up/down used to do nothing when the target card was not in the same column:
  the spatial search found nothing and the fallback (the Next/Previous
  directions) always threw with a search root. It now tries the aligned card,
  then the nearest one in that direction, then reading order. The focus also
  no longer lands on the ItemsControl containers (invisible focus stops), and
  a tab change lays the new page out before moving the focus into it.
- L1/R1 are read on XInput, Windows.Gaming.Input, Sony HID and generic HID.
- The keyboard arrows go through the same navigator, before a ScrollViewer can
  swallow them; gamepad key events are no longer handled on top of the polling.

Tests: sound synthesis, Steam cover discovery and the L1/R1 mapping. Docs: the
changelog pair and a new section in docs/TESTING.md.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes This review covers the console interface, background and sound features, controller navigation changes, and accompanying tests.

  • Console interface: reviewed the Home / Session / System tabs, page transitions, layout, settings, focus navigation, and controller input changes.
  • Backgrounds and sounds: reviewed Steam cover discovery, custom image selection and persistence, and synthesized sound playback/settings.
  • Tests and docs: reviewed the new pure-logic tests and manual testing checklist. The unit test suite passed locally (216 tests).

Pullfrog  | View workflow run | Using GPT Luna | 𝕏

@lippdev
lippdev changed the base branch from feat/custom-controller-shortcuts to main September 30, 2026 21:44

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes This review covers the changes since the prior Pullfrog review: upstream synchronization and configuration propagation for the console interface settings.

  • Synchronized upstream fixes: updated the changelogs and manual test checklist for controller shortcut capture, invalid controller readings, and Steam shutdown behavior.
  • Preserved console preferences: carried interface-sound and background settings through monitor-name resolution and the view model's config load/save paths.

Pullfrog  | View workflow run | Using GPT Luna | 𝕏

@lippdev
lippdev merged commit 0944380 into main Sep 30, 2026
5 checks passed
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