Get started

v2026.8.1: The New Web UI

The rebuilt Control UI puts conversations at the centre of OpenClaw, with files, approvals, settings, and live work close to the conversation so you can set up a Claw, follow what it is doing, and keep working without bouncing between separate tools.

Starting and managing conversations

Starting a new conversation is now a proper setup screen instead of a blank chat that inherits whatever defaults happen to be active. Before anything begins, you can choose the agent, model, reasoning level, opening message or image, workspace, and the computer that should run it, then use groups, transcript search, status, and batch actions to manage the work later.

Worktree conversations open immediately with the original message while naming, checkout, and setup continue. If a remote start fails, the submitted prompt and attachments stay visible with a same-session Retry or a read-only Check delivery action, and later messages wait until OpenClaw knows what happened instead of risking a duplicate or sending out of order.

Supported Codex conversations can branch from an earlier message without changing the original, and explicit forks can use more than 100,000 tokens when the selected child model can safely accept that context. Automatic thread and subagent forks keep the 100,000-token limit.

Sources and complete change list

Improvements

  • Make the Sessions page easier to scan and triage #102523
  • Add drag-managed session groups to the Control UI #102558
  • Add a session actions menu to the Sessions page #102564
  • Add session worktree targeting and server-managed session groups #103432
  • Redesign Control UI sessions with agent sections and targeted creation #103498
  • Add a full-page New session screen with folder browsing #104238
  • Multi-select sidebar sessions for batch actions #104416
  • Add sidebar session indicators and stop schedules on archive #104730
  • Unify the New Session and start-screen layouts #105069
  • Browse Gateway and node folders from one picker #105114
  • Replace New session target fields with compact menus #105265
  • Search session transcripts from Control UI #105635
  • Add images and model selection to new sessions #107358
  • Add undo and restore flows for archived sessions #110605
  • Fork Codex-backed sessions from a selected message #111149
  • Show Claude Desktop custom groups in the session catalog #111644
  • Combine new-thread folder and destination selection #112035
  • Show real machine identity in the place picker #112162
  • Show pull-request status on Claude catalog threads #112180
  • Make archived sessions a durable, first-class workspace #112554
  • Remember valid workspace and model choices for new sessions #113884
  • Persist draggable Control UI sidebar sections #113930
  • Group session locations and show running placement #120804
  • Add CLI agent targets to the new-session picker #120949
  • Start CLI agent sessions in the terminal from New Session #121126
  • Browse and start sessions inside agent workspaces #121417
  • Add session management to the chat header #121452
  • Start sessions from registered projects #121465
  • Sync new-session preferences and recents by identity #121816
  • Clone GitHub projects from the session picker #121818
  • Keep new-session destinations live and grouped #122531
  • Split new-session setup into Where, What, and Detail #122938
  • Save new-session defaults for folder groups #123276
  • Add persistent emoji icons for sessions #124034
  • Add named and custom session icons #124629
  • Move live sessions between Gateway and runners #125036
  • feat(ui): add session hovercards #125068
  • Choose machine size when moving cloud sessions #125292
  • Add an always-visible Sessions toolbar #125690
  • Start and move sessions on paired devices from Control UI #126187
  • feat(ui): configure capabilities before session start [AI-assisted] #128081
  • feat: make full session actions available from chat header #128995
  • Simplify the Sessions roster and move runtime details #102664
  • Flatten Sessions page visual surfaces #102760
  • Drag whole sidebar group headers to reorder #103997
  • Add PR, editor, and group shortcuts to session menus #104154
  • Match the New session draft to the chat composer #104448
  • Collapse sidebar session groups by project #109648
  • Quiet session rows while keeping last-active details #110524
  • Add device-family icons and consistent platform labels to Places #112209
  • Give unnamed Codex sessions readable sidebar labels #112497
  • Show who archived collaborative sessions #113116
  • Speed up multi-select session actions #113623
  • Group Coding sessions by person and expose people filtering #113943
  • Make Codex and Claude Code sidebar groups reorderable #114074
  • Move transient session status beside row actions #119560
  • Add an in-app session rename dialog #121255
  • Add People sorting to the Control UI session sidebar #121470
  • Hide system and probe sessions from the default sidebar #121855
  • Show useful environment facts in the new-session picker #122923
  • Add a compact keyboard-friendly session icon grid #124335
  • Move session status to a fixed second row #124960
  • Show Worktree defaults only for Git folders #125280
  • Paginate grouped session lists for faster rendering #125572
  • Show session ownership, PR, diff, and timing details on hover #125678
  • Add compact sidebar rows and a preview toggle #126190
  • feat(ui): add Person grouping mode for sessions sidebar and sessions page #127346
  • improve(ui): simplify Sessions visual hierarchy #127793
  • feat(hovercard): show PR co-authors as a facepile #132275
  • feat(ui): show node worker-slot utilization as segmented pips in the placement picker and Devices settings #132394
  • Quiet expanded child-session controls #110470
  • Retire custom session icons and duplicate menu navigation #121263
  • Copy session IDs from the Control UI #124059
  • Label the New Session picker menus #126045
  • feat(ui): link session hovercard identities to their activity feed #128313
  • feat(ui): rename automatic placement to Auto with a least-busy subtitle #131215
  • feat(ui): open new-session plus controls in browser tabs #131336

Bug fixes

  • Control UI catalog sessions select in place and resume Claude Desktop work #106074
  • Add reasoning selection to new cloud sessions #108679
  • Create session groups in an OpenClaw dialog #121249
  • Guard session deletion against same-key replacements #124097
  • Explain why a new session cannot start yet #124613
  • Show progress cards from titled chat session links #125733
  • fix(ui): show sessions while remote projects clone #130192
  • fix(ui): open worktree sessions before setup finishes #131559
  • fix(sessions): preserve context and lifecycle when forking chats #132227
  • fix(codex): support paginated message forks with Codex 0.151.0 #132908
  • Keep hidden sessions out of configured-only Control UI lists #103101
  • Keep filtered sessions out of live Control UI lists #103134
  • Keep session sidebar names readable and sections separated #104062
  • Contain native session lists in the sidebar #104587
  • Discover interactive Claude Code sessions in the session catalog #105162
  • Preserve the first message when session startup is rejected #105261
  • Clear stale worktree branches when switching repositories #105331
  • Preserve manually entered worktree base branches #105351
  • Keep sidebar menus above the resize divider #105598
  • Keep Worktree create edits from disappearing during save #105626
  • Lock New Session controls while creation is pending #105702
  • Allow manual folders on exec-only nodes #106012
  • Preserve collapsed groups when sidebar mutations fail #106152
  • Show session catalog pagination failures #106518
  • Let failed cloud drafts recover after worker teardown #107759
  • Remove empty offline nodes from native session groups #108620
  • Keep session catalogs on the Gateway-bound runtime #109248
  • Generate dashboard titles from the first request #111613
  • Dismiss the New Session model picker on outside click #111988
  • Keep new worktree sessions in Coding during creation #113834
  • Preserve readable session titles after sidebar changes #114474
  • Keep Gateway metadata out of session titles #114642
  • Explain empty session groups for the selected agent #115407
  • Remove duplicate Gateway-native session hosts from the sidebar #116285
  • Prevent hidden sessions from being bulk-deleted #117015
  • Keep transcript search complete while active sessions reorder #117016
  • Keep filtered session lists consistent across Control UI views #117158
  • Archive active sessions after safely stopping their work #120892
  • Make destructive sidebar session actions work in embedded WebViews #121286
  • Move session-group rename and delete into app dialogs #121738
  • Keep session titles stable during archive transitions #121868
  • Make category moves back to Groups visibly reversible #122303
  • Keep archived chats read-only after navigation #122641
  • Remove archived sessions from the sidebar after navigation #122876
  • Defer GitHub project cloning until Start Session #122906
  • Remove duplicate adopted-session rows from the sidebar #123250
  • Keep first-use session groups visible on connected clients #123336
  • Keep adopted sessions visible when catalogs are hidden #123481
  • Disambiguate multi-account session labels in Control UI #124228
  • Use the selected model for managed-worktree titles #124902
  • Add sidebar menus for child sessions #125033
  • Show clean prose in session list previews #125113
  • Hide OpenClaw-managed Codex sessions from the native catalog #125424
  • Harden shared session menus and hovercards #125478
  • Simplify remote New Session setup #125720
  • Restore composite session link hovercards #125968
  • Keep New Session folder pickers usable during overlapping menu hides #126032
  • Show explicitly named CLI sessions in the sidebar #126043
  • Restore session hovercards in the sidebar #126222
  • Disable incompatible cloud destinations before session start #126585
  • fix(sessions): render archive attribution as an event [AI-assisted] #128206
  • fix: archived threads leave the sidebar immediately #129153
  • fix(ui): stop cloud tasks from silently switching to local execution #129440
  • fix: session owner filters reset after reload #130143
  • fix(ui): restore person grouping for multiple session owners #130326
  • fix(sessions): keep archived actions inert #130642
  • fix(ui): preserve session identity through rename and group actions #130936
  • fix(ui): group sessions by local calendar days #130945
  • fix: worktree option missing when starting a session on a new GitHub repo #131100
  • fix(live): repair model E2E selection and session fixtures #131229
  • fix: picker sections run together #131253
  • fix(ui): allow Fast Mode when creating sessions #131272
  • fix(ui): show a not-found state for missing session links #131823
  • fix(ui): compact mobile session actions #132020
  • fix: allow large forks when child model supports them #132112
  • fix(sessions): deleted sessions remain visible during worker cleanup #132233
  • fix(ui): keep native catalog continuations on the selected agent #132872
  • fix(gateway): reject sessions.groups.put drops of non-empty session groups #133005
  • fix(ui): hide group submenu separator when New group is the only entry #104370
  • Show the current branch for local worktrees #105304
  • Preserve current Worktrees branch options #105313
  • Explain disabled rows in the new-session folder picker #105605
  • Keep sessions visible when deletion does nothing #105778
  • Hide empty native session categories without masking errors #106119
  • Keep Worktree operation errors visible #106196
  • Show sidebar session action failures #106435
  • Show custom-group creation failures on the Sessions page #106451
  • Reject malformed numeric values in Sessions filters #107072
  • Show older stored sessions by default #108249
  • Hide placement badges for local sessions #108615
  • Keep dashboard titles on the session's selected model and account #111757
  • Keep archived sessions selected in the Control UI #113882
  • Let users clear a stuck Worktree choice after Git lookup failure #114947
  • Show and label the correct Threads page size #116349
  • Stabilize session creator facets across row order #116624
  • Show New thread instead of machine-generated session titles #120160
  • Archive eligible sessions from mixed selections #120835
  • Hide sidebar group controls after the pointer leaves #121118
  • Align session-menu icons, labels, shortcuts, and chevrons #121383
  • Keep Control UI worktree base branches stable #121649
  • Remove the inert new-session sidebar row #122259
  • Show nested session parents in Chat headers #122335
  • Show resolved agent names when starting a session #122463
  • Remove duplicate projects from the What picker #123072
  • Explain folder browsing that requires admin access #123074
  • Keep archive Undo working after navigation #123749
  • Keep newly created sessions above Show more #123828
  • Keep the session sidebar sort choice across reloads #124277
  • Keep account suffixes out of stored chat labels #125097
  • Show session hovercards beside every sidebar row #125563
  • Stop sidebar tooltips from covering session progress cards #125594
  • Dismiss session hovercards before menus open #126345
  • Show channel avatars in session hovercards #126372
  • Keep empty sidebar groups compact #126565
  • Preserve sidebar status icons in compact rows #126567
  • Dismiss sidebar session tooltip when its menu opens #127044
  • fix: owner filter resets when gateway reconnects #127676
  • fix(ui): keep unrelated activity out of session filters #128540
  • fix(ui): align owner avatars with filter labels #129133
  • fix(ui): keep generated session titles editable #129529
  • fix(ui): prevent deleting replacement sessions after confirmation #129628
  • fix(gateway): rank project picker GitHub search by relevance #129752
  • fix(ui): show Draft mode once in new-session composer #129858
  • fix(ui): clear stale transcript results when session filters change #130378
  • fix(ui): avoid duplicate Draft control on desktop #130842
  • fix: keep automatic titles from answering file requests #131372
  • fix(ui): remove agent-archived sessions from the sidebar #131461
  • fix(ui): align cloud machine summaries #132350
