Release 0.4.0: the Luminous Instrument redesign - #3
Merged
Conversation
Redesigns the deck, HUD and overlays on a proper token system, and removes the stacked gradient washes that made large dark areas show contour lines. The banding was 8-bit quantization, not a rendering bug: sRGB keeps very few code levels near black, so a soft gradient spread across ~900px has nothing to put between its steps and renders as wide flat plateaus with hard 1-level edges. It only showed in the dim states because the aurora and glow were dimmed there, leaving the undimmed near-flat base ramp as the only structure on screen. - Lift the palette off near-black (#030509 -> #0b111c). One code step at value 7 is a ~14% brightness jump; at value 21 it is ~5% and stops reading as a line. - Replace the six-wash drifting aurora, the full-window vignette and the window-sized deck and boot gradients with flat fills. A gradient that crosses more pixels than it has code levels is not a gradient, it is plateaus. - Drop the nested 1px borders on panels, bubbles and cards. Depth now comes from one step of fill tone plus spacing; edges are kept only for floating menus. - Retune tokens into type, space, radius and elevation scales, and fix the reactive accent so ambient light tracks the orb state. Also replaces the dead View > Toggle Full Screen menu item (a no-op on this frameless window) with Toggle Glass HUD, so the HUD has a menu-bar way out. Records the approach in the README and enforces it for future work via a Cursor rule scoped to src/styles. Co-authored-by: Cursor <cursoragent@cursor.com>
Light around the orb now only exists while the reactor is actually running. The canvas halo carried a fixed alpha floor, so a sleeping orb still emitted a glow disc wider than its drawn ring; the asleep filter desaturated it into a grey smudge. It is now gated on how far energy sits above rest, keyed off a single shared constant, and the stops are rebalanced so the awake look is unchanged. Also drops the dark radial scrim behind the HUD orb and the plinth under every orb stage. Both were soft washes standing in for depth, and on a flat dark surface they read as shadow rather than as light. Co-authored-by: Cursor <cursoragent@cursor.com>
Cut 0.4.0 for the Luminous Instrument redesign. The banding fix changes the base palette and removes every window-sized gradient, so this is a visible enough shift to warrant a minor bump rather than a patch. Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Rebuilds the interface on flat surfaces and a real token system, which also eliminates the colour banding that dark UIs normally suffer from.
The banding fix
The faint contour lines across large dark areas were 8-bit quantization, not a rendering bug. sRGB spends very few code levels near black, so a soft gradient stretched across ~900px has fewer levels available than pixels to cross — it cannot render as a gradient at all, and becomes a few wide plateaus with a hard 1-level edge between each.
It only showed in the dim states because the aurora and glow were dimmed there, leaving the undimmed near-flat base ramp as the only structure on screen. The deck background's
--bg-1 → --bg-0ramp spanned 2 levels of green over 860px.Two changes fix it:
#030509→#0b111c). Below the sRGB toe, brightness is proportional to code value, so one step at value 7 is a ~14% jump while at value 21 it is ~5% and stops reading as a line.Also in this release
Documentation
The banding analysis is written up in full in the README under "Dark UI without colour banding" — the problem is general to dark interfaces, so the five rules transfer to any project. A Cursor rule scoped to
src/stylesenforces them going forward.Test plan
npm run verifyexits 0 — 49/49 tests,tsc --noEmitclean, Vite build cleanpackage.json, bundle confirmed emittingbuild 0.4.0v0.4.0after mergeMade with Cursor