Both the briefing discuss button and the /news💬 button now call a shared seed_article_discussion() helper that stages the synthetic read_article tool exchange and the conversational seed prompt — behavior is byte-identical across entry points.
/news discuss now auto-starts generation server-side, so clients land on an in-flight stream (matches briefing's behavior). ChatView already calls reconnectIfGenerating on mount so the web attaches to the live stream automatically.
Article summaries persist to RAG
First assistant reply in a seeded article conversation is saved as a Note (tags: article-summary + article topics, entity_meta carries rss_item_id + url + conversation_id) and backlinked via rss_items.discussion_note_id. The knowledge base stops being amnesiac about articles the user has engaged with — future chats can surface the prior summary through normal RAG.
Post-generation hook in run_generation fires fire-and-forget, is idempotent (skips if already linked), and logs/swallows errors so chat never breaks from note persistence.
CI gating carryover
.forgejo/workflows/ci.yml main-ref guards from the last patch ride along on this release.
Schema
Migration 0039 adds rss_items.discussion_note_id (BIGINT NULL, FK → notes.id ON DELETE SET NULL). Additive — existing rows stay unlinked until the next discuss click.
Test plan
Click 💬 on a /news article — chat opens with live streaming; first reply matches briefing's Discuss behavior.
Verify the first-reply Note appears in /notes tagged article-summary and shows up in RAG for a related query.
Re-click 💬 on the same article — no duplicate note created, chat opens normally.
Briefing discuss flow still works (regression check).
## Summary
**Unified article discussion entry points**
- Both the briefing discuss button and the `/news` 💬 button now call a shared `seed_article_discussion()` helper that stages the synthetic `read_article` tool exchange and the conversational seed prompt — behavior is byte-identical across entry points.
- `/news` discuss now auto-starts generation server-side, so clients land on an in-flight stream (matches briefing's behavior). `ChatView` already calls `reconnectIfGenerating` on mount so the web attaches to the live stream automatically.
**Article summaries persist to RAG**
- First assistant reply in a seeded article conversation is saved as a Note (tags: `article-summary` + article topics, `entity_meta` carries `rss_item_id` + `url` + `conversation_id`) and backlinked via `rss_items.discussion_note_id`. The knowledge base stops being amnesiac about articles the user has engaged with — future chats can surface the prior summary through normal RAG.
- Post-generation hook in `run_generation` fires fire-and-forget, is idempotent (skips if already linked), and logs/swallows errors so chat never breaks from note persistence.
**CI gating carryover**
- `.forgejo/workflows/ci.yml` main-ref guards from the last patch ride along on this release.
## Schema
Migration `0039` adds `rss_items.discussion_note_id` (BIGINT NULL, FK → `notes.id` ON DELETE SET NULL). Additive — existing rows stay unlinked until the next discuss click.
## Test plan
- [ ] Click 💬 on a `/news` article — chat opens with live streaming; first reply matches briefing's Discuss behavior.
- [ ] Verify the first-reply Note appears in `/notes` tagged `article-summary` and shows up in RAG for a related query.
- [ ] Re-click 💬 on the same article — no duplicate note created, chat opens normally.
- [ ] Briefing discuss flow still works (regression check).
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
Unified article discussion entry points
/news💬 button now call a sharedseed_article_discussion()helper that stages the syntheticread_articletool exchange and the conversational seed prompt — behavior is byte-identical across entry points./newsdiscuss now auto-starts generation server-side, so clients land on an in-flight stream (matches briefing's behavior).ChatViewalready callsreconnectIfGeneratingon mount so the web attaches to the live stream automatically.Article summaries persist to RAG
article-summary+ article topics,entity_metacarriesrss_item_id+url+conversation_id) and backlinked viarss_items.discussion_note_id. The knowledge base stops being amnesiac about articles the user has engaged with — future chats can surface the prior summary through normal RAG.run_generationfires fire-and-forget, is idempotent (skips if already linked), and logs/swallows errors so chat never breaks from note persistence.CI gating carryover
.forgejo/workflows/ci.ymlmain-ref guards from the last patch ride along on this release.Schema
Migration
0039addsrss_items.discussion_note_id(BIGINT NULL, FK →notes.idON DELETE SET NULL). Additive — existing rows stay unlinked until the next discuss click.Test plan
/newsarticle — chat opens with live streaming; first reply matches briefing's Discuss behavior./notestaggedarticle-summaryand shows up in RAG for a related query.