Chat and history

Chat now feels much more alive while a Claw is working. Replies render as Markdown while they stream, older messages load without knocking you out of place, and recent conversations can appear before the Gateway finishes refreshing.

The composer is easier to use during long-running work. You can change the model, reasoning, or speed before sending, edit and reorder queued follow-ups, and use dictation without accidentally sending the result.

One of the more useful additions is /btw, which opens a separate multi-turn conversation so you can ask a side question without derailing the work or filling the main history. Faster initial history uses a bounded transcript snapshot stored unencrypted in the browser profile.

Sources and complete change list

Improvements

  • Show live microphone activity in Control UI Talk #102559
  • Ask side questions from selected Control UI chat text #104205
  • Redesign the chat welcome with animated Clawd and recent chats #104276
  • Redesign queued messages as compact composer rows #104445
  • Turn /btw answers into a floating multi-turn side chat #104749
  • Auto-load older external-session history on scroll #105209
  • Add automatic scroll-back to native chat sessions #105688
  • Replace chat settings popover with focused controls #105904
  • feat(ui): render streaming chat markdown live instead of plain text #106062
  • Steer active-run follow-ups by default with a Queue opt-out #108032
  • Add animated Clawd to the welcome screen #108825
  • Add mascot reactions and first-reply confetti #109118
  • Reply to specific WebChat messages with full context #110791
  • Copy or download web-chat widgets as PNG images #110992
  • Add hold-to-record dictation to the web chat composer #111114
  • Drag files into the new-thread composer safely #111530
  • Collapse long user prompts in chat #111866
  • Add Reply and consistent chat message actions #111968
  • Inspect chat images in an accessible in-app lightbox #112442
  • Show queued messages across Control UI #112649
  • Add a session rail and read-only session companion #113698
  • Let Ask OpenClaw understand the current Control UI page #114943
  • Add a composer menu for session capabilities #115800
  • Expand truncated assistant messages inline #117936
  • Add searchable model and separate effort pickers #120495
  • Preview pasted text and documents directly in chat #121400
  • Reorder queued chat messages from the composer #121682
  • Edit queued Control UI messages in place #121692
  • Make project file links easier to scan in Control UI chat #121775
  • Separate model shortcuts from numeric search input #122316
  • Unify channel and model pickers across the Control UI #122964
  • Edit queued messages in place #124298
  • improve(control-ui): restructure the composer as a multiline surface #124301
  • Simplify Control UI chat composer actions #124799
  • Load recent Control UI transcripts instantly from browser snapshots #125128
  • Standardize interactive fenced code behavior #125229
  • Add copy and fullscreen controls to chat tables #125245
  • improve(control-ui): attach the message queue to the composer #127823
  • improve(ui): smoother chat history loading with an in-flow earlier-history boundary #132493
  • Compact large pasted text in the chat composer #100929
  • Make Talk and response stop controls easy to distinguish #102786
  • Apply chat model-picker changes immediately #102871
  • Compact WebChat model picker reasoning controls #103127
  • Mark the default model on its catalog row #103484
  • Render assistant replies as a flat web chat stream #104016
  • Reduce chat metadata clutter with on-demand relative timestamps #104035
  • Remove redundant avatars from direct chats #104092
  • Center Control UI chats on a shared conversation frame #104646
  • Make the Control UI send action visually primary #106046
  • Blend chat headers with window chrome and restore outline icons #109888
  • Add a microphone picker to the Control UI talk button #111043
  • Format Markdown in Control UI chat notices #113450
  • Show provider-ranked models first in the Control UI #115380
  • Preview reasoning and provider choices as you explore #115477
  • Clarify current and default models in the picker #115632
  • Show runtime labels only for explicitly configured models #120646
  • Improve Markdown table readability in Control UI #121390
  • Remove repeated assistant avatars from main chat #121405
  • GitHub link markers and URL wrapping in Control UI chat #121728
  • Add privacy-conscious favicons to Control UI chat links #121906
  • Unify Control UI system notices #122144
  • Simplify the Control UI command picker #122237
  • Align chat Markdown markers and disclosures #122286
  • Give adjacent chat Markdown blocks consistent spacing #122289
  • Open composer image attachments in the lightbox #123693
  • Add an immediate-steer composer shortcut #124826
  • Simplify chat widget preview chrome #124883
  • Make Markdown transcripts easier to scan #125242
  • Unify Control UI code-block styling and copy controls #125249
  • Refine chat widget layout and image actions #125250
  • Use a compact chevron for long user prompts #125553
  • Compact bare GitHub links in chat #125746
  • Show link favicons by default in Control UI chat #126109
  • improve(control-ui): redesign composer slash and skill invocations #129707
  • Control UI: unify composer attachment chip layout #130312
  • feat: show latest assistant actions without hover #131529
  • perf(ui): stage the next history page so back-scroll prepends land instantly #132737
  • Even out Control UI chat spacing and overlay hover details #104201
  • Place assistant actions beside message metadata #104884
  • Highlight the chat pane receiving a file drop #105330
  • Restyle chat errors as compact centered alerts #111681
  • Give Markdown lists more breathing room in chat #111693
  • Show reconnecting chat messages as calm retry status #111703
  • Show agent runtimes in model picker rows #120617
  • Remove model and effort picker chevrons #120673
  • Remove local-only chat message hiding #120681
  • Blend the Control UI chat header into the transcript #122220
  • Shorten bare GitHub issue and pull request links in chat #122285
  • Make the chat effort slider easier to see and use #123380
  • Give queued messages a distinct outbox icon #124842
  • Simplify Markdown table styling in Control UI transcripts #125219
  • Refine transcript status and duplicate markers #125237
  • Simplify Control UI message bubbles and action chrome #125241
  • Group microphone controls apart from the Stop action #125669
  • improve(ui): even out transcript turn and run block spacing #128298
  • improve(ui): remove redundant reset buttons from chat controls #128562
  • improve(ui): simplify chat image preview overlay #129990

