Rebuild both UIs on the Cinder design #10
Reference in New Issue
Block a user
Delete Branch "ui-revamp-cinder"
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?
Implements the Cinder design (Claude Design doc
cfa39183) across both UI surfaces, self-hosts the fonts it depends on, and writes down the two documents that keep the result maintainable.What changed
Web UI — rebuilt on the design's visual language: editorial serif, containerless sheets divided by ash hairlines, one 760px measure, no radii and no shadows. The organising rule is that heat is typographic: only a series with an unread chapter is crimson (title on an ember underline, cover foot rule,
Ch N out, play icon), and favourites get brass rather than borrowing the accent. Both states hang off two classes on the<article>(is-new,is-dim), so sub-elements inherit the state instead of re-deriving it.The six-cell action strip is
flex-basis: 100%inside the row, which is what lets one piece of markup be a full-width strip with 46px thumb targets on a phone and a group of 40px squares beside the row on a desktop — no duplicate template branches. Icons moved to a sprite (templates/icons.html); htmx-swapped cards reference the page's symbols, so a row no longer carries a screenful of inline SVG.Userscript panel — repainted in the same tokens. The panel and the web UI are the same product on the same phone, and the old purple-on-charcoal panel read as a different application once the web UI moved. Structure, ids and classes are untouched, and the edge tab keeps its geometry,
touch-actionand#hitsizing.Fonts are self-hosted — five latin-subset woff2 files (~120 KB) embedded via the existing
//go:embed static. Loading them from Google would lose the design's character exactly where it is used most: Bromite users routinely block Google's font domains, and the backend is reachable over a LAN with no internet route.staticHandlerregisters the.woff2MIME type, which Go's table lacks and the scratch image has no/etc/mime.typesfor.Docs —
docs/design-system.mdrecords the rules a stylesheet cannot state (what the ember is reserved for, why light mode is a re-tuning rather than an inversion, which details are load-bearing) so a future agent does not re-derive them from the CSS.REDEPLOY.mdcovers the operation actually performed every time, whichDEPLOY.mdreduced to two lines.Commits
Each is one logical change and builds on its own:
4d69e54listView.NewCount— data for the Updated badge, no markupe940b96filter.js)686fcc1ce7e93d.woff2MIME registrationa547cc9docs/design-system.mdb20ecf1REDEPLOY.mdVerification
go test ./...— 187 pass. Userscript logic tests — 14 pass.fonts.googleapis.comandfonts.gstatic.comblocked still reports all five facesloaded; served as200 font/woff2.REDEPLOY.mdbackup/restore commands were run, not assumed.:roon the source volume fails (unable to open database file— WAL needs to create-shm), and a restored file lands root-owned while the container runs as uid 65532, so reads succeed and writes fail. Both are documented with the reason.Note for the reviewer
The panel restyle is token-level only: the design doc covers the web UI, so the panel's structure has no reference to follow and was deliberately left alone.
Deploying this needs a rebuild — templates, CSS and fonts are
//go:embeded, so pulling alone changes nothing.