Peter Steinberger
92d06e51bb
refactor(mcp): trim internal server exports ( #108076 )
...
* refactor(mcp): remove dead internal exports
* chore(deadcode): refresh export baseline
2026-07-14 23:47:38 -07:00
Alix-007
c4cd643c1b
test(extensions): derive Firecrawl batch expectations from tracked tests ( #103369 )
...
* fix(firecrawl): require own legacy provider config entries
* fix(firecrawl): make legacy config lookup type-safe
* test(firecrawl): keep extension batch assertions data-driven
* test(firecrawl): cover inherited config in client path
* test(firecrawl): avoid request object stringification
* test(extensions): keep firecrawl batch expectations data-driven
* test(extensions): simplify shard fixture mapping
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 23:47:31 -07:00
Peter Steinberger
92fc907ffb
fix: preserve TUI restore state without JSON races ( #108058 )
...
* refactor(tui): move last session state to sqlite
* chore: keep release notes in PR body
* test: update doctor migration fixture
* chore: satisfy dead code export gate
2026-07-14 23:46:22 -07:00
Peter Steinberger
23c0a7b612
fix: preserve working installs on unsupported Node ( #106994 )
...
* fix(update): preserve installs on unsupported Node
* fix(update): verify skipped install scripts
* refactor(update): share global install preflight
* fix(update): validate Bun-installed Node runtime
* fix(update): classify install preflight failures
* refactor(update): normalize install failure reasons
* style(update): format updater policy test
* fix(update): preserve pnpm script policy safety
* fix(update): classify hosted git sources
* chore: leave release notes to release flow
* fix(release): defer package inventory helper loading
* style(release): keep inventory loader LOC-neutral
* fix(update): validate staged package lifecycle
* fix(update): match packed lifecycle contract
* fix(update): harden Bun package activation
* test(update): model packed Bun lifecycle
* style(update): avoid lifecycle name shadowing
* fix(update): remove unsafe Bun staging experiment
* fix(update): satisfy updater type checks
* fix(update): preserve packed npm package name
* fix(update): preserve checkout failure status
* fix(update): disable scripts while packing candidates
* fix(update): preflight source package engines safely
* fix(update): preserve legacy npm downgrades
* fix(update): pin npm packing to selected Node
* fix(update): stage npm activation before replacing live package
* fix(update): guard non-npm source activation
* refactor(update): isolate npm staging helpers
* fix(update): harden staged package lifecycle
* test(update): satisfy merged type gates
* fix(update): privatize runtime npm helper
* fix(ci): satisfy merged lint and type gates
* docs(changelog): defer updater note to release
* fix(update): guard package activation runtime
* fix(update): preserve installs on unsupported Node
* test(update): reject prerelease Node runtimes
* test(update): use shared temp cleanup
* fix(update): fail closed when install scripts are skipped
* fix(update): pack install guard in docker artifacts
* fix(ci): keep install guard export tooling-local
2026-07-14 23:19:48 -07:00
Dallin Romney
c421a3b2e6
feat: add reusable Parallels Windows test setup ( #107881 )
...
* test: route Parallels Windows setup
* test: own Parallels Windows baseline setup
* docs: point Windows proof to Parallels sidecar
2026-07-14 23:15:57 -07:00
Peter Steinberger
ed49673307
fix(release): prepare trusted harness dependencies
2026-07-15 07:11:59 +01:00
Peter Steinberger
5eaa72e740
test: speed bench model tests ( #108048 )
2026-07-14 23:11:28 -07:00
Peter Steinberger
34b8a3fda0
fix(release): isolate trusted candidate dependencies
2026-07-15 07:08:00 +01:00
Peter Steinberger
c8733ea674
fix(release): run candidate smoke from trusted tooling
2026-07-15 06:56:04 +01:00
Peter Steinberger
2e73cff6ca
fix(maint): keep PR maintenance delta-only ( #108018 )
...
* fix(maint): keep fork prep sync delta-only
* fix(ci): use exact merge parent for PR diffs
* fix(ci): pass docs diff base through environment
* test(ci): cover environment-mediated docs base
2026-07-14 22:49:33 -07:00
Peter Steinberger
d702f6fb33
ci: shorten full release validation critical path ( #107894 )
...
* ci(release): parallelize plugin Docker lanes
* test(plugins): expect malformed URL redaction
* ci: start release performance validation concurrently
* docs(agents): guard PR operations after throttling
2026-07-14 22:39:32 -07:00
Peter Steinberger
9275f476f4
fix(release): retry flaky fresh Parallels lanes
2026-07-15 06:24:32 +01:00
xydt-tanshanshan
f638cbd0f9
fix(doctor): preserve allowlist entries for version-bound runtime plugins during stale config scan ( #107285 )
...
* fix(doctor): preserve allowlist entries for version-bound runtime plugins (codex) during stale config scan
* fix(doctor): restore codex to scanner stale expectation, protect at repair-sequencing
Scanner now flags codex in plugins.allow as stale so diagnostics are visible.
Repair-sequencing preserves the entry via preservePluginIds which already
includes VERSION_BOUND_RUNTIME_PLUGIN_IDS.
* fix(doctor): scope version-bound runtime plugin preservation to allow surface only
ClawSweeper P2: VERSION_BOUND_RUNTIME_PLUGIN_IDS was applied globally
across all stale config surfaces (deny, entries, slots, channels, etc.),
but only plugins.allow needs preservation. Move to a surface-scoped
parameter surfacePreservePluginIds so codex is preserved only in allow.
* fix(doctor): harden version-bound allowlist repair
* fix(doctor): retain version-bound plugin policy
* fix(doctor): align version-bound plugin diagnostics
Co-authored-by: hailory <hailory@xydigit.com >
---------
Co-authored-by: hailory <hailory@xydigit.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 22:14:11 -07:00
Peter Steinberger
e9fc23ad1f
refactor(plugin-sdk): remove private testing barrel ahead of window ( #108020 )
2026-07-14 22:13:37 -07:00
Peter Steinberger
6c0725e0d9
fix(release): tolerate exhausted GitHub read quota
2026-07-15 05:21:30 +01:00
Peter Steinberger
2372c71697
fix(release): preserve candidate Node runtime
2026-07-15 05:03:43 +01:00
Peter Steinberger
5fa348f3ed
fix(release): pin max-lines debt to branch merge base
2026-07-15 05:03:43 +01:00
Vincent Koc
01b0989353
fix(release): allow shipped ledger metadata references
2026-07-15 05:03:43 +01:00
Peter Steinberger
ce078367e4
fix(docs): preserve plugin surface identifiers
2026-07-14 23:41:24 -04:00
Peter Steinberger
d78dbc0628
test(ci): strengthen deprecated facade guard ( #107927 )
...
* fix(ci): repair runner and chat guards
* fix(ci): repair main validation guards
* test(ui): use isolated TouchEvent globals
* fix(ci): remove retired ingress exports
* test(ci): strengthen deprecated facade guard
2026-07-14 20:29:18 -07:00
Peter Steinberger
d6a6b132b3
test: speed live updater fixtures ( #107892 )
2026-07-14 18:31:00 -07:00
Peter Steinberger
1fd4009e41
perf: speed type suppression inventory ( #107874 )
2026-07-14 18:08:33 -07:00
Peter Steinberger
b2fd0276aa
ci(perf): pin calibrated Kova revision ( #107870 )
2026-07-14 17:59:43 -07:00
Peter Steinberger
9043bcf230
test: share deep archive fixture prefix ( #107858 )
2026-07-14 17:20:22 -07:00
Peter Steinberger
b363d5a293
feat(linux): canvas UI via CLI-node + Tauri app IPC bridge ( #107633 )
...
* feat(linux): canvas via CLI-node + Tauri app IPC bridge
* refactor: extract gateway helper modules
* build(linux-canvas): register plugin package in lockfile
* fix(linux-canvas): move canvas advertise test out of core, regen docs/protocol/deadcode
* fix(gateway): break node-catalog/registry import cycle via leaf normalize module; add canvas glossary term
* style: oxfmt invoke.ts and runtime.ts after buildNodeEventParams extraction
* fix(linux): load Canvas WebView via dedicated data_directory context
Wry's Linux/WebKitGTK incognito mode discards Tauri's registered
WebContext (wry webkitgtk/mod.rs), so the Canvas window got a fresh
ephemeral context without the openclaw-canvas:// scheme handler — the
bundled A2UI page never committed (stayed about:blank) and every A2UI
command timed out. Use an isolated cache-backed data_directory instead,
which keeps the protocol handler while still isolating Canvas storage
from the dashboard window.
* fix(linux): keep Canvas WebView ephemeral via incognito + data_directory
Autoreview flagged that a dedicated data_directory alone persists Canvas
browser state (cookies, localStorage, IndexedDB, service workers) across
restarts, so an agent that navigates Canvas to a site could leak an
authenticated session into a later session. iOS uses a non-persistent
store; Linux should match.
Add .incognito(true) alongside .data_directory(): the distinct directory
gives Tauri a fresh WebContext key so it still attaches the
openclaw-canvas:// protocol closure, and incognito makes Wry swap in a
fresh *ephemeral* context carrying those protocols. Live-verified on a
Wayland/WebKitGTK box: the bundled page still loads
(location.href=openclaw-canvas://localhost/index.html, openclawA2UI
present, A2UI renders) and the canvas-webview dir holds no persistent
cookie/storage files.
2026-07-14 16:05:14 -07:00
Peter Steinberger
86085563be
test(ci): isolate flaky shared-worker suites ( #107780 )
...
* test(ci): isolate flaky shared-worker suites
* test(ci): route isolated agent targets
2026-07-14 15:00:58 -07:00
Peter Steinberger
60f0a83db0
fix(ci): repair full release validation dispatch ( #107728 )
...
* fix(ci): accept documented release validation extras
* fix(ci): pass main changelog policy to release checks
2026-07-14 12:34:47 -07:00
Peter Steinberger
c2e0ce7b68
fix(ci): restore main validation gates ( #107697 )
...
* fix(ci): allow Unreleased notes for main validation
* test(ci): cover release smoke changelog intent
* test(ci): require release changelog policy propagation
* docs(agents): require review init after pushes
* chore(ci): prune stale max-lines baseline
* refactor(system-agent): split operation modules
* refactor(bonjour): keep ciao classification type private
* fix(bonjour): remove stale local classification alias
2026-07-14 12:11:25 -07:00
Peter Steinberger
3ce9166319
test(scripts): align pinned e2e entrypoint and live-shard order with rename
...
Refs #107237
2026-07-14 11:03:02 -07:00
Peter Steinberger
69e9254e0e
fix(ci): regen rename-affected generated surfaces and fix e2e entrypoint
...
native i18n inventory + per-locale artifacts resynced for the OpenClaw
strings; Kotlin gateway protocol enum regenerated instead of hand-edited;
deadcode baseline re-sorted; lint suppression allowlist entries moved to
sorted position; setup TTY check drops redundant boolean compares;
ring-zero first-run e2e calls the real 'openclaw setup' subcommand.
Refs #107237
2026-07-14 11:03:02 -07:00
Peter Steinberger
a6a0716486
feat(setup): rename Crestodian to OpenClaw system agent
...
User-facing name is now OpenClaw (the system speaks); internal code name is
system-agent. Gateway methods crestodian.* -> openclaw.chat/openclaw.setup.*,
agent tool -> openclaw, reserved agent ids openclaw + retired crestodian.
openclaw setup routes: onboarding flags -> onboard, -m/--yes -> system agent,
bare configured interactive -> OpenClaw chat, unconfigured -> onboarding.
Hidden crestodian CLI and /crestodian TUI aliases kept; docs moved to
docs/cli/openclaw.md with redirect stub. macOS/Android strings in lockstep.
Refs #107237
2026-07-14 11:03:02 -07:00
Peter Steinberger
e297bc2ac5
fix(release): validate npm preflight workflow trust
2026-07-14 18:44:08 +01:00
Peter Steinberger
0b409a0348
refactor(gateway): split session handlers ( #107677 )
...
* refactor(gateway): split session handlers
* chore(gateway): drop obsolete max-lines suppression
* test(gateway): preserve session boundary ratchets
* test(gateway): update session boundary fixtures
* style(auto-reply): restore formatter compliance
2026-07-14 10:41:36 -07:00
Jesse Merhi
00364ee777
improve: warn before non-ClawHub plugin installs ( #102197 )
...
Merged via squash.
Prepared head SHA: e08d9e737d
Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com >
Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com >
Reviewed-by: @jesse-merhi
2026-07-15 03:25:36 +10:00
Peter Steinberger
202b04925c
fix(ci): fetch exact PR base before history ( #107674 )
2026-07-14 10:12:40 -07:00
Peter Steinberger
2bbf5e6ca0
fix(macos): prevent clipped and stalled onboarding ( #107598 )
...
* fix(macos): harden onboarding on short screens
* chore: keep release notes in PR body
* chore(i18n): refresh macOS onboarding inventory
2026-07-14 10:07:41 -07:00
Peter Steinberger
bea48db878
refactor(command-explainer): use native tree-sitter contracts
2026-07-14 09:59:20 -07:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
242cdca058
fix(docker): keep gateway ws client self-contained ( #107561 )
...
* fix(docker): keep gateway ws client self-contained
* test(raft): narrow optional runtime schema
* test(tlon): narrow signed URL mock input
* fix(tui): type searchable selector metadata
2026-07-14 07:42:17 -07:00
Peter Steinberger
0869e92b23
fix(ci): pin calibrated Kova status budget
2026-07-14 10:24:00 -04:00
Peter Steinberger
cfd4ecb217
fix(release): use active gh authentication for evidence
2026-07-14 09:35:58 -04:00
Peter Steinberger
99cf5836dd
fix(ci): pin calibrated Kova performance budgets
2026-07-14 13:54:29 +01:00
Peter Steinberger
9de11f098e
fix(release): forward-port July guards and restore main validation ( #107462 )
...
* fix(installer): validate upgraded Windows SQLite runtime
* fix(release): lock packed AI runtime dependency
* test(mattermost): tolerate additional fallback diagnostics
* test(live): make Claude resume proof explicit
* test(plugins): repair exact-main prerelease coverage
* test(release): restore root test type coverage
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com >
2026-07-14 05:41:24 -07:00
Peter Steinberger
52b56c1f31
fix(maint): honor recent green PR cohorts ( #107411 )
2026-07-14 05:11:57 -07:00
Peter Steinberger
a2790f10af
fix(release): recover vanished PR ledger entries
2026-07-14 12:45:31 +01:00
Josh Avant
db541e5c60
fix(ios): preserve pinned tools for archive ( #107188 )
2026-07-14 03:25:56 -07:00
Peter Steinberger
f20089c569
fix: route heavy changed checks remotely ( #107282 )
2026-07-14 01:15:58 -07:00
Peter Steinberger
47d37804a8
improve(ui): catch i18n catalog drift locally ( #107253 )
...
* ci(ui): verify i18n catalogs locally
* fix(ui): preserve scoped i18n sync errors
* refactor(ui): share i18n raw-copy verifier
* test(ui): cover i18n lint gate
* fix(ui): route lint threads to oxlint
2026-07-14 01:12:36 -07:00
Peter Steinberger
f4b7a19624
fix: avoid remote boxes for focused validation ( #107166 )
...
* fix: avoid remote boxes for focused validation
* fix: preserve explicit remote proof routing
* fix: delegate when local diff refs are unavailable
2026-07-14 00:53:17 -07:00
Peter Steinberger
63f497a428
fix(build): refresh cached CLI help per build
2026-07-14 00:21:36 -07:00