feat: sync UI preferences across devices via UserSettings #79
No reviewers
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app!79
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/sync-ui-preferences"
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?
Closes #60.
Text scale and reduce-motion synced only half the display preferences — they lived device-local while theme, locale and tour version already rode
UserSettings. This brings them into the synced model and makes the server record the source of truth, with localStorage demoted to a device cache.What changed
TextScaleenum (UNSPECIFIED=1.0 / LARGE=1.15 / EXTRA_LARGE=1.33) plustext_scale,reduce_motion,flatten_cardsonUserSettings. Every field defaults to today's behavior when unset. No new RPC, no scrub-map change.reduce_motion(the motion chip now pushes through and pull applies it); whole-message writes preservetext_scaleandflatten_cardsuntouched.Deliberate gaps (rule 1)
flatten_cardsis plumbed but drives no render and has no toggle yet — that is #48, which stacks on this branch.reduce_motionand preserves the rest. Recorded in ADR-0029.Verification
make checkgreen (Go + web build + i18n).Update→Readpersists all three fields, siblings preserved, last-write-wins confirmed.Two-device visual UI check still owed.
🤖 Generated with Claude Code
Test report
Coverage: 27.7%
Updated by the check workflow · commit
c656b3bbcaAndroid test report
Updated by the android workflow · commit
c656b3bbca6e18fd5fdfc656b3bbca