Commit Graph

2407 Commits

Author SHA1 Message Date
Vincent Koc
4e78776a5c fix(ui): refresh realtime talk i18n baseline 2026-06-17 02:35:32 +02:00
OfflynAI
8432d7d624 fix(webchat): skip textarea resize during IME composition to eliminate typing lag (#93779)
Merged via squash.

Prepared head SHA: 820e10fa49
Co-authored-by: joelnishanth <140015627+joelnishanth@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-17 08:27:21 +08:00
Andy Ye
2b92fbc2ee fix(ui): scope Skill Workshop proposals to selected agent (#93773)
* fix(ui): scope skill workshop proposals to selected agent

* fix(ui): scope Skill Workshop proposals by agent

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 06:55:23 +08:00
shushushu
d211d49011 fix(ui): populate realtime talk provider and transport options from talk.catalog (#93746)
* fix(ui): populate realtime talk provider and transport options from talk.catalog

* test(ui): cover realtime talk catalog options

* fix(ui): keep realtime talk catalog selections valid

* fix(ui): honor realtime browser session support

* fix(ui): preserve realtime provider fallback options

* fix(ui): clear stale realtime talk catalogs

* fix(ui): refresh realtime talk catalog on reconnect

* fix(ui): reconcile realtime talk catalog selections

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 04:27:05 +08:00
lsr911
4aba273939 fix: scope assistant avatar override to agent ID (#93712)
* fix: scope assistant avatar override to agent ID

The local assistant avatar override was stored globally in
localStorage without an agentId, causing the same avatar to
apply to all agents. Setting an avatar for agent A would
overwrite the avatar for agent B.

Fix: include agentId when saving the local avatar override,
and filter by agentId when loading. An override saved for one
agent no longer bleeds into other agents.

Fixes #90890

* fix(ui): persist assistant avatars per agent

* fix(ui): satisfy scoped avatar checks

---------

Co-authored-by: lsr911 <lsr911@github.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 02:53:35 +08:00
pick-cat
a6b348a307 fix(control-ui): copy code blocks over plain HTTP via clipboard fallback (#93666)
The async Clipboard API is only available in secure contexts (HTTPS or
localhost). On plain-HTTP deployments navigator.clipboard is undefined, so the
code block copy button threw synchronously and silently failed. Add a shared
copyToClipboard helper that guards the secure-context path and falls back to the
legacy execCommand copy, reuse it for the code block button and the copy-as-
markdown affordance, and cover it with a unit test plus a real-browser e2e that
simulates the non-secure context.

Fixes #93628

Co-authored-by: Pick-cat <266665499+Pick-cat@users.noreply.github.com>
2026-06-16 23:47:03 +08:00
github-actions[bot]
8c7690b256 chore(ui): refresh fa control ui locale 2026-06-16 14:18:52 +00:00
github-actions[bot]
7c314e1504 chore(ui): refresh nl control ui locale 2026-06-16 14:18:27 +00:00
github-actions[bot]
6ab41d50d4 chore(ui): refresh th control ui locale 2026-06-16 14:17:41 +00:00
github-actions[bot]
f95ca1de26 chore(ui): refresh vi control ui locale 2026-06-16 14:17:28 +00:00
github-actions[bot]
cb811d4650 chore(ui): refresh pl control ui locale 2026-06-16 14:17:25 +00:00
github-actions[bot]
45343f5d64 chore(ui): refresh id control ui locale 2026-06-16 14:17:01 +00:00
github-actions[bot]
ab71827cf3 chore(ui): refresh uk control ui locale 2026-06-16 14:16:05 +00:00
github-actions[bot]
7e46326d21 chore(ui): refresh tr control ui locale 2026-06-16 14:15:59 +00:00
github-actions[bot]
c861730047 chore(ui): refresh it control ui locale 2026-06-16 14:15:55 +00:00
github-actions[bot]
5dee1eefb7 chore(ui): refresh ar control ui locale 2026-06-16 14:15:45 +00:00
github-actions[bot]
8fc5911e21 chore(ui): refresh fr control ui locale 2026-06-16 14:14:42 +00:00
github-actions[bot]
d344dcbd91 chore(ui): refresh ko control ui locale 2026-06-16 14:14:38 +00:00
github-actions[bot]
4e3d2ff79b chore(ui): refresh es control ui locale 2026-06-16 14:14:27 +00:00
github-actions[bot]
3e2e3dfa92 chore(ui): refresh ja-JP control ui locale 2026-06-16 14:14:22 +00:00
github-actions[bot]
f11bf1ed42 chore(ui): refresh pt-BR control ui locale 2026-06-16 14:13:29 +00:00
github-actions[bot]
47ce7bc581 chore(ui): refresh zh-TW control ui locale 2026-06-16 14:13:20 +00:00
github-actions[bot]
e1770b041c chore(ui): refresh zh-CN control ui locale 2026-06-16 14:13:14 +00:00
github-actions[bot]
d3c86f96af chore(ui): refresh de control ui locale 2026-06-16 14:13:09 +00:00
Vincent Koc
ea6704319a fix(ui): localize Talk error dismiss label 2026-06-16 16:08:00 +02:00
zhang-guiping
fa0116b0a0 fix #93044: control-ui webchat double-renders agent replies when dmScope=main (#93298)
Merged via squash.

Prepared head SHA: b7ab9ba0fa
Co-authored-by: zhangguiping-xydt <275915537+zhangguiping-xydt@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-16 21:10:00 +08:00
liuhao1024
aebf0bbd2d fix(gateway): compute sessions.usage aggregate totals from all sessions, not just the limited page (fixes #76496) (#93612)
Merged via squash.

Prepared head SHA: 349b8cd066
Co-authored-by: liuhao1024 <11816344+liuhao1024@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-16 20:33:10 +08:00
liuhao1024
c4940a4ff9 fix(ui): clear stale Talk error when session transitions to non-error state (fixes #88176) (#93606)
Merged via squash.

Prepared head SHA: 468b0bd01d
Co-authored-by: liuhao1024 <11816344+liuhao1024@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-16 20:30:35 +08:00
Vincent Koc
f90ec6d7be fix(tests): avoid runtime discovery in routed reply checks 2026-06-16 10:21:46 +02:00
zhaoqj2016
b037280ea9 fix(ui): preserve CJK IME composition (#93498)
Merged via squash.

Prepared head SHA: c84ef0bdf5
Co-authored-by: Zhaoqj2016 <21196165+Zhaoqj2016@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
Reviewed-by: @vincentkoc
2026-06-16 14:34:40 +08:00
openclaw-clownfish[bot]
59950f7b52 fix(ui): preserve gateway token during safe websocket url edits (#73923)
* fix(ui): preserve gateway token during safe websocket url edits

* fix(ui): preserve gateway token during safe websocket url edits

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
2026-06-16 14:03:13 +08:00
Harjoth Khara
5a9396ef6d fix(ui): restore provider usage pill in desktop chat composer [AI] (#93055)
* fix(ui): restore provider usage pill in desktop chat composer (#93041)

Composer refactors dropped the quota pill from renderChatControls and left the
desktop renderChatSessionSelect wrapper orphaned, so it rendered nowhere on
desktop. Re-attach the existing pill, add modelAuthStatusResult to the guarded
controls dep list so it updates when usage windows arrive async, and hide it on
the 2-col mobile composer grid.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(ui): add real-browser e2e proof for chat quota pill (#93041)

Playwright/Chromium test that mocks models.authStatus usage windows and asserts
the restored provider usage pill renders in the desktop chat composer (and is
absent without usage). Skips gracefully when Chromium is unavailable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(ui): write quota-pill e2e screenshots to ignored .artifacts path (#93041)

Match the control-ui-e2e convention (.artifacts/control-ui-e2e/...) so the proof
run does not leave untracked root-level files. Addresses ClawSweeper review.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 13:57:40 +08:00
Goutam Adwant
325d0208d0 fix(ui): add agent selector to skills page (#93487)
* fix(ui): add agent selector to skills page

* test(ui): stabilize skills agent selector checks

* fix(skills): preserve agent-scoped state

* fix(skills): refresh current scope after config updates

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-16 13:30:25 +08:00
pick-cat
7a008c53f4 fix(control-ui): keep workboard card titles visible
Keep workboard card titles visible when a column overflows by pinning implicit rows to content height, and add e2e coverage for the overflow case.

Fixes #91717
2026-06-16 06:18:22 +08:00
Vincent Koc
93fa065fb3 fix(ci): update Vitest past browser advisory 2026-06-16 06:16:04 +08:00
Shakker
dc573a38dc fix: update dependency pins 2026-06-15 19:48:43 +01:00
ZengWen-DT
7208567382 fix(control-ui): respect agents.defaults.timeFormat for timestamps (#93297)
Thread the existing agents.defaults.timeFormat setting through the Control UI
bootstrap config so WebChat/Control UI timestamps render in the configured
12h/24h clock instead of always using the browser locale default. "auto"
keeps the browser default, so existing deployments are unchanged.

Closes #58147

Co-authored-by: zengwen <zeng_wen@foxmail.com>
2026-06-16 00:29:44 +08:00
openclaw-clownfish[bot]
4c2fef4a3b fix(gateway): repair usage cost aggregation across agents (#93022)
* fix(gateway): aggregate usage cost across agents

* fix(clownfish): address review for ghcrawl-157040-autonomous-smoke (1)

Co-authored-by: luke-skywalker-open-claw <262978557+luke-skywalker-open-claw@users.noreply.github.com>

Co-authored-by: Stable Genius <259448942+stablegenius49@users.noreply.github.com>

---------

Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: Stable Genius <259448942+stablegenius49@users.noreply.github.com>
2026-06-15 01:06:36 +08:00
Colin Johnson
fd855c831f feat(webui): add session workspace rail (#92856)
* feat(webui): add session workspace rail

* fix(webui): address session workspace review

* fix(webui): secure session workspace previews

* fix(webui): handle nested session workspace paths

* fix(webui): update session file protocol models

* fix(webui): clear session rail lint
2026-06-14 22:39:51 +08:00
openclaw-clownfish[bot]
889bc52ba5 fix(ui): repair iOS Safari chat viewport handling
Repairs https://github.com/openclaw/openclaw/pull/63644.

Review proof: local structured autoreview on branch review/pr-92855 against origin/main exited clean with no accepted/actionable findings.

Co-authored-by: Xi Qi <1311124+macdao@users.noreply.github.com>
2026-06-14 11:36:42 +08:00
openclaw-clownfish[bot]
971542b7f6 UI: localize Logs tab labels (#92820)
Repair #61080 by routing Logs tab user-facing labels through Control UI locale keys while keeping export filename suffixes stable.

Validation:
- pnpm ui:i18n:check
- pnpm check:changed
- ui/src/ui/views/logs.test.ts
- Codex /review
- GitHub PR checks

Source PR credit: continues @rubensfox20's work from https://github.com/openclaw/openclaw/pull/61080.

Co-authored-by: rubensfox20 <111531429+rubensfox20@users.noreply.github.com>
2026-06-14 09:23:00 +08:00
scotthuang
b3dc274034 fix(gateway): preserve active runs during plugin finalization (#92746)
* fix(gateway): preserve active run during plugin finalization

* fix(ui): skip session.message history reload while gateway reports active run

* fix(ui): remove unused eslint-disable directive

* fix(ui): preserve active runs through finalization

---------

Co-authored-by: scotthuang <scotthuang@tencent.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-14 08:58:27 +08:00
Colin Johnson
1a8747620e fix: reflow composer beside workspace rail
Reflow the Control UI chat composer into the main chat column when the Workspace Files rail is expanded, so the composer stays beside the rail instead of extending underneath it.

Prepared head SHA: 7108d88cda
Co-authored-by: Colin Johnson <211764741+Solvely-Colin@users.noreply.github.com>
Co-authored-by: shakkernerd <165377636+shakkernerd@users.noreply.github.com>
Reviewed-by: @shakkernerd
2026-06-14 00:40:03 +01:00
Vincent Koc
e4313bac97 fix(ui): localize workspace file rail labels 2026-06-14 06:01:30 +08:00
Shakker
dbf24fe35a fix: start workspace files collapsed 2026-06-13 20:19:34 +01:00
sallyom
d03932af18 feat: make workspace files panel collapsible
Signed-off-by: sallyom <somalley@redhat.com>
2026-06-13 20:19:34 +01:00
狼哥
a1814586c6 fix(ui): preserve dashboard session parent lineage
Preserves the selected Control UI session as the parent when creating dashboard child sessions even if the session list is stale or filtered, while avoiding the synthetic unknown session as a parent.\n\nFixes #90623.\n\nProof: local focused format/lint/Vitest/browser test; autoreview clean; Crabbox AWS run_a2bfdcd2315a UI proof; Crabbox AWS run_ce60fdc546ff check:changed; exact-head GitHub CI green on 03d1c6f646.
2026-06-14 02:14:28 +08:00
NianJiu
b01a54de6f fix(ui): restore sidebar session picker interactivity above desktop workbench (#92705)
* fix(ui): restore sidebar session picker interactivity above desktop workbench

The collapsed sidebar session picker was covered by the chat content
area when the workspace rail was visible at wider viewports. Two
issues caused this:

1. .sidebar-session-select--collapsed .chat-session-picker used
   var(--z-dropdown) which was never defined, creating an invalid
   z-index declaration (falls back to auto).

2. .shell-nav and .content--chat are grid siblings with equal
   z-index (auto), and .content--chat (later DOM) paints above
   .shell-nav, covering the session picker that extends from the
   nav column into the content column.

Fix: add position:relative + z-index:10 to .shell-nav so it stacks
above .content--chat; change overflow from hidden to visible so
the session picker extends beyond the nav rail; replace undefined
var(--z-dropdown) with z-index:100.

* fix(ui): keep sidebar picker z-index tokenized

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-14 01:13:29 +08:00
zhouhe-xydt
bb71f46251 fix(ui): preserve reset soft command args
Fixes #91316

Summary:
- Preserve `/reset soft ...` arguments when Control UI dispatches the local reset command.
- Reuse parsed slash-command semantics for reset confirmation detection.
- Keep non-soft reset tails on the destructive confirmation path across whitespace and colon separators.

Verification:
- `node_modules/.bin/oxfmt --check --threads=1 ui/src/ui/app-chat.ts ui/src/ui/app-chat.test.ts`
- `node scripts/run-oxlint.mjs ui/src/ui/app-chat.ts ui/src/ui/app-chat.test.ts`
- `node scripts/run-vitest.mjs ui/src/ui/app-chat.test.ts --maxWorkers=1 -t 'reset soft|reset softish|typed /reset command dispatch'`
- Autoreview clean
- AWS Crabbox `run_fbaf31b3fff8` focused Node 24 regression proof
- AWS Crabbox `run_eb3af5b92e42` remote `check:changed`
- Exact-head CI green for `5dee6f488fd393cb2127fe152f0d3fd53ccc13d2`
2026-06-13 23:55:59 +08:00
Andy Ye
d3e7e03669 fix(ui): preserve WebChat backscroll during streaming (#92622)
* fix(ui): preserve webchat backscroll during streaming

* fix(ui): keep forced chat scroll above follow lock

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-13 18:40:31 +08:00