Set color-scheme on the theme roots so native controls render in the active
theme, and give the header template <select> an explicit elevated background +
themed <option> colors — an author-styled select's popup otherwise defaults to
white in dark mode.
The fixed-width settings panel overflowed horizontally because the tab nav
didn't wrap, pushing the X close button off the edge and adding a horizontal
scrollbar. nav now flex-wraps. Adds an About section: version, build commit,
and a link to the source repo (opened via open_url).
Mirrors the NPU package card, shown only when hardware_status marks DirectML
applicable; downloads model+runtime via download_directml_package and reloads
hardware to flip to Ready.
html/body sit above .app in the DOM tree and were left with the
browser default (white background + 8px UA-stylesheet margin) — a gap
invisible against the light theme but a bright white outline around
the whole window in dark mode. Mirrors data-theme onto <html> (so the
dark token overrides actually apply up there) and zeroes the
html/body margin.
Replaces a hardcoded blue (#2563eb) primary button with the semantic
accent token, adds a ShieldAlert icon + heading, and gives it proper
elevation (shadow + radius) to read as a deliberate dialog rather than
a plain bordered box.
Recording/Hardware/Storage/Calendar/Sync/Privacy nav tabs get matching
icons; the active tab now uses the accent color instead of an inverted
fg/bg swap. Check/X/AlertTriangle icons replace ✓/✗/✕/⚠ throughout
(connection test result, close button, third-party-cloud warning
banner, no-egress confirmation). The modal itself gets proper
elevation (shadow + larger radius) instead of a flat bordered box.
Tags/Summary/Action items/Calendar event/Participants/Speakers each
get a matching icon and a consistent uppercase section-header style;
"Generate summary" becomes a proper primary (accent-filled) button;
the reminder bell emoji becomes a Lucide Bell icon that highlights in
the warning color once checked.
Bold/Italic/Heading1/Heading2/List/ListChecks Lucide icons replace the
letter/glyph toolbar buttons (bullet "•" and checkbox "☑" in
particular); export buttons get matching icons. Section labels for
Transcript/Notes get icons too, and the reprocess spinner animates
(respecting prefers-reduced-motion).
Search icon inside the input, Trash2/Download/RotateCcw replacing
emoji, tag chips and the selected-item state now use the semantic
accent tokens instead of a hardcoded blue hex, and list rows get a
hover state + an accent-colored left border when selected.
- Full semantic color token system (surfaces, text, borders, one
accent color) replacing the previous 4-variable set — light/dark
designed together, every pairing checked to >=4.5:1 (WCAG AA).
- Global custom scrollbar styling (thin, theme-aware) — the default
OS scrollbar looked out of place against the app's own chrome.
- ThemeToggle replaces the plain theme <select>.
- Record/Stop buttons and the settings/warning icons are now Lucide
SVG icons instead of Unicode glyphs (●■⚙⚠); the recording indicator
is an animated pulsing dot (paused under prefers-reduced-motion)
instead of a static red dot.
- Elevation (shadow tokens) and consistent radius scale.
Replaces the plain <select> theme dropdown with three icon buttons.
Defaults to "system" (Monitor), matching the existing behavior of
following the OS preference until the user picks an explicit override.
The due-date input is new too — action items previously had no way to
set one, which would have made the reminder checkbox unusable (a
reminder needs a due date to schedule against).