Restore household colours on the cold-start profile picker #70
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fm/tv-picker-colors"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Outcome
Saved profiles immediately show their approved household colours on cold start, without waiting for Conductarr: Justin blue (#62c4ff), Mindel orange (#ff9d72), Shared green (#9be38f).
Cause
app/src/wolfskin/java/org/justinvisser/wolfskin/tv/WolfskinSetupViewModel.kt:83constructed cold-start setup people with the Jellyfin UUID asShellPerson.key.wolfskin-design/src/main/java/org/justinvisser/wolfskin/design/Identity.kt:17-21resolves fixed household colours by justin/mindel/shared, so every UUID fell through to the lilac accent. The regular saved-people reader (ShellPeople.kt:19-22) and post-login completion already use lowercase names, explaining why the failure was cold-start-only. Conductarr'sPerson.kt:9-12supplies only key/name, not an extra colour field; this was not cache colour loss and needs no cache/schema migration.Change
Use the existing lowercase-name presentation identity in the setup picker while retaining
jellyfinUserIdunchanged for authentication. Document the cold-start colour invariant.Verification
WolfskinSetupNavigationTestclass, including the new native regression and existing startup/recovery/first-run paths.bash docker/gradle.sh debug :app:testDefaultDebugUnitTest --tests org.justinvisser.wolfskin.tv.WolfskinSetupNavigationTest -x :wolfskin-design:testDebugUnitTest(shared Gradle lock; design suite excluded)./root/.treehouse/firstmate-7bab20/2/firstmate/data/tv-picker-colors/before.png,after.png,before-test.xml,after-test.xml. Both frames visually inspected.Risk
Limited to the setup presentation key; saved credentials, Jellyfin selection IDs, palette tokens, Conductarr contracts and caches remain unchanged.
AI-assisted implementation and verification.
Review of the cold-start picker colours fix at head
27b7554fc1489fbbb5e49720fe1d8707fd0a17f0(basefm/tv-round2).Code verdict: APPROVE (
review/code-claude= success).Design verdict: PASS (
review/design-claude= success). No blocking finding, and no auth-path change.Fix is at the cause.
ShellPerson.key.personColoronly knows justin, mindel and shared, so every UUID fell through to the lilac accent.readShellPeopleand the signed-in picker (WolfskinSetupViewModel.kt:178) already use.Auth is unchanged.
jellyfinUserId = it.id.toString()is untouched.select(person)still resolves the user byjellyfinUserIdand then runs the samerequireLogin, PIN andchangeUserbranches.person.keyis used only by the signed-in shell, where the lowercase-name key is already the norm. Nothing in setup maps a key back to a user id.Colours.
Test.
coldStartSavedPeopleKeepTheirOwnColorsWithoutConductarrgoes through the real app-start and setup path.Frames. Before: J, M and S are all lilac. After: Justin blue, Mindel orange, Shared green, with Justin focused. Heading, names, gear and positions are otherwise identical.
Merge. A merge-tree check against current
fm/tv-round2is clean.Non-blocking notes:
Full report (review 8):
/root/.treehouse/firstmate-7bab20/2/firstmate/data/round2-review/report.md. Not run: Gradle/make, nothing on the box.