Colin Johnson
e909e56635
fix(ui): prevent new-chat controls overlapping on mobile ( #116607 )
2026-07-31 10:08:50 -04:00
Peter Steinberger
67943535b1
fix(ui): make plugin and session controls keyboard accessible ( #116820 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 05:48:44 -07:00
Peter Steinberger
9812380f10
fix(ui): coalesce profile identity refresh ( #116764 )
...
* fix(ui): coalesce profile identity refresh
* style(ui): format profile refresh e2e
2026-07-31 05:00:21 -07:00
Peter Steinberger
c75e435e30
fix(ui): scope agent cron jobs and surface model catalog failures ( #116771 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-07-31 04:47:31 -07:00
Vincent Koc
5b7f514c94
fix(chat): explain chat-only model limits
2026-07-31 18:43:47 +08:00
Vincent Koc
94c0f33f1f
Merge pull request #116611 from openclaw/experiment/google-cli-supported-paths
...
fix(google): stop offering unsupported CLI setup
2026-07-31 17:48:18 +08:00
Vincent Koc
85b4a4a612
test(ui): cover the Talk relay start-stop race
...
Co-authored-by: shaoohh <150606856+shaoohh@users.noreply.github.com >
2026-07-31 16:48:38 +08:00
Vincent Koc
091bc7f9ed
Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
...
* origin/main: (115 commits)
test: type session request parameters (#116713 )
fix: retain event invalidation for pagination
docs: note queued session refresh fix
fix: preserve queued session refresh options
fix(exec): require approval for abbreviated inline eval flags [AI] (#116529 )
fix: keep owner-only tools out of non-owner skill commands [AI] (#116532 )
fix(tui): require a fresh agent roster (#116715 )
fix(memory-wiki): preserve user edits when rolling back ChatGPT imports (#116517 )
fix(agents): cron failures preserve timeout and cancellation reasons (#116566 )
fix(release): unblock beta validation workflows (#116708 )
fix(ci): discover frozen target startup benchmark cases (#116711 )
fix(session): preserve reset message payloads (#116195 )
fix(qa): tolerate loaded-runner bus delivery stalls (#116448 )
improve(ci): rebalance embedded agent test configs (#116436 )
fix(browser): return committed trace path (#116702 )
fix(qa): exceed Slack table aggregate limit in fallback probe (#116447 )
fix(qa): use built plugin tools server (#116442 )
fix(test): keep memory FD repro config valid (#116698 )
fix(telegram): keep queued tool progress in one message (#116685 )
fix(qa): stop waiting on yielded fanout runs (#116440 )
...
# Conflicts:
# src/system-agent/setup-inference-detect.ts
# ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 16:40:33 +08:00
Vincent Koc
22e84c6ced
fix(ui): show local provider identity after setup
2026-07-31 12:46:47 +08:00
Vincent Koc
2bd9329af2
merge: sync origin/main
...
* origin/main:
fix(ai): prevent websocket cache clobber on concurrent acquire (#116216 )
test(ui): settle custodian mobile layout assertions (#116613 )
fix(agents): resume Code Mode through gateway restarts (#116605 )
2026-07-31 09:43:10 +08:00
Vincent Koc
871abad910
test(ui): settle custodian mobile layout assertions ( #116613 )
2026-07-31 09:35:16 +08:00
Vincent Koc
9e965073e5
Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
...
* origin/main: (168 commits)
fix(plugins): keep registry sqlite root consistent (#116427 )
fix(cli): keep Gateway auth failures parseable in JSON (#116597 )
fix(trajectory): preserve prompts in oversized events (#116220 )
test(buzz): add live QA Lab channel lane (#116298 )
chore(i18n): refresh native locales (#116567 )
feat: add OpenClaw TUI prototype skill (#116583 )
fix(update): accept concrete versions selected by ranges (#116585 )
fix(agents): preserve locked session model routes
test(qa-lab): preserve Matrix fault proxy identity
fix(ci): extend OpenAI live profile setup budget (#116580 )
fix: prevent configured models from stalling startup (#116553 )
fix(cli): close MCP listener after one-shot commands
fix(auto-reply): keep explicit NO_REPLY silent (#116548 )
test(discord): cover deferred backpressure terminals
fix(discord): cancel backpressured realtime playback
test(discord): cover realtime output backpressure
fix(codex): add remote WebSocket heartbeat and reconnect (#116135 )
fix(macos): wait for the current reconnect snapshot (#116550 )
fix(outbound): recognize current-source message-tool sends (#116560 )
fix(voice-call): type cancelled consult outcomes
...
# Conflicts:
# extensions/google/setup-api.test.ts
# ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 09:30:03 +08:00
Vincent Koc
94b85cba5f
feat(setup): improve local model onboarding
2026-07-31 08:53:13 +08:00
Vincent Koc
e96b9d2cd0
improve(ui): verify llama.cpp model setup
2026-07-30 23:41:58 +08:00
Vincent Koc
183db47e97
fix(ui): preserve schema-backed settings edits ( #116282 )
...
* fix(ui): harden schema-backed settings controls
Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com >
* test(ui): match config secret label in Chromium
* chore(ui): remove release-owned changelog entry
* test(agents): mock incremental registry persistence
---------
Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com >
2026-07-30 23:08:53 +08:00
Vincent Koc
ca1328dddb
Merge pull request #116285 from openclaw/fix/control-ui-session-dedupe
...
* origin/fix/control-ui-session-dedupe:
chore: leave release notes to release flow
fix(ui): deduplicate gateway-native session hosts
2026-07-30 22:53:53 +08:00
Vincent Koc
5e5d436579
fix(ui): clarify blocked inference setup
2026-07-30 22:51:30 +08:00
Peter Steinberger
7fa95e2656
feat(ui): add composable skill references ( #116330 )
...
* feat(ui): add composable skill references
* fix(ui): align skill reference CI contracts
* fix(ui): scope skill references to WebChat
2026-07-30 04:07:02 -07:00
Peter Steinberger
dbe7140397
fix(ui): restore Workboard routing and full-gate contracts ( #116342 )
...
* fix(ui): restore full-gate routing contracts
* fix(ui): preserve startup route redirects
* fix(ui): import route location type
2026-07-30 03:40:25 -07:00
Vincent Koc
bb68389a66
fix(ui): deduplicate gateway-native session hosts
2026-07-30 15:22:37 +08:00
Vincent Koc
69f10e72f2
fix(ollama): retry unreachable setup in place ( #116210 )
2026-07-30 12:23:56 +08:00
Shakker
e7d01b511b
style: format dynamic route coverage ( #116197 )
2026-07-30 04:04:07 +01:00
Shakker
6aae5c184f
test: cover dynamic route startup reconnect
2026-07-30 04:04:07 +01:00
Vincent Koc
12e5eb6a23
fix(ui): clarify model setup flows ( #116086 )
2026-07-30 09:47:57 +08:00
Vincent Koc
2d9cf7b6d1
improve(ui): guide optional channel setup after model setup ( #116078 )
2026-07-30 09:08:07 +08:00
Vincent Koc
1065c1d697
fix(ui): identify source builds in settings footer ( #116134 )
...
* fix(ui): identify source builds in settings footer
* fix(release): classify all official Control UI builds
2026-07-30 08:58:34 +08:00
Vincent Koc
e473598c2c
fix(ui): make model setup actionable before selection ( #116079 )
2026-07-30 08:34:43 +08:00
Shakker
899573a8c6
fix: reject stale update reconciliation
2026-07-30 01:03:51 +01:00
Shakker
1408dad5d5
test: cover both managed update response orders
2026-07-30 01:03:51 +01:00
Vincent Koc
5141a3593c
fix(ui): keep external settings mutations from racing saves ( #116031 )
...
* fix(ui): serialize external config mutations
* test(ui): align plugin E2E refresh ordering
2026-07-30 06:33:49 +08:00
Vincent Koc
9eee6181d7
fix(ui): serialize Control UI config writers ( #116029 )
2026-07-30 05:09:23 +08:00
Vincent Koc
b7193cd3fc
fix(ui): recover curated settings state ( #116032 )
2026-07-30 04:29:44 +08:00
Peter Steinberger
e0ab154e5e
fix(ui): explain unavailable MCP tool catalogs ( #115994 )
...
* fix(ui): explain undiscovered MCP tools
* fix(ui): scope MCP discovery notices to the viewed connector
2026-07-29 15:12:08 -04:00
Peter Steinberger
b930ee055c
fix(ui): preserve initials for missing user avatars ( #115976 )
...
* fix(ui): preserve initials for missing user avatars
* test(ui): prove missing avatar fallback in browser
* chore: defer avatar note to release workflow
* test(ui): stabilize avatar fallback browser proof
2026-07-29 13:34:36 -04:00
Vincent Koc
14ffd4393e
feat(ui): add provider icons to coding catalogs ( #115956 )
2026-07-30 01:33:15 +08:00
Peter Steinberger
b44890bf2d
fix(sessions): recover deleted chats without endless retries ( #115974 )
...
* fix(sessions): recover deleted chats without lifecycle races
* fix(sessions): narrow deleted route commit keys
* test(sessions): isolate deleted-chat recovery regressions
* fix(sessions): recover chats after agent removal
* fix(sessions): fence recreated session deletion races
* fix(sessions): preserve filtered active conversations
* test(sessions): preserve canonical main during chat recovery
* test(ui): follow canonical agent channels route
2026-07-29 13:22:29 -04:00
Vincent Koc
a47d81e7b3
fix(ui): derive cron timezone suggestions ( #115973 )
2026-07-30 01:12:45 +08:00
Peter Steinberger
c87e545c88
fix(ui): rename the Memory Palace browser to Memory Wiki and document it ( #115954 )
...
* fix(ui): rename the Memory Palace browser to Memory Wiki and document it
* refactor(memory-wiki): drop the old memory-palace module files
* docs: refresh generated docs map
* test(ui): align dream-diary hub-tab assertion with the wiki sub-tab id
* docs: describe memory wiki clustering behavior accurately
* docs(memory-wiki): record the wiki.overview rename decision at the registration site
* test(ui): query the Agents channels hub tab by tab role after the hub-tabs refactor
2026-07-29 12:51:37 -04:00
Peter Steinberger
af717db39c
feat(ui): add per-connector tool access to composer ( #115907 )
...
* feat(ui): per-connector tool access in composer menu
* fix(ui): harden tool access loading and dynamic keys
* fix(ui): harden tool access reads and catalog freshness
* fix(ui): invalidate tool catalog on connector edits
* test(ui): fix composer capability checks
2026-07-29 11:39:53 -04:00
Peter Steinberger
68a3ca740d
fix(ui): harden chat and session interactions ( #115967 )
2026-07-29 11:39:10 -04:00
Peter Steinberger
df3674f577
refactor(ui): unify tab navigation on the shared hub tabs ( #115934 )
...
* refactor(ui): unify tab navigation on shared hub tabs
* refactor(ui): move cron navigation to hub tabs
* test(ui): update agent overview tab locator
2026-07-29 11:24:44 -04:00
Vincent Koc
0570d53691
fix(ui): keep hide confirmation in viewport ( #115928 )
2026-07-29 22:51:08 +08:00
Miorbnli
7e3e4f6cd9
fix(ui): do not report stopped channels as connected ( #112518 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 10:47:10 -04:00
finallylly
25f1e70480
feat: add Asia/Shanghai to cron timezone suggestions ( #65936 )
...
* feat: add Asia/Shanghai to cron timezone suggestions
Adds Asia/Shanghai to the CRON_TIMEZONE_SUGGESTIONS list for users
in the Asia region who want to use their local timezone in cron schedules.
* fix(ui): preserve original cron contribution during main refresh
* fix(ui): suggest Asia/Shanghai for cron schedules
Preserve @finallylly original PR #65936 ; move its one-line IANA timezone suggestion to the current cron UI owner and cover the actual rendered Chromium datalist.
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 10:27:32 -04:00
Peter Steinberger
88c41f44de
feat(ui): add MCP servers from composer connectors ( #115921 )
2026-07-29 10:23:52 -04:00
Vincent Koc
099b806a9b
fix(ui): reduce embedded terminal font size
2026-07-29 22:22:17 +08:00
Peter Steinberger
fde4658bf6
fix(ui): recover sessions and dashboards after prolonged outages ( #115654 )
...
* fix(ui): recover long-running sessions and dashboards
* fix(ui): expose browser-safe gateway timers
* refactor(ui): keep browser timer surface minimal
* refactor(gateway): extract pending request state
* fix(ci): refresh browser runtime and format baseline
* fix(ci): exclude generated plugin outputs from targeted lint
* fix(ui): bound long-running connection and pane lifecycles
* refactor(ui): split long-running lifecycle regression coverage
* fix(ui): bound long-running media and lint ownership
* fix(security): preserve explicit workspace disable denylist
* fix(ci): preserve plugin manifest fallback lint
2026-07-29 10:09:51 -04:00
loong954
f5959499a5
fix(ui): preserve Unicode in session key truncation ( #109860 )
...
* fix(ui): preserve Unicode in session key truncation
Replace raw .slice(0, 8) with truncateUtf16Safe for session key
truncation in usage overview fallback display.
* test(ui): add Unicode-safe session key truncation tests
Five cases verify truncateUtf16Safe replaces .slice(0,8) for session
key display in usage overview:
- short keys unmodified, ASCII truncation, surrogate pair straddling
boundary, emoji within limit, exact-8-char keys
* test(ui): verify Unicode usage sessions in Chromium
Co-authored-by: 袁龙辉0668001277 <yuan.longhui@xydigit.com >
---------
Co-authored-by: 袁龙辉0668001277 <yuan.longhui@xydigit.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 10:04:50 -04:00
Colin Johnson
306c02af57
feat(ui): preview session workspace images ( #95956 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 09:22:46 -04:00
synth
c0070d70ab
fix(ui): muted theme text below WCAG AA contrast in webchat ( #114586 )
...
* fix(ui): raise muted theme text tokens to WCAG AA contrast
Secondary text using --muted/--muted-foreground measured 3.1-3.5:1 on
several bundled themes (issue #107299 ), below the 4.5:1 AA floor for
normal text. Nudges the offending hex tokens and adds a vitest guardrail
that parses base.css and asserts every text-on-surface token pairing in
every theme block stays >= 4.5:1 so future palette edits can't regress
this silently.
Closes #107299
* fix(ui): satisfy oxlint and noUncheckedIndexedAccess in contrast test
- Number.parseInt over global parseInt, ** over Math.pow, toSorted over sort
- Guard regex capture groups and indexed access under noUncheckedIndexedAccess
* test(ui): cover rendered theme contrast in Chromium
* test(ui): prove Skill Workshop mobile width in Chromium
* test(ui): stabilize deferred history prepend anchors
* test(ui): serialize rendered theme color diagnostics
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 08:26:10 -04:00