bvandeusen
9dd4178774
docs: add article reading implementation plan
2026-04-05 15:32:54 -04:00
bvandeusen
eed2f6c23a
docs: add article reading design spec
2026-04-05 15:26:07 -04:00
bvandeusen
c89586dcd5
docs: add ChatPanel unification implementation plan
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 15:42:01 -04:00
bvandeusen
fb26507123
docs: add ChatPanel unification design spec
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 15:24:30 -04:00
bvandeusen
b92c6b1487
docs: streaming TTS implementation plan
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 12:43:28 -04:00
bvandeusen
b8cd2e5ed7
docs: streaming TTS design spec
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 12:16:56 -04:00
bvandeusen
3581cc1582
docs: add voice S2S design spec
...
Covers STT (faster-whisper), TTS (Kokoro), per-user settings,
all new/modified files, audio format decisions, and 4-phase
implementation plan.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-29 18:17:58 -04:00
bvandeusen
7fdb2ee39d
chore: ignore docs/superpowers, docs/plans, docs/specs — keep only root docs
2026-03-28 12:16:23 -04:00
bvandeusen
aa18f4f527
docs: add news briefing redesign spec and plan
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-28 00:13:40 -04:00
bvandeusen
3391825550
docs: add news feed & briefing redesign spec
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-27 23:59:34 -04:00
bvandeusen
87c55691fb
docs: update architecture and features for calendar + RAG scoping
...
- architecture.md: add Event model, services/events.py, routes/events.py,
CalendarView.vue, EventSlideOver.vue; update Conversation and Project
data model tables with new columns; update RAG Pipeline section with
three-value scope system, search_projects/set_rag_scope tools, and
project summary background job; fix dead-code note for models/event.py;
update execute_tool() signature docs; add services/projects.py entry
- features.md: replace CalDAV section with full Calendar section covering
internal store, AI tools, HomeView widget, and optional CalDAV sync;
update AI Chat scope chip description; remove done "Calendar view" item
from roadmap
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 18:16:41 -04:00
bvandeusen
ebc79b34f9
feat(rag): RAG scoping and context isolation controls
...
- Migration 0030: add conversations.rag_project_id (NULL=orphan-only,
-1=all notes, positive=project), projects.auto_summary and
projects.summary_updated_at
- Three-value scope semantics thread from build_context() → semantic
search and keyword fallback via orphan_only + effective_project_id
- Project summarization background job (generate_project_summary,
backfill_project_summaries) called via Ollama; triggered on project
update and note saves (debounced 1h); runs at startup
- New LLM tools: search_projects (SequenceMatcher scoring on
title+description+auto_summary) and set_rag_scope (persists to DB,
workspace-guarded, emits new_rag_scope in SSE done event)
- execute_tool() accepts conv_id + workspace_project_id; generation_task
passes both and captures scope changes for SSE done enrichment
- Frontend: Conversation type gets rag_project_id; chat store adds
ragProjectId computed + updateRagScope(); SSE done handler syncs scope
- ChatView: replace sidebar ProjectSelector with a scope chip pill above
the input bar, animated dropdown, pulse on model-driven scope change
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 17:44:39 -04:00
bvandeusen
1e0d11c907
docs: update RAG scoping spec with explicit wiring details
...
Add exact code snippets for orphan_only logic, conv_id threading,
SSE new_rag_scope wiring, workspace guard, and frontend store changes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 17:01:30 -04:00
bvandeusen
17db511119
docs: add RAG scoping and context isolation design spec
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 16:56:25 -04:00
bvandeusen
da55e32a1a
docs(calendar): implementation plan for internal calendar with CalDAV sync
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 12:16:25 -04:00
bvandeusen
651bc1ba7b
docs: revise internal calendar spec based on reviewer feedback
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 11:47:52 -04:00
bvandeusen
0e27be5b63
docs: add internal calendar with CalDAV sync design spec
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 11:41:14 -04:00
bvandeusen
fe6afbad17
docs: update architecture and development docs with recent additions
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 10:56:44 -04:00
bvandeusen
fa200fd528
docs(briefing): add implementation plan for briefing improvements
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 09:48:41 -04:00
bvandeusen
24bd80b5d7
docs(briefing): add briefing improvements design spec
...
Covers task deduplication, RSS classification and preference filtering,
weather card with staleness gate, news cards with reactions, topic
preference settings UI, and Fable MCP RSS feed tools.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 09:31:39 -04:00
bvandeusen
bf292e6019
docs: remove extraneous content — pipeline internals moved to architecture, changelog removed
...
- features.md: remove SQL impl detail from tasks section, sw.js reference from PWA section,
and entire "LLM Chat — Internal Pipeline" section (moved to architecture.md)
- architecture.md: add "LLM Pipeline Internals" section (intent routing, tool loop, duplicate
guards, context window, research pipeline, image cache)
- development.md: remove site-specific NFS path from custom runner instructions
- Remove changelog.md (duplicates git history)
- README.md: remove changelog link
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 08:38:44 -04:00
bvandeusen
e2133529a0
docs: add missing content from summary.md (API reference, Android app, file structure, LLM internals)
...
- docs/api-reference.md: complete REST API endpoint reference (~60+ routes)
- docs/android-app.md: Flutter companion app stack, architecture, feature status
- docs/architecture.md: detailed file-by-file reference for all backend services and frontend components
- docs/features.md: LLM pipeline internals (intent routing, tool loop, duplicate guards, image search, research pipeline), roadmap
- docs/development.md: full migration chain (0001–0026) with naming and caveats
- README.md: link to new api-reference and android-app docs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 21:25:12 -04:00
bvandeusen
47e248d9ac
docs: restructure documentation into docs/ directory, slim README, add project .mcp.json
...
- README.md: reduced to overview + quick start + links to docs/
- docs/architecture.md: stack, design decisions, data models, key services
- docs/configuration.md: all env vars, docker-compose setup, production + security
- docs/development.md: dev workflow, CI/CD, migrations, release process
- docs/features.md: detailed feature breakdown + keyboard shortcuts
- docs/api-keys-and-mcp.md: API key management + Fable MCP install guide
- docs/sso-oauth.md: OAuth/OIDC setup (replaces docs/oauth-setup.md)
- docs/changelog.md: development history from summary.md
- Remove summary.md (content distributed across docs/)
- Remove docs/oauth-setup.md (superseded by docs/sso-oauth.md)
- .gitignore: add .mcp.json
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 21:03:15 -04:00
bvandeusen
6180ee65c3
feat: add .env and Claude config downloads to API key reveal
...
After creating a key, two download buttons appear:
- 'Download .env' — pre-filled FABLE_URL + FABLE_API_KEY
- 'Download Claude config' — ready-to-paste mcpServers JSON block
Also adds Future Task A (in-app install instructions) and Future Task B
(Forgejo MCP) to the implementation plan.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 21:44:34 -04:00
bvandeusen
c24b21f259
docs: add Fable MCP implementation plan
...
17-task TDD plan covering Phase 1 (API key auth, search endpoint,
conversation type wiring, Settings UI) and Phase 2 (fable-mcp Python
package with all tool modules, tests, and Claude Code registration).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 20:24:51 -04:00
bvandeusen
e54d172487
docs: fix 8 spec review issues in Fable MCP design
...
- Add migration down_revision = "0026"
- Document create_conversation service + route changes for conversation_type
- Document SSE wire format (endpoints, event schema, termination event)
- Add retention sweep exclusion for mcp conversation type
- Rename type→content_type in search, document is_task mapping
- Clarify API keys cannot access admin-protected routes
- Document POST /api/chat/conversations accepting conversation_type body field
- Add delete_milestone to milestones tool list
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 20:03:53 -04:00
bvandeusen
f9973e22f1
docs: add Fable MCP design spec
...
Design for two sub-projects: API key auth support in fabledassistant
(bearer tokens, read/write scope, Settings UI) and a standalone Python
MCP server at fable-mcp/ exposing notes, tasks, projects, milestones,
semantic search, and chat tools to Claude Code.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 20:00:26 -04:00
bvandeusen
de4ab53363
Add implementation plans: sharing/collaboration and backup rewrite
...
- docs/plans/2026-03-11-sharing-collaboration.md
7 chunks / 12 tasks covering DB migration, models, access control service,
groups CRUD, sharing service, notifications, and all frontend components
- docs/plans/2026-03-11-backup-rewrite.md
4 tasks covering v2 export (full + user), v2 restore with FK re-mapping,
and round-trip verification; v1 restore preserved
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-11 11:46:54 -04:00
bvandeusen
3b5e84052a
Remove docs/superpowers and gitignore it
...
Planning artifacts (specs/plans) generated by Claude Code sessions don't belong
in the repo. Removing existing files and ignoring the directory going forward.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-10 22:40:44 -04:00
bvandeusen
89f3d94895
docs: settings rework implementation plan
...
Tasks: AppHeader/router cleanup, SettingsView sidebar layout,
inline Users and Logs panels.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-10 21:11:12 -04:00
bvandeusen
1047298765
docs: settings rework design spec
...
Sidebar navigation with User/Admin groups, Option-A grouped card
content style, cog header direct link, Users and Logs panels inlined.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-10 20:43:04 -04:00
bvandeusen
b37e15d59a
Add Authentik OAuth/OIDC SSO, email change, and setup docs
...
Phase 18 changes:
OAuth/OIDC SSO (Authorization Code + PKCE):
- alembic/versions/0015_add_oauth_fields.py: add oauth_sub UNIQUE column,
drop NOT NULL on password_hash
- src/fabledassistant/services/oauth.py: OIDC discovery (cached), build_auth_url,
exchange_code, get_userinfo, find_or_create_oauth_user (sub→email auto-link→create)
- src/fabledassistant/routes/auth.py: GET /api/auth/oauth/login and
GET /api/auth/oauth/callback; LOCAL_AUTH_ENABLED guards on login/register;
/api/auth/status now returns oauth_enabled + local_auth_enabled
- src/fabledassistant/config.py: OIDC_ISSUER, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET,
OIDC_SCOPES, LOCAL_AUTH_ENABLED, oidc_enabled() classmethod
- src/fabledassistant/models/user.py: password_hash nullable, oauth_sub field,
has_password bool in to_dict()
- src/fabledassistant/services/auth.py: create_user accepts password=None +
oauth_sub kwarg; authenticate returns None for OAuth-only users;
add get_user_by_oauth_sub, link_oauth_sub, update_user_email
- frontend: AuthStatus + User types updated; auth store exposes oauthEnabled +
localAuthEnabled; LoginView shows SSO button / hides password form accordingly
Email change:
- PUT /api/auth/email: requires password confirmation for local-auth users,
skips check for OAuth-only users; enforces email uniqueness
- SettingsView.vue: new Email Address section pre-filled with current email,
updates authStore.user in-place on success
Docs:
- docs/oauth-setup.md: step-by-step Authentik provider setup, example
docker-compose env vars, account linking explanation, per-provider issuer URL table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-02-25 20:12:13 -05:00