• v26.04.14.1 Stable

    bvandeusen released this 2026-04-14 08:02:25 -04:00 | 410 commits to main since this release

    Highlights

    Unified /news + briefing discuss

    Both article discussion entry points now share a single seed_article_discussion() helper that stages the synthetic read_article tool exchange and the conversational seed prompt. Behavior is byte-identical across entry points — /news no longer dumps a raw article body into a seeded message and calls it a day.

    /news discuss also auto-starts generation server-side, so clicking 💬 lands you on an in-flight stream instead of a pre-seeded chat waiting for you to press send. The web ChatView reconnects to the running generation on mount; no UI changes were needed there.

    Article summaries persist to RAG

    The first assistant reply in a seeded article conversation is now saved as a Note, tagged article-summary plus any article topics, with entity_meta carrying rss_item_id + url + conversation_id. The rss_items.discussion_note_id FK back-link makes the save idempotent — re-clicking Discuss on the same article is a no-op.

    The goal: the knowledge base stops being amnesiac about articles you've already engaged with. Future chats can surface the prior summary through normal semantic search.

    The post-generation hook fires fire-and-forget from run_generation, logs failures, and never breaks the chat even if note persistence hits a snag.

    Schema

    Migration 0039 adds rss_items.discussion_note_id (BIGINT NULL, FK → notes.id ON DELETE SET NULL). Additive — existing rows stay unlinked until the next discuss click.

    Downloads
  • v26.04.13.3 Stable

    bvandeusen released this 2026-04-13 23:36:22 -04:00 | 413 commits to main since this release

    Highlights

    Rich single-article Discuss

    The news/RSS Discuss button now produces real conversations about articles instead of one-shot summaries. Architecture is a three-layer cache on rss_items (context_prepared → content_full → fresh fetch) so expensive prep work happens once, upfront, at click-time — the chat itself stays as fast as any normal chat turn regardless of article size.

    • Small articles (≤48k chars) pass through unchanged and cache on first click
    • Large articles run a parallel map-reduce step on the background model (chunked by paragraph, ~300-word factual summaries per chunk concatenated under section headers) — one-time cost, cached for repeat clicks
    • Follow-up turns in both cases are zero extra cost — the article context is already in history as a synthetic read_article tool result

    The canned "Please summarize and discuss this article." prompt is replaced with a conversational seed that invites a real discussion ("I want to talk about this article. Start with a substantive summary... I'll ask follow-ups from there.") — the old checklist-shaped prompt was making the model respond like it was completing an assignment instead of starting a conversation.

    The map step pins num_ctx=16384 explicitly to avoid the same silent-truncation footgun that wrecked the research pipeline in v26.04.13.2.

    discuss_topic (multi-article aggregation) is intentionally untouched — follow-up work will decide whether to retire it or rework it on the cached-context approach.

    Schema

    Migration 0038 adds three nullable columns to rss_items: content_full, context_prepared, content_fetched_at. Additive — no backfill, cache fills in lazily.

    Downloads
  • v26.04.13.2 Stable

    bvandeusen released this 2026-04-13 19:00:47 -04:00 | 415 commits to main since this release

    Highlights

    Chat auto-naming (#109)

    • Title model is now fed raw user/assistant turns instead of the post-build_context message list. build_context concatenates RAG snippets, RSS excerpts, URL content, and briefing articles into the user-role message string, which was leaking into the title filter's first-300-char window and producing garbage conversation titles.

    Timezone

    • Calendar and briefing dates now interpreted in the user's local timezone instead of UTC.

    Research pipeline — monolith note fix

    • Root cause: generate_completion was the only LLM entry point not defaulting num_ctx, so _generate_outline prompts (~6k tokens from 12 sources) were silently truncated to Ollama's ~4k qwen3 default. Outline JSON parse failed → pipeline fell back to the single-note path.
    • generate_completion now defaults num_ctx to Config.OLLAMA_NUM_CTX like stream_chat does.
    • _generate_outline and _generate_executive_summary pin num_ctx explicitly as a belt-and-suspenders guard against future refactors.

    Verified end-to-end on dev: a single research conversation produced a correct index note (title Research: …, tags research+research-index, 3 section notes with parent_id, executive summary) and a clean conversation title — confirming all three fixes in one test.

    Downloads
  • v26.04.13.1 Stable

    bvandeusen released this 2026-04-13 01:14:03 -04:00 | 419 commits to main since this release

    Highlights

    LLM / responsiveness

    • Root-cause fix for 5–20s TTFT variance on qwen3:14b: frontend no longer hardcodes think=true; _should_think is a real content classifier (length + keyword). Timing logs split first_token_ms / thinking_ms / ttft_ms.
    • 38 parametrized _should_think tests; briefing /discuss-* actions defer to the classifier.
    • pick_num_ctx now includes tool schemas — fixes silent prompt truncation at 14K+ tokens.
    • Ollama model tags normalized to lowercase; error bodies surfaced; pre-gemma3 summaries refreshed.
    • Default background model switched to gemma3:4b.

    Tools refactor

    • Decorator-based tool registry replaces monolithic tools.py (2566 lines → tools/ package). Single source of truth per tool via @tool; briefing eligibility via briefing=True; CalDAV/SearXNG via requires=.
    • Tool count consolidated from 42 → 38 (create_taskcreate_note, delete_taskdelete_note, entity saves merged, get_noteread_note).

    Research

    • Research pipeline emits an index note with executive summary + clickable section-note links; section notes parent_id → index. Minimum sections lowered to 2 with retry.
    • Empty-exception messages now fall back to exception class name.

    Chat / UI

    • Knowledge and Workspace views stop passing explicit conversation titles so backend auto-naming fires.
    • "New Chat" button no longer stretches full height in empty state.
    • Task cards in Knowledge view show the Task badge instead of List.

    CI

    • New ci-runner base image with uv/ruff/jq/tzdata baked in; typecheck 9m41s → ~30s, lint 13s → 2s.
    • Registry cache export made non-fatal; setuptools install fix for uv + http-ece.
    Downloads
  • v26.04.10.1 Stable

    bvandeusen released this 2026-04-10 11:05:30 -04:00 | 459 commits to main since this release

    What's Changed

    Paused Projects

    • New paused project status with auto-pause after 14 days of inactivity and auto-reactivation on activity
    • Paused tab added to project list filter; status validation updated to accept paused

    Project Cards

    • Overall completion bar rendered on project cards; done milestones auto-collapse
    • Fix: null project fields coerced to empty string to avoid NOT NULL violation

    Search

    • Hybrid keyword + semantic search — exact title/body matches now rank first above semantic hits

    Briefing

    • Redundant current-conditions block removed; live temperature patched directly into WeatherCard

    Email Templates

    • Email templates updated to Modern Fable visual identity (violet + gold palette)

    Navigation & UX

    • Back button from a note/task returns to its project when set, otherwise to Knowledge
    • Header nav text darkened in light mode — inactive uses text-secondary, active uses primary-solid

    Internal

    • Lint cleanup: timezone import, direct timedelta usage, unused variable removal
    Downloads
  • v26.04.09.1 Stable

    bvandeusen released this 2026-04-08 23:31:15 -04:00 | 471 commits to main since this release

    What's Changed

    Briefing Intelligence Overhaul

    • Actionable briefings: Tasks show days overdue + project context; LLM suggests rescheduling, marking in progress, or breaking down
    • Daily planning: "Your Day" section with prioritized focus list and calendar gap analysis
    • Differentiated check-ins: Midday = brief progress nudge; Afternoon = wrap-up + capture prompt
    • Weekly review: Sunday evening 7-day recap — completed tasks, notes created, project activity, upcoming week preview
    • Project continuity: "Pick up where you left off" — yesterday's activity and stale project warnings

    Live Weather

    • Current conditions endpoint polling every 30 min — live temperature displayed above forecast card
    • Weather × calendar cross-reference: rain warnings for outdoor events (30%+ precip probability)

    News Synthesis

    • Articles clustered by topic for thematic briefing instead of headline listing
    • Cluster-level preference filtering: user-preferred topics ranked higher, strongly disliked topics suppressed
    • Multi-article topic discussion endpoint for deep cross-article analysis
    Downloads
  • v26.04.08.3 Stable

    bvandeusen released this 2026-04-08 14:52:47 -04:00 | 482 commits to main since this release

    What's Changed

    Specialized Note Type Editors

    • Person: contact card form (Relationship, Birthday, Email, Phone, Organization, Address) with collapsible Notes section
    • Place: form-first layout (Address, Phone, Hours, Website, Category)
    • List: checklist builder with Enter-to-add, Backspace-to-delete, checkbox toggle
    • Tab navigation skips formatting toolbar; auto-focus on title; type-dependent placeholders

    Knowledge View

    • New item button: gradient CTA with 5-type icon menu
    • Person cards show organization; place cards show category

    Calendar Event UX

    • Smart time defaults: next 30-minute boundary, 1-hour duration
    • Linked start/end: changing start moves end to preserve duration
    • End can't be before start; all-day toggle manages times; past event hint

    Theme Polish

    • DRY: hardcoded violet values replaced with CSS custom properties
    • Dark mode contrast boost for borders, glows, and card edges
    Downloads
  • v26.04.08.2 Stable

    bvandeusen released this 2026-04-08 11:40:25 -04:00 | 494 commits to main since this release

    What's Changed

    Knowledge View Consolidation

    • Tasks integrated into Knowledge view as a fifth card type with status, priority, and due date
    • /notes and /tasks list routes deprecated — redirect to Knowledge (/)
    • New-note button toggles to reveal type options (Task, Person, Place, List)
    • "Tasks" removed from header navigation

    Modern Fable Visual Identity

    • Deep violet (#7c3aed) + muted gold (#d4a017) palette replaces indigo
    • Pill-grouped nav tabs with violet glow on active; brand shortened to "Fabled" in Fraunces italic
    • Card type DNA: gradient top bars (note/task/list), corner accents (person/place), violet hover bloom
    • Fraunces italic as "narrator voice" for sidebar labels and empty states
    • Amber for all temporal data (due dates, timestamps, event times)
    • Scroll edge fades, ornamental section dividers, glow buttons, status dot pulse
    Downloads
  • v26.04.08.1 Stable

    bvandeusen released this 2026-04-08 08:37:41 -04:00 | 506 commits to main since this release

    What's Changed

    • fix(voice): Resume AudioContext after creation so silence detection actually fires — browsers start it suspended, causing the auto-stop to never trigger
    Downloads
  • v26.04.07.3 Stable

    bvandeusen released this 2026-04-07 20:43:26 -04:00 | 508 commits to main since this release

    What's Changed

    • Discuss button fix: Full article content fetched via trafilatura for both briefing and chat discuss paths
    • Push notifications: Fixed VAPID key format (PEM → base64url DER); added "Regenerate VAPID Keys" button in Settings → Notifications
    • Chat titles: Rewrote title generator to only use user messages — no more JSON fragments, special tokens, or system prompt leakage
    • Project inference: System prompt now explicitly forbids inferring project names on task/note creation
    • Background model: Default bumped from qwen2.5:0.5b to qwen2.5:3b for reliable title/summary generation
    • Voice STT: Whisper receives conversation context as initial_prompt to reduce mishearings
    • Voice UI: Mic button integrated into ChatInputBar with click-to-toggle + silence detection; VoiceOverlay removed
    • Voice reactivity: Status re-checked on tab focus and after saving voice settings; mic visible on HTTP with graceful error
    Downloads