Adopt Oxide's color scheme and a square design
The palette now follows Oxide's design system (docs.oxide.computer): a cool neutral scale at hue 260 with almost no chroma, opaque strokes, and Oxide's green as the only accent. The accent-color option is gone: selection, the cursor row, focus rings and the active-panel line all read green. The file panel's header strip now steps toward the list, one shade per row (session strip, path bar, column headers), derived by color-mix so every theme, AMOLED included, follows on its own. Everything is square: every rounded utility and the radius tokens are gone, and checkboxes, radios, selects, number spinners and scrollbars are restyled to match (square scrollbars are always visible on macOS, the cost of styling them). Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+13
-8
@@ -60,17 +60,22 @@ touching the adjacent code.
|
||||
|
||||
- **A new surface token needs an AMOLED line, or AMOLED stops being
|
||||
all-black.** The two `[data-dark-tone='darker']` blocks re-declare every
|
||||
surface (`--chrome`, `--toolbar`, `--row-alt`, …) as `#000`; a token added
|
||||
only to the dark blocks shows through in AMOLED.
|
||||
- **Never declare one token in both the AMOLED blocks and the accent dark
|
||||
formula blocks.** Both are (0,3,0), so source order decides and the later
|
||||
accent block wins. A token that must follow the accent belongs in the base
|
||||
theme blocks instead — a `var(--primary)` there still resolves per accent on
|
||||
`:root`.
|
||||
surface (`--chrome`, `--toolbar`, `--background`, `--row-alt`, …) as `#000`;
|
||||
a token added only to the dark blocks shows through in AMOLED. Tokens derived
|
||||
in `:root` by `color-mix` (`--toolbar-2/-3`) follow on their own.
|
||||
- **Hover/selected color is a translucent overlay (`--accent`).** An opaque
|
||||
hover vanishes on a surface of its own lightness — light's old 0.967 hover
|
||||
on the 0.965 header strip did exactly that. Keep `--accent` alpha-based when
|
||||
retoning surfaces.
|
||||
- **A native control ignores `border-radius` and background until
|
||||
`appearance: none`.** WebKit draws checkboxes, radios and selects itself;
|
||||
the square restyle in the `@layer base` block depends on it. Put `pl-*`,
|
||||
never `px-*`, on a `<select>`: utilities outrank the base layer, so a `px`
|
||||
utility would erase the padding-right the drawn caret lives in.
|
||||
- **A custom `::-webkit-scrollbar` turns off macOS overlay scrollbars.** The
|
||||
moment the pseudo-element is styled, WKWebView draws classic always-visible
|
||||
scrollbars that take layout width. Deliberate here (square design); don't
|
||||
reach for it to "tint" scrollbars without accepting that.
|
||||
|
||||
## The interface scale (root font-size lever)
|
||||
|
||||
@@ -144,7 +149,7 @@ touching the adjacent code.
|
||||
- **Window-open flash prevention is three-layer** — remove any one and the
|
||||
white/inverted blink returns: (1) windows are created `hidden: true` and
|
||||
revealed by `showWhenReady` on the webview's first `dom-ready` (800 ms
|
||||
fallback), (2) the bun preload bakes the persisted `data-theme`/tone/accent
|
||||
fallback), (2) the bun preload bakes the persisted `data-theme`/tone
|
||||
attributes and the interface scale before first paint (`buildPreload`),
|
||||
(3) `ui/src/index.html` carries an inline `<style>` with the html background
|
||||
per theme — its oklch values MUST stay in sync with the `--background` tokens
|
||||
|
||||
Reference in New Issue
Block a user