Commit Graph

1592 Commits

Author SHA1 Message Date
Val Alexander
6b3cd9043e fix(control-ui): keep channel statuses responsive
Summary:
- Keep Channels responsive by opening on cached/runtime snapshots, bounding live probes, and preventing stale slow probe results from replacing newer snapshots.
- Reduce Control UI churn by scoping Nodes polling to the active Nodes tab, debouncing sessions.changed reconciliation, and bounding secondary chat/session refreshes.
- Scope config schema analysis before section-limited renders so excluded root sections are not fully analyzed.

Verification:
- pnpm test ui/src/ui/app-channels.test.ts ui/src/ui/controllers/channels.test.ts ui/src/ui/app-settings.refresh-active-tab.node.test.ts ui/src/ui/app-gateway.sessions.node.test.ts ui/src/ui/app-lifecycle-connect.node.test.ts ui/src/ui/controllers/sessions.test.ts ui/src/ui/views/config.browser.test.ts src/gateway/server-methods/channels.status.test.ts src/gateway/control-ui.http.test.ts ui/src/ui/app-polling.node.test.ts ui/src/ui/app-gateway-chat-load.node.test.ts ui/src/ui/app-gateway.node.test.ts ui/src/ui/app-chat.test.ts ui/src/ui/app-render.helpers.node.test.ts ui/src/ui/app-lifecycle.node.test.ts
- pnpm exec oxfmt --check --threads=1 <changed files>
- git diff --check origin/main...HEAD
- node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json <changed TypeScript files>
- pnpm changed:lanes --json

Note: local pnpm check:changed reached core lint and failed on src/gateway/server-methods/nodes.invoke-wake.test.ts, which is unchanged in this PR and already present on current origin/main; changed-file lint passed under the same repo wrapper.
2026-05-11 10:37:35 -05:00
Shakker
ef6b157389 test: check i18n warning messages 2026-05-11 16:02:42 +01:00
Shakker
bc33a2049d test: check chat idempotency keys 2026-05-11 16:01:51 +01:00
Shakker
338fbd8bfd test: check control ui nav calls 2026-05-11 16:00:51 +01:00
Shakker
618818d20b test: check usage filter warnings 2026-05-11 15:59:49 +01:00
Shakker
0343a2e689 test: pin realtime relay requests 2026-05-11 15:09:19 +01:00
Val Alexander
42fc84f4b4 fix(control-ui): add static mount fallback
Summary:
- Add a plain HTML Control UI fallback when the module app never mounts.
- Document blank-page recovery guidance and keep the fallback retry-friendly.
- Cover the timeout path with iframe-isolated regression tests.

