Repository navigation
feat: add a guided tour to the session menu - #144
Conversation
The first time the session menu opens it offers an optional tour that dims the menu, outlines the rows of each stop and explains them in a bubble beside them, including what Back to the PC and Exit Console Mode really do. Y (Triangle) or F1 in the menu and a Settings entry show it again. Y is ignored while it is part of a held shortcut, so closing the menu with Select + Y doesn't start it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Important
The staggered menu-shortcut chord can briefly start the tour before closing the menu.
Reviewed changes This review covers the guided session-menu tour, its controller and keyboard input, persistence, settings entry points, localization, documentation, and tests.
- Guided tour flow Adds the first-run invitation, step navigation, spotlight overlay, and replay from the menu or settings.
- Tour state and coverage Persists completion and tests stop ordering, progress, localization keys, and shortcut detection.
gpt-6-luna | 𝕏
| if (!Animate) return; | ||
| try | ||
| { | ||
| if (opening) |
There was a problem hiding this comment.
This one-time 150 ms snapshot can miss the configured menu chord when Y is pressed first and Select follows later; the global chord fires after 250 ms of holding the complete combo, so the tour can open and then be dismissed by that same shortcut. Please keep Y pending until the chord can no longer complete, rather than deciding from this early sample.
Technical details
# Avoid racing the menu shortcut
## Affected sites
- [SessionMenuWindow.xaml.cs:601-604](https://github.com/lippdev/consolemode/blob/25a61e2ea277f1b01280f29694fc177aaee02b61/src/ConsoleMode/SessionMenuWindow.xaml.cs#L601-L604) — waits 150 ms, then checks the currently held buttons only once.
- [App.xaml.cs:171-175](https://github.com/lippdev/consolemode/blob/25a61e2ea277f1b01280f29694fc177aaee02b61/src/ConsoleMode/App.xaml.cs#L171-L175) — the global session-menu chord triggers after 250 ms of holding the full configured mask.
## Required outcome
- A Y press that becomes part of the configured menu chord must not start the tour, even when the chord's other button is pressed more than 150 ms later.# Conflicts: # CHANGELOG.en-US.md # CHANGELOG.md # src/ConsoleMode/SessionMenuWindow.xaml
There was a problem hiding this comment.
ℹ️ No new issues found in this delta; the prior review thread remains open.
Reviewed changes This review covers the merge from main since the prior Pullfrog review, including the FPS-counter picker integration in the session menu.
- FPS picker wiring Routed the FPS overlay row through the new picker and detached its refocus event when the menu closes.
- Release notes Preserved the tour entry and incorporated the FPS-counter release notes in both changelogs.
gpt-6-luna | 𝕏

The session menu has two ways out, Back to the PC and Exit Console Mode, and nothing on screen said how they differ. This adds an optional guided tour that explains every option.
What it does
SessionMenuTourDoneso it isn't offered again. If the menu is closed while the invite is up, it's offered again next time.Code
Services/SessionMenuTour.cs(pure, linked into the tests): the stops, progress, text keys per stop and preview, and the Y-vs-chord rule.ViewModels/MainViewModel.SessionTour.cs: tour state and commands;SessionMenuWindow: the veil with even-odd holes, the rings, bubble placement, pad/keyboard handling.docs/TESTING.md("Tour guiado do menu").Verification
dotnet test: 362 passed, including the newSessionMenuTourTests.docs/TESTING.mdchecklist.🤖 Generated with Claude Code