feat(theme): make the app a full consumer of the shard's admin theming and nav (M12 cutover) #41
Reference in New Issue
Block a user
No description provided.
Delete Branch "edge"
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?
What & why
The M12 cutover —
edge→main, all eight phases of the Android theming & navigation milestone in one merge, the same shape the website side used for its own.Before this, the app read exactly one field of the website's admin theming contract (
brand.accent) and rendered a hardcodedAPP_MENU. An admin who re-skinned the site and restructured its header saw none of it on the phone. After this, the app consumes the contract.Design of record:
docs/android/THEMING_AND_NAV.md, anchored as M12 indocs/android/PLAN.md§9. No backend work — everything consumed has been live onwebsite/mainsince website#126.The phases
SiteAppearance— the contract, second-stage JSON parse, resume refresh. Invisible by ruleShardPalette, the fifteen tokens into the Material schemeShapes,--shadow-cardonto elevationWhat a reader of
mainshould knowrunic-gatewaypreset, value for value — M5 was drawn from the sametheme.cssthe preset was later extracted from. That is what makes "an untouched instance is unchanged" a testable assertion rather than an approximation, and it is why the milestone was cheap.Shapescame from the M5 mockup and genuinely differ from the web tokens; a literal map would have restyled the untouched app on day one.brand.herocarries theBRAND_HERO_IMAGEenv default, so "admin set nothing" ≠ "slot is empty"). The first two are code; the third is a correction to the record.MenuAccessandMenuEntry.featurestill run after the merge, sohidden: falsecannot un-hide what a role or the shard's visibility config withholds. Added links are the one thing that can name an arbitrary path, and they advertise a route rather than granting one — the screen behind still gates itself.How it was tested
lintDebugandassembleDebugclean, re-run against this exact merge commit (6cbfdb1).CustomTabActivityindumpsys activity, not by eye.ShardCard's container and the drawer's selected-row shape, each a value Material takes as a default argument rather than from the theme.Checklist
AI-assisted contributions (required)
Claude Code (Opus 5). I have reviewed and understandevery change, and take responsibility for it. AI-authored commits are
marked with a
Co-Authored-By/Assisted-Bytrailer.License
(GNU GPL v3.0 or later), and I have the right to contribute it.