Verification:
- pnpm exec oxfmt --check --threads=1 ui/index.html ui/src/ui/mount-fallback.test.ts
- pnpm test ui/src/ui/app.talk.test.ts ui/src/ui/mount-fallback.test.ts
- pnpm ui:build
- pnpm check:changed
- GitHub CI for 8ef18e8bca completed without failures.
2026-05-11 08:03:49 -05:00
Peter Steinberger
2c89dad895 test: tighten remaining UI assertions 2026-05-11 13:59:43 +01:00
Peter Steinberger
9c5a150336 test: tighten UI view assertions 2026-05-11 13:57:15 +01:00
Peter Steinberger
ef9c03c4bb test: tighten UI gateway assertions 2026-05-11 13:54:54 +01:00
Val Alexander
96b672c54d Stabilize Control UI connection diagnostics (#80510)
Summary:
- Catch browser-side WebSocket constructor security failures and surface wss://, Tailscale, and loopback dashboard guidance.
- Classify the browser WebSocket security code through Control UI login and overview insecure-context hints.
- Keep the changelog attribution under the active Fixes section.


Verification:
- pnpm test ui/src/ui/gateway.node.test.ts ui/src/ui/views/login-gate.test.ts ui/src/ui/views/overview.node.test.ts src/logging/diagnostic.test.ts
- pnpm exec oxfmt --check --threads=1 CHANGELOG.md src/logging/diagnostic-stability.ts src/logging/diagnostic.test.ts ui/src/ui/gateway.ts ui/src/ui/gateway.node.test.ts ui/src/ui/views/login-gate.test.ts ui/src/ui/views/overview-hints.ts ui/src/ui/views/overview.node.test.ts
- git diff --check origin/main...HEAD
- pnpm check:changed
- GitHub Real behavior proof and CI preflight passed on 1ea05289b1
2026-05-11 07:40:47 -05:00
samzong
3e87e55604 fix(ui): preserve empty plugin allowlists
Signed-off-by: samzong <samzong.lu@gmail.com>
2026-05-11 13:02:34 +01:00
samzong
8e92b069d2 fix(ui): remove reverted plugin allow entries
Signed-off-by: samzong <samzong.lu@gmail.com>
2026-05-11 13:02:34 +01:00
Kaspre
775a24e57c fix(doctor): warn when per-agent model omits fallbacks key and defaults chain is non-empty (#79826)
* fix(doctor): warn when per-agent model omits fallbacks key and defaults chain is non-empty

`resolveAgentModelFallbacksOverride` in `src/agents/agent-scope.ts` returns
`[]` (no fallbacks) when a per-agent model is configured without an explicit
`fallbacks` key. At runtime this silently clobbers
`agents.defaults.model.fallbacks`, leaving the agent with no fallbacks.

Two config patterns hit this:

1. String form: `"model": "openai/gpt-5.5"` — user likely means "use this model,
   inherit fallbacks from defaults".
2. Object without `fallbacks` key: `"model": { "primary": "openai/gpt-5.5" }` —
   user likely means "just set the primary, keep defaults fallbacks".

The only explicit "no fallbacks" signal is `fallbacks: []`. This change adds
`collectImplicitFallbackClobberWarnings` / `noteImplicitFallbackClobberWarnings`
to the doctor config-analysis flow, which warns on either ambiguous shape only
when `agents.defaults.model.fallbacks` is non-empty (so there is something to
clobber).

No semantic change to how fallbacks resolve; this is a doctor-only diagnostic.

Closes #79369. Extends the scope of closed PR #79389 (string-form only) to
also cover the object-without-fallbacks case.

* fix(doctor): mirror runtime model primary normalization

* fix(doctor): strengthen fallback warning proof

* fix(doctor): tolerate malformed agent lists

* fix(doctor): type guarded agent runtime policy

* fix(ui): sync quick settings i18n baseline

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-11 12:43:51 +01:00
Peter Steinberger
3f5f038cc9 test: tighten active tab refresh assertions 2026-05-11 11:42:19 +01:00
Peter Steinberger
526d5390c6 test: tighten exec approval parser assertions 2026-05-11 11:41:01 +01:00
Peter Steinberger
c71bc216cf test: tighten sessions controller assertions 2026-05-11 11:39:55 +01:00
Peter Steinberger
71192383e7 test: tighten webrtc realtime talk assertions 2026-05-11 11:38:27 +01:00
Peter Steinberger
cb088c8160 fix(ui): preserve draft on chat stop 2026-05-11 11:13:23 +01:00
Jeff J Hunter
3247b091d6 Add browser and tool profile quick settings (#80609)
Summary:
- The PR adds Browser enabled and Tool profile controls to Control UI Quick Settings, stacks the tool profile row for narrow cards, and adds focused UI tests plus a screenshot asset.
- Reproducibility: not applicable. This PR adds a Control UI quick-settings capability rather than fixing a reported reproducible bug. Source inspection and the supplied screenshot/log proof cover the changed behavior.

Automerge notes:
- No ClawSweeper repair was needed after automerge opt-in.

Validation:
- ClawSweeper review passed for head 06adff19fd.
- Required merge gates passed before the squash merge.

Prepared head SHA: 06adff19fd
Review: https://github.com/openclaw/openclaw/pull/80609#issuecomment-4419255136

Co-authored-by: Jeff J Hunter <support@aipersonamethod.com>
2026-05-11 10:06:00 +00:00
Peter Steinberger
b282745b4c test: tighten app render helper assertions 2026-05-11 09:08:49 +01:00
Peter Steinberger
e9174fc984 test: tighten tool card assertions 2026-05-11 09:06:29 +01:00
Peter Steinberger
2d64ee0aec test: tighten google live talk assertions 2026-05-11 09:05:10 +01:00
Peter Steinberger
85e9dd0720 test: tighten command palette item assertions 2026-05-11 09:02:44 +01:00
Peter Steinberger
7ec38cc88f test: tighten resizable divider assertions 2026-05-11 07:26:42 +01:00
nickmopen
b90f28e895 fix(ui): prevent programmatic scrollTo from flipping chatUserNearBott… (#76991)
* fix(ui): prevent programmatic scrollTo from flipping chatUserNearBottom during streaming

* fix(ui): preserve user scroll-up events that arrive during programmatic scroll guard window

* test(ui): add unit coverage for programmatic scroll guard boundary and retry path

* fix(ui): preserve chat scroll bookkeeping

* chore: drop unrelated slack formatting

* test: narrow inbound dedupe claim result

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-11 05:07:19 +01:00
Peter Steinberger
0a42c049a1 test: tighten grouped render assertions 2026-05-11 05:00:53 +01:00
Peter Steinberger
a40b95dea5 test: tighten ui performance and dedupe assertions 2026-05-11 04:57:38 +01:00
Peter Steinberger
4e8e32fa51 test: tighten control ui bootstrap assertions 2026-05-11 03:45:56 +01:00
Peter Steinberger
429a6a8cc9 test: tighten slash command steer assertions 2026-05-11 03:36:24 +01:00
Peter Steinberger
6346e792c4 build: enable stricter TypeScript checks 2026-05-11 02:04:17 +01:00
Peter Steinberger
2b0913e9aa test: tighten chat controller assertions 2026-05-10 23:30:44 +01:00
Peter Steinberger
694a089b89 test: tighten chat item assertions 2026-05-10 23:09:53 +01:00
Peter Steinberger
4b7b33e634 test: tighten ui storage assertions 2026-05-10 21:48:26 +01:00
Peter Steinberger
d3e9d1e186 test: tighten dreaming controller assertions 2026-05-10 21:26:40 +01:00
Peter Steinberger
f9c0dc2d2b fix(feishu): fall back from missing thread replies (#80306)
Summary:
- The branch adds an opt-in Feishu top-level group-send fallback for withdrawn or missing normal quoted thread replies, plus regression coverage, a changelog entry, and CI/lint typing and baseline refreshes.
- Reproducibility: yes. at source level. Current main hard-errors withdrawn/not-found Feishu reply targets when `replyInThread` is true, and the existing regression test asserts that no top-level create fallback occurs.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(feishu): fall back from missing thread replies
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): address review for automerge-openclaw-openclaw-8030…
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-80306 with ma…
- PR branch already contained follow-up commit before automerge: fix(ci): satisfy stricter lint and test types
- PR branch already contained follow-up commit before automerge: fix(ci): align Node 24 test typing

Validation:
- ClawSweeper review passed for head 93146f9d13.
- Required merge gates passed before the squash merge.

Prepared head SHA: 93146f9d13
Review: https://github.com/openclaw/openclaw/pull/80306#issuecomment-4415604729

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-05-10 16:41:51 +00:00
Peter Steinberger
c66afd8481 test: clear ui cron broad matchers 2026-05-10 13:54:07 +01:00
Peter Steinberger
11dc5cb94e fix: compact tool progress display 2026-05-10 11:26:23 +01:00
Peter Steinberger
115049753d test: clear slash command broad matchers 2026-05-10 11:24:54 +01:00
Peter Steinberger
31a87584d0 test: clear app chat broad matchers 2026-05-10 10:50:41 +01:00
Val Alexander
38456f5f03 fix(gateway): scope chat session list refreshes
Fix Control UI post-first-message session switching stalls by scoping chat-specific sessions.list refreshes to the active agent, avoiding disk-only store discovery for configured-only gateway lists, and adding sessions.list diagnostics spans.\n\nVerification:\n- pnpm test ui/src/ui/controllers/sessions.test.ts ui/src/ui/app-render.helpers.node.test.ts ui/src/ui/app-chat.test.ts ui/src/ui/app-gateway.sessions.node.test.ts src/gateway/server.sessions.store-rpc.test.ts src/gateway/server.sessions.list-changed.test.ts src/gateway/session-utils.subagent.test.ts\n- pnpm check:changed\n- pnpm protocol:check\n- pnpm lint:ui:no-raw-window-open\n- Browser QA against Control UI dev server\n\nFixes #79675.
2026-05-10 03:35:46 -05:00
github-actions[bot]
80047b1bc7 chore(ui): refresh fa control ui locale 2026-05-10 08:33:23 +00:00
github-actions[bot]
9e3d748b08 chore(ui): refresh nl control ui locale 2026-05-10 08:33:10 +00:00
github-actions[bot]
7008b89e66 chore(ui): refresh vi control ui locale 2026-05-10 08:32:39 +00:00
github-actions[bot]
00a6fb38af chore(ui): refresh th control ui locale 2026-05-10 08:32:28 +00:00
github-actions[bot]
976589558c chore(ui): refresh pl control ui locale 2026-05-10 08:32:21 +00:00
github-actions[bot]
4c391b04be chore(ui): refresh id control ui locale 2026-05-10 08:32:11 +00:00
github-actions[bot]
7110c8f7fd chore(ui): refresh uk control ui locale 2026-05-10 08:31:31 +00:00
github-actions[bot]
44e35435c3 chore(ui): refresh it control ui locale 2026-05-10 08:31:13 +00:00
github-actions[bot]
b6e712a47c chore(ui): refresh tr control ui locale 2026-05-10 08:31:11 +00:00