Commit graph

7797 commits

Author SHA1 Message Date
openclaw-mantis[bot]
397d965bb5
chore(ui): refresh control ui locales (#150285)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 20:53:20 +00:00
Patrick Erichsen
1710fede5d
feat: edit plugin settings in author-defined groups (#149246)
* feat: edit plugin settings in author-defined groups

Punchcard-Session: crisp-summit-lantern-qk

* fix: keep empty plugin collections compact

Punchcard-Session: crisp-summit-lantern-qk

* fix: preserve whole-value plugin schema controls

Punchcard-Session: crisp-summit-lantern-qk

* test: await acknowledged schema edits before reload

Punchcard-Session: crisp-summit-lantern-qk

* fix: let plugin settings menus own Escape dismissal

Punchcard-Session: crisp-summit-lantern-qk

* test: carry direct-route coverage into grouped settings

Punchcard-Session: crisp-summit-lantern-qk

* refactor: call the catalog icon owner directly

Punchcard-Session: crisp-summit-lantern-qk

* fix: commit plugin settings before Escape dismissal

Punchcard-Session: crisp-summit-lantern-qk

* refactor(ui): own plugin editor contract in settings model

Derive view inputs from the editor model instead of making the editor depend on its renderer. Preserve the existing field and callback types while removing the import cycle.

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): use grouped native discovery controls

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): follow the grouped plugin settings heading

Punchcard-Session: crisp-summit-lantern-qk

* fix(ui): step from staged plugin setting numbers

Punchcard-Session: crisp-summit-lantern-qk

* refactor(plugins): separate manifest record construction

Keep metadata normalization and contained source/artwork resolution in the record owner; leave discovery, install trust, and duplicate resolution in the registry. Remove its retired max-lines suppression.

Align the existing provider-source cache regression with native and JavaScript resolution and verify reuse across registry builds.

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): keep saved mock config projections authoritative

* fix(ui): retain plugin settings during inspection refresh

* test(ui): consolidate mock config parsing and uninstall fixtures

Reuse the serialized mock Gateway parser for config reads and write
acknowledgements, preserving caller-specific fallback values and saved
configuration projections without growing the grandfathered helper.

Build post-uninstall inventory from the imported fixture so the moved
Calendar fixture remains encapsulated and existing lifecycle assertions run.

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): return valid plugin inspection during config mutations
2026-09-16 13:40:13 -07:00
Peter Steinberger
e1658b84e2
fix(test): preserve desktop readiness failure diagnostics (#150276)
Retain Gateway readiness probes, stage timing, and sanitized log tails in desktop proof receipts and failure output. Record successful readiness timing and preserve the initial failure when cleanup also fails, without changing startup budgets or desktop assertions.
2026-09-16 13:36:19 -07:00
Patrick Erichsen
a6f758c485
feat: unify installed and catalog plugin overviews (#149216)
* feat: unify installed and catalog plugin overviews

Punchcard-Session: crisp-summit-lantern-qk

* chore: regenerate plugin overview protocol models

Punchcard-Session: crisp-summit-lantern-qk

* fix: initialize direct plugin settings routes

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): pin installed plugin lifecycle actions during catalog races

Assert Install remains absent before and after stale catalog enrichment, alongside the existing Enable assertion.

Punchcard-Session: crisp-summit-lantern-qk

* refactor(ui): remove obsolete catalog promotion link helper

Keep the live README and rendered-link contracts after removing the promotional section.

Punchcard-Session: crisp-summit-lantern-qk

* fix(ui): make plugin settings primary and explain manual reload

Follow the running Gateway lifecycle: management changes apply automatically, while Reload remains for code changes or failed runtime application. Qualify compiled bundled code and preserve existing consent and receipts.

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): preserve administration flows through plugin settings

Remove the duplicate configuration recovery banner exposed by the combined settings page.

Punchcard-Session: crisp-summit-lantern-qk

* test(plugins): reflect mapped components in catalog inspection

Use the canonical empty component shape for uninstalled official plugins and verify installed catalog reads expose supported MCP servers without promoting unsupported declarations.

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): migrate plugin flows to overview and settings

Punchcard-Session: crisp-summit-lantern-qk

* fix(ui): browse plugins after inventory publication

