Briefing provider now uses the same StreamIterator + 45s per-event stall watchdog as the main chat provider, applied to both discussArticle and sendReply. Mobile network handoffs no longer leave isBriefingStreaming stuck true.
Pull-to-refresh on the briefing message list via RefreshIndicator + AlwaysScrollableScrollPhysics (works even when the briefing is empty).
Lifecycle resumed hook calls the new refreshMessages() method, which unfreezes the streaming state when the server-side message is already complete.
Attach to in-flight chat streams
New attachToGeneration() method on the chat provider — safe to call unconditionally on screen init. Landing on a conversation whose last assistant message is mid-stream (e.g. the unified /news discuss button, which now creates a conversation and auto-kicks generation server-side) picks up live tokens instead of freezing on the placeholder.
Same stall watchdog pattern as sendMessage().
CI
Dropped main from the branches trigger so merge commits no longer re-run dev CI. Mirrors the equivalent fix applied to the fabledassistant repo.
Test plan
Start a briefing reply, background the app, return — input unfreezes, latest message visible.
Pull-to-refresh on an empty briefing fires correctly.
Tap 💬 on /news — chat screen opens and shows live streaming tokens (not a frozen placeholder).
CI runs on dev push; no duplicate run on the main merge commit.
## Summary
**Briefing chat stall watchdog + pull-to-refresh**
- Briefing provider now uses the same `StreamIterator` + 45s per-event stall watchdog as the main chat provider, applied to both `discussArticle` and `sendReply`. Mobile network handoffs no longer leave `isBriefingStreaming` stuck true.
- Pull-to-refresh on the briefing message list via `RefreshIndicator` + `AlwaysScrollableScrollPhysics` (works even when the briefing is empty).
- Lifecycle `resumed` hook calls the new `refreshMessages()` method, which unfreezes the streaming state when the server-side message is already complete.
**Attach to in-flight chat streams**
- New `attachToGeneration()` method on the chat provider — safe to call unconditionally on screen init. Landing on a conversation whose last assistant message is mid-stream (e.g. the unified `/news` discuss button, which now creates a conversation and auto-kicks generation server-side) picks up live tokens instead of freezing on the placeholder.
- Same stall watchdog pattern as `sendMessage()`.
**CI**
- Dropped `main` from the branches trigger so merge commits no longer re-run dev CI. Mirrors the equivalent fix applied to the fabledassistant repo.
## Test plan
- [ ] Start a briefing reply, background the app, return — input unfreezes, latest message visible.
- [ ] Pull-to-refresh on an empty briefing fires correctly.
- [ ] Tap 💬 on `/news` — chat screen opens and shows live streaming tokens (not a frozen placeholder).
- [ ] CI runs on dev push; no duplicate run on the main merge commit.
This repo is archived. You cannot comment on pull requests.
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
Briefing chat stall watchdog + pull-to-refresh
StreamIterator+ 45s per-event stall watchdog as the main chat provider, applied to bothdiscussArticleandsendReply. Mobile network handoffs no longer leaveisBriefingStreamingstuck true.RefreshIndicator+AlwaysScrollableScrollPhysics(works even when the briefing is empty).resumedhook calls the newrefreshMessages()method, which unfreezes the streaming state when the server-side message is already complete.Attach to in-flight chat streams
attachToGeneration()method on the chat provider — safe to call unconditionally on screen init. Landing on a conversation whose last assistant message is mid-stream (e.g. the unified/newsdiscuss button, which now creates a conversation and auto-kicks generation server-side) picks up live tokens instead of freezing on the placeholder.sendMessage().CI
mainfrom the branches trigger so merge commits no longer re-run dev CI. Mirrors the equivalent fix applied to the fabledassistant repo.Test plan
/news— chat screen opens and shows live streaming tokens (not a frozen placeholder).