bvandeusen
260103d533
feat: inject briefing article content for deep article Q&A
...
Add _build_briefing_article_context() helper to llm.py that reads
rss_item_ids from briefing message metadata and injects article content
into the system prompt. Pass conv_id through build_context() and
generation_task.py.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-28 00:31:43 -04:00
bvandeusen
57bf63e576
feat: extend RSS item retention from 14 to 90 days
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-28 00:29:32 -04:00
bvandeusen
6557fef6a2
feat: support multi-value status and priority filters in list_notes
2026-03-27 23:01:24 -04:00
bvandeusen
a24257aeed
feat: add recurrence service (validate, calculate_next_due, spawn_recurring_tasks)
2026-03-27 22:52:18 -04:00
bvandeusen
c92f4944cc
feat: auto-set started_at/completed_at on task status transitions
2026-03-27 22:49:21 -04:00
bvandeusen
8d330afc6d
feat(calendar): events REST API blueprint and registration
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 12:53:52 -04:00
bvandeusen
90ca667df2
feat(calendar): implement events service with CalDAV push
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 12:49:57 -04:00
bvandeusen
b547f47f54
feat(calendar): update Event model and patch caldav.create_event with uid param
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 12:48:40 -04:00
bvandeusen
e3c1e97cfa
feat(briefing): add task change detection helpers and task_id to _gather_internal
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 10:36:52 -04:00
bvandeusen
2ad07b5e06
feat(briefing): add rss_classifier service for LLM-based topic tagging
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 10:34:37 -04:00
bvandeusen
9e1615bd32
feat(briefing): add past_days/current_weather to Open-Meteo; add parse_weather_card_data()
...
Also adds get_cached_weather_rows() for parallel gather in briefing pipeline.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 10:32:59 -04:00
bvandeusen
e44eb185d5
feat(briefing): extend post_message() to accept optional metadata dict
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 10:31:25 -04:00
bvandeusen
5665f484ed
feat(briefing): add Message.msg_metadata and RssItem.topics/classified_at columns
...
msg_metadata maps to the 'metadata' DB column ('metadata' is reserved
by SQLAlchemy Declarative API). to_dict() exposes the key as 'metadata'
for frontend compatibility.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-25 10:30:37 -04:00
bvandeusen
47b4af281b
feat: API key routes, search endpoint, conversation type wiring
...
- GET/POST/DELETE /api/api-keys blueprint registered
- GET /api/search?q=&content_type=&limit= semantic search endpoint
- create_conversation gains conversation_type param (default "chat")
- cleanup_old_conversations excludes mcp type from retention sweep
- POST /api/chat/conversations accepts conversation_type body field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 21:01:04 -04:00
bvandeusen
583a140485
feat: add ApiKey service with create/list/revoke/lookup
...
SHA-256 hashed keys, fmcp_ prefix, soft-delete revocation. Tests cover
pure logic (hash, prefix, format, uniqueness, scope validation) and
auth middleware bearer token path (pending auth.py update).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-23 20:56:51 -04:00
bvandeusen
bc2119c067
feat: briefing profile note service
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-11 20:07:05 -04:00
bvandeusen
9bb054f3d5
feat: RSS service — feedparser fetch, cache, prune
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-11 19:46:01 -04:00
bvandeusen
bbdcea57a7
feat: weather service — geocoding, Open-Meteo forecast, cache, change detection
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-11 19:45:59 -04:00
bvandeusen
fa81509c9f
feat: add conversation_type and briefing_date to Conversation model
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-11 19:45:47 -04:00
bvandeusen
e128406790
Add Forgejo Actions CI/CD, ruff linting, and test foundation
...
- .forgejo/workflows/ci.yml: fast checks on every push (TS typecheck,
Python lint via ruff, pytest) — no Docker build, ~30s with cache
- .forgejo/workflows/build.yml: Docker build with registry-side layer
caching + SSH deploy on main branch pushes only
- pyproject.toml: add ruff to dev deps, configure pytest and ruff rules
- tests/: conftest.py + first unit tests for _safe_filename (no DB needed)
- Makefile: add lint, fmt, typecheck, test, check targets for local use
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-08 18:46:54 -04:00