• bvandeusen released this 2026-04-28 09:13:40 -04:00 | 303 commits to main since this release

    Day after the journal/Scribe rebrand, the design system shipped end-to-end and several adjacent issues surfaced during verification got resolved.

    Headline

    • Design system applied across the whole app — dusty violet #5B4A8A accent replaces indigo; warm parchment light mode (#F5F1E8 page, #FBF8F0 cards) replaces white-and-cool-blue; Obsidian/Iron/Pewter dark mode replaces cool grey; Inter loaded for body, JetBrains Mono for code, Fraunces still for headings ≥18px. The Hybrid accent rule is enforced — Save buttons are Moss green, Cancel is Bronze, Delete is Oxblood with a Trash icon, brand-moment CTAs (chat send, journal send, "Open Workspace") keep the dusty-violet gradient.
    • 60 hand-inlined SVGs replaced with Lucide across 15 files. Every chrome icon is now 16 or 24px. Emoji-as-icons (, , 🎤, 📎, , , ×, /) swept.
    • Journal config returned to Settings inside the Profile tab. Locations (home/work geocode), temperature unit, prep schedule (auto-generate toggle, prep time, day rollover hour) — the data the deleted Briefing tab used to set is editable again.
    • Weather + events fixes/api/journal/weather now serves cached weather regardless of age (matches the prep's behavior) and 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 in the right rail.
    • Long-form reading line-height (1.7) on .prose — Note viewer, Task viewer, chat assistant bubbles, journal prep all read like considered prose instead of UI snippets.
    • Italic stripped from chrome — 42 declarations across 24 files. Italic now means "emphasis" only; markdown content emphasis (<em>/<i>) is preserved via browser default.

    Fixes

    • ProjectView Tasks tab counter no longer shows NaN when a status bucket is empty (services/projects.py initialises task_counts with all three lifecycle keys at 0)
    • TaskEditor preview body no longer overflows on top of the WorkLog section (preview pane + work log no longer flex-shrink in the column)
    • Calendar Month/Year title renders Inter, not Fraunces (FullCalendar uses an <h2> element which got caught by the global Fraunces rule)
    • Header status dots brightened so "Ready" reads as a vital green (#4ade80), not muted Moss
    • KnowledgeView filter labels and NoteEditor entity-field labels enlarged to readable size

    Migrations

    None required. Settings already had journal_config from the prior release; today's changes only add UI for fields that already existed.

    Documentation

    • docs/design-system.md updated with the per-PR ship table and explicit "Out of scope — deferred indefinitely" subsection
    • docs/architecture.md, docs/features.md, docs/api-reference.md cleared of stale briefing references; current state describes the journal system

    Deploy notes

    • Pull the new image; no manual migration step
    • After deploy, configure Settings → Profile → Locations to populate the journal's right-rail weather (the auto-refresh kicks in on the next page load once locations are set)

    What's deferred

    • Lucide stroke-weight overrides (1.5/1 vs current 2)
    • Filled-as-active icon state
    • New-user onboarding wizard (tracked as Fable task #155)
    • Flutter app surface phase (foundation port shipped today; surface phase tracked as #156)
    Downloads