Visual pass: one icon set, type hierarchy, readable section headings (v2026.09.07.001) - #35
Merged
Merged
Conversation
…9.07.001) Owner asked for "easier to use, easier to see, like a high-end app". Four changes, no behaviour change. ONE ICON LANGUAGE. The header mixed an OS emoji (the dice, which renders differently on every device and cannot follow the theme), text glyphs, and one lone SVG that matched nothing in weight or optical size. All of it now comes from a #isprite <symbol> sheet. The paint MUST live in CSS on .ico, never as attributes on the sprite root: a <use> clone inherits from the use site, so fill="none" stroke="currentColor" on #isprite never reaches it. Every stroked icon rendered as a solid black fill until that was caught -- the share glyph came out a blob and the hamburger was invisible against black. Solid glyphs (play/pause/prev/next, dots) carry their own fill, which beats the inherited CSS. setIcon() replaces the textContent assignments that would have deleted the <svg> child. TYPE HIERARCHY. --display moves from JetBrains Mono to Fraunces, which was already self-hosted and precached but unused since .07.04.003, so it costs no download. Titles and headings get the display serif; mono is now data only -- chords, keys, counts, version. .brand is pinned to --mono so the wordmark is untouched. A-/A+ move off mono too. SECTION HEADINGS. Were .7em grey italic -- the smallest text on screen, and the one thing a player scans for mid-song. Now tracked accent small caps with a hairline rule, ~5.3:1 on black and ~5.6:1 on the light ground. DECLUTTERED ROWS. Rows carry title, subtitle and key. The reorder arrows, pencil, delete, add and chevron move into the context menu, reached by long-press or a new ... button, since pointer devices have no long-press. New openSetlistContext() gives setlists the same menu and the long-press installer now takes the opener as an argument. Played is encoded once, as a check in the row-number slot, instead of dim + strikethrough + pill -- that pill was eating the width that truncated titles to "House of t...". The version tag moves into the menu sheet. .brand small stays in the DOM but hidden: CI greps it for the version and APP_VERSION reads it at boot. The 5-tap gesture-debug trigger moved onto the new line with it. Verified: the sheet renderer is byte-identical across all six seed songs, compared pill-by-pill against the pre-change build. Every icon reference resolves at runtime across both themes and every menu and sheet. Existing suites green -- links 24, showcase 11, wake 11. CI equivalents run locally. Screenshots regenerated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RFni8j63y7ynwzmNLMPMTB
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.
Owner asked for "easier to use, easier to see, like a high-end app". Four changes, no behaviour change — the sheet renderer is byte-identical.
One icon language
The header mixed an OS emoji (the dice — rendered differently on every device and could not follow the theme), text glyphs (
≡ ☾ ✕ ⊕ › ✎ ▲▼ ↺ ⚙ ◀ ▶), and one lone SVG that matched nothing in weight or optical size. All of it now comes from a single#isprite<symbol>sheet at one stroke weight.The trap, worth reading before touching this: the paint must live in CSS on
.ico, never as attributes on the sprite root. A<use>clone inherits from the use site, sofill="none" stroke="currentColor"on#ispritenever reaches it — every stroked icon rendered as a solid black fill. The share glyph came out a blob and the hamburger was invisible against black. Solid glyphs (play/pause/prev/next, dots) carry their ownfill, which beats the inherited CSS.setIcon()replaces thetextContentassignments that would otherwise delete the<svg>child.Type hierarchy
--displaymoves from JetBrains Mono to Fraunces, which was already self-hosted and precached but unused since.07.04.003— so it costs no extra download and stays offline-safe. Titles and headings get the display serif; mono is now data only (chords, keys, counts, version)..brandis pinned to--monoso the wordmark is untouched.Section headings
Were
.7emgrey italic — the smallest text on screen, and the one thing a player scans for mid-song. Now tracked accent small caps with a hairline rule, ≈5.3:1 on black and ≈5.6:1 on the light ground.Decluttered rows
Rows carry title, subtitle and key. The reorder arrows, pencil, delete, add and chevron move into the context menu, reached by long-press or a new
⋯button, since pointer devices have no long-press. NewopenSetlistContext()gives setlists the same menu (settings / move / delete), which they never had, and the long-press installer now takes the opener as an argument."Played" is encoded once — a ✓ in the row-number slot — instead of dim + strikethrough + pill. That pill was eating the width that truncated titles to "House of t…".
The version tag moves into the ≡ sheet.
.brand smallstays in the DOM but hidden: CI greps it for the version andAPP_VERSIONreads it at boot. The 5-tap gesture-debug trigger moved onto the new line with it.Verification
Deliberately not in this pass: single primary action on the set screen (two red ▶ still mean different things), song header trimmed to four items, calmer chord-pill palette, motion.
🤖 Generated with Claude Code
https://claude.ai/code/session_01RFni8j63y7ynwzmNLMPMTB
Generated by Claude Code