feat(engine): You hub — Profile/Stats/Achievements/Replays in one tabbed modal (Phase E) #161

Merged
funman300 merged 2 commits from feat/you-hub into master 2026-07-09 05:02:08 +00:00
Owner

Phase E of docs/ui-redesign-2026-07.md. Stacked on #160 (settings tabs) — merge #160 first; this diff then reduces to the hub commits.

  • spawn_tab_chip extracted from settings into ui_modal as the shared tab widget (increment 1, no visual change)
  • New you_hub_plugin: one modal, tabs Profile · Stats · Achievements · Replays, one Done button; the three standalone modals are gone. Toggle*RequestEvents + P/S/A hotkeys open the hub on the right tab, switch in place, or toggle closed on a same-tab request
  • Screen bodies became spawn_*_body builders (moved code, not rewrites); the replay browser is now its own tab; Watch-replay flow unchanged
  • Legacy ProfileScreen/StatsScreen/AchievementsScreen markers stamp the hub scrim per active tab so external queries keep their meaning; the three *CloseButton types are deleted (never exported)
  • 916 engine tests green incl. 2 new hub lifecycle tests; clippy -D warnings; fmt

Known follow-up (Phase J): tab chips (here and in Settings) aren't Focusable yet — keyboard tab-walk reaches rows but not chips.

🤖 Generated with Claude Code

Phase E of `docs/ui-redesign-2026-07.md`. Stacked on #160 (settings tabs) — **merge #160 first**; this diff then reduces to the hub commits. - `spawn_tab_chip` extracted from settings into `ui_modal` as the shared tab widget (increment 1, no visual change) - New `you_hub_plugin`: one modal, tabs `Profile · Stats · Achievements · Replays`, one Done button; the three standalone modals are gone. `Toggle*RequestEvent`s + P/S/A hotkeys open the hub on the right tab, switch in place, or toggle closed on a same-tab request - Screen bodies became `spawn_*_body` builders (moved code, not rewrites); the replay browser is now its own tab; Watch-replay flow unchanged - Legacy `ProfileScreen`/`StatsScreen`/`AchievementsScreen` markers stamp the hub scrim per active tab so external queries keep their meaning; the three `*CloseButton` types are deleted (never exported) - 916 engine tests green incl. 2 new hub lifecycle tests; clippy `-D warnings`; fmt Known follow-up (Phase J): tab chips (here and in Settings) aren't `Focusable` yet — keyboard tab-walk reaches rows but not chips. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
funman300 added 3 commits 2026-07-08 00:11:38 +00:00
Replaces the 37-row single-scroll settings modal with five tabs
(Audio, Gameplay, Appearance, Accessibility, Account); only the active
tab's rows spawn, so every tab fits without scroll-hunting.

- SettingsTab + ActiveSettingsTab (session-only) + SettingsTabButton
  chips under the modal header; rebuild-on-switch mirrors the
  leaderboard despawn/respawn pattern via a shared build_panel helper
- Accessibility tab gathers color-blind, high-contrast, reduce-motion,
  touch-input, and tooltip-delay from the old Gameplay/Cosmetic mix;
  Account = Sync + Privacy
- SettingsButton enum, input handlers, and persistence untouched
- Tests: per-tab Focusable/Tooltip sweeps, tab-switch rebuild test,
  picker/thumbnail tests pinned to the Appearance tab

Plan: docs/ui-redesign-2026-07.md (also added, phases A–M)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Settings' tab_chip becomes a thin wrapper; the You hub (Phase E) will
reuse the same widget so tabbed modals stay visually identical.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Phase E of docs/ui-redesign-2026-07.md. New you_hub_plugin owns the
modal shell (header, shared tab chips, single Done); each tab's content
is a body builder extracted from its original plugin with every marker
component unchanged, so per-row update/scroll/selector systems keep
working. The replay selector gets its own Replays tab (Watch/Copy
buttons move into the tab body).

- Toggle*RequestEvents + P/S/A accelerators open the hub on the right
  tab, switch tabs in place, or toggle closed on a same-tab request;
  Esc/Done/scrim-click close
- Legacy ProfileScreen/StatsScreen/AchievementsScreen markers ride the
  hub scrim for the active tab — external queries and tests keep their
  meaning
- Standalone toggle/close systems and per-screen Done buttons removed
  (ProfileCloseButton, StatsCloseButton, AchievementsCloseButton)
- Tests: 2 new hub lifecycle tests; profile/stats/achievements modal
  tests adapted (fixtures add YouHubPlugin; selector tests target the
  Replays tab). Engine suite 916 green, clippy -D warnings, fmt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
funman300 merged commit 5c4d440b31 into master 2026-07-09 05:02:08 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: funman300/Ferrous-Solitaire#161