This release ships the design system end-to-end and resolves several adjacent issues surfaced during verification. Foundation, surface phase across 7 PRs, and follow-up fixes — all on top of the journal/Scribe rebrand that landed in v26.04.27.
Design system
Foundation pass (7a9a8b7) — theme.css rewritten with the dusty violet #5B4A8A accent, warm parchment #F5F1E8 light mode, Obsidian/Iron/Pewter dark mode, Inter + JetBrains Mono fonts loaded, action tokens (--color-action-primary Moss, --color-action-secondary Bronze, --color-action-destructive Oxblood, --color-action-ghost-border Pewter) added, hardcoded indigo + warm-gold cleaned up.
Status indicator (3f287d7) — header status dot lights brightened (Moss was too muted to read as a "ready" indicator); decoupled from the semantic palette tokens that drive Save buttons and toasts.
Italic strip (30dfbce) — 42 chrome italic declarations removed across 24 files. Markdown content emphasis (<em>/<i>) preserved via browser default.
Calendar font fix (bc23911) — .fc-toolbar-title was rendering Fraunces because FullCalendar uses an <h2> element (caught by the global h1, h2 { font-family: 'Fraunces' } rule); explicit Inter override added.
Tab-counter NaN fix (4cfea78) — services/projects.py:get_project_summary now initialises task_counts with {todo: 0, in_progress: 0, done: 0} so consumers can sum them without ?? 0 guards.
Task editor flex-shrink fix (df423ab) — long-task preview body no longer overflows on top of the WorkLog section.
Label readability bumps (65ba1cc) — KnowledgeView filter labels and NoteEditor entity-field labels enlarged from 0.72/0.78rem to 0.95/0.92rem.
Journal config restored to Settings
Profile-tab additions (39d56cf) — Locations section (home/work geocode, temperature unit) and Journal section (prep schedule) added inside Profile rather than a separate Journal tab. Removes ~190 lines of dead .briefing-* CSS. The killed Briefing settings tab's data is now editable again.
Weather data fixes (de4b1d7, f20e54a) — /api/journal/weather now serves cached weather regardless of age (matches the prep's behavior); auto-refreshes stale rows in the background. Events window widened from now → +14 days to today 00:00 → +14 days so events earlier today still surface.
Documentation
Design system doc (64ab248) — surface phase shipped state recorded with per-PR table; "Out of scope — deferred indefinitely" subsection added.
Briefing remnants cleared (016a2bd) — architecture.md, features.md, api-reference.md updated to reflect the journal system. Settings tab table corrected. /api/briefing/* table replaced with /api/journal/*.
Commits in this release
bc23911 fix: SettingsView TS errors + calendar month/year font
30dfbce fix(typography): strip chrome italic; reserve italic for emphasis
65ba1cc fix(typography): bump italic-Fraunces section/field labels to readable size
4cfea78 fix(projects): tab counter NaN when a status bucket is empty
3f287d7 fix(design): brighten status-dot indicator lights
016a2bd docs: clear briefing remnants and document journal system
39d56cf feat(settings): re-add journal config to Profile tab; clear briefing remnants
64ab248 docs(design-system): mark surface phase shipped end-to-end
3c1ec40 feat(design): surface phase PR 7 — edge surfaces polish
541e2ed feat(design): surface phase PR 6 — Settings polish
ff498ce feat(design): surface phase PR 5 — Project + Workspace polish
efb3534 feat(design): surface phase PR 4 — Knowledge cluster polish
df423ab fix(task-editor): prevent preview pane and work log flex-shrink
4192a64 feat(design): surface phase PR 3 — Chat surface polish
3d916d7 feat(design): surface phase PR 2 — Journal polish
f20e54a fix(journal): widen events window to match prep's framing
de4b1d7 fix(weather): match prep behavior — serve cached weather regardless of age
d023209 chore(deps): regenerate package-lock for lucide-vue-next
93a3beb feat(design): surface phase PR 1 — Lucide icon migration + scale enforcement
54710b3 docs(design-system): note foundation pass shipped; expand surface-phase thread
7a9a8b7 feat(design): foundation pass — dusty violet palette, warm parchment light, Inter + JetBrains Mono
Test plan
Smoke walk both light and dark themes across Home, Knowledge, Notes, Tasks, Projects, Workspace, Chat, Journal, Calendar, Graph, Settings
Confirm Settings → Profile shows new Locations + Journal sections; geocode lookup works
Confirm Journal right rail populates after Locations are configured
Confirm header status dots read as proper "ready" indicators
Confirm Calendar month/year title renders Inter, not Fraunces
Confirm tab counters in ProjectView show numeric value, not NaN
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
This release ships the design system end-to-end and resolves several adjacent issues surfaced during verification. Foundation, surface phase across 7 PRs, and follow-up fixes — all on top of the journal/Scribe rebrand that landed in v26.04.27.
Design system
7a9a8b7) —theme.cssrewritten with the dusty violet#5B4A8Aaccent, warm parchment#F5F1E8light mode, Obsidian/Iron/Pewter dark mode, Inter + JetBrains Mono fonts loaded, action tokens (--color-action-primaryMoss,--color-action-secondaryBronze,--color-action-destructiveOxblood,--color-action-ghost-borderPewter) added, hardcoded indigo + warm-gold cleaned up.93a3beb→3c1ec40, 7 PRs) — Lucide icon migration (60 hand-inlined SVGs replaced); Hybrid-rule button reclassification across Journal, Chat, Knowledge cluster, Project + Workspace, Settings, and edge surfaces; long-form 1.7 line-height on.prose; two-weights-only (400/500); ToolCallCard de-bordered; bulk delete affordances unified to Oxblood + Trash2 icon.3f287d7) — header status dot lights brightened (Moss was too muted to read as a "ready" indicator); decoupled from the semantic palette tokens that drive Save buttons and toasts.30dfbce) — 42 chrome italic declarations removed across 24 files. Markdown content emphasis (<em>/<i>) preserved via browser default.bc23911) —.fc-toolbar-titlewas rendering Fraunces because FullCalendar uses an<h2>element (caught by the globalh1, h2 { font-family: 'Fraunces' }rule); explicit Inter override added.4cfea78) —services/projects.py:get_project_summarynow initialisestask_countswith{todo: 0, in_progress: 0, done: 0}so consumers can sum them without?? 0guards.df423ab) — long-task preview body no longer overflows on top of the WorkLog section.65ba1cc) — KnowledgeView filter labels and NoteEditor entity-field labels enlarged from 0.72/0.78rem to 0.95/0.92rem.Journal config restored to Settings
39d56cf) — Locations section (home/work geocode, temperature unit) and Journal section (prep schedule) added inside Profile rather than a separate Journal tab. Removes ~190 lines of dead.briefing-*CSS. The killed Briefing settings tab's data is now editable again.de4b1d7,f20e54a) —/api/journal/weathernow serves cached weather regardless of age (matches the prep's behavior); auto-refreshes stale rows in the background. Events window widened fromnow → +14 daystotoday 00:00 → +14 daysso events earlier today still surface.Documentation
64ab248) — surface phase shipped state recorded with per-PR table; "Out of scope — deferred indefinitely" subsection added.016a2bd) —architecture.md,features.md,api-reference.mdupdated to reflect the journal system. Settings tab table corrected./api/briefing/*table replaced with/api/journal/*.Commits in this release
Test plan
🤖 Generated with Claude Code