Briefing view 3-column layout — weather panel left, chat center, news cards right; weather and news loaded independently (not from message metadata); auto-scroll to bottom on mount
GET /api/briefing/news endpoint — unified news API used by both briefing panel (last 2 days) and archive view (last 90 days), with days/limit/offset/feed_id params
RSS article retention extended to 90 days (was 14)
Deep article Q&A in briefing chat — source article content injected into system prompt for briefing conversations so follow-up questions can reference article details
/news archive view — browse 90 days of articles with feed filter dropdown, load-more pagination, topic pills, and 👍/👎 reactions
Fix migration 0031 — was incorrectly trying to ALTER TYPE task_status (a PG enum that doesn't exist); status column is plain TEXT, migration is now a no-op
Test plan
Briefing view loads with 3-column layout; weather left, chat center, news right
News panel shows last 2 days of articles; reactions persist
Briefing follow-up chat can answer questions about article content
/news route loads archive with feed filter and load-more pagination
Tasks can be set to cancelled status
alembic upgrade head completes without error on a fresh DB
## Summary
- **Briefing view 3-column layout** — weather panel left, chat center, news cards right; weather and news loaded independently (not from message metadata); auto-scroll to bottom on mount
- **`GET /api/briefing/news` endpoint** — unified news API used by both briefing panel (last 2 days) and archive view (last 90 days), with `days`/`limit`/`offset`/`feed_id` params
- **RSS article retention extended to 90 days** (was 14)
- **Deep article Q&A in briefing chat** — source article content injected into system prompt for briefing conversations so follow-up questions can reference article details
- **`/news` archive view** — browse 90 days of articles with feed filter dropdown, load-more pagination, topic pills, and 👍/👎 reactions
- **Task enhancements** — `cancelled` status, `started_at`/`completed_at` timestamps, `recurrence_rule` field, `RecurrenceEditor` component
- **Fix migration 0031** — was incorrectly trying to `ALTER TYPE task_status` (a PG enum that doesn't exist); status column is plain TEXT, migration is now a no-op
## Test plan
- [ ] Briefing view loads with 3-column layout; weather left, chat center, news right
- [ ] News panel shows last 2 days of articles; reactions persist
- [ ] Briefing follow-up chat can answer questions about article content
- [ ] `/news` route loads archive with feed filter and load-more pagination
- [ ] Tasks can be set to `cancelled` status
- [ ] `alembic upgrade head` completes without error on a fresh DB
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
GET /api/briefing/newsendpoint — unified news API used by both briefing panel (last 2 days) and archive view (last 90 days), withdays/limit/offset/feed_idparams/newsarchive view — browse 90 days of articles with feed filter dropdown, load-more pagination, topic pills, and 👍/👎 reactionscancelledstatus,started_at/completed_attimestamps,recurrence_rulefield,RecurrenceEditorcomponentALTER TYPE task_status(a PG enum that doesn't exist); status column is plain TEXT, migration is now a no-opTest plan
/newsroute loads archive with feed filter and load-more paginationcancelledstatusalembic upgrade headcompletes without error on a fresh DB