mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-03 22:11:35 +00:00
* refactor(ui): sidebar cleanups — shared tooltips, one idle-import helper, cross-tab outbox bridge Three bounded cleanups following the offline-state work: - Tooltip unification: every sidebar-family tooltip (session-row badges, offline status, agent card, attention actions, brand icons) now uses the shared <openclaw-tooltip> component instead of raw title attrs, completing the direction #112639 started. Aria labels unchanged. - One idle-import helper (ui/src/lib/idle-import.ts): the duplicated idle-load/retry logic from app-sidebar chrome and app-host's outbox loader collapses into createIdleImport (cached promise clears on failure, one idle retry while online, online re-arm, dispose). The helper migration is net negative at its call sites. - Cross-tab outbox bridge: subscribeStoredChatOutboxChanges now also notifies on storage events for the composer outbox keys, installed on first subscribe and removed with the last subscriber, so a message queued in another tab refreshes badges here. * fix(ui): keep idle-import scheduling statement-form for narrow-safe types and consistent-return * fix(ui): give idle-import a strictly void schedule and promise-only load