conduit/lib/shared/widgets
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
..
markdown Open WebUI streaming parity: modelName, optimistic state, fade caching, socket resume (#523) 2026-06-21 10:12:54 +05:30
adaptive_route_shell.dart chore(dependencies): remove cupertino_context_menu_plus and update pubspec 2026-05-13 10:55:31 +05:30
adaptive_toolbar_components.dart fix(adaptive_ui): implement opaque glass fallback for adaptive buttons across chat and note editor components 2026-06-06 15:33:35 +05:30
assistant_detail_header.dart feat(chat): add buffering functionality for streaming messages 2026-05-01 11:02:45 +05:30
chat_action_button.dart feat(dependencies): add flutter_driver and update pubspec.lock 2026-05-13 10:55:31 +05:30
chrome_gradient_fade.dart refactor(dialogs): replace showDialog with ThemedDialogs for consistency 2026-05-13 10:55:31 +05:30
conduit_components.dart feat(toolbar): refactor adaptive toolbar components for improved consistency and functionality 2026-05-17 15:39:28 +05:30
conduit_loading.dart feat(refresh-indicator): switch to adaptive RefreshIndicator for improved platform consistency 2026-05-15 01:25:03 +05:30
drawer_shell_page.dart refactor(dialogs): replace showDialog with ThemedDialogs for consistency 2026-05-13 10:55:31 +05:30
drawer_slot.dart feat(navigation): add folder navigation and sidebar search enhancements 2026-05-13 10:55:31 +05:30
jovial_svg_image.dart feat(dependencies): update package dependencies and integrate jovial_svg 2026-05-24 22:54:01 +05:30
measure_size.dart refactor: fix lints 2025-09-16 18:15:44 +05:30
middle_ellipsis_text.dart refactor(settings): remove large text preference and related functionality 2026-06-04 23:25:04 +05:30
modal_safe_area.dart refactor: visual tweaks 2025-09-19 21:12:15 +05:30
model_avatar.dart feat(ios): add ios shortcuts support 2025-11-25 00:08:51 +05:30
model_list_tile.dart feat(tags): add support for model tags in platform APIs and UI components 2026-06-04 21:23:40 +05:30
native_dropdown_button.dart refactor(auth): remove prefetchConversations method and clean up unused code 2026-05-14 23:27:31 +05:30
optimized_list.dart chore(dependencies): update pubspec and Podfile for package management 2026-05-06 17:59:41 +05:30
responsive_drawer_layout.dart refactor(responsive_drawer): remove haptic feedback on drawer interactions 2026-05-28 00:12:21 +05:30
sheet_handle.dart refactor: formatting 2025-09-24 12:00:49 +05:30
sidebar_ios26_scaffold.dart refactor(dialogs): replace showDialog with ThemedDialogs for consistency 2026-05-13 10:55:31 +05:30
skeleton_loader.dart fix: regressions 2025-08-28 19:17:05 +05:30
themed_dialogs.dart refactor(dialogs): replace showDialog with ThemedDialogs for consistency 2026-05-13 10:55:31 +05:30
themed_sheets.dart fix(adaptive_ui): implement opaque glass fallback for adaptive buttons across chat and note editor components 2026-06-06 15:33:35 +05:30
user_avatar.dart refactor(dependencies): update cached_network_image to cached_network_image_ce 2026-05-20 13:51:40 +05:30
web_content_embed.dart Offline-first persistence with Drift (#508) 2026-06-19 15:08:16 +05:30
webview_content_height.dart feat(webview): migrate from webview_flutter_plus to flutter_inappwebview 2026-05-27 00:09:21 +05:30