• v26.04.07.2 Stable

    bvandeusen released this 2026-04-07 08:40:03 -04:00 | 515 commits to main since this release

    What's Changed

    • Discuss button fix: Full article content is now fetched via trafilatura when clicking Discuss in the briefing view or News screen — fixes the model discussing the wrong/empty article
    • Push notifications fix: VAPID key was stored in the wrong format (PEM instead of base64url DER), causing all push sends to fail silently. Fixed key generation; existing installs can recover using the new "Regenerate VAPID Keys" button in Settings → Notifications
    Downloads
  • v26.04.07.1 Stable

    bvandeusen released this 2026-04-06 22:40:53 -04:00 | 519 commits to main since this release

    What's Changed

    Voice & Audio

    • Web voice overlay: click-to-toggle with silence detection and animated amplitude bars
    • Streaming TTS wired into Chat, Briefing, and Workspace views
    • Kokoro voice blending — blend builder UI + weighted tensor synthesis
    • Automatic Kokoro offline mode + daily update check
    • Voice S2S — faster-whisper STT, Kokoro TTS, PTT overlay

    Chat & UI

    • ChatPanel unification — all views (Chat, Briefing, Workspace, Home, Knowledge) use shared component
    • Streaming bubble and input bar extracted as reusable components
    • Listen mode with volume knob; persisted across views via localStorage
    • Live card refresh and interactive checkboxes in list note viewer

    Knowledge & Research

    • Knowledge view: entity types (People, Places, Lists), two-tier pagination
    • Research pipeline rewrite: multi-note outline + parallel section synthesis + index note
    • Read article tool + full article fetching via trafilatura

    Calendar & Events

    • Recurring event expansion, CalDAV pull sync, past search, reminders
    • Month/year picker popover; event popover on calendar grid

    Briefing

    • Article Discuss endpoint with synthetic tool exchange
    • Structured user profile with LLM-learned preferences
    • Briefing pipeline rewrite to conversational prose
    • Slot gating + morning work-day gate; SSO account guard

    Settings & Performance

    • Timezone field in General tab; background model picker with KV cache warning
    • Adaptive num_ctx tiers; KV cache prefix reuse and priming on startup/model change
    • Background task routing to dedicated model to preserve KV cache
    • Conditional thinking classifier

    LLM Tool Fixes

    • Prevent model from inferring project names on create_task / create_note
    • Confirmed guard for deletes; update_person/place, get/update_profile, calculate tools
    • News nav link added to AppHeader

    Bug Fixes

    • Many audit-pass fixes across projects, tasks, chat, events, knowledge, and briefing
    Downloads
  • v26.04.06.2 Stable

    bvandeusen released this 2026-04-06 18:22:27 -04:00 | 527 commits to main since this release

    What's Changed

    • News nav link — Added News to the AppHeader navigation
    • Generation metrics — Token counts, thinking rounds, and timing logged after each generation
    • Interactive checkboxes — List note viewer now renders checkboxes as interactive toggles
    • CI fix — Stop CI runner from filling disk between builds
    • Registry fix — Disabled provenance attestation for Forgejo registry compatibility
    • fable-mcp — Fixed SSE streaming error handling; bumped timeout for long-running tool calls
    Downloads
  • v26.04.06.1 Stable

    bvandeusen released this 2026-04-05 22:21:20 -04:00 | 534 commits to main since this release

    What's new

    Article reading

    • New read_article tool — paste a URL into chat and the assistant fetches and reads the full article text
    • Removed RSS article content cap (was 50,000 chars) — no more truncated articles
    • Fix: conversation history now correctly replays tool calls so article context survives follow-up questions
    • Briefing "Discuss" button injects full article content before launching generation

    Quick capture refactor

    • Replaced the old intent router with native Ollama tool-calling — same pipeline as main chat
    • Thinking is now auto-decided by the classifier instead of being hard-disabled
    • ~460 lines of intent.py deleted

    Settings consistency pass

    • Timezone field — new section in General settings with a text input and a Detect button (auto-fills from browser)
    • Saving timezone now immediately live-patches the briefing scheduler without requiring a config re-save
    • Briefing tab — "Firing in timezone" hint shows the stored timezone value instead of the live browser API
    • Account tab — SSO users now see an informational banner instead of email/password forms they can't use
    • Briefing tab — redundant Office Days section removed (work days are configured in Profile)
    • Scheduler — slot toggles now actually control which jobs are scheduled (previously decorative)
    • Scheduler — morning slot skips non-work days based on profile.work_schedule.days

    Bug fix

    • Fixed ImportError on startup caused by a stale reference to CONTENT_MAX_CHARS in the RSS backfill function
    Downloads
  • v26.03.29.1 Stable

    bvandeusen released this 2026-03-29 15:40:45 -04:00 | 654 commits to main since this release

    What's new

    Security fixes

    • SSRF: block private/internal URLs in image cache fetch, RSS feed add, and CalDAV URL setting
    • Auth: GET /api/images/<id> now requires authentication (was unauthenticated)
    • Auth: Ollama model pull and delete restricted to admin users only
    • Info disclosure: email addresses removed from /api/users/search response
    • OAuth: account auto-linking skipped when provider does not set email_verified: true
    • Config: startup fails with a clear error when SECRET_KEY is default and SECURE_COOKIES=true
    • Rate limiting: startup warning added when TRUST_PROXY_HEADERS is not set behind a proxy
    • XSS: tightened DOMPurify config — src/alt removed from global attribute allowlist

    MCP bug fixes

    • fable_add_task_log: was posting {"body": ...} — API expects {"content": ...}; all log entries now save correctly
    • fable_create_project: status parameter was silently discarded; projects can now be created with status="archived"
    • fable_create_milestone: status parameter was silently discarded; milestones can now be created with status="done"
    Downloads
  • v26.03.28.2 Stable

    bvandeusen released this 2026-03-28 14:03:11 -04:00 | 658 commits to main since this release

    What's new

    • Fix: weather column — briefing weather now returns properly formatted card data; was showing raw cache rows
    • Fix: temp unit label — °C/°F label now correctly reflects the saved preference (was always showing °C)
    • Fix: news column and /news view empty — resolved asyncpg AmbiguousParameterError on NULL feed filter; articles with no published_at now fall back to fetched_at instead of being silently excluded
    • Fix: version badge contrast — app version in settings footer is now legible in both light and dark modes
    • Fix: gitignoredocs/superpowers/, docs/plans/, docs/specs/ excluded and de-tracked from repo
    • Feat: add_rss_feed LLM tool — users can add RSS feeds to their briefing by asking the assistant
    • Feat: fable-mcp auto-version bump — Claude Code PreToolUse hook auto-increments the fable-mcp patch version on every commit that touches fable-mcp/
    Downloads
  • v26.03.28.1 Stable

    bvandeusen released this 2026-03-28 01:38:35 -04:00 | 668 commits to main since this release

    What's new

    • Briefing view redesign — 3-column layout (weather · chat · news). Weather and news panels load independently; news shows the last 2 days of articles from all feeds with 👍/👎 reactions.
    • /news archive view — browse 90 days of RSS articles with feed filter, load-more pagination, topic pills, and reactions.
    • RSS article retention extended to 90 days (was 14).
    • Deep article Q&A in briefing chat — follow-up questions in the briefing conversation can reference the full content of source articles.
    • Task enhancementscancelled status, started_at/completed_at timestamps auto-set on status transitions, recurrence_rule field with a new RecurrenceEditor UI component.
    • Fix: migration 0031 — corrected a broken ALTER TYPE task_status SQL; status column is plain TEXT so migration is now a no-op.
    Downloads
  • v26.03.27.2 Stable

    bvandeusen released this 2026-03-27 17:23:59 -04:00 | 687 commits to main since this release

    What's new

    • cancelled task status — tasks can now be marked cancelled via the LLM/MCP; previously this caused a 500. Includes a DB migration to extend the task_status enum and 400 validation guards on task create/update routes.
    Downloads
  • v26.03.27.1 Stable

    bvandeusen released this 2026-03-27 00:12:42 -04:00 | 689 commits to main since this release

    What's new

    • News story cards in briefing — each RSS item now renders as a card with source, linked headline, snippet, and 👍/👎 reactions (previously reactions were bare "Story N" buttons with no article context)
    • Fix MCP fable_update_taskPATCH /api/tasks/:id was returning 405; route now accepts both PUT and PATCH
    • Backend DRY passparse_pagination() helper across routes; _enrich_shares() and _deduplicate_by_permission() in sharing service
    • Frontend DRY pass — shared milestone color palette, useBackgroundRefresh composable, _loadTabContent() in SettingsView, typed API key helpers
    Downloads
  • v26.03.26.2 Stable

    bvandeusen released this 2026-03-26 19:22:30 -04:00 | 696 commits to main since this release

    • Fix missing onUnmounted import in BriefingView.vue (CI typecheck failure)
    Downloads