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