Keep explicit detail-route selection independent of stale Gateway snapshots while inventory publication alone starts discovery browse.

Punchcard-Session: crisp-summit-lantern-qk

* test(ui): use the current discovery reconnect path

* refactor(protocol): give tool catalog schemas their own module

Punchcard-Session: crisp-summit-lantern-qk

* fix(ui): retain uninstall warnings across catalog refresh

Keep the removal receipt at the plugin page owner so inventory refresh cannot discard it when the installed detail becomes a catalog offer. Show actionable warnings and config refresh failures; leave clean removals silent.

Punchcard-Session: crisp-summit-lantern-qk

* refactor(ui): keep lifecycle receipt formatter private

Punchcard-Session: crisp-summit-lantern-qk

* fix(ci): count the extracted tool catalog schema owner
2026-09-16 13:02:18 -07:00
Josh Lehman
a48332fba1
fix(ui): stop sidebar children jumping during cached refreshes (#150095)
* fix(ui): preserve fresh child session facts across cached reads

* test: align sidebar freshness CI contracts
2026-09-16 13:00:18 -07:00
openclaw-mantis[bot]
ff21a71344
chore(ui): refresh control ui locales (#150258)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 19:52:13 +00:00
Peter Steinberger
9e6026a90e
fix(ui-test): avoid false off-frame stream budget failures (#150158) 2026-09-16 12:25:53 -07:00
openclaw-mantis[bot]
fe80857196
chore(ui): refresh control ui locales (#149924)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-16 19:19:57 +00:00
RoboClaw
5c5a51060d
feat(ui): control task progress with drag and scroll gestures (#150218)
* feat(ui): control task progress with drag and scroll gestures

Replace timed progress disclosure with a single gesture-owned pixel extent. Hold partial openings across pauses, reversals, streamed output and finals; preserve accessible full toggles and native content scrolling. Reader takeover retires pending transcript follow without deriving intent from layout.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>

* refactor(ui): keep the disclosure choice type internal

The choice alias has no external consumers. Removing its unused export satisfies the dependency gate without changing runtime behavior; all three unused-export scans and UI types pass.

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>

---------

Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: vyctorbrzezowski <51521767+vyctorbrzezowski@users.noreply.github.com>
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com>
2026-09-16 12:07:53 -07:00
Patrick Erichsen
50c36a2673
refactor: use authored configuration metadata without field badges (#149162)
* refactor: use authored configuration tags without field badges

Punchcard-Session: crisp-summit-lantern-qk

* test: align documentation metadata with authored tags

Punchcard-Session: crisp-summit-lantern-qk

* fix: preserve URL-secret tag recognition during redaction

Punchcard-Session: crisp-summit-lantern-qk

* test(config): keep authored metadata coverage with schema hints

Punchcard-Session: crisp-summit-lantern-qk
2026-09-16 11:46:41 -07:00
Peter Steinberger
b31ad046ef
fix(usage): preserve tool calls and count loaded interval messages (#149547)
* fix(usage): count repeated tool calls in session totals

Preserve each recorded tool-call occurrence while keeping the legacy top-level
name as one mirror. Rebuild cached usage rollups so existing histories report
correct whole-session, daily, and per-tool totals.

* fix(usage): count loaded messages in selected intervals

Count timestamped user and assistant rows from the loaded conversation instead
of inferring message roles from token samples. Keep unavailable interval counts
unknown, preserve retained counts during refresh, and restore authoritative
session totals when the interval is cleared.

* fix(usage): reuse canonical tool-call classification

Use the existing chat classifier for Usage aggregation and log rendering,
preserving trimmed type inputs, raw tool names, block order, and repeated
call accounting. Cover padded and legacy toolUse spellings without a second
classification policy or duplicate export.

* refactor(usage): share range filtering and consolidate tests

Use one log-range predicate for the detail summary and conversation while
retaining undated rows and the full tool-filter options. Remove the unreachable
axis-label branch and redundant SVG assertion, then record the reduced assertion
count. Consolidate pricing, cache-upgrade, and invalid-limit fixtures without
removing their cases or changing the ordered no-append/append proof.
2026-09-16 11:24:25 -07:00
Peter Steinberger
bf9a9ac70e
test(ui): settle MCP app imports before message fixture teardown (#150206) 2026-09-16 11:14:46 -07:00
Peter Steinberger
0fd603a6fe
perf(ui): reuse settled session field observations (#150194) 2026-09-16 11:05:50 -07:00
Peter Steinberger
b2a9dc036c
fix(ui): show steering skips without blaming queued user messages (#150185)
* fix(ui): distinguish steering skips from tool failures

* test(ui): validate steering proof run identity
2026-09-16 10:40:39 -07:00
Vincent Koc
a1cebe714d
refactor(ui): remove redundant quota group count check (#150176)
* refactor(deepseek): remove redundant model limit assertions

* refactor(ai): simplify WebSocket test fixture

* refactor(synthetic): remove redundant onboarding assertions

* refactor(llm): deduplicate retry corpus examples

* refactor(kilocode): remove duplicate catalog membership test

* refactor(tests): remove redundant Tencent and Cohere checks

* refactor(test): remove redundant home-path test setup

* refactor(vercel-ai-gateway): remove redundant thinking level scan

* refactor(tests): trim redundant time and speech fixtures

* refactor(tests): remove redundant Deepgram buffer length check

* refactor(scripts): remove duplicate formatter UTF-8 test

* refactor(slack): remove duplicate thread participation test

* refactor(test): remove unused mock HTTP repeat option

* refactor(oc-path): remove duplicate fixture round-trip check

* refactor(ui): remove redundant quota group count check
2026-09-17 01:35:06 +08:00
Peter Steinberger
b4eba84b13
fix(ui): reveal quoted messages inside folded work (#150163) 2026-09-16 10:26:23 -07:00
Peter Steinberger
80f31101f3
fix(ui): make settings search reach typography controls (#150006)
* fix(ui): make settings search reach typography controls

Index the translated Typography font controls and link their rendered section. Schedule Settings target scrolling after the navigation render so normal-motion jumps also reach existing lower sections, and cancel pending scrolling when navigation changes or the page disconnects.

* fix(ui): complete Settings search checks and scroll ownership
2026-09-16 10:20:47 -07:00
Peter Steinberger
59c2312352
fix(cloud): reduce session and desktop readiness delays (#150162) 2026-09-16 10:18:17 -07:00
Peter Steinberger
ba89b7ba55
fix(ui): cancel delayed copies from closed file previews (#150074) 2026-09-16 10:11:34 -07:00
Peter Steinberger
009991137a
fix(ui): preserve command palette text composition (#150164) 2026-09-16 10:05:45 -07:00
Peter Steinberger
eee13a75e7
fix(ui-test): keep Activity catch-up snapshots current (#150168) 2026-09-16 10:02:41 -07:00
Peter Steinberger
e9d28e25c2
fix(ui): keep Usage results tied to their selected query (#150086)
* fix(ui): keep Usage results tied to their selected query

* test(ui): load usage through requests in reconnect coverage
2026-09-16 09:59:28 -07:00
Peter Steinberger
ee62a042f1
fix(ui): recover pending commands after Home composer handoffs (#150039) 2026-09-16 09:48:53 -07:00
Peter Steinberger
b065262e98
fix(ui): preserve incognito drafts across route navigation (#149973)
* fix(ui): preserve incognito drafts across route navigation

* fix(ui): preserve drafts when turning Incognito off
2026-09-16 09:44:32 -07:00
Peter Steinberger
7566aef57d
fix(ui): return to queued edits while another page loads (#150066) 2026-09-16 09:39:18 -07:00
Peter Steinberger
a2cbcc25aa
fix(ui): retain confirmed model selection after refresh failure (#150101)
* fix(ui): retain confirmed model selection after refresh failure

* fix(ui): preserve model patch completion contract
2026-09-16 09:30:34 -07:00
Peter Steinberger
4b19b73ab0
test: scope quota recovery observer to the primary request (#150145) 2026-09-16 09:23:46 -07:00
Peter Steinberger
22c4164c86
fix(ui): retain archive confirmation after leaving Sessions (#150108) 2026-09-16 09:19:48 -07:00
Peter Steinberger
67c4604904
fix(ui): keep sidebar pagination after switching agents during deletion (#150125) 2026-09-16 09:17:39 -07:00
Peter Steinberger
303d7b33f8
fix(ui): preserve Back navigation through moved settings links (#150133) 2026-09-16 09:14:02 -07:00
Peter Steinberger
fddb65e79a
fix(ui): preserve automation selection when an earlier save finishes (#150129) 2026-09-16 09:09:50 -07:00
Peter Steinberger
71a614a099
fix(ui): name split-pane focus targets for assistive technology (#149989) 2026-09-16 09:09:10 -07:00
Peter Steinberger
88f497e751
fix(ui): keep parent navigation when a folder is unavailable (#150118) 2026-09-16 09:06:54 -07:00
Peter Steinberger
f78f51359d
chore(deps): refresh dependencies with seven-day cutoff (#149908)
* chore(deps): refresh dependencies with seven-day cutoff

Advance eligible application, native, release, and development dependencies
published by 2026-09-09T06:51:52Z. Audit new registry resolutions and native
artifact hashes, preserving existing security pins and compatibility holds.

Adapt MCP Apps 2 tool discovery and host context, retain Clack cancellation
handling, and align the updater fixture with its runtime assembly owner.
Synchronize native artifact checks, operational docs, and tooling pins.

Validation includes frozen installation, full build, CLI rebuild, typechecks,
lint, 96 npm package locks, dependency audits, focused runtime and native
proofs, and independent review. Exact-head hosted CI is required before land.

* fix(deps): preserve scroll ownership and synchronize toolchain contracts

* fix(cli): preserve generic wizard option values after Clack update

* docs(lobster): clarify credentials for embedded remote calls

* test(cli): use Clack cancellation sentinel in prompt fixtures

* fix(ios): avoid opening audio input during relay cancellation

* test: reuse dependency update fixtures within line limits

* fix(crabbox): retain the previous trusted pnpm pin

* test(gateway): synchronize task access churn with page selection

* test(macos): isolate the challenge timeout transport fixture

* fix(macos): preserve hidden windows through deminiaturization

* fix(macos): exclude hidden dashboards from window selection
2026-09-16 09:06:40 -07:00
Peter Steinberger
ca08632783
fix(ui): unblock chat pane lint (#149826)
(cherry-picked from #149733)
2026-09-16 08:53:24 -07:00
Peter Steinberger
b94fe8ffe8
test(ui): move off session link before expanding table (#150120) 2026-09-16 08:12:12 -07:00
Peter Steinberger
34ffb06309
test(ui): release quota catalog when recovery succeeds (#150115) 2026-09-16 07:59:51 -07:00
Peter Steinberger
32d980b131
fix(ui): keep automation history with its selected task (#149955)
* fix(ui): keep automation history with its selected query

* refactor(ui): isolate automation run history ownership

* refactor(ui): separate automation state type contracts
2026-09-16 05:57:07 -07:00
Peter Steinberger
e69b1df8ce
fix(ui): keep Escape with the focused chat pane (#149781) 2026-09-16 05:51:07 -07:00
Vyctor H. Brzezowski
32433e1454
fix(ui): soften collapsed user prompt edge and center its toggle (#150037) 2026-09-16 09:43:03 -03:00
Peter Steinberger
42bbd6dda0
perf(ui): share roster projection preparation per event (#150023) 2026-09-16 05:38:50 -07:00
Peter Steinberger
8047caa87b
fix(ui): clear resolved queued-message reorder conflicts (#149962) 2026-09-16 04:28:13 -07:00
Peter Steinberger
b1fb4a1bbf
test(ui): settle message footer focus transition (#149919)
Finish the existing finite footer animation before checking the settled keyboard-focus reveal. Preserve every opacity, focus, pointer-event, and tooltip assertion without increasing wait budgets. Related: #149826.
2026-09-16 04:20:56 -07:00
Peter Steinberger
c7ea115c3e
fix: preserve Windows credential reads with fs-safe 0.12.0 (#149124)
* fix: preserve Windows credential reads with fs-safe 0.12.0

* test: preserve compiled fs-safe configuration checks on Windows

* test: drain workspace page routes before closing fixtures

* ci: move heavy main checks to 16-vCPU runners

* perf(cli): avoid eager protocol schemas in cron registration

* test: align prerelease workflow expectation with main CI

* test: resume pending MCP Code Mode fixture calls

* test(agents): cover cloned admitted normalizers

Extend the canonical assembly-array fixture from #149662 with an admitted provider that returns cloned tools. Preserve its metadata, catalog, successful execution, abort-wrapper and post-disposal assertions. The production Array.from owner remains unchanged on main.

* ci: spread Control UI checks across twelve shards

* docs(ci): align runner guidance with current placement

* ci: route trusted hybrid preflight to Blacksmith

* test: align hybrid preflight runner table

* ci: retain real-Gateway failure diagnostics

Keep captured browser JSON and screenshots in an attempt-specific artifact when the real-Gateway CI job fails. Reuse the ordinary Control UI upload policy with seven-day retention and ignore absent captures, while preserving test commands and sanitized proof uploads.

Extend the existing workflow guard and document that diagnostic artifacts are not sanitized public proof. The new guard fails before the fix; all 18 focused alias, workflow, and command cases pass afterward. Workflow lint, selected changed-file checks, and independent review pass.

* fix(ui): preserve agent panel intent while route data loads

A reused Agents page retained its initialized flag after its route data became pending. Roster initialization could then navigate through the default Overview panel, replacing an intended Files route. Require current route data before navigation and panel work, and clear initialization when the pending update applies.

Keep explicit Settings selection revisions authoritative when the loader completes. Four focused regression cases fail before the repair with the reproduced Overview URL; 136 adjacent cases, targeted lint, formatting and independent review pass afterward.

* ci: publish allowlisted UI failure summaries

Keep raw browser reports and screenshots out of automatic CI artifacts. Write an explicit public projection from the existing failure owner and select only its fixed filename in ordinary and real-Gateway jobs. Raw captures remain local, and fixed private filenames keep sensitive labels out of logged paths. Older frozen targets without the summary produce no matching artifact.

Preserve original failures and manual sanitized proof capture. Sensitive-sentinel regressions cover nested state, route parameters, labels, errors, models and content, including evaluation, screenshot and storage failures. All 10 helper cases, six workflow/command cases, workflow validation, plain Node import and selected changed-file checks pass; independent review found no actionable issues.

* fix: align FileTransfer with fs-safe 0.12.0

Upgrade the FileTransfer dependency introduced by #148881 to the same exact version used by core, OpenShell and 1Password. Regenerate the importer with pnpm 12.3.4 and retain all other lock entries.

Strengthen the existing orphan-WAL collision regression with equal-length, different-content bytes so recovery exercises the shared hash path and preserves the existing quarantine. Frozen installation, the 16-case sidecar suite, 18 tool-policy cases and 23 UI/diagnostic cases pass on the integrated source; independent review found no actionable issues.

* test(ui): retain safe Canvas failure diagnostics

* test(gateway): model live child execution in stop proof

* test(ui): inspect HTML sandbox after render readiness

* test(cron): cover event schedules after API state updates

* ci: count hosted rows after hybrid preflight routing
2026-09-16 04:10:09 -07:00
Peter Steinberger
4cb367edb7
test(ui): await chat navigation before opening split view (#149972) 2026-09-16 03:56:39 -07:00
Peter Steinberger
d4105c12a7
fix(ui): preserve selected sessions when earlier mutations finish (#149959) 2026-09-16 03:56:14 -07:00
Peter Steinberger
ca9c4d54d2
fix(ui): label stopped Swarm outcomes accurately (#149508)
Describe the existing combined failure, timeout, and cancellation count as failed or stopped. Keep authoritative totals and protocol unchanged, cover active and terminal summaries, and clarify the combined count in the Swarm docs.
2026-09-16 03:56:01 -07:00
Peter Steinberger
cecf887074
test(ui): wait for the replacement desktop viewer before resizing (#149975)
Port the self-contained handoff readiness wait from #143817. Wait for the former controller canvas to detach and for its replacement to render before starting the resize matrix on both transports.
2026-09-16 03:47:28 -07:00
Peter Steinberger
3e8bbc7fb1
fix(ui-test): prevent reconnect composer fixture crashes (#149957) 2026-09-16 03:37:20 -07:00
Peter Steinberger
9d477a6582
fix(ui): restore keyboard focus after closing split chat panes (#149827)
* fix(ui): restore keyboard focus after closing split chat panes

* test(ui): track split dividers at their renderer owner
2026-09-16 03:00:41 -07:00