Brand match + Forgejo theme inheritance — one green everywhere, 0.5.0 #9

Merged
plat merged 2 commits from feat/brand-green-theme-inherit into main 2026-08-11 21:04:55 +00:00
Owner

Two moves that finish gluing the platform's surfaces together:

Default tokens match the brand. Accent family clay→green (#2e6b45 light / #6cc48c dark, with hover/active/subtle/selection re-derived), light bg → the www paper #fbf8f2, dark bg → the www ink #101211. Token values only — names are the API and none change; slate/dune/contrast keep their own palettes; org design overrides are unaffected. The forge chrome (git.*), www.open-platform.sh, and every new app's default skin now speak the same paper/ink/one-green.

Apps inherit the user's Forgejo theme. Pick open-dark on the forge → your apps go dark, no menu touched. The Forgejo theme rides the viewer as an optional theme: "light"|"dark" pin (contract-additive):

  • app mode reads /api/v1/user/settings with the user's own OAuth token — new read:user scope, 5-min cache, fail-soft (pre-existing sessions simply don't inherit until sign-out/in)
  • edge mode honors X-Plat-Theme the day the edge starts sending it (receiving half of the contract, wired now)
  • client: inheritance applies only while the user has never made an explicit in-app choice; plat.theme always wins; the inherited scheme is cached only so the no-flash boot script can apply it pre-paint

typecheck / lint / build green, 35/35 tests (two design-test literals updated to the new bg values). version 0.5.0.

Two moves that finish gluing the platform's surfaces together: **Default tokens match the brand.** Accent family clay→green (`#2e6b45` light / `#6cc48c` dark, with hover/active/subtle/selection re-derived), light bg → the www paper `#fbf8f2`, dark bg → the www ink `#101211`. Token *values* only — names are the API and none change; slate/dune/contrast keep their own palettes; org design overrides are unaffected. The forge chrome (git.*), www.open-platform.sh, and every new app's default skin now speak the same paper/ink/one-green. **Apps inherit the user's Forgejo theme.** Pick `open-dark` on the forge → your apps go dark, no menu touched. The Forgejo theme rides the viewer as an optional `theme: "light"|"dark"` pin (contract-additive): - app mode reads `/api/v1/user/settings` with the user's own OAuth token — new `read:user` scope, 5-min cache, fail-soft (pre-existing sessions simply don't inherit until sign-out/in) - edge mode honors `X-Plat-Theme` the day the edge starts sending it (receiving half of the contract, wired now) - client: inheritance applies only while the user has never made an explicit in-app choice; `plat.theme` always wins; the inherited scheme is cached only so the no-flash boot script can apply it pre-paint typecheck / lint / build green, 35/35 tests (two design-test literals updated to the new bg values). version 0.5.0.
accent family clay→green (#2e6b45 light / #6cc48c dark, hover/active/
subtle/selection re-derived), bg light #faf9f5→#fbf8f2 (the www paper),
bg dark #0a0a0a→#101211 (the www ink). Token VALUES only — names are
the API and none change; named themes (slate/dune/contrast) keep their
own palettes. The forge (git.*) chrome, www.open-platform.sh, and every
app's default skin now speak the same paper/ink/one-green.
viewer: inherit the user's Forgejo theme
Some checks failed
guard-ppt / no-ppt (pull_request) Successful in 0s
guard-ppt / no-ppt (push) Successful in 5s
check / check (push) Successful in 25s
check / check (pull_request) Successful in 24s
preview / preview (pull_request) Failing after 0s
f589ef8034
A signed-in user who picked open-dark on the forge gets a dark app
without touching the app's theme menu. The Forgejo theme name rides the
viewer as an optional scheme pin: app mode reads /api/v1/user/settings
with the user's own OAuth token (new read:user scope; cached 5min,
fail-soft — old-scope sessions simply don't inherit until re-login);
edge mode honors an X-Plat-Theme header the day the edge sends it.
Client: inheritance applies only while the user has never made an
explicit in-app choice; plat.theme always wins, and the inherited
scheme is cached solely for the no-flash boot script. version 0.5.0.
plat merged commit 03a9ea4338 into main 2026-08-11 21:04:55 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
open-platform/app-template!9
No description provided.