Child of #174. Closely related to #175 (dynamic tabs) and #176 (Pokémon package extraction).
The hidden Pokémon assumption
Today the primary Trainer tab bundles:
- universal TrainerOS person (local profile/name/emblem, profile editing, ownership and personal preferences);
- Pokémon-specific persona (favorite Pokémon, game trainer context);
- game-specific progress (badges, Journey milestones, Champion Hall);
- cross-game/external integrations (RetroAchievements and actual play history).
This makes a selected Diablo or racing title implicitly show Pokémon progression even though the shell should follow its own game's adapter.
Separate the ownership domains
Host always owns:
- current local Player/Trainer identity, PIN, account links, settings, safe switching and per-user store;
- actual launch/play session history, game registration, media, notification/activity provenance;
- verified RetroAchievements account/provider. Whether a given game has a compatible achievement set is capability-driven.
- one consistent way to view/edit user identity even if no game integration is installed.
Game experience owns:
- names, widgets/faces and progress policies for its second contextual primary slot (e.g. Pokémon Trainer/Journey/Hall, Diablo Chronicle, racing Career);
- Pokémon badges, real Champion snapshots, quest completion, stage/race records, RPG character fields, game-only favorites and milestones only when sourced from verified adapter data;
- context-specific filtering/metadata and optional in-game/Select actions without shell title checks.
A generic Playtime/History view can be shared by any game; it must not be interpreted as evidence of finishing the game. RA achievements remain externally sourced and must not be invented to substitute milestones or embedded in Pokémon-specific logic.
UX decision to finalize in implementation
The label Trainer is not permanent for slot B; it may become Chronicle, Career, Records or another meaningful adapter name. Do not rename the entire user's OS identity or Fluxer profile whenever they select a game.
Ensure universal profile editing, account access and switching remain consistently reachable — as a shared face where appropriate and/or a stable global settings/profile route. Reconcile with Start's existing Switch Trainer and the universal Options (#168) without duplicating power/system controls or trapping a profile behind an incompatible game package. No requirement to keep an oversized permanent Profile panel in every deep game experience.
Acceptance
Related: #12, #24, #25, #47, #48, #49, #89, #90, #111, #167–#169, #174–#176.
Child of #174. Closely related to #175 (dynamic tabs) and #176 (Pokémon package extraction).
The hidden Pokémon assumption
Today the primary
Trainertab bundles:This makes a selected Diablo or racing title implicitly show Pokémon progression even though the shell should follow its own game's adapter.
Separate the ownership domains
Host always owns:
Game experience owns:
A generic Playtime/History view can be shared by any game; it must not be interpreted as evidence of finishing the game. RA achievements remain externally sourced and must not be invented to substitute milestones or embedded in Pokémon-specific logic.
UX decision to finalize in implementation
The label
Traineris not permanent for slot B; it may becomeChronicle,Career,Recordsor another meaningful adapter name. Do not rename the entire user's OS identity or Fluxer profile whenever they select a game.Ensure universal profile editing, account access and switching remain consistently reachable — as a shared face where appropriate and/or a stable global settings/profile route. Reconcile with Start's existing Switch Trainer and the universal Options (#168) without duplicating power/system controls or trapping a profile behind an incompatible game package. No requirement to keep an oversized permanent Profile panel in every deep game experience.
Acceptance
Related: #12, #24, #25, #47, #48, #49, #89, #90, #111, #167–#169, #174–#176.