Commit Graph

522 Commits

Author SHA1 Message Date
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