Files
FabledScribe/docs/features.md
T
bvandeusen 016a2bd270 docs: clear briefing remnants and document journal system
The Briefing system was retired weeks ago and replaced with the
conversational Journal, but several current-state docs still
described it as live. Updates:

architecture.md
- settings keys: briefing_enabled / briefing_locations / office_days →
  journal_config (JSON: locations, temp_unit, prep schedule)
- conversation_type: chat/briefing/mcp → chat/journal/mcp
- briefing_date column → day_date on Conversation
- "Briefing-Related Tables" section: dropped rss_feeds + rss_items
  rows (retired with PR #43); kept weather_cache and clarified that
  lat/lon now live in journal_config.locations, not on the cache row
- routes/chat.py description: dropped trailing "briefing conversation
  routes" mention
- routes/briefing.py → routes/journal.py with the current endpoint
  shape (config / today / day / days / weather / moments / trigger-
  prep)
- services/briefing_pipeline + scheduler + conversations + profile →
  services/journal_prep + journal_pipeline + journal_scheduler +
  journal_search/moments + user_profile.build_profile_context

features.md
- "Daily Briefing" section rewritten as "Daily Journal":
  conversational, single morning prep, right rail with weather +
  upcoming events, profile-tab configuration, "what the assistant
  has learned" framing
- Settings table: dropped Briefing tab row, added Profile tab row,
  fixed Notifications row's stale briefing-push reference

api-reference.md
- /api/briefing/* endpoints replaced with /api/journal/* — config,
  today/day/days, trigger-prep, weather (cached/current/refresh/
  geocode), moments

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 00:11:43 -04:00

10 KiB
Raw Blame History

Features

Notes

Write in Markdown with a live-preview editor (Tiptap/ProseMirror). Headings, bold, italic, lists, code blocks, and task checklists render inline. A slash-command menu (/) inserts common blocks.

Wikilinks — Link notes with [[Title]] or [[Title|Display Text]] syntax. Clicking a wikilink navigates to (or auto-creates) the referenced note. The editor suggests existing note titles as candidate links while typing [[. Backlinks appear in the note viewer sidebar.

Tags — First-class ARRAY[text] column. Tag autocomplete in the editor sidebar suggests existing tags. Hierarchical tags (project/webapp) supported — filtering by project matches all project/* children. Tags are browsable via the knowledge graph.

Version history — Every body edit snapshots a version (up to 20 per note). Browse and restore from the editor's History panel. Diff view shows changes against the current body.

AI writing assist — Select a passage or work on the full document. Give an instruction ("make this more concise", "add examples"). The assistant streams a proposal; a diff view shows changes to accept or reject. Drafts persist across page loads.

Link suggestions — The editor detects note titles appearing as plain text in the body and suggests converting them to wikilinks.

Tasks

Tasks carry status (todoin_progressdone), priority (none/low/medium/high), due date, milestone assignment, and a parent task (sub-tasks).

Task work logs — Append progress log entries to a task with optional duration. Time tracking is visible in the task editor sidebar.

Sub-tasks — Any task can have child tasks via parent_id. The task viewer shows sub-tasks inline.

Convert freely — Convert a note to a task (sets status=todo) or a task back to a note from the viewer toolbar.

Projects and Milestones

Projects — Group related notes and tasks. Each project has a title, description, goal, status (active/completed/archived), and a colour.

Milestones — Ordered stages within a project. Tasks are assigned to milestones. Milestone completion percentage shown on the project page.

Kanban view/projects/:id groups tasks by milestone in a kanban-style column layout with status-advance buttons directly on cards (→ advance, ✓ complete).

Project Workspace/workspace/:projectId opens a three-panel environment (tasks / chat / notes) locked to a project. The AI assistant creates and updates content directly in the workspace; new notes auto-load in the editor and the task list refreshes automatically after tool calls.

Knowledge Graph

/graph renders all notes, tasks, and tags as a D3 force-directed graph. Tag nodes cluster notes that share tags; invisible project hub nodes attract project members. Physics controls: repulsion, link distance, link strength, hub pull, gravity. Click any node to open a slide-in peek panel. Click a tag node to filter the notes list.

AI Chat

Full conversation history with SSE streaming. Features:

  • RAG — Semantically relevant notes (≥ 0.60 cosine similarity) auto-injected as context. Notes 0.450.60 shown in sidebar as "Suggested."
  • Attach notes — Paperclip icon to include specific notes in context.
  • RAG scope chip — Pill above the input bar shows the current note scope. Click to switch: "Orphan notes only" (default — project notes stay out of general chat), any active project, or "All notes." Scope is persisted per conversation. The AI can also call search_projects and set_rag_scope mid-conversation to switch scope automatically; the chip pulses when this happens.
  • Tool calls — The assistant can create/update notes, tasks, projects, milestones, search the web, check weather, read RSS, query calendar events, and more. Tool calls display inline with confirm/deny for creates.
  • Thinking mode — Toggle extended reasoning for complex questions.
  • Abort — Stop button cancels in-flight generation.
  • Message queue — Messages sent while generation is in progress are queued and drained sequentially.
  • Save to note — Save any assistant reply directly as a note.
  • Bulk delete — Select and delete multiple conversations.
  • Retention — Conversations auto-pruned after configurable days (default 90).

Daily Journal

/journal is a conversational daily surface — each day is a chat-style conversation seeded with an LLM-generated daily prep as the first assistant message. The prep pulls together today's tasks, calendar events, weather, recent moments, and active projects in flowing prose, then invites the user to continue the conversation throughout the day.

Schedule — Daily prep generates at a configurable time (default 5:00am). The "day rollover hour" controls when the journal switches to a new day (default 4am — late-night entries 13am still count as the previous day). Scheduler catches up missed runs on startup.

Right rail — The journal view shows current weather conditions and upcoming events for the next two weeks alongside the conversation. Both surfaces draw from the same data the prep references.

Configuration — Settings → Profile:

  • Locations section: home and work place-name inputs (geocoded on blur via Nominatim) and a temperature unit toggle (C/F)
  • Journal section: prep auto-generate toggle, prep generation time, day rollover hour
  • About You / Interests / Work Schedule / Response Preferences feed personalization into the prep's system prompt

Weather — Location-based forecast via Open-Meteo. Up to two named locations (home, work). Cached rows auto-refresh in the background when the journal page loads.

What the assistant has learned — The assistant maintains a per-user observation log + consolidated summary, generated from journal and chat conversations. The summary is included in the journal's system prompt so the daily prep can reference what it knows about you over time.

Web Research

The assistant can search the web (SearXNG) and fetch pages, synthesising findings into a structured multi-note research output: an index note with an executive summary and links to focused section notes. Each section covers a distinct aspect of the topic with cited sources. Falls back to a single note when outline generation fails. A lightweight search_web tool answers quick questions inline without saving. Requires SEARXNG_URL to be configured.

Calendar

/calendar shows a full FullCalendar view (month, week, day). Click an empty slot to create an event; click an existing event to edit or delete it via a slide-over panel.

Internal events store — Events are stored in the app database (events table), making them available without any external calendar. Fields: title, description, start/end datetime, all-day toggle, location, colour.

AI toolscreate_event, list_events, search_events, update_event, delete_event all operate on the internal store. Tool-call result cards in chat are clickable and open the same EventSlideOver for editing.

HomeView widget — The dashboard shows today's and the next 7 days' events as clickable cards above the hero project.

CalDAV sync (optional) — Connect an external CalDAV server (Nextcloud, Radicale, etc.) in Settings → Integrations. Events sync bidirectionally via a caldav_uid field.

Sharing and Collaboration

Share — Share any project or note/task with users or groups at viewer/editor/admin permission levels. Share button in the viewer/project toolbar opens a dialog.

Groups — Admins create platform-wide groups and assign users member/owner roles. Share a resource with a group in one action.

Shared with me/shared lists all incoming shared projects and notes with permission badges.

Notifications — Bell icon in nav shows unread count (60s polling). Notifications generated for: project shared, note shared, added to group. Click navigates to the resource.

Push notifications — Web Push (VAPID) notifies when AI generation completes, even in another tab. Works over HTTPS only. Configurable per-user.

Quick Capture

Quick capture from the Android app routes to the intent classifier. It creates notes, tasks, or projects based on content — using the user's configured model, not the hardcoded default.

Data Export and Backup

  • Personal export — Settings → Data: download all notes/tasks as a Markdown ZIP (with YAML frontmatter) or JSON array.
  • Admin backup — Full application backup (version 2): includes projects, milestones, task logs, AI drafts, note versions, push subscriptions. ID remapping on restore for cross-instance migration.

PWA

Installable as a desktop or mobile app. Service worker caches the shell; push notifications are suppressed when the relevant tab is already focused. Works over HTTPS only in Firefox.

Settings

Settings are tabbed:

Tab Contents
General Assistant name, default model, model management (pull/delete)
Account Email change, password change, session invalidation
Notifications Push notification subscription, journal prep push toggle
Profile About you, response preferences, interests, work schedule, locations + temperature unit, journal prep schedule, learned observations
Integrations CalDAV configuration, SearXNG status
Data Personal export, backup/restore (admin)
API Keys Create/revoke API keys, Fable MCP download and install
Config (admin) Base URL, SMTP, OIDC settings
Users (admin) User list, invite links, registration toggle
Logs (admin) Error, audit, and usage logs with search
Groups (admin) Create/manage groups and membership

Roadmap

  • Email integration (read/send via IMAP/SMTP tools in chat)
  • Session invalidation on user deletion
  • Flutter push notifications (requires FCM/APNs — separate from web VAPID)
  • Flutter milestone support in project view

Keyboard Shortcuts

Key Action
g + h Go to Home
g + n Go to Notes
g + t Go to Tasks
g + p Go to Projects
g + c Go to Chat
g (bare) Go to Graph
n New note
t New task
c Focus chat input
e Edit current item
/ Search
? Show shortcuts panel
j / k Navigate list items
Enter Open selected item
Escape Close panel / blur / go home (progressive)
Ctrl+S Save in editor