Repository navigation
A home-screen page's system bars follow the theme shown - #292
Merged
Merged
Conversation
A page added to a phone's home screen has Android paint its system bars from the page's theme-color, and the family's pages declared none, so blust.ch opened from the home screen sat above a white bar. The theme block now keeps a page's theme-color meta on the --ground of the theme shown, read from the tokens, when the page loads and whenever data-theme changes. It watches the attribute rather than hooking applyTheme, because blust.ch's pages switch the theme with a copy of their own and the attribute is the one thing every switch sets. A page without the meta is left as it is. A page that declares viewport-fit=cover draws under the phone's bottom bar, so the footer's bottom padding adds env(safe-area-inset-bottom); everywhere else the inset is 0 and the padding is the 2rem it was. The theme block goes to v6 and the footer to v4. Verified: npm test passes 1079 of 1079; the three new theme-color tests fail with the setter or the observer removed; conventions-check and conventions-format pass; on blust.ch served locally with these blocks, Chromium showed theme-color follow dark, light and dark on the home page, a talk and /model/, and light on arrival with ?theme=light, and npm run verify passed. Process: Delivery Phase: Implement Track: Code Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 14, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A page added to a phone's home screen has Android paint its system bars from the page's
theme-color, and the family's pages declared none, so blust.ch opened from the home screen of a Pixel sat above a white navigation bar under a dark page. The theme block now keeps a page'stheme-colormeta on the--groundof the theme shown, read from the tokens rather than restated, when the page loads and wheneverdata-themechanges. It watches the attribute with aMutationObserverrather than hookingapplyTheme, because blust.ch's pages switch the theme with a copy of their own, and the attribute is the one thing every switch sets. A page without the meta is left as it is, so nothing changes for a site until it declares one.A page that declares
viewport-fit=coverdraws under the phone's bottom bar, so the footer's bottom padding addsenv(safe-area-inset-bottom); on every other page the inset is 0 and the padding is the 2rem it was. The theme block goes to v6 and the footer to v4, and the docs map says both.Both blocks are synced files, so this is a minor, and a site takes it with
npm run designalone. The declarations that make use of it are each site's own head contract: blust.ch adds a web app manifest, its icons, thetheme-colormeta andviewport-fit=coverin a pull request that takes this release; companygraph.io and guestgraph.io can follow by hand. Release notes to write at tagging: a page'stheme-colorfollows the theme shown, so a page opened from a phone's home screen has system bars in its own ground; the footer keeps clear of a phone's bottom bar on a page that draws under it.Verified:
npm testpasses 1079 of 1079; the three new theme-color tests fail with the setter or the observer removed; conventions-check and conventions-format pass; on blust.ch served locally with these blocks, Chromium showedtheme-colorfollow dark, light and dark on the home page, a talk and/model/, and light on arrival with?theme=light, and blust.ch'snpm run verifypassed. Not verified on a phone: whether Android paints its bottom bar from it is seen only once blust.ch serves it.🤖 Generated with Claude Code