Decision — session icon stroke and type
Status: accepted 2026-10-14. Extends icons and type and the keymaps in settings precedent.
The decision
- Four optional session choices join the profile's appearance:
appearance.icon_stroke(1.0 to 3.0 in quarter steps, on Lucide's 24-unit grid),appearance.font_family,appearance.font_weight(100 to 900 in steps of 100) andappearance.mono_family. - None means the design's own value: the
icon.stroke_widthtoken (the approved 1.5 baseline), Inter, the scheme's own weight, and JetBrains Mono. - The stroke baseline stays 1.5. It is the approved baseline (hub plan
2026-10-13-lucide-panel-icons), and the shipped token matches it. - A user weight replaces the weight locked by the chrome schemes. Body text takes the chosen weight; headings keep their design offset above it.
- System fonts are runtime data. A chosen family is read from the host's font files when it is available. Nothing is embedded, so the bundled-font licence obligations in bundled font licences are unchanged. A missing or still-scanning family falls back to the bundled Inter, which stays behind any system font as glyph fallback.
- Carried by the existing carrier.
settings.applytakes the new keys,prefs.appearance.setis the Prefs front verb, and every app follows the summary topic as it does for the scheme. No new verb.
Why
The icon stroke and the typeface are the two things a person most often wants to tune, and they are session-wide, so they belong in the profile and not in each app. Making them optional keeps every existing profile's digest valid, so nothing is migrated.
Digest and rollback
- The new
Appearancefields are omitted when unset, likestyle,decorationsandcaption_side. A profile that sets none of them re-serialises byte for byte. - The store is format 3. A profile that sets any of the four keys will not
load in a format-2 build, because
Appearancedenies unknown fields. Roll back by resetting the keys first, withsettings.resetor a null value.
Scope
- Apps following the session look (busviewer, ced, dopus, screenshot)
pick the choices up through
session_lookandtoolkit::install, with no edits beyond the overlay. - Prefs builds its own theme from its draft; it is updated alongside.
- backdrop draws textures only, with no text or icon widgets, and installs once at startup. It is out of scope.
- compd's title bars use their own theme builder and an embedded-only
font database. They follow in a later slice, once the contract is proven
nested; the
EffectiveandChangePlanfields are already in place. - Profiles that name their own design source receive no session look, so they keep their design's own values. The choices are still saved.
Consequences
libs/settings0.6.0 and store format 3. The change is additive for every profile that does not set a choice.libs/toolkitgains a theme overlay applied bysession_look, a stroke precedence (overlay, then token, thenDEFAULT_STROKE1.5), a weight override that beats the chrome lock, and a background scan of the host's font files.