conduit/lib/shared
cogwheel 2468f7143e
Open WebUI streaming parity: modelName, optimistic state, fade caching, socket resume (#523)
Brings the chat streaming experience closer to upstream Open WebUI.

- Model name: extract/display Open WebUI modelName (camel+snake), thread through the durable payload, preserve across streaming-error handling and server-snapshot adoption (incl. empty placeholders and empty-server-value edges).
- Optimistic state: preserve locally-streamed assistant content/follow-ups when adopting a server snapshot, scoped to the streaming tail; metadata-union keeps local-only fields; consolidated streaming-error teardown (fail-by-message-id).
- Fade caching: cache the opacity-1 span tree per content change and fade only the suffix via AnimatedBuilder (no per-frame markdown rebuild); widget spans only fade when fully past the boundary; surrogate/LaTeX/code offset alignment preserved.
- Sidebar indicator: socket-driven active-chat set, optimistic setActive on task_ids with last-task-aware + token-guarded setInactive (incl. delayed done-recovery path), clear on logout.
- Socket resume: reopening an in-flight chat streams token-by-token over the shared Socket.IO events envelope (REPLACE/APPEND, foreign message_id binding, nested-id extraction, chat-scope guard), with the 1s task poll demoted to a fallback that resolves the server message by the bound foreign id.

Verification: build_runner + flutter analyze clean; affected suites green (new coverage for fade caching, active-chats sync, resume binding/finalize races, metadata preservation). Reviewed via Greptile (iterated) and CodeRabbit; Macroscope correctness check passing.
2026-06-21 10:12:54 +05:30
..
services Offline-first persistence with Drift (#508) 2026-06-19 15:08:16 +05:30
theme fix(ui): enhance system UI overlay style handling across multiple pages 2026-06-06 15:05:43 +05:30
utils fix(security): restrict external link launching to safe schemes 2026-06-10 20:51:15 +05:30
widgets Open WebUI streaming parity: modelName, optimistic state, fade caching, socket resume (#523) 2026-06-21 10:12:54 +05:30