Bug fixes

  • Keep streaming Talk transcripts readable #102573
  • Queue Control UI chat input during reconnects #102781
  • Apply selected chat settings before sending #103253
  • Keep steered messages visible until chat history catches up #111540
  • Keep Codex commentary after Control UI runs #111648
  • Preserve repeated pending messages during chat history refresh #113690
  • Keep loading attachments with their original chat #114568
  • Explain chat-only model limits before tool-dependent requests #116730
  • Preserve accurate and accessible Control UI chat state #116929
  • Restore queued Control UI messages to the correct agent #117084
  • Make Control UI chat delivery and recovery consistent #117387
  • Allow WebChat follow-ups after background transcript updates #121332
  • Preserve staged chat attachments across remounts #121577
  • Preserve WebChat reply context across reloads #122169
  • Ground session companion answers in selected-session history #122329
  • fix(ui): support slash commands and skills inside normal drafts #122425
  • Restore the searchable composer model picker #123090
  • Add a visible way to reveal earlier session history #124866
  • Keep streamed replies ordered around steering messages #125197
  • fix(codex): prevent steered answers from disappearing or crossing threads #128257
  • fix(ui): keep steered runs in causal order and the reader in control of scrolling #131550
  • fix(ui): main-session queued follow-ups use the wrong recovery history #133067
  • Harden Control UI BTW side-question interactions c071fcf
  • Keep live side-chat questions intact across panes and preserve multiline drafts c48cbab
  • prevent local microphone feedback in realtime Talk e4450ae
  • Control UI speed picker becomes one fast-mode toggle #103104
  • Show queued Control UI follow-ups only once #105603
  • Send idle stop words as normal chat messages #105742
  • Keep submitted prompts visible during active runs #106001
  • Apply model-dependent chat settings in the right order #106095
  • Add selected-text Copy to chat message actions #107137
  • Let all WebChat content use the configured width #107261
  • Align new-session composer controls with chat #107862
  • Explicit Control UI steering overrides the stored queue mode #108121
  • Make Control UI follow Gateway queue policy #109441
  • Prevent appended Control UI chat rows from overlapping #110525
  • Rename local-only message deletion to Hide #110801
  • Hide late-media scaffolding from transcripts #111293
  • Prevent stray file drops from leaving Control UI #111531
  • Prevent duplicate and lingering steered-message chips #111610
  • Keep full chat transcripts outside dashboard sessions #111640
  • Keep Control UI sends visible through the history handoff #112567
  • Steer active Codex tasks from the Control UI #112858
  • Stop commentary repeating after task steering #112859
  • Render managed chat images once under Control UI base paths #113163
  • Keep chat rows aligned when switching UI faces #113356
  • Let new-session prompts grow before scrolling #113842
  • Restore new-session prompts and retry state in Control UI #114377
  • Keep first Control UI messages visible #114498
  • Keep chat reasoning controls stable during refresh #115009
  • Keep streamed media pinned to the newest chat response #115060
  • Preserve strongest-first model ordering after live discovery #115406
  • Preserve provider model ranking in startup catalogs #115425
  • Hide credential profiles from Control UI model labels #115480
  • Keep startup errors beside the Ask OpenClaw composer #115720
  • Keep message-hide confirmations inside the viewport #115928
  • Harden Control UI chat and session interactions #115967
  • fix(gateway): deliver queued WebChat replies after source completion #116649
  • Preserve chat attachments and visible run ownership #116752
  • Keep failed chat commands with their session #116947
  • Centralize Control UI chat outbox state #117284
  • Prevent chat rows from overlapping after panel resize #117687
  • Restore sandbox image previews in Control UI #117689
  • Align expanded message actions with visible text #117983
  • Queue separate repeated Control UI messages #118884
  • Deliver Control UI steering into active turns #119287
  • Keep active-run steering reliable during tool work #120083
  • Keep Control UI questions visible without losing reading position #120695
  • Rank slash commands by search relevance #120790
  • Keep browser annotation context with its screenshot #120848
  • Make the microphone picker show one truthful state #121397
  • Stabilize Control UI transcript search layout and focus #121910
  • Keep reasoning effort aligned after model switches #122125
  • Always show complete stored assistant responses #122207
  • Keep the new-session identity anchored while typing #122242
  • Keep short JSON replies visible in Control UI #122313
  • Simplify and harden Control UI session companion context #122380
  • Retry failed steers as new turns when idle #122919
  • fix: chat jumps from latest as composer grows #122985
  • Keep GitHub marks with wrapped chat links #123355
  • Stop streaming replies from duplicating assistant text #123515
  • Preserve attachments when continuing catalog sessions #123581
  • Prevent dashboard chat messages from overlapping #123713
  • Clear landed WebChat steer notices and preserve message order #123908
  • Clear stale delivery warnings after exact history proof #123927
  • Restore chat transcripts after switching back to Split view #123974
  • Prevent queue double-clicks from removing the next message #124150
  • Distinguish active and maximum context in the model picker #124207
  • Surface terminal chat-send failures everywhere #124473
  • Surface hidden-session steer failures and reduce gateway log noise #124560
  • Preserve Control UI steer order and accurate shortcut hints #124915
  • Fill short transcripts with earlier history #125080
  • Restore complete cached chat history in the Control UI #125536
  • Add skill mentions to the new-session composer #125554
  • Keep model selection available after UI preference changes #125636
  • Match fullscreen Markdown tables to their inline presentation #125692
  • Prevent Control UI transcript overlap during MCP app teardown #125837
  • Let the Gateway choose the active run for Control UI steering #125862
  • fix(ui): recover queued follow-ups from settled runs #126180
  • Keep steered Control UI replies in causal order #126230
  • Hide internal media completion wakes from chat history [AI] #126329
  • Keep long plain-text and Markdown fences fully visible #126346
  • Remove duplicate final replies after streaming #126367
  • Keep Codex steering activity in transcript order #126997
  • fix(gateway): keep side chat available for tool-heavy sessions #127294
  • fix(ui): keep visible chat messages authoritative over late snapshot hydration #128146
  • fix(gateway): fill older chat pages without duplicate transcript storage #128810
  • fix(chat): keep embedded and HTTP history visible across silent tails #128844
  • fix(chat): fill sparse history pages with lightweight performance coverage #129047
  • fix(gateway): prevent assistant commentary leaking into session history #129070
  • fix(gateway): preserve replies after hidden user turns #129426
  • fix(gateway): stop persisting passive chat greetings into the durable logbook #129506
  • fix: keep side chat available for large session tails #130285
  • fix(ui): dictation duplicates words on Stop and retains canceled speech #130395
  • fix(webchat): CLI skill and harness-injected turns render as operator-sent messages #130427
  • fix(ui): allow selecting side chat text #130496
  • fix(ui): keep chat messages separated after scroll interruptions #130758
  • fix(ui): preserve literal JSON in chat and tool details #131064
  • fix(ui): reconnect-uncertain sends stay inline and prove delivery by run id #131171
  • fix(ui): keep acknowledged sends pending on current connection #131266
  • fix(ui): preserve durable turn order after live finals #131593
  • fix(codex): persist every completed pre-steer assistant item in steering history #131606
  • fix(control-ui): preserve inherited reasoning after history refresh #131613
  • fix(ui): cover split and commentary-interleaved rows in steer prefix subtraction #131663
  • fix(ui): prevent duplicate answers while runs finish #131681
  • fix(ui): keep composer textarea native undo and redo working #131750
  • fix(ui): preserve composer attachments across offline reloads #131753
  • improve(ui): refine chat image presentation and controls #131811
  • fix(ui): prevent duplicate cross-client steering messages #131951
  • fix(ui): settle settings reconciliation at its own roster snapshot #131958
  • fix(ui): show final replies after interim output #132197
  • fix(ui): stop the history sentinel from painting skeletons over transcript rows #132238
  • revert(ui): keep queued follow-ups attached to the composer #132294
  • fix(ui): prevent duplicate messages when holding Enter #132310
  • fix(ui): let chat widgets use the height they report #132381
  • fix(codex): keep stored images in active-turn steering #132429
  • fix(chat): preserve fresh turn order after session reset #132815
  • fix(ui): large attachment batches fail before active-run steering #133052
  • fix(ui): preserve selected session ownership in the composer #133085
  • fix(ui): keep transcript disclosures anchored (#126272) 39cff92
  • fix(ui): hide oversized history markers (#113980) a237bc1
  • fix(ui): keep annotated slash commands local (#121191) a7a68cf
  • Preserve zero VAD thresholds in Realtime Talk launch state #102161
  • Render Unicode line breaks correctly in Control UI chat #102169
  • Center the chat scroll-to-latest button and show it sooner #104724
  • Keep the scroll-to-latest button from shrinking chat history #104744
  • Keep large pasted-text previews Unicode-safe #106328
  • Steer restored queued messages in Control UI #107836
  • Show sub-minute quota resets as less than one minute #108009
  • Stop stalled local attachment checks from hanging #109230
  • Keep Control UI chat updating past malformed tool entries #111145
  • Prevent malformed chat entries from disrupting Control UI updates #111494
  • Preserve the native context menu for chat links #111618
  • Keep the Control UI chat row steady while replies begin #111642
  • Handle chat events without message payloads #111918
  • Dismiss pinned message details with Escape or an outside click #112066
  • Stop stale text-selection toolbars from reappearing #112290
  • Refresh the Control UI composer after input-history recall #112634
  • Keep chat table labels readable and separate post-list summaries #113865
  • Restore the close icon in the Control UI image lightbox #113913
  • Keep catalog continuations in their originating chat #114731
  • Show recovery guidance after unrecoverable context overflow #114909
  • Match both halves of the disabled microphone control #115472
  • Keep model-picker scrolling inside the picker #115473
  • Hide repaired stream-error artifacts in chat history #117699
  • Show clipboard failures in Control UI #118608
  • Show nominal 1M context labels in the model picker #120369
  • Clarify the pasted-text attachment action #120799
  • Keep punctuation attached to inline code in chat #122291
  • Fit chat table cards to their columns #122297
  • Show unsafe Markdown link labels as plain text #122311
  • Match chat transcript letter spacing to the reading prototype #122328
  • Restore new-session image attachment previews #122905
  • Prevent transcript crashes on sparse attachments #123054
  • Show a warning when attachments cannot be read #123274
  • Align transcript search corners #123299
  • Keep transcript content visible above question cards #123301
  • Keep the Control UI chat scrollbar visible under the header fade #123308
  • Keep Control UI chat file links together when wrapping #123310
  • Preserve staged chat files across Gateway client rotation #123628
  • Show companion-clear failures in the current Control UI session #123724
  • Retire persisted WebChat steers from the composer #123744
  • Keep the Control UI model picker in sync with external changes #124005
  • Keep chat transcripts anchored during pane resizing #124013
  • Preserve destination-specific labels for GitHub deep links #124252
  • Make queued-message reordering atomically durable #124266
  • Keep sent images visible during chat history handoff #124839
  • Keep long-message links and text stable when expanding #124898
  • Align session suggestions with the chat composer #125225
  • Avoid false delivery warnings for acknowledged WebChat sends #125426
  • Let idle parent chats send while subagents run #125428
  • Keep the composer microphone steady on hover #125565
  • Prevent duplicate Control UI replies after turn completion #126382
  • Keep sidebar chat messages separated while resizing #126610
  • fix(ui): explain blocked Talk microphone access #127673
  • fix(ui): prevent duplicate selected-text actions on context clicks #127776
  • fix(web): keep short multiline user messages expanded #128085
  • fix(ui): remove Safari bars around chat file links #128398
  • fix(ui): unify disconnected chat queue state #128701
  • fix(ui): keep message context hover above transcript rows #128739
  • fix(ui): enable slash commands in new-session composer #128969
  • fix(ui): explain empty chat exports #129881
  • fix(ui): prevent horizontal model picker scrolling #129928
  • fix(ui): side chat composer controls are misaligned #130119
  • fix(ui): remove context compact button #130775
  • fix(ui): make modified Enter switch between queue and steer #131283
  • fix(ui): show active reasoning level in effort picker #131289
  • fix(gateway): skip abort partial persistence when the final reply is already committed #132123

Documentation

  • Document Ask OpenClaw context, docking, and guided setup #115182
  • Document the composer capability menu #115858
Follow the Work and Approve Actions

Following a Claw while it works is much easier. Tool calls now pair clearly with their results, command activity is easier to read, file changes show focused diffs, and larger screens can keep running background tasks beside the conversation with elapsed time and recent activity. People with permission to change the conversation can stop work there, while the full Tasks page covers work across conversations.

Goals now begin from a normal composer mode and stay manageable through Edit, Pause, Resume, and Clear instead of filling the conversation with slash commands. Drafts survive reloads and session switches, and the card remains usable on a phone even when the objective is long. Older Gateways keep the textual /goal workflow rather than these structured controls. If you have used approval gates in ChatGPT or Claude Desktop, the approval flow should also feel familiar, with requests inside the conversation that triggered them and a quiet indicator elsewhere when something needs attention.

Once a turn finishes, intermediate commentary and tools fold into a Worked for summary you can reopen. Live activity, search results, attachment-only replies, unresolved errors, and pending approvals stay visible instead of being tidied away before they are actually finished, and closing the approval queue leaves a request pending rather than deciding it for you.

Sources and complete change list

Improvements

  • Redesign Control UI tool activity with readable rows and inline diffs #103748
  • Add opt-in AI purpose titles for tool calls #103989
  • Add background task controls beside Control UI chats #104010
  • Show background-task activity before opening the chat rail #104776
  • Collapse completed turn details behind a Worked for rollup #105012
  • Show still-running background tasks after a chat turn #106115
  • Add pending approval alerts and approval history #108776
  • Add inline, queued, and keyboard-friendly approvals #110989
  • Show live agent activity in running sidebar sessions #111221
  • Show live Swarm progress on the session dashboard #111297
  • Let agents post expiring sidebar status and attention #111583
  • Redesign the session observer and gate hidden digests #112594
  • Show live Swarm progress inside Chat #113619
  • Reduce visual noise in chat activity #120371
  • Float task suggestions and add Copy prompt #121259
  • Make approval requests passive and easier to review #124767
  • Make Control UI tool activity lighter and easier to scan #125240
  • feat(control-ui): create and manage goals without slash commands #131370
  • Simplify background task status rows #104074
  • Animate active Control UI tool rows #104266
  • Move active-run feedback into the chat transcript #104768
  • Preview recent background tasks from the chat status row #107297
  • Show when a chat run is waiting for approval #111445
  • Show live output-token usage during active chat runs #112333
  • Show chat startup phases in Control UI #112339
  • Prioritize running work in the background-tasks rail #113928
  • Show cron errors in sidebar tooltips #114224
  • Polish task-suggestion actions into a compact top-right control #121246
  • Keep tool-chain failures scoped to individual calls #122681
  • Align Home activity with session-row indicators #123813
  • Match standalone approval pages to redesigned approval cards #124816
  • Make chat activity and tool disclosures compact #124832
  • Redesign suggested task cards #125231
  • feat(ui): dock the session progress card beside a wide composer #129141
  • improve(ui): calm the task progress card with relative time and clear terminal states #130183
  • feat(ui): add task progress disclosure preference #132137
  • Clarify Control UI chat startup labels #115044
  • Simplify the live chat token status #120676
  • Use one token and cost formatter across Control UI #123472
  • Slow the active-session spinner #124058
  • Remove the visible question expiry countdown #124063
  • Remove the repeated summary from transcript plan cards #124895
  • Add spacing between suggested task actions #124900
  • Slow the new-session submit spinner #126044

Bug fixes

  • Make Control UI tool activity deterministic and private #103821
  • Make Codex Guardian review activity compact and durable #125395
  • Show sessions waiting for concurrency slots #125654
  • Keep background tasks usable in narrow chat panes #104107
  • Keep tool-only turn results visible #106791
  • Restore branded progress phrases in Control UI runs #107111
  • Fix chat timers and crowded background task sections #107229
  • Show failed runs as composer alerts instead of agent replies #108509
  • Show tool input when results precede calls #110868
  • Stop selected channel sessions from the Control UI #111108
  • Restore subagent spawning from dashboard sessions #112527
  • Restore subagent spawning from dashboard forks #112535
  • Keep the live output-token counter updating #114213
  • Refresh completed subagents in Control UI #114786
  • fix(ui): stop the home session ring after a run ends #120327
  • Clear recovered errors from the current activity header #120391
  • Keep background-task transcripts in the Control UI sidebar #120463
  • Show one task row for each native subagent run #121274
  • Show continuous progress when starting a Control UI session #122713
  • fix(ui): show one session activity indicator #123288
  • Show actionable session attention on Home #123759
  • Keep Codex task lists active after compaction #123921
  • Keep session status icons visible #125096
  • Disable approval decisions for review-only operators #125732
  • Restore Control UI tool activity interactions #125790
  • fix(ui): stop completed chats staying in progress #125823
  • Require exact active-run ownership in Control UI #126116
  • fix(ui): keep one agent run in one transcript response #126278
  • Contain narrated tool details and add Diff/Raw views #126348
  • Keep pending approvals visible in Settings #126698
  • Keep one-off visualizations inline and expanded work readable #126729
  • Keep active WebChat progress visible while steering #126886
  • fix(ui): clarify permission changes apply to the next run #126893
  • Preserve Codex compaction activity in session history #127230
  • fix: settle terminal transcript projections #127646
  • fix(ui): pool reply-less wake activity into one chat rollup #128442
  • fix(ui): keep restart-resumed tool activity together #128726
  • fix(chat): show native commentary progress #128793
  • Compact tool rows on touch devices #128839
  • fix(ui): show delegated work on selected threads #129328
  • feat(ui): stack the docked progress card under the suggestion tray #129443
  • fix(ui): show accessible last activity on session progress cards #129520
  • fix(codex): keep live commentary tables and code blocks readable #129828
  • fix(ui): show cloud session startup progress in chat #130669
  • fix(ui): make cloud failure diagnostics readable and copyable #130672
  • fix(ui): count tool invocations once across live and history #131326
  • improve(ui): labeled Goal card actions and live elapsed seconds #131728
  • fix(chat): keep nested tool calls after reload #132457
  • fix: tool titles stop after transcript pruning #133078
  • fix(gateway): retry failed observer preparation #133178
  • Preserve desktop lobster run outcomes #103501
  • fix(chat): tool titles corrupt boundary emoji in long inputs #104464
  • Show accurate line ranges for read tool calls #105105
  • Preserve message-only terminal output in Control UI chats #111493
  • Pin session observer to the chat pane header #112866
  • Keep sidebar run indicators in one left-side column #113645
  • Give running sessions a distinct status color #113688
  • Stop false critical alerts for the current session #113932
  • Keep active chat status inside one assistant turn #114039
  • Center the running-task preview over its link #114069
  • Scope Chat background tasks to the current session #114433
  • Show aborted-run diagnostics in Control UI #117497
  • Keep chat rail status and headline text readable #119397
  • Simplify tool-group styling and hover feedback #120674
  • Label created and deleted files accurately in tool activity #122287
  • Keep live tool cards incomplete during partial output #123510
  • Show the current turn's token count in chat recaps #123712
  • Restore the background-task count badge in the chat rail #124840
  • Dismiss completed progress cards in Control UI #126102
  • Balance completed-work spacing in chat transcripts #126303
  • Refresh approval history as decisions resolve #126579
  • Remove extra spacing from Guardian review details #126778
  • fix(ui): keep native tool runs in one history group #128645
  • fix(ui): center completed progress marker #128911
  • fix(ui): stop claiming queued sessions need a slot #129081
  • fix(control-ui): keep task progress full width on hover #129832
  • fix(ui): fill collapsed progress-card selection to the composer edge #129869
  • fix(ui): keep progress in main chat when side chat opens #130109
  • fix(ui): pause progress cards without active runs #130271
  • fix(ui): show frozen elapsed time for stopped goals #130501
  • fix(ui): hide historical metadata while assistant turns run #131425
  • fix(ui): keep running tools from failing on partial output #131622
  • fix(sessions): stop retries from inheriting stale elapsed time #131846
  • fix(ui): align tool call icons with labels #132792
Files, Git, browser, and terminal

OpenClaw can now keep the work beside the conversation instead of making you bounce between tools. On supported administrator connections, you can open and edit eligible existing text or Markdown files from Chat, and if a Claw changes the same file while you are working, the editor stops with a conflict instead of overwriting the newer version. The Changes panel shows branch commits and working-tree edits, while eligible GitHub checkouts add pull-request status, CI summaries, and a link to start a pull request on GitHub.

A docked Browser panel can navigate, click, type, scroll, inspect elements, and mark up a screenshot before attaching that screenshot and page context to the conversation, but it requires advertised browser support and an administrator connection, and whatever appears in the page or capture may be sensitive.

Chat, Details, and Discussion can sit in resizable columns or merge into tabs, while the dashboard, terminal, and desktop can open in focused views when you need more room. The file editor still cannot create or delete files, Changes stays read-only, and Create PR hands off to GitHub rather than submitting inside OpenClaw.

Sources and complete change list

Improvements

  • Show session pull request status in Control UI chat #103600
  • Collapse session PR chips and show CI details in chat #103853
  • Add a browser panel with annotation and element inspection #104012
  • Add a git-backed session changes panel to Control UI #104184
  • Edit workspace files safely from the Control UI #104757
  • Add a Create PR branch row to session chat #105116
  • Add chat title bars and workspace actions #109422
  • Add full-bleed single-widget Workspace tabs #109627
  • Pin interactive MCP apps to session dashboards #111524
  • Pin inline MCP Apps to the dashboard #111748
  • Reveal dashboard widget controls on interaction #111914
  • Add dashboard widget presentation and auto height #111977
  • Add flexible multi-sidebar chat columns #113712
  • Add a full-screen web terminal and claw intro #121451
  • Add commit-scoped session diffs and richer Control UI review tools #122470
  • Make Control UI chat rails full-height resizable columns #122475
  • Resize the remote browser to fit the Control UI dock #123104
  • Unify chat tools in one tabbed side panel #123874
  • Unify shell-free dashboard, terminal, and desktop focus routes #126143
  • Preview session workspace images and show safe metadata for other binaries #95956
  • Unify split-chat controls in one toolbar #102492
  • Add a keyboard shortcut for the Chat session workspace rail #103064
  • Move the split-view opener into the chat toggle row #104341
  • Show session branch details for local changed files #106835
  • Unify browser and terminal panel tab controls #108651
  • Make dashboard widgets fit content and preserve action corners #114012
  • Unify dashboard chat visibility controls #120487
  • Open the Session companion in one click #121652
  • Add header scope switching and expandable context to session diffs #122711
  • Click the remote desktop to take control #123096
  • Center dashboard widget controls without blocking content #126076
  • Soften Control UI split-pane emphasis #126714
  • fix(ui): highlight source code in chat and session diffs #130578
  • feat(hovercard): show the PR author beside the number #132107
  • Make the active split-pane indicator align at any pane size #102511
  • Align chat rail buttons and split-view opener #102639
  • Add breathing room above workspace summary chips #104331
  • Align Control UI chat controls #104574
  • Align desktop session PR rows with the composer #105604
  • Align the chat scrollbar with the Changes sidebar #106775
  • Add breathing room around dashboard widgets #111876
  • Add breathing room above the collapsed session rail #120838
  • Replace the widget pin text action with an icon button #121419
  • Clarify and align the chat header controls #121739
  • Use a clearer Diff icon for session changes #122399
  • Widen the code review sidebar by default #125116
  • Align branch and pull-request rows above chat #125232

Bug fixes

  • Keep Control UI chat usable in narrow panes #104033
  • Harden Control UI workspace file editing #104885
  • Recover Control UI terminals after missed output or stale connections #107419
  • Refresh stale Control UI tabs before restoring terminals #123660
  • Restore Browser screenshots on routed Control UI pages #126290
  • fix(ui): activate stored sidebar tabs (#123482) db08f93
  • Polish workspace controls and bottom-docked file browsing #103601
  • Draw Control UI resize dividers as thin lines #104013
  • Hide external files from the session workspace rail #105015
  • Preserve agent file edits typed while saving #105359
  • Prevent blank Agent Files editors during rapid tab switches #105366
  • Restore palette-aware TUI colors in the embedded terminal #108057
  • Prevent fullscreen terminal exceptions before the first tab exists #108317
  • Show dead restored terminal tabs as exited #109281
  • Keep long Markdown and file previews scrollable #113465
  • Remove stale Create PR prompts and refresh PR chips mid-turn #113944
  • Hide unusable Chat controls on read-only boards #113947
  • Add drop targets for empty chat sidebar sides #114005
  • Hide docked panels while Settings owns the viewport #114737
  • Reduce embedded terminal clipping with a denser default layout #115931
  • Keep the hidden session rail from reopening #116951
  • Decode workspace artifact previews as UTF-8 #117657
  • Show sidebar clipboard failures and clear stale feedback #118632
  • Restore the terminal button in the chat header #120436
  • Keep narrow split panes closable #120460
  • Restore Desktop panel launchers in the Control UI #121322
  • Show the full web terminal intro #121501
  • Prevent terminal garble after Gateway reconnect #121637
  • Keep existing discussions closed until users open them #122072
  • Hide cloud-worker Desktop controls for local sessions #122145
  • Hide Session changes outside Git checkouts #122152
  • Restore the previous terminal dock after fill mode #122464
  • Consolidate chat panel buttons in the pane header #122507
  • Make the Control UI terminal readable in light mode #123184
  • Keep remote-panel typing out of the chat composer #123293
  • Refresh stale Control UI tabs before restoring terminals #123526
  • Preserve terminal actions during Control UI updates #123578
  • Show when a Control UI terminal session is no longer available #124046
  • Load Agent Files content and preserve failed-save errors #124140
  • Keep GitHub preview cards open and interactive #124274
  • Show session changes automatically in Review #124824
  • Diagnose and retry failed Control UI terminal opens #124890
  • Open empty-session Files panels on the project browser #125138
  • Restore visible side-panel tab labels #125511
  • fix(ui): keep expanded panel tabs clear of shell controls #128262
  • fix(ui): stop offering Open in editor for remote checkouts #128420
  • fix(ui): make dashboard side panels enter split view #130426
  • fix(git): keep worktree failure messages readable #131363
  • fix(worktrees): keep setup and cleanup failures readable #131420
  • fix(worktrees): allow five minutes for checkout #131458
  • fix(ui): show structural loading states in side-panel tabs #131819
  • Align split-view toolbar segments with chat columns #102675
  • Keep chat rail buttons clear of messages #104247
  • Preserve emoji in browser annotation prompts #104396
  • Harden Control UI Create PR row reliability #105594
  • Prevent Control UI browser screenshot hangs #107703
  • Center and enlarge the terminal tab close control #107777
  • Repaint the Control UI terminal after hide and show #107970
  • Attach terminal close controls to their tabs #108611
  • Bypass broken Claude npm shims for catalog terminals #108627
  • Release failed browser screenshot response streams #110399
  • Show newly created pull requests in the session sidebar #111783
  • Auto-show open session discussions in Control UI #111871
  • Keep agent workspace files readable when unfocused #111963
  • Open agent files with AGENTS.md selected #111967
  • Close GitHub hovercards when routed links disappear #112291
  • Remove the redundant session discussion header #112574
  • Make the Discussion button close its sidebar on second click #112671
  • Disable thread changes for non-Git workspaces #112914
  • Keep fresh-thread diffs free of inherited checkout changes #115708
  • Show errors when workspace copy actions fail #118432
  • Detect merged session PRs beyond the Control UI display cap #119204
  • Stop chat sidebars flashing while opening #121464
  • Hide the dashboard switcher without real board content #121480
  • Give dock tabs a contained active state #124875
  • Open Review immediately for workspace files #124990
  • Balance side-panel tab pill padding #125368
  • Keep Chat side panel tab labels legible #125505
  • Keep empty side panels closed after Board chat hides #126047
  • Keep open Terminals synchronized with live theme changes #126297
  • Let the dashboard side panel stay closed #126397
  • Keep Side chat selected in dashboard split view #126511
  • Refresh active Agent Files content without losing drafts #127086
  • fix(ui): prevent second touches from hijacking resize drags #127760
  • fix(ui): restore selected dashboard side tab #128867
  • fix(ui): show workspace copy-path outcomes #129727
  • fix(ui): show session diff path copy feedback #129999
  • fix(ui): collapse chat side panel after final tab closes #130102
  • fix(ui): keep PR chip above transcript rows #130224
  • fix(ui): resize empty chat side panel #130366
  • fix(ui): keep agent file saves intact during refresh #130468
  • fix(ui): terminal never opens after a Gateway update reloads the tab #131439
  • fix(hovercard): restore link styling on session PR rows #132235
  • fix(ui): hide empty PR message for local-only branches #132741
  • fix(ui): keep Review file previews within panel #132800

Documentation

  • Add a user guide for session dashboards #111834
Settings and connected services

Settings is now easier to navigate. It has its own full-page workspace, searches both destinations and individual controls, separates common from advanced options, and keeps panel URLs bookmarkable. If a value is incomplete or invalid, the draft stays on screen so you can fix it, and settings the normal form cannot represent safely open in Raw mode instead of being silently lost.

Major controls also have clearer homes. Connection details, agent identity and memory, Plugins, MCP servers, devices, channels, and pairing are organized around where you actually manage them, while Model Providers brings together the credential health, available models, quota, balance, budget, and spending data each provider reports. That provider view is read-only, and guided MCP management still lives in Plugins while Settings keeps diagnostics and raw editing.

A browser with limited access can request administrator scope, but another administrator still has to approve the signed request from that device. Trusted dashboard links and the native pairing flow can help eligible administrators recover access without turning a shared token into a bypass.

Sources and complete change list

Improvements

  • Give Control UI settings a dedicated full-page workspace #102549
  • Add search to the Settings sidebar #103138
  • Add a consolidated Model Providers settings page #104061
  • Simplify Control UI navigation and feature ownership #104604
  • Search inside Control UI Settings pages #104675
  • feat(control-ui): agent identity editor, Settings-homed Agents page, scalable chip switcher #106058
  • Unify the Control UI settings design language #106470
  • Auto-save Control UI settings with one clear restart action #107458
  • Add a Labs page for experimental features #110359
  • Reorganize Settings and expand approved agent controls #110445
  • Add an Apps and extensions discovery page #110563
  • Sync more Control UI preferences and refresh semantic config changes live #110581
  • Manage MCP servers directly from Settings #110654
  • Create and hatch new agents from the Control UI #111052
  • Use one avatar-aware agent picker across the Control UI #112488
  • Organize Control UI settings into common and advanced groups #112538
  • Add three experimental controls to Labs #114233
  • Bookmark and share specific agent settings panels #115673
  • Move settings save feedback into the sidebar footer #115679
  • Control individual MCP tools per session from the composer #115907
  • Add MCP servers from the composer Connectors menu #115921
  • Show inherited settings defaults and restore inheritance #116621
  • Open bare /pair in the native pairing modal #120855
  • Let limited Control UI browsers request administrator access #121459
  • Simplify Control UI settings for non-admin operators #125492
  • feat(ui): environment differentiation for the Control UI (gateway.controlUi.environment) #127711
  • Simplify Quick Settings by removing context presets #102748
  • Add agent avatars to the Agents page selector #102817
  • Show Control UI build identity in the sidebar #104350
  • Redesign the Control UI About page with community links #106508
  • Align settings controls to a consistent height #106898
  • Simplify Control UI page headers #106954
  • Improve live preferences and settings clarity #110494
  • Link mobile pairing to the apps page #110622
  • Highlight JSON across Control UI debug views #110806
  • Put secret reveal controls inside every sensitive field #110810
  • Distinguish Apps navigation and link back to device pairing #110909
  • Add a Swarm toggle to Settings Labs #111267
  • Preview Lobster sounds when enabled #111996
  • Tighten Control UI Labs page spacing #112038
  • Keep WhatsApp QR actions visible and readable #114708
  • Clean up Channels DM access requests and remove raw health JSON #114717
  • Explain channel settings and link their documentation #114844
  • Simplify Communications settings and add a Voice tab #114948
  • Consolidate gateway controls and status on one settings page #114971
  • Add contextual guides throughout Control UI Settings #115560
  • Add contextual help links across Settings #115665
  • Expose MCP identity in effective tool inventory #115870
  • Add documentation links across Control UI Settings #115874
  • Add tool-loop detection controls to Control UI Labs #115983
  • Show custom build provenance and commit age in the sidebar #120388
  • Hide redundant agent selectors in single-agent setups #121826
  • Collapse the Control UI limited-access notice #123735
  • improve: use agent identity as the sole assistant identity #129067
  • feat(ui): group advanced settings by messaging channel #130591
  • fix(ui): declutter Channels refresh controls #131367
  • fix(ui): align Communications settings layout #131421
  • Show non-main gateway branches in the Control UI #104262
  • Add the official X link to the Control UI About page #110449
  • Highlight Channel health JSON in the Control UI #110613
  • Show commit age on the Control UI About page #111495
  • Tighten About screen build-detail spacing #111532
  • Give every settings sidebar row a distinct icon #111974
  • Align Settings search with navigation rows #112172
  • Move strict tool-policy controls behind Show advanced #114941
  • Move Agent Defaults into the Agents page #115836
  • Remove redundant reset buttons from Labs settings #121427
  • fix(ui): standardize settings guidance links as Learn more #131222
  • improve(ui): rename connected channels heading #131391
  • improve(ui): place DM access requests last #131392
  • refactor(ui): drop the reset-to-default icon from settings rows #131960

Bug fixes

  • Prevent custom MCP server configuration errors #111761
  • Prevent MCP config conflicts and diagnostic credential leaks #113026
  • Enforce session MCP controls in Codex #116054
  • Preserve schema-backed settings edits #116282
  • Recover Control UI access with one trusted-host command #118231
  • Restore administrator access from host-issued Control UI links #119785
  • Keep read-only Control UI preferences browser-local #120036
  • Scope Control UI model data to the selected agent #123415
  • Keep terminals and model setup bound to the selected agent #123429
  • Preserve 64-bit identifiers in Control UI settings #126402
  • fix(ui): preserve external config edits after Raw revert #130935
  • Render workspace avatars in the Control UI Personal card #102892
  • Harden Control UI workspace avatar delivery #103657
  • Keep Control UI configuration edits from disappearing during operations #105555
  • Make device cleanup work across host apps #107123
  • Show restart status from the active Gateway config #107577
  • Polish Control UI settings and status presentation #110845
  • Request media permission from empty Control UI pickers #112037
  • Keep system agents out of shared page filters #112889
  • Simplify advanced settings and repair dev gateway configuration #113160
  • Remove the duplicate raw IDENTITY.md editor #114470
  • Keep Control UI Fast mode selections saved after reload #114489
  • Restore protected assistant avatars in Control UI #114503
  • Stop advanced-settings toggles from prompting a restart #114937
  • Explain unavailable MCP tool catalogs in Control UI #115994
  • Prevent Control UI settings changes from racing #116029
  • Prevent Control UI actions from racing pending settings saves #116031
  • Recover reliable curated Settings controls #116032
  • Preserve valid mixed-union settings in the Control UI #116602
  • Match Settings errors to visible row numbers #118077
  • Prevent Labs configuration refresh races #119115
  • Preserve avatars under Control UI base paths #119308
  • Show the correct Control UI login recovery guidance #120069
  • Show provider-usage outages instead of silent empty panels #120309
  • Show in-app confirmations for Devices security actions #121279
  • Make native command settings editable outside Raw mode #121832
  • Hide unusable models from the Control UI picker #121852
  • Show quota for the active session provider #122053
  • Show friendly catalog names in hidden-session settings #122320
  • Keep multi-agent requests with the selected agent #122889
  • Stop limited Custodian access from prompting Gateway updates #123011
  • Keep limited-access guidance clear of Control UI controls #123128
  • Keep partial numeric input from clearing saved settings #123210
  • Preserve config form drafts across autosave acknowledgements #123502
  • Block secret-map key renames that could corrupt credentials #123571
  • Refresh Models after Gateway reconnect #124065
  • Restore spacing across embedded settings sections #126541
  • fix(ui): restore editable map-valued settings #127336
  • fix: stop limited access status from shifting page layouts #127704
  • fix(ui): show agent config errors and hydrated identity avatars #129868
  • fix(ui): restore visible gateway status in the sidebar footer and announce restarts #130025
  • fix(ui): align settings headers and Learn more links #131200
  • fix(ui): clarify settings reconnect state #131207
  • perf(ui): keep settings search responsive #131263
  • fix(ui): keep setup channels visible after configuration #131386
  • fix(ui): keep Continue visible with wizard spinner #131395
  • fix(ui): tighten settings title spacing #131423
  • fix(ui): confirm disruptive plugin lifecycle changes #131509
  • fix(ui): use full width for settings on mobile #132015
  • fix: expose agent model settings in the web form #132353
  • Preserve focused settings edits during config refreshes 60babdd
  • Fix Quick Config thinking-level saves #104523
  • Remove nested scrolling from settings pages #104652
  • Align Settings headlines with their content columns #106521
  • Hide Form-mode warning in Raw config editor #107116
  • Show a fallback when Personal avatars fail #109690
  • Hide setup agents from the normal agent roster #111677
  • Generalize the external session opening label #113759
  • Show the configured primary model in General Settings #113769
  • Show each agent's actual model fallback chain #113812
  • Keep successful Settings autosaves quiet #114957
  • Identify source-built Control UI versions in Settings #116134
  • Consolidate Control UI channel cards and setup controls #117499
  • Show OpenAI plan usage with the correct provider and window #120846
  • Stop Settings search from leading to hidden update fields #123211
  • Preserve fallback-only model settings in the Agents UI #123995
  • Show accurate save state for read-only Agents #126568
  • fix(ui): surface config open-file failures #127498
  • fix(ui): prevent settings save action from overlapping build info #127597
  • fix(ui): keep limited access status clear of session titles #128024
  • fix(ui): make Settings Escape contextual #128099
  • fix(ui): show channel configuration save errors inside the editor #129654
  • fix(ui): display resolved agent workspace and effective model consistently #129701
  • fix(ui): show rejected WhatsApp actions without stalled refreshes #129800
  • fix(ui): preserve Settings navigation selection and workspace fragments #129888
  • refactor(ui): remove retired chat control styles #130201
  • fix(ui): clarify gateway disconnect status in tab title #130364
  • fix(ui): discarded config edits return after reverting Raw #130521
  • fix(ui): keep settings footer aligned with main sidebar #130715
  • fix: admin access recovery works before read scope arrives #131210
  • fix: admin access errors appear once in Inbox #131211
  • fix(ui): utility model info is compact and shows a tooltip #131218
  • fix(control-ui): hide Retry for non-retryable scope denials #131251
  • fix(ui): remove underlines from Settings Learn more links #131295
  • fix(ui): channel setup dialogs show duplicate links #131320
  • fix(ui): replace channel setup Working text with spinner buttons #131377
  • fix(ui): unselected channel picker shows prompt #131378
  • fix(ui): make reconnect banner full width #131388
  • fix(ui): render channel wizard output as plain text #131427
  • fix(ui): stop Models requests after leaving the page #132705

Documentation

  • Replace retired Control UI insecure-auth guidance #120295
  • Document Docker networking for the Telegram dashboard Mini App #102805
  • Fix the custom Control UI home-directory example #112691
  • Expand Telegram Dashboard Mini App setup guidance #115981
Sharing and Incognito

On a multi-user Gateway, a conversation now keeps its creator and each identified person's prompts visible, while owners or administrators can choose whether someone else may read, suggest changes, work in a draft, or participate directly. Drafts can be created and published without a race, suggestions keep their author, and lightweight presence and typing cues make it easier to tell who is there without cluttering a solo setup.

People can manage their own display name and avatar, and permitted Online cards can show what someone is working on without exposing IP addresses or conversations the viewer cannot open. These controls make collaboration understandable, but they are not tenant isolation or a security boundary, and revoked access can briefly look available until the UI refreshes or the Gateway rejects the action.

Incognito is off by default and deliberately narrower. Its conversation stays in process memory, does not write the normal transcript or automatic OpenClaw memory to disk, and disappears when the Gateway restarts, but the model provider still receives the messages, tools can still write files or affect external services, content-free audit metadata remains, and whoever operates the Gateway can see live work.

Sources and complete change list

Improvements

  • Show who sent prompts on shared gateways #111207
  • Show author avatars on user chat messages and queued prompts #111309
  • Shared-gateway users can edit and see their own identity #111371
  • Add self-service profile avatars across the Control UI #111421
  • Add stable per-user chat bubble colors #112070
  • Add session creator attribution and person filtering #112658
  • Add session visibility, membership, and participation controls #112787
  • Make multi-user Control UI chats easier to follow #112938
  • Add web Control UI Incognito sessions #113006
  • Create and publish draft sessions from the Control UI #113127
  • Add shared-session suggestions and typing indicators #113173
  • Add session ownership, participant tracking, and spawn receipts #125057
  • Show online people and their session activity #125695
  • Stream shared-session draft previews while teammates type #126994
  • feat(ui): show activity cards for online people #130664
  • Show Gravatar fallbacks for Control UI teammates #111418
  • Simplify creator identity and filtering in the sidebar #113150
  • Unify Draft and Incognito controls in the new-thread composer #113799
  • Simplify new-session mode controls #121407
  • Move Incognito to the new-session privacy rail #124352
  • Move shared-session typing into the transcript #125244
  • Make the ONLINE sidebar section collapsible #125963
  • feat(ui): link chat and presence identities to their activity feed #128369
  • improve(ui): polish person activity hovercard hierarchy #132071
  • Open the online-user roster from the Control UI footer #111501
  • Polish the online-roster menu #111668
  • Add breathing room to presence roster rows #111689
  • Show the chat owner once and reflect live presence #124006
  • improve(ui): larger avatar in person activity hovercard #131882
  • improve(ui): clarify avatars in person-grouped sessions #132390

Bug fixes

  • Make session viewer presence reflect what people actually view #116001
  • Refresh attributed chat avatars after profile changes #120381
  • Preserve avatars for global-scope chat aliases #104155
  • Show the correct sender identity in multi-user chat #111537
  • Show the current profile name on chat messages #111987
  • Keep chat authors readable with one avatar and durable identity #112357
  • Keep attributed avatars beside sent messages #112472
  • Load user avatars consistently across the Control UI #114444
  • Show consistent user avatars across the Control UI #114496
  • Show session-sharing failures without leaking them across chats #118135
  • Improve Control UI avatar fallbacks and visual alignment #118337
  • Load Control UI avatars with Tailscale identity auth #118353
  • Refresh saved profile identity across live Control UI sessions #120791
  • Keep collaborator typing status from moving the chat composer #121438
  • Keep long chat-sharing menus compact #122322
  • Contain long member names in the sharing menu #123017
  • Keep non-person principals out of session owners #125579
  • Align session filtering with current ownership #125645
  • fix(chat): stop channel messages borrowing profile identities #132038
  • fix(presence): keep colliding profiles and raw viewers separate #132250
  • fix(ui): keep selected-agent collaboration on the right session #133134
  • Restore Control UI user avatar changes #107327
  • Handle unset identities in Profile settings #112046
  • Hide avatar initials when a profile photo loads #112523
  • Show resolved avatars on session owner chips #114682
  • Preserve initials when Control UI users have no avatar #115976
  • Keep missing profile avatars on initials after rerenders #120370
  • Keep own-message sender names still on hover #121406
  • Keep the web chat model picker stable during remote typing #122809
  • Make active new-session visibility pills visually distinct #123173
  • Clear deleted incognito sessions across connected clients #123333
  • Render sharing members from their recorded identity type #124257
  • Make Assign to me update session ownership #126031
  • Identify the signed-in user in session owner filters #126052
  • Keep peer identity fixed when message actions appear #126287
  • fix(ui): surface session owner assignment failures #127431
  • fix(ui): announce session sharing failures #127801
  • fix(ui): make multi-user session avatars legible #128040
  • fix(ui): show agent pictures in Activity and owner avatars #131316
  • fix(ui): open people cards from one row #131440
Appearance, language, accessibility, and mobile

The Control UI is easier to navigate without a mouse. Keyboard and focus behavior is more consistent across navigation, dialogs, tabs, Settings, plugins, skills, Usage, Workboards, the terminal, and the browser, with skip links, clearer assistive-technology labels, and focus returning to the right place after menus and dialogs close.

On phones and tablets, text sizing now reaches navigation and sidebar content. Inputs no longer trigger iOS zoom, touch devices avoid desktop-style hover highlights, and Send or Stop responds to the first tap on the documented Android Chrome and installed-PWA layouts while desktop hover behavior stays intact.

Appearance now includes seven built-in themes and separate Interface and Chat prose font pickers. You can mix any of nine self-hosted typefaces, or the system stack, with any theme while JetBrains Mono remains the code face. Authenticated profile choices can follow you across browsers, connections without a writable profile keep them browser-local, and all 20 maintained non-English Control UI locales load only when selected and fill previously missing strings.

Sources and complete change list

Improvements

  • Localize remaining Control UI copy #105008
  • Standardize accessible controls across Control UI #106865
  • Build Control UI locales from canonical translation memory #117157
  • Apply Control UI text sizing across sidebars and navigation #121087
  • Improve the Control UI experience on phones and tablets #122492
  • Add continuous corner curvature to Control UI #124129
  • feat(control-ui): Cmd+/ keyboard shortcuts overview from a declarative catalog #128563
  • feat(control-ui): add the Absolutely theme with self-hosted typography #129885
  • feat(control-ui): add the Tide, Beacon, and Phosphor themes #130232
  • feat(ui): refine the mobile composer #130308
  • feat(ui): refine the mobile chat topbar #130318
  • feat(ui): give every theme family its own typeface and refine palettes #130767
  • feat(ui): interface and chat font pickers in appearance settings #131275
  • Add single-key shortcuts to Control UI context menus #103090
  • Compact the New session screen on phones #105177
  • Center the Control UI composer footer controls #105866
  • Restore usable content scrollbars and text selection boundaries #107349
  • Localize the New session attachment-reading status #107372
  • Preview real theme colors in Appearance settings #110626
  • Unify Control UI tooltips and improve sidebar hover details #112602
  • Unify sidebar footer tooltips #112639
  • Move Language into Appearance and retire General settings #115798
  • Focus and highlight the capabilities prompt #117279
  • Add accessible in-app confirmations across Control UI workflows #118250
  • Soften Control UI dark-mode body text #121409
  • Unify Control UI menu styling #122109
  • Standardize Control UI responsive breakpoints #123160
  • Standardize scrollbars across the Control UI #124285
  • Unify Control UI tooltip styling and keyboard descriptions #125061
  • Unify Control UI transient-surface elevation #125065
  • Keep mobile session actions reachable #126124
  • Add zoom and pan to mobile image previews #126528
  • improve(ui): collapse mobile composer controls #129853
  • improve(ui): clarify Appearance theme controls #130844
  • improve(ui): clarify picker selection and keyboard focus #132018
  • Make Control UI corner radius theme-owned #102641
  • Refine Control UI shadows and identify dev builds #104215
  • Move language selection into Settings > General #104638
  • Use the arrow cursor on Control UI menus #110469
  • Give the theme Import card a clear action icon #110807
  • Polish the chat composer at narrow widths #111150
  • Align Control UI fallback colors with the current palette #113684
  • chore(ui): refresh control ui locales #130896

Bug fixes

  • Improve Control UI keyboard accessibility #106320
  • Localize remaining Control UI surfaces #115730
  • Restore keyboard navigation across macOS and Control UI #115942
  • Keep mobile chat actions responsive #116104
  • Restore Control UI sidebar and Appearance accessibility #121360
  • fix(ui): keep effort in the composer row #130788
  • Show readable session titles with accessible sidebar navigation #96267
  • Use the default cursor in the sessions sidebar #103357
  • Dismiss stale topbar menus and restore keyboard focus #103508
  • Stop hidden session menu shortcuts after navigation collapse #103514
  • Restore keyboard controls in sidebar menus #103612
  • Restore Control UI autosave translations #107477
  • Restore WCAG AA contrast for muted dark-theme chat text #110195
  • Fix the Control UI language picker styling #110621
  • Bring dark-theme coral buttons to WCAG AA #110957
  • Improve Openknot and Dash dark-theme button contrast #111003
  • Repair Control UI focus and run cancellation #111036
  • Keep narrow web chat layouts readable #112012
  • Let Escape close the new-session model picker #112071
  • Make Hide and Rewind confirmations keyboard-accessible #112108
  • Load pinned and base-path Control UI pages on mobile #112175
  • Fix Control UI fonts, theme state, and status colors #113724
  • Restore missing Control UI theme colors #113726
  • Restore Control UI E2E coverage and fix uncovered UI regressions #114554
  • Restore WCAG AA contrast for muted theme text #114586
  • Match ClickClack discussion sidebars to Control UI themes #114812
  • Synchronize Control UI language and text direction metadata #115047
  • Refresh non-English Control UI translations #115065
  • Keep modal focus on the field a user selected #115168
  • Make the terminal session picker keyboard accessible #116026
  • Restore mobile task navigation and accessible usage controls #116751
  • Restore usable previews and modal sizing on narrow screens #116885
  • Restore accessible controls and alerts in Sessions #117019
  • Preserve newer Appearance choices during delayed theme imports #117292
  • fix(ui): isolate multi-pointer gesture ownership #118591
  • Restore pointer cursors in browser-hosted Control UI #121258
  • Restore monospace styling in the Control UI #121320
  • Hide assistive status text without removing screen-reader access #121847
  • Keep toasts visible above mobile drawers and dialogs #121858
  • Keep chat composer pickers usable on mobile #121881
  • fix(ui): reach identity-menu footer controls with keyboard #122066
  • Keep composer capability menus within the viewport #122296
  • Keep model and effort pickers inside the viewport #123386
  • Improve chat-link contrast across every Control UI theme #123824
  • Hide mobile chat metadata until a message is tapped #124936
  • Make expanded mobile side panels fill the workspace #126111
  • Keep mobile sidebar session menus within reach #126355
  • Label Chat and New Session message fields for screen readers #126952
  • fix(ui): announce custom theme import results #127380
  • fix(ui): align Activity sessions across viewports #127686
  • fix(ui): let keyboard users choose a profile avatar #128095
  • fix(ui): balance mobile model and effort controls #128240
  • fix(ui): show more chat text on mobile #128944
  • fix(android): preserve gateway context paths in control pages #129087
  • fix(ui): chat file copy hides successful and failed outcomes #129617
  • fix(ui): Control UI smooth scrolling ignores the reduced-motion preference #130428
  • fix(ui): report failed copies and retire stale clipboard actions #130612
  • fix(ui): unify tooltip appearance and dismissal #131335
  • fix(ui): crisp serif chat prose and correct Control UI font serving #131471
  • fix(ui): always declare the JetBrains Mono face for code spans #131483
  • fix(ui): theme assignee submenu and people menu #132383
  • Close the session sort menu on a second click #102448
  • Keep macOS Settings below window controls #102663
  • Refresh mounted Control UI translations #103293
  • Use the arrow cursor for Control UI controls #103411
  • Restore the default cursor on mount-fallback controls #103448
  • Hide tooltips that only repeat visible labels #104193
  • fix(ui): stop chat welcome suggestion text overflowing chips on phones #104579
  • Preserve emoji in Control UI agent initials #104912
  • Preserve emoji in plugin fallback initials #105240
  • Restore outline icons on the New session screen #106193
  • Keep only history controls in the Settings titlebar #106228
  • Match Control UI Settings controls to the active scene #107109
  • Center paired-node external session conversations #107781
  • Center New Session failures in an accessible alert #107997
  • Localize tool group and profile names in the Control UI #109063
  • Make Usage Overview hints interactive #109247
  • Preserve complete Unicode graphemes in provider icons #109509
  • Preserve Unicode in usage session filters #109860
  • Restore settings chevrons in dark mode #110446
  • Match chat message action buttons in light mode #111230
  • Restore the outlined archived-sidebar icon #111867
  • Prevent Logs controls overlapping at larger text scales #112170
  • Keep Model Provider select arrows on the right #112530
  • Keep Control UI user-message footer actions in reading order #112836
  • Improve Control UI status-label contrast #113526
  • Prevent a white flash while the Dashboard theme loads #113558
  • Align Settings dropdown chevrons across themes #114923
  • Prevent mobile new-chat controls from overlapping #116607
  • Show complete Unicode initials in session owner chips #117350
  • Label Gateway connection settings for accessibility #118000
  • Contain the transcript keyboard focus ring #120693
  • Keep dashboard widgets themed while loading #120820
  • Fix theme import screen-reader semantics #120836
  • Make chat code readable on dark themes #121376
  • Stop inline MCP App cards flashing white after scrolling #121435
  • Open session menus with keyboard context-menu shortcuts #121628
  • Space compound duration units in the Control UI #121857
  • Use a neutral focus treatment for the chat composer #122232
  • Prevent composer accessory clicks from taking focus #122243
  • Let short Canvas previews fit their content #122294
  • Keep picker labels readable on phones #123085
  • Keep schedule pickers inside phone-width grid cells #123175
  • Fix raw and untranslated Control UI option labels #123238
  • Stop repeated screen-reader announcements in web chat #123240
  • Restore chat keyboard controls after interrupted IME input #123249
  • Show “Default” instead of a raw translation key #123279
  • Keep Control UI notifications above the chat composer #123423
  • Keep mobile lightbox images inside the viewport #123840
  • Keep session menus on dragged sessions #124344
  • Keep mobile Side chat contained and interactive #124785
  • Make light-theme diff syntax readable #124814
  • Inset the limited-access badge from the chat edge #125012
  • Keep chat composer footer controls readable #125445
  • Hide tooltips that duplicate visible Control UI labels #125684
  • Reserve the hand cursor for links and new-window actions #126153
  • Announce Worktrees operation failures to assistive technology #127114
  • Keep segmented settings selections visible in forced-colors mode #127165
  • Expose the active split pane to assistive technology #127213
  • fix(ui): align narrow chat composer spacing #127717
  • fix(ui): avoid duplicate main landmark on Activity #127789
  • fix(ui): expose Advanced Settings accordion state #127960
  • fix(ui): show busy avatar chooser as disabled #128059
  • fix(ui): remove visible widget scrollbar tracks #128538
  • fix(ui): shorten the composer prefill cue #128677
  • fix(control-ui): chat Markdown preview renders RTL documents left-to-right #129129
  • fix(ui): preserve modal keyboard ownership across shadow roots #129747
  • fix(canvas): reflow generated visualizations on narrow screens #129856
  • fix(ui): align mobile toast actions #129909
  • fix(ui): center compact permission icons #130137
  • fix(ui): join collapsed mobile question to composer #130179
  • fix(control-ui): darken the Absolutely surface ramp #130239
  • fix(android): inline widgets fail behind gateway proxy paths #130535
  • fix(ui): straighten the Online sidebar divider #130646
  • fix(ui): allow copying error callout text #130717
  • fix(ui): remove model-loading gap from new-session composer #130829
  • fix(android): blank widgets on mapped-address pinned gateways #130835
  • Keep the new-session composer within easy reach on mobile #130858
  • fix(ui): make composer text sizing consistent #131154
  • fix(ui): restore 16px composer editor text #131193
  • fix(ui): menu shortcut modifier glyphs render correctly #131217
  • fix(ui): keep mobile transcript notices below the topbar #131371
  • fix(ui): keep active picker subtext legible #131402
  • fix(sandbox): revert Daytona cloud sandbox plugin #131409
  • fix(ui): keep typed input in the selected dialog field #131566
  • fix(ui): keep moved toasts clear of mobile header #131840

Documentation

  • Document Control UI lobster visits and controls #103175
Control UI Latency and Responsiveness

The Control UI now reaches Chat faster. In a simulated default-chat test with a mocked Gateway and 50 millisecond HTTP/1.1 latency, JavaScript requests fell from 140 to 45 and startup fell from about 1.6 seconds to 575 milliseconds.

It also stays lighter the longer you leave it open. Hidden panels stop fetching data they do not show, retained state is bounded, and returning to a conversation repeats less rendering.

Reconnects reject stale responses and keep the right conversation selected as the connection changes. If the page bundle loads but never renders, OpenClaw now shows recovery guidance and a Try again action, while interrupted updates reconcile with the replacement Gateway and confirm success only after it reports the expected version.

Sources and complete change list

Improvements

  • Compress and cache bundled Control UI assets #105890
  • Load Control UI styles with lazy routes #106183
  • Reduce Control UI chat render stutter #110472
  • Unify Control UI offline status and queued-message guidance #112600
  • Speed up common Gateway dashboard reads #114754
  • Keep Control UI chats stable when switching sessions #115059
  • Make Control UI session switching feel immediate #115129
  • Speed up provider session catalog polling #115259
  • Push session pull request indicators to Control UI clients #115643
  • Speed up Control UI config and session reads #115930
  • Speed up the first dashboard session list #118434
  • Make recent Control UI session switches nearly instant #121625
  • Make warm Control UI session switches settle faster #121792
  • Restore unsent Control UI drafts after browser restarts #125332
  • Refresh cached chat sessions with small cursor deltas #125606
  • perf(ui): consolidate Control UI boot chunk graph for HTTP/1.1 gateways #128514
  • improve(ui): faster session switching and smoother chat rendering #129548
  • perf(ui): bootstrap session rosters in one request #130294
  • Load optional Control UI tools only when needed #106243
  • Reduce repeated rendering during streamed chat replies #106353
  • Reduce Control UI startup by lazy-loading the approval page #110528
  • Show sidebar status only during sustained disconnects #110567
  • Reduce Control UI startup JavaScript #110623
  • Reduce Control UI startup CSS #110687
  • Refresh queued-message badges across tabs and unify sidebar tooltips #112780
  • Speed up Control UI session switching #114338
  • Center the animated mascot while pages load #114481
  • Share one node snapshot across session catalog providers #114646
  • Bound session-list title and preview reads for large transcripts #114647
  • Reduce pairing-table scans for gateway node reads #114657
  • Reduce repeated work in session list requests #114659
  • Coalesce duplicate Control UI chat startup requests #114743
  • Reduce session catalog cloning for faster loading #114829
  • Speed up Control UI session loading and catalog polling #114837
  • Reduce repeated session catalog work #114961
  • Speed Gateway chat startup and session switching #115007
  • Make Codex session catalog polling respond from cache #115403
  • Prewarm dashboard data caches after gateway startup #115710
  • Keep session lists fast with retained subagent history #116533
  • Bound session-list transcript validation work #118380
  • Format sidebar timestamps only when displayed #121819
  • Speed up large Markdown session switches #122150
  • Show cached models while chat metadata refreshes #124868
  • Coalesce New Session draft writes while preserving durability #125868
  • feat(ui): load owner sessions before shared roster #128767
  • Control UI: parallelize session roster loads #129175
  • improve(ui): speed up session loading and chat rendering #129656
  • improve(ui): make session switching and transcript rendering faster #129834
  • perf(control-ui): load built-in theme palettes on demand #130473
  • perf(markdown): reduce CPU work in streamed and chunked replies #133152
  • perf(gateway): reuse prepared display projections #133203
  • Speed up large session lists without changing results #114842
  • Reduce redundant Control UI session refreshes #115374
  • Reduce redundant work in session listing #115384

Bug fixes

  • Keep Control UI state current across reconnects and navigation #102745
  • Preserve accepted Control UI turns across Gateway restarts #106151
  • Refresh New Session state after Gateway reconnects #106595
  • Stabilize long Control UI chat transcripts #107893
  • Show retryable Usage and Logs request failures #108689
  • Show new-task prompts immediately without duplicate bubbles #111953
  • Start the Control UI without strict-CSP eval violations #113617
  • Speed up Control UI startup data #114605
  • Harden Control UI state, permissions, and navigation lifecycles #115110
  • Make Control UI state, permissions, media, and mobile navigation reliable #115364
  • Keep web and terminal conversations synchronized #115377
  • Keep web and terminal chats synchronized #115429
  • Unify browser chat session projection paths #115461
  • Recover Control UI sessions after prolonged outages #115654
  • Restore active chat responses after reconnect #115691
  • Reconcile Control UI updates after lost responses #116098
  • Prevent stale Control UI Gateway connections from resurfacing #117017
  • Stabilize Control UI memory, plugin, and model setup state #117047
  • Keep Control UI sessions and navigation current across reconnects #117103
  • Preserve Control UI session, tool, archive, and focus ownership #117191
  • Restore active chat progress after navigation and reconnect #118472
  • Clear resolved questions across split Control UI panes #118787
  • Recover New Session models through Gateway startup #119120
  • Preserve Control UI history and active-run timing after recovery #119729
  • Recover Control UI startup routes and preserve unsent drafts #120960
  • Restore model availability in New Session after Gateway startup #121057
  • Send images with known-capable models without catalog delay #123476
  • Show when Settings autosave pauses after reconnect #123663
  • Recover stale Control UI sessions after Gateway updates #124772
  • Show recovery when the Control UI never renders #124861
  • Refresh Control UI checkout side panels #125785
  • Preserve committed session results across reconnects #125904
  • Recover failed optional Control UI surfaces #126409
  • Recover Control UI chat from stalled subscriptions #126760
  • perf(ui): stop running full setup detection on every Control UI connect #128135
  • fix(ui): show chat before startup metadata finishes #128652
  • fix(ui): resume session starts after Gateway reconnects #128661
  • fix: keep Control UI routes usable across updates #129922
  • fix(ui): retain prompts after cloud startup failures #131594
  • fix: switching agents can show another agent's auth and quota #132894
  • Keep sidebar sessions visible during Gateway reconnects #102424
  • Recover Control UI panels after gateway updates #104305
  • Prevent stale Worktrees actions during refreshes #105384
  • Unblock Control UI recovery when a document probe hangs #105795
  • Make panel load failures easier to recover from #106033
  • Retry transient Control UI session-group catalog failures #106169
  • Restore Control UI transcripts after reload and bundled icons #106981
  • Stop stalled generated-image previews from hanging chat rows #108116
  • Keep Control UI recovery retrying after stalled probes #108163
  • Keep Workspaces on the newest loaded state #108204
  • Stop Control UI usage reloads on reconnect #108726
  • Stop reconnects from repeatedly reloading Control UI usage data #108904
  • Time out stalled Control UI WebSocket openings #109037
  • Keep Control UI connected through brief Gateway stalls #109317
  • Keep slow session hosts from blocking the sidebar #110106
  • Prevent stale sidebar health alerts #111061
  • Recover stalled Nostr profile requests #111093
  • Refresh the Control UI agent roster on config changes #111395
  • Restore responsive slash commands in long WebChat sessions #111539
  • Prompt stale Control UI tabs to refresh after gateway upgrades #111619
  • Recover Control UI reloads during gateway restarts #111670
  • Keep dashboard MCP Apps within lease capacity #111691
  • Keep Control UI plugin tabs and widgets after agent turns #112471
  • Keep Control UI session updates live across chat switches #112526
  • Keep reconnect replays visible and fresh branch lists empty #112756
  • Prevent duplicate image prompts and flicker #113113
  • Preserve session-specific assistant identity across snapshots #113322
  • Keep Coding sessions visible after reconnect #113981
  • Keep new-task prompts visible through Gateway reconnects #114042
  • Recover the Control UI after configured agents change #114048
  • Stop selecting a nonexistent main agent during startup #114257
  • Back off unavailable session pull-request polling #114266
  • Preserve Control UI settings across reconnects and concurrent tabs #114286
  • Keep Control UI session catalogs on a valid agent #114303
  • Recover offline language selections after reconnect #114378
  • Keep new-session drafts through Gateway reconnects #114415
  • Keep agent identity aligned across session switches #114439
  • Keep cold transcript file folds from freezing Gateway requests #114478
  • Avoid duplicate session-list refreshes at Control UI startup #114764
  • Restore question state safely after reconnects #114794
  • Preserve Control UI navigation during startup #114828
  • Keep Control UI state with the correct run, agent, and locale #114896
  • Keep Control UI state consistent across reconnects and browser changes #115221
  • Prevent dashboard subscription leaks during pane changes #115457
  • Keep browser and terminal chat history tied to the right session #115511
  • Recover deleted chats without endless route retries #115974
  • Load dynamic Control UI deep links once #116197
  • Preserve Control UI session refresh requests #116713
  • Keep stale agent picker closed after refresh failure #116715
  • Preserve scoped Control UI session state #116772
  • Recover Control UI session updates after observer failures #116887
  • Stop canceled Control UI Gateway waits cleanly #117048
  • Prevent stale child sessions after sidebar filter changes #117090
  • Show the right login state after switching Gateways #117125
  • Refresh time-sensitive Gateway session-list results #118875
  • Show truthful model availability for new sessions #119462
  • Keep the session list visible during transcript rebuilds #120159
  • Keep the session sidebar usable and self-healing during transcript rebuilds #120165
  • fix(ui): Model Providers usage cards stay empty after a failed usage.status #120301
  • Consolidate Control UI protocol types and helpers #120348
  • Keep open Dashboards pages current #120627
  • Preserve Control UI dashboards across view switches #120640
  • fix(ui): distinguish inherited model defaults from session pins #120805
  • Remove auth delays from valid Control UI device-token reads #120849
  • Keep SecretRef-backed models available in chat #121090
  • Recover session rosters after stalled subscriptions #121164
  • Preserve new-session text while catalog routes load #121182
  • Preserve Control UI commentary order after steering and refresh #121449
  • Prevent duplicate first prompts in new Control UI sessions #121498
  • Restore older chat images after Control UI reload #122031
  • Prevent stale recovery work after Control UI reconnects #122944
  • Stop Control UI icon authentication churn #123199
  • Automation badges refresh after cron changes #123253
  • Refresh terminal session status after run-end persistence #123259
  • Refresh session previews after new messages #123290
  • Recover long assistant messages after load failures #123324
  • Restore in-flight replies for non-default agents after reconnect #123539
  • Stop stale Control UI tabs from acting after Gateway updates #123882
  • Stop stale Control UI tabs from reconnecting forever #123932
  • Clear stale Session companion state after resets #123941
  • Retire stale chat-header errors after navigation #123958
  • Avoid repeated history reads for queued sends behind active runs #123966
  • Keep the Control UI agent roster current during delayed startup #124103
  • Align Control UI session reconciliation with Gateway state #124104
  • Keep queued messages moving across agents #124121
  • Cancel stale destructive confirmations after reconnects #124254
  • Stop workspace icons delaying chat startup #124269
  • Recover authorized deep links after Control UI updates #124328
  • Refresh Control UI config after reconnect #124360
  • Keep web chat available during config reloads #124435
  • Stop duplicate Sessions page queries #125018
  • Refresh Sessions lists when runs finish #125040
  • Stop hidden chat tabs from repainting in the background #125088
  • Recover the New Session model picker after a missing catalog owner #125450
  • Show catalog freshness errors instead of model-auth failures #125513
  • Keep model pickers usable after refresh failures #125661
  • Remove persistent drafts after confirmed session deletion #125665
  • Refresh existing session controls after dynamic model discovery #125847
  • Preserve typed text during new-session draft restore #125884
  • Refresh Browser when its sidebar tab becomes visible #126058
  • Disconnect hidden Desktop sidebar sessions #126203
  • Keep warmed Control UI dashboards visible when switching sessions #126339
  • Keep Control UI device tokens correct after reconnects #126362
  • Preserve conversation preferences on reset #126575
  • Retry failed new-session navigation without duplicate tasks #126873
  • fix(ui): keep loaded older history after switching sessions #126979
  • fix(ui): surface newly available account models in picker #127725
  • perf(ui): stop rescanning whole replies on every streamed chunk #127749
  • perf(ui): skip highlighting unfinished code blocks while streaming #127754
  • perf(ui): stop long-lived request and session caches from growing forever #127818
  • perf(ui): stop hidden split panes from fetching data they never show #127821
  • perf(ui): batch chat stream and outbox work into one frame #127826
  • perf(ui): stop rescanning the whole snapshot cache on every write #127831
  • fix(ui): preserve other chat transcripts when deleting a session #128109
  • fix(ui): keep mount recovery working when the service worker is broken #128167
  • fix(ui): terminal messages no longer reload the session roster #128397
  • fix(ui): preserve new composer state across reconnects #128620
  • fix(ui): preserve routable models across reconnect #128694
  • fix(ui): show when connected chats cannot receive live messages #128865
  • fix(chat): faster, reliable older history and live updates #128964
  • fix(ui): retain cloud profiles after refresh failure #128996
  • fix(ui): update the new-session model picker when catalogs load #129019
  • fix(ui): make session switching and history loading faster #129111
  • fix(ui): stabilize the sidebar session list with a single projection owner #129150
  • fix: New Session adopts discovered models #129307
  • fix(ui): keep pinned sidebar pages visible during reconnect #129517
  • fix(ui): stop warm sidebar refreshes from blanking foreign-owned rows #129558
  • fix(ui): keep hidden session files cold #129620
  • fix(ui): keep active commentary after session navigation #129640
  • fix(ui): own chat history issuance with a closed state machine #129776
  • fix(ui): model picker no longer collapses to one model after refresh #129878
  • fix: older chat history loads slowly in tool-heavy conversations #129946
  • fix(ui): show dashboard refresh failures with a retry action #130376
  • fix(ui): preserve first startup errors across session navigation #130593
  • fix(ui): stop repeated reply preview requests after temporary failures #130737
  • fix(ui): stop dismissed lazy retries from reloading the page #130988
  • fix(ui): keep Gateway place labels current #131118
  • fix(ui): retry stale dashboard final history #131174
  • fix(ui): keep selected agent after app restart #131549
  • fix(ui): refresh stale mobile transcript bundles #132024
  • fix(ui): carry selected session ownership through chat presentation #133149
  • fix(ui): coalesce session catalog refreshes (#123535) 4bf0bd3
  • fix(ui): preserve created session effort (#125822) f49742b
  • Keep Control UI state and translated link menus current #102848
  • Prevent Control UI CSP eval warnings on startup #103665
  • Recover Worktrees creation after Gateway reconnect #105285
  • Allow Control UI session creation during list refresh #106045
  • Restore custom avatars after chat session switches #106553
  • Preserve Model Providers route connection provenance #106872
  • Recover stalled agent avatars in Control UI #108368
  • Bound chat avatar metadata and image loading #110010
  • Bound Control UI generated-image memory retention #110305
  • Pause session catalog polling in hidden tabs #110705
  • Send proxy credentials with Control UI manifest requests #111053
  • Recover Control UI connections after browser handshake failures #113689
  • Keep Control UI widgets rendering in long-lived chats #113702
  • Load dashboard icons and manifest from nested routes #114061
  • Keep sidebar catalogs stable after empty refresh responses #114394
  • Keep Control UI settings deep links connected #115186
  • Preserve explicit Control UI navigation during chat route resolution #115366
  • Show actionable Gateway opening-timeout diagnostics #117078
  • Prevent stale Gateway event-log updates in Control UI #117169
  • Refresh sidebar automation alerts on changes #117648
  • Refresh time-sensitive session lists as entries expire #118768
  • Hide the connection form while initial authentication resolves #120372
  • Release failed plugin icon network streams #121129
  • Restore startup prewarming for derived session titles #122368
  • Preserve mixed-case Control UI deep links #123207
  • Preserve New Session drafts across navigation #123697
  • Show connection errors for interrupted session actions #123771
  • Recheck agent model lists and clarify catalog errors #124019
  • Match active sessions across legacy key aliases #124020
  • Prevent Control UI stalls on file-heavy Markdown #124258
  • Prevent stale chat-header failures after navigation #124442
  • Prevent stale Labs errors after reconnect #124578
  • Wait for the agent roster before loading New Session catalogs #125339
  • Restore New Session text drafts after reload #125637
  • Retry CLI-agent catalog discovery in the New Session picker #125943
  • Recover newer Control UI builds after stale probes #126628
  • Recover Cloud Workers profile saves after Gateway reconnects #127150
  • fix(ui): restore drafts before expiry maintenance #127766
  • perf(ui): stop re-comparing the whole session catalog on every live event #127819
  • perf(ui): keep split divider drag within frame budget #127840
  • perf(ui): stop a pending approval countdown from re-rendering the whole chat every second #127844
  • fix(ui): stop terminal panel teardown from leaking liveness probes #128147
  • fix(ui): keep panel load errors compact #128225
  • fix(ui): show failed child-session loading and retry #128418
  • fix(ui): preserve agent prompts when the default session is already open #128638
  • fix(ui): preserve confirmed cloud profile deletion across reconnects #129245
  • fix(ui): refresh stale filtered session lists after thread actions #129484
  • fix(ui): preserve configured models when catalog requests fail #129767
  • fix(ui): preserve chat URL state during session draft cleanup #129949
  • fix(ui): clear stale session-list errors after Gateway recovery #130004
  • fix(ui): show dashboard replies when final events omit messages #130417
  • fix(ui): keep retained chats visible after peer-tab deletion #131020
  • fix(ui): clear previous run errors after successful recovery #132718
Was this useful?