bvandeusen
2f577fee58
fix(mcp): stateless HTTP transport so client reconnects after redeploy
...
Stateful session manager strands Claude Code after a container redeploy:
it reconnects with a now-unknown Mcp-Session-Id, the server 404s, and the
client won't re-initialize on a 404 (claude-code #60949 ). Stateless makes
each request self-contained (bearer-auth only) so post-deploy reconnect
works without a manual /mcp retry.
2026-05-29 13:16:38 -04:00
bvandeusen
e5565b73dc
feat(trash): Settings retention field (trash_retention_days, 0=keep forever)
2026-05-29 12:12:04 -04:00
bvandeusen
b579aa1c88
feat(trash): TrashView page, nav links, and g+x shortcut
2026-05-29 12:10:27 -04:00
bvandeusen
e5796b6f5c
feat(trash): frontend trash API client + Pinia store
2026-05-29 12:07:44 -04:00
bvandeusen
d8f577e753
feat(trash): daily retention purge scheduler (03:30 UTC) wired into app lifecycle
2026-05-29 11:47:02 -04:00
bvandeusen
a40334312f
test(trash): update delete-tool tests to soft-delete contract (patch trash_svc.delete)
2026-05-29 09:24:58 -04:00
bvandeusen
bfeed67cfe
feat(trash): /api/trash blueprint + flip REST DELETE handlers to soft-delete
2026-05-28 21:13:31 -04:00
bvandeusen
580e4a2c0a
feat(trash): list_trash/restore/purge_trash MCP tools + register + instructions
2026-05-28 21:10:47 -04:00
bvandeusen
c3af24ef51
feat(trash): MCP delete tools soft-delete via trash; add delete_task/project/milestone
2026-05-28 21:10:13 -04:00
bvandeusen
eb41e772cd
feat(trash): exclude trashed rows from events/projects/milestones/rulebooks/embeddings reads + filtering tests
2026-05-28 20:33:40 -04:00
bvandeusen
e7f214fc80
feat(trash): exclude trashed rows from notes + knowledge read paths
2026-05-28 20:30:23 -04:00
bvandeusen
f80c327ecf
feat(trash): restore/list_trash/purge/purge_expired + alive() helper
2026-05-28 20:02:21 -04:00
bvandeusen
ce47ebc7de
feat(trash): services/trash.py — delete() + cascade-stamp by batch
2026-05-28 20:01:35 -04:00
bvandeusen
7f0d99d383
feat(trash): SoftDeleteMixin applied to the 7 soft-deletable models
2026-05-28 19:54:01 -04:00
bvandeusen
84b75f7a73
feat(trash): migration 0057 — deleted_at + deleted_batch_id on 7 tables
2026-05-28 19:53:19 -04:00
bvandeusen
30fbf7b117
docs(mcp): add conceptual primer (what each entity is for) to MCP instructions
2026-05-28 18:25:38 -04:00
bvandeusen
d04b6f4bba
style(rulebook): narrow the Topics column in /rules
2026-05-28 11:42:08 -04:00
bvandeusen
311322fdc8
fix(plan): export startPlanning from tasks store (type-check)
2026-05-28 11:20:44 -04:00
bvandeusen
dc93675470
feat(plan): KnowledgeView Plans facet + plan badge (knowledge endpoints + UI)
2026-05-28 11:12:59 -04:00
bvandeusen
2f5ef9124a
feat(plan): Start planning button on project view
2026-05-28 10:44:40 -04:00
bvandeusen
b30cf06096
fix(plan): move Applicable Rules panel to TaskEditorView (the routed task surface)
2026-05-28 10:43:41 -04:00
bvandeusen
75d3d40038
feat(plan): plan-task viewer shows Applicable Rules panel
2026-05-28 10:42:03 -04:00
bvandeusen
1d5f49fe3b
feat(plan): frontend startPlanning API + store action + task_kind type
2026-05-28 10:41:24 -04:00
bvandeusen
b250141e15
feat(plan): REST /api/tasks/planning endpoint
2026-05-28 10:17:38 -04:00
bvandeusen
4609abacd8
feat(plan): start_planning MCP tool + get_task rules augmentation + instructions
2026-05-28 10:17:20 -04:00
bvandeusen
e269ac9d5c
feat(plan): services/planning — start_planning aggregator
2026-05-28 10:16:36 -04:00
bvandeusen
737467f996
feat(plan): REST task routes — kind on create + list
2026-05-28 08:22:54 -04:00
bvandeusen
fc4a1627b5
feat(plan): MCP task tools — kind on create_task + list_tasks
2026-05-28 08:22:31 -04:00
bvandeusen
50d2a0e9c0
feat(plan): services/notes — task_kind create param + list filter
2026-05-28 08:21:59 -04:00
bvandeusen
8754b1c94d
feat(plan): task_kind on Note model + to_dict
2026-05-28 08:15:29 -04:00
bvandeusen
ac462d1203
feat(plan): migration 0056 — task_kind column on notes
2026-05-28 08:15:13 -04:00
bvandeusen
5f3da7c004
feat(rulebook): port script — parse FabledRulebook .md → Scribe DB
2026-05-27 22:39:50 -04:00
bvandeusen
9658e9a35c
feat(rulebook): Project Rules tab — applicable rules + subscription chips
2026-05-27 22:20:19 -04:00
bvandeusen
f2afb2a8bf
feat(rulebook): /rules route, nav entry, g+r shortcut
2026-05-27 22:01:54 -04:00
bvandeusen
447adf816c
feat(rulebook): subscription panel — toggle projects per rulebook
2026-05-27 22:01:03 -04:00
bvandeusen
75d8e7ab49
feat(rulebook): RulesView three-pane shell + child panes + rule editor
2026-05-27 22:00:32 -04:00
bvandeusen
605dd0a13a
feat(rulebook): frontend API client + Pinia store
2026-05-27 21:59:23 -04:00
bvandeusen
eab5c5a026
feat(rulebook): augment get_project with applicable_rules + MCP instructions
2026-05-27 21:52:18 -04:00
bvandeusen
a1a6c5e47e
feat(rulebook): MCP tools — 16 tools for rulebook/topic/rule/subscription
2026-05-27 21:51:39 -04:00
bvandeusen
bbbd6b2f28
feat(rulebook): REST routes — rules, subscriptions, applicable rules
2026-05-27 21:34:53 -04:00
bvandeusen
0219c673c1
feat(rulebook): REST routes — rulebook + topic endpoints
2026-05-27 21:34:25 -04:00
bvandeusen
45fe198d54
feat(rulebook): service layer — subscriptions + get_applicable_rules
2026-05-27 21:19:14 -04:00
bvandeusen
d3833ba5a4
feat(rulebook): service layer — Rule CRUD with multi-filter list_rules
2026-05-27 21:18:35 -04:00
bvandeusen
38e4220015
feat(rulebook): service layer — Topic CRUD
2026-05-27 21:17:54 -04:00
bvandeusen
cfd801d181
feat(rulebook): service layer — Rulebook CRUD + find_rulebook_by_title
2026-05-27 21:17:21 -04:00
bvandeusen
45c2197cdf
feat(rulebook): SQLAlchemy models for rulebooks, topics, rules
2026-05-27 21:16:49 -04:00
bvandeusen
05e379263a
feat(rulebook): migration 0055 — rulebooks, topics, rules, subscriptions
2026-05-27 21:16:24 -04:00
bvandeusen
4806c34a3c
refactor: Phase 10 — Ollama service, image cache, config, frontend orphans
...
Final cleanup phase of the MCP-first pivot.
docker-compose:
- docker-compose.yml: drop ollama service + OLLAMA_URL/MODEL env vars +
IMAGE_CACHE / VAPID env comments
- docker-compose.prod.yml: drop ollama service + Ollama env + GPU
reservation
- docker-compose.quickstart.yml: drop ollama service + Ollama env +
GPU-reservation comment; quickstart instructions now point at the
MCP Access tab instead of model-pull
Config:
- Drop OLLAMA_URL, OLLAMA_MODEL, OLLAMA_BACKGROUND_MODEL,
OLLAMA_KEEP_ALIVE_*, OLLAMA_NUM_CTX, EMBEDDING_MODEL (fastembed
is hard-coded inside services/embeddings.py)
- Drop IMAGE_CACHE_DIR, IMAGE_MAX_BYTES (image cache subsystem
deleted)
- Drop VAPID_PRIVATE_KEY, VAPID_PUBLIC_KEY, VAPID_CLAIMS_SUB (push
deleted in phase 8)
- Drop VOICE_ENABLED, STT_BACKEND, STT_MODEL, TTS_BACKEND (voice
deleted in phase 8)
- Drop Config.validate() rules for those keys
Image cache deletion:
- services/images.py, routes/images.py, models/image_cache.py
- models/__init__.py: drop ImageCache import
- app.py: drop images_bp registration
- alembic/versions/0054_drop_image_cache.py: DROP TABLE image_cache
Frontend client.ts orphan exports stripped:
- getVoiceStatus, getVoiceList, getVoiceLibrary, installVoice,
uninstallVoice, transcribeAudio, synthesiseSpeech,
VoiceStatusResult / VoiceEntry / VoiceLibraryEntry types
- getJournalConfig, saveJournalConfig, getJournalToday/Day/Days,
triggerJournalPrep, runJournalCurator, listPendingActions,
approvePendingAction, rejectPendingAction, listJournalMoments,
updateJournalMoment, deleteJournalMoment, geocodeAddress
- JournalConfig / JournalLocation / JournalConversation /
JournalMessage / JournalDayPayload / JournalMoment /
CuratorRunResult / PendingCuratorAction types
- consolidateProfile, clearProfileObservations, listProfileObservations
- ProfileObservationEntry, learned_summary/observations_* fields on
UserProfile
- consolidateTask (cascading update to TaskEditorView)
- getFableMcpInfo, getNewsItems, GetNewsItemsParams, NewsItem import
TaskEditorView:
- Drop the auto-summary banner + Re-consolidate button
- Drop isBodyAutoMaintained gate (editor is always user-controlled now)
- Drop reconsolidate function + reconsolidating ref
SettingsView:
- profile ref no longer initialises learned_summary /
observations_count / observations_updated_at (those fields are
gone from UserProfile type)
Surviving frontend composables/components flagged for likely future
cleanup but not deleted in this commit (no compile errors, just
unreferenced after Phase 7-8):
- useAssist, useFloatingAssist, useTagSuggestions, useVad,
useListenMode, useOnnxPreloader (composables)
- WorkspaceNoteEditor, WorkspaceTaskPanel, WeatherCard, InlineAssistPanel
(components)
- api/client.ts still references /api/notes/assist/* and
/api/notes/suggest-tags via useAssist + useTagSuggestions — those
endpoints 404 now but no caller hits them; dead at runtime, harmless.
Compose stack collapses to two services: `app` + `db`. No Ollama, no
voice models, no fable-mcp wheel build. First-boot install reduces to:
docker compose up -d
→ visit web UI → register → Settings → MCP Access → copy snippet
→ claude mcp add … → done.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 19:10:25 -04:00
bvandeusen
b3fca3ced4
migration: drop chat/journal/push/curator/weather tables (Phase 9)
...
Phase 8 deleted the Python models for these tables; this migration
drops the orphan SQL.
Dropped tables (CASCADE-safe):
conversations, messages, generation_tool_log,
moments + moment_embeddings + moment_people/places/tasks/notes,
pending_curator_actions, push_subscriptions, weather_cache,
rss_item_embeddings (legacy pre-pivot experiment)
Dropped per-user settings: every voice_*, journal_*, briefing_*,
curator_* key, plus default_model, background_model, assistant_name,
auto_consolidate_tasks, chat_retention_days, think_enabled,
rag_default_scope.
Hard cutover — no downgrade. Existing data in these tables is lost;
the spec explicitly accepted this in exchange for a clean schema.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-27 18:16:18 -04:00
bvandeusen
8d73f553ca
test: drop test_tools_calendar_always_available
...
Tested that services/tools/_registry exposed event tools to the LLM
tool layer. That layer was removed in Phase 8 commit 91bafb6; event
CRUD is now covered via the MCP tools in test_mcp_tool_events.py.
2026-05-27 18:10:06 -04:00