Update summary.md for session: quick-capture, bug fixes, note picker

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 23:15:54 -05:00
parent b079c583df
commit 7728e38318
+15 -1
View File
@@ -12,7 +12,7 @@
> Include file-level details in the commit body when the change is non-trivial.
## Last Updated
2026-02-28 — Intent routing fixes (search_web over-triggering, prior-work fast-path), note picker persistent context, intent model upgrade to qwen2.5:7b, default model setting fix
2026-02-28 — Quick-capture endpoint for Android/external clients; bug fixes: create_note list-title crash, AI Assist 400 error, note picker persistent context, intent routing
## Project Overview
Fabled Assistant is a self-hosted note-taking and task-tracking application with
@@ -277,6 +277,7 @@ fabledassistant/
│ │ ├── admin.py # /api/admin blueprint: backup, restore, user management, registration toggle, invitations, base URL, SMTP (admin only)
│ │ ├── chat.py # /api/chat blueprint: conversations CRUD, SSE message streaming (all @login_required)
│ │ ├── notes.py # /api/notes CRUD + wikilinks + backlinks + tag suggestions (all @login_required)
│ │ ├── quick_capture.py # /api/quick-capture POST — mobile/external single-shot item creation (session auth)
│ │ ├── tasks.py # /api/tasks CRUD + PATCH status (all @login_required)
│ │ └── settings.py # /api/settings GET/PUT, GET /models — per-user settings + installed model list (@login_required)
│ ├── services/
@@ -668,6 +669,19 @@ When adding a new migration, follow these conventions:
brainstorming requests, game design, writing help, or when the user references existing notes.
Creative/ideation requests ("think of", "come up with", "brainstorm") always route to null (chat).
`search_web` is only for genuinely new real-time facts not in the user's notes.
- **Quick-capture endpoint:** `POST /api/quick-capture` in `routes/quick_capture.py` (session auth via
cookie). Takes `{"text": "natural language string"}`, runs `classify_intent` filtered to creation-only
tools (`create_note`, `create_task`, `create_event`, `create_todo`), calls `execute_tool`, and returns
a single synchronous JSON response — no SSE, no conversation ID. Falls back to `create_note` if intent
is unclear or low-confidence. Response: `{"success", "type", "message", "data", "fallback?"}`.
Designed for Android/mobile quick-capture use case. Auth: session cookie from `POST /api/auth/login`.
- **Bug fixes (this session):**
- `create_note`/`create_task` list-title crash: `execute_tool` now validates `title` is a string and
returns a structured error so the model self-corrects with individual calls (vs. crashing asyncpg).
- AI Assist panel 400 errors: `routes/notes.py` assist route was missing `or Config.OLLAMA_MODEL`
safety net — empty `default_model` DB value was passed to Ollama as-is, causing 400.
- Note picker → persistent context: paperclip attachment now calls `includeNote()` directly
(persistent `includedNotes`) instead of the one-shot `attachedNote` pattern.
- **Default model setting fix:** `delete_setting()` added to `services/settings.py` — saving an empty
model value in Settings now deletes the DB row rather than storing `""`, so `get_setting()` falls
back to the `Config` default. Safety net `or Config.OLLAMA_MODEL` guards added in `routes/chat.py`