# 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 are notes with `status IS NOT NULL`. They carry status (`todo` → `in_progress` → `done`), 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.45–0.60 shown in sidebar as "Suggested." - **Attach notes** — Paperclip icon to include specific notes in context. - **Project scope** — Restrict RAG to a single project's notes via the sidebar selector. - **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 Briefing `/briefing` is a scheduled, dialogue-based morning briefing. The assistant compiles tasks, calendar events, projects, weather forecast, and RSS digest at configurable times, then checks in throughout the day. You can reply interactively. **Schedule** — Configurable slots: morning (default 4am compile), midday (8am check-in), evening (12pm check-in), night (4pm). Scheduler catches up missed slots on startup. **Configuration** — Settings → Briefing: enable toggle, location geocoding, office days, time slot toggles, RSS feed management, push notification toggle. **RSS feeds** — Add feed URLs with optional name and category. Feeds are fetched and cached; the briefing digest includes recent items. Category badges shown in the UI. Feeds can be manually refreshed. **Weather** — Location-based forecast via Open-Meteo. Multiple locations supported (home, work, or any city name). Geocoding via Nominatim. **Profile note** — The assistant maintains a profile note for each user that it updates based on briefing conversations, improving personalisation over time. ## Web Research The assistant can search the web (SearXNG) and fetch pages, synthesising findings into notes. A lightweight `search_web` tool answers quick questions inline without saving. Requires `SEARXNG_URL` to be configured. ## CalDAV Calendar Connect an external CalDAV server (Nextcloud, Radicale, etc.) and manage calendar events via natural language. Tools: `create_event`, `list_events`, `search_events`, `update_event`, `delete_event`. Activated when user configures CalDAV credentials in Settings → Integrations. ## 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 handled by `public/sw.js` (suppresses duplicate notifications 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, briefing push toggle | | Integrations | CalDAV configuration, SearXNG status | | Data | Personal export, backup/restore (admin) | | Briefing | Enable, location, office days, slots, RSS feeds, weather | | 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 | ## 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 |