• v0.10.0 0ba89a495b

    zaph0d released this 2026-02-21 15:59:32 +01:00 | 75 commits to main since this release

    📅 Originally published on GitHub: Sat, 21 Feb 2026 15:00:09 GMT
    🏷️ Git tag created: Sat, 21 Feb 2026 14:59:32 GMT

    Tip

    Human here: re-connected my keyboard for a second to give a Big Fat Well Done to Claude on this one, being the first code agent to succesfully add a light theme this far in the development cycle (aka very late) on the basis of 1 inquiring, and 1 clarifying prompt. With zero mistakes, up to and including releasing the new feature here.

    What's new

    Adds full light and dark colour themes, with a System option (the new default) that follows your OS preference in real time.

    Settings → Appearance

    A new Light / System / Dark toggle sits between Work week and About in Settings. The choice is saved to localStorage and takes effect instantly — no page reload.

    Technical highlights

    • No flash on load — an inline <head> script applies the correct .dark class before the first paint, so there's never a visible flicker
    • Live OS sync — selecting System registers a prefers-color-scheme media-query listener; switching your phone or Mac between light and dark updates the app immediately without touching Settings
    • CSS variable split:root is now the light palette; .dark holds the original dark palette; every existing bg-background, text-muted-foreground, etc. adapts automatically
    • Browser chrome aware — two <meta name="theme-color"> tags with media attributes keep the address bar colour in sync with the active scheme
    • 18 new unit tests covering all theme utility functions (getStoredTheme, setStoredTheme, applyTheme, resolveTheme, getSystemTheme)

    Files changed

    File Change
    src/index.css :root → light palette; .dark → original dark palette
    src/lib/theme.ts New — pure theme utilities
    src/context/ThemeContext.tsx New — ThemeProvider + useTheme hook
    src/components/ThemeSetting.tsx New — Settings UI component
    src/lib/__tests__/theme.test.ts New — 18 unit tests
    index.html Anti-flash inline script; dual theme-color meta tags
    vitest.config.ts New — vitest config (jsdom)
    package.json 0.9.0 → 0.10.0; added vitest + jsdom devDeps

    Screenshots (docs/screenshots/settings.png) may need regenerating to show the new Appearance card.

    Downloads