Peter Steinberger
28d30e9dae
ci: stabilize release validation tests ( #108420 )
...
* test(codex): remove turn-watch timing race
* ci: pin workflow sanity shellcheck
* ci: run workflow sanity on blacksmith
* ci: serialize workflow sanity lint
* ci: bound workflow lint stalls
* ci: cap actionlint process fanout
* ci: report stalled workflow shellcheck
* ci: stabilize release validation checks
* ci: restore release workflow shellcheck
* test: preserve codex turn watch reset proof
2026-07-15 13:22:31 -07:00
Dallin Romney
8c77936e50
fix(release): propagate frozen-target guard and retry live timeouts ( #108418 )
...
* fix(release): preserve frozen package acceptance opt-in
* fix(release): retry transient live terminal timeouts
* fix(release): keep package dispatch input budget
* refactor(release): name frozen-target compatibility mode
* revert: keep frozen-target guard naming
2026-07-15 13:06:24 -07:00
Dallin Romney
77d07dc3e9
refactor(qa): migrate Telegram scenarios into QA Lab ( #108430 )
...
* refactor(qa): migrate Telegram scenarios into QA Lab
* refactor(qa): remove retired Telegram runner exports
2026-07-15 12:55:00 -07:00
Peter Steinberger
e3296c0574
ci: restore workflow sanity and ClawHub shard ( #108437 )
...
* ci: stop actionlint from re-running shellcheck
* test: make ClawHub error-body checks retry-safe
2026-07-15 12:39:54 -07:00
Peter Steinberger
d8b3e1c093
fix(release): compare evidence archive contents
2026-07-15 20:38:57 +01:00
Peter Steinberger
23d2f664fb
fix(release): retain npm provenance evidence
2026-07-15 20:02:53 +01:00
Peter Steinberger
f4f5bb15d4
fix(release): verify resumed npm publisher identity
2026-07-15 19:29:37 +01:00
Dallin Romney
ee51b35616
fix(release): support frozen Codex validation ( #108343 )
...
* fix(release): support frozen Codex validation
* fix(release): support frozen Codex validation
* fix(release): support frozen Codex validation
* fix(release): support frozen Codex validation
2026-07-15 10:05:02 -07:00
Peter Steinberger
0f7fbfa003
fix(release): bind bootstrap publish workflow identity
2026-07-15 17:41:54 +01:00
Peter Steinberger
4c667aac88
fix(release): harden frozen target validation ( #108296 )
...
* fix(release): harden frozen scenario planning
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(release): omit unsupported scenario-only lanes
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(release): fail closed on malformed target scenarios
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(release): report unsupported frozen lanes
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(release): defer frozen survivor inspection
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(release): report partial survivor omissions
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(ci): fetch shard fallback from workflow commit
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(release): gate frozen scenario omissions
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* test(release): auto-clean frozen target temp dirs
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
* fix(ci): satisfy frozen validation workflow lint
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
---------
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
2026-07-15 06:31:07 -07:00
Dallin Romney
ed05dae2d8
fix(release): support frozen Matrix QA profiles ( #108279 )
2026-07-15 05:01:29 -07:00
Dallin Romney
043e4d1ec4
fix(release): validate frozen targets with current workflows ( #108189 )
...
* fix(release): support frozen validation targets
* fix(release): filter frozen-target upgrade scenarios
2026-07-15 04:28:17 -07:00
Peter Steinberger
54f70c5d8c
fix(release): unblock plugin bootstrap recovery ( #108243 )
2026-07-15 03:34:08 -07:00
Peter Steinberger
9c8a006d0c
perf(ci): gate QA smoke by smoke-visible changes and isolate the prompt snapshot lane ( #108202 )
...
* perf(ci): diff-gate QA smoke by CLI import graph and isolate prompt snapshots lane
* fix(ci): run prompt snapshot lane unconditionally
* fix(ci): treat QA lane orchestration files as QA-impacting
2026-07-15 02:51:19 -07:00
Peter Steinberger
dfa246e6fd
fix(release): complete protected publish tooling
2026-07-15 10:43:00 +01:00
Peter Steinberger
bb1a7e5069
fix(release): pin publish workflows to protected tags
2026-07-15 09:52:01 +01:00
Peter Steinberger
9c0adbf93a
fix(ci): run spawn-timing tooling suites at plan concurrency 1 ( #108171 )
2026-07-15 01:51:52 -07:00
Dallin Romney
6c4e76ea8b
ci(qa): reuse Matrix live workflow for releases ( #103604 )
...
* ci(qa): reuse Matrix live workflow for releases
* docs(testing): restore Tailscale isolation flag
* fix(ci): make Matrix artifact names ref-safe
* test(ci): type Matrix workflow profiles
* style(testing): format Tailscale isolation guidance
2026-07-15 01:48:59 -07:00
Peter Steinberger
57761ebe8c
perf(ci): balance node test shards and gate heavy CI lanes by changed scope ( #108091 )
2026-07-15 01:16:47 -07:00
Peter Steinberger
732fb5f9e6
fix(release): bind Telegram proof artifact identity
2026-07-15 08:02:17 +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
b2fd0276aa
ci(perf): pin calibrated Kova revision ( #107870 )
2026-07-14 17:59:43 -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
92fcd4ed99
fix(system-agent): reject untrusted plugin specs before proposing
...
The Crestodian->OpenClaw reconciliation restored a pre-#102197 `if (opts.approved)`
wrapper around the execute-time plugin-install trust check, so an unapproved
plugin-install op produced a formatted plan for an arbitrary npm/url/file
source instead of rejecting it. Validate unconditionally, matching #102197 ,
and restore its dropped regression test. Also fix a stale
crestodian-ring-zero-setup id in the CI compat list and a doubled
openclaw-openclaw-planner tmpdir prefix from the mechanical rename.
2026-07-14 14:33:34 -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
202b04925c
fix(ci): fetch exact PR base before history ( #107674 )
2026-07-14 10:12:40 -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
0869e92b23
fix(ci): pin calibrated Kova status budget
2026-07-14 10:24:00 -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
c8bc82817c
fix(ci): accept normalized admin release permission
2026-07-14 12:52:37 +01:00
Peter Steinberger
92cca9343e
feat(linux): headless node device capabilities (camera, location, notifications) ( #107193 )
...
* feat(linux): add node device capabilities
* fix(linux-node): actionable pending-approval error + node-host advertise integration test
* fix(linux-node): map geoclue access-denied to LOCATION_DISABLED; floor camera maxWidth to avoid zero-height scale
* fix(linux-node): clamp small camera maxWidth to 2 instead of default
* docs(linux-node): clarify where-am-i -t is a process timeout, not update throttle
* refactor(gateway): extract legacy-node filter + rejection hint to fit LOC ratchet; docs-map + deadcode baseline
* fix(gateway): drop now-unused DEFAULT_DANGEROUS_NODE_COMMANDS import after hint extraction
* test(node-host): drop imports orphaned by removed error-code test
2026-07-14 02:30:36 -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
606e2f5dba
fix(ci): stop unrelated main updates from forcing PR rebases ( #107050 )
...
* fix(ci): stop unrelated main updates from forcing PR rebases
* docs(ci): document reusable aggregate proof
* docs(ci): clarify immutable gate success
* chore(ci): refresh stalled PR head
2026-07-14 00:01:01 -07:00
Peter Steinberger
df5097b6e7
fix(native): keep platform validation warning-free ( #107101 )
...
* build(android): keep Gradle warning-free
* ci(native): pin XcodeGen tooling
* test(macos): avoid concurrency warnings
2026-07-13 22:33:12 -07:00
Peter Steinberger
504be0c255
fix(release): preserve closeout asset names ( #107047 )
2026-07-13 21:20:01 -07:00
Peter Steinberger
04fa6beed4
fix(release): make closeout recovery shell-safe ( #107015 )
2026-07-13 20:02:45 -07:00
Vincent Koc
f7ea3c776c
fix(ci): pin corrected Kova scenario calibration ( #106992 )
2026-07-14 10:23:58 +08:00
Vincent Koc
e5722a6726
fix(ci): pin calibrated Kova release budgets
2026-07-13 17:54:41 -07:00
Peter Steinberger
ad8107e136
feat(linux): ship deb/AppImage bundles on stable main-based releases ( #106891 )
...
* feat(linux): attach deb/AppImage bundles to main-based releases
* fix(linux): stamp release version into bundles and verify deb metadata
* fix(linux): stable-only release tags and ubuntu-22.04 glibc build floor
* docs(linux): document AppImage FUSE prerequisite
* fix(linux): allow numeric stable revision tags in release workflow
2026-07-13 16:31:09 -07:00
Peter Steinberger
4fdb314d9a
fix(release): normalize Windows checksum manifests
2026-07-14 00:27:34 +01:00
Peter Steinberger
34c63c3c3a
fix(release): support evidence-backed late closeout
2026-07-14 00:27:34 +01:00
Vincent Koc
85cf09a3e1
docs(release): bound release recovery loops ( #106852 )
...
* docs(release): keep release work scoped
* style(release): format workflow test
2026-07-14 06:44:23 +08:00
Peter Steinberger
70833dab7f
ci: scope PR Node tests to changed targets ( #106633 )
...
* ci: scope PR Node tests to changed targets
* ci: bound targeted Node test plans
* test: cover changed path manifest input
* fix(ui): preserve model providers lazy boundary
* ci: cover public SDK re-export consumers
* ci: reject unresolved changed test targets
* ci: cover public SDK wrapper imports
* ci: preserve global checks in targeted plans
* docs(ci): clarify targeted boundary coverage
* test(plugins): declare computed runtime dependencies
2026-07-13 15:26:02 -07:00
Peter Steinberger
856e1ab8d9
fix(ci): bind release target context ( #106836 )
2026-07-13 15:00:03 -07:00
Peter Steinberger
d1bb38345e
ci: preserve release target context ( #106783 )
2026-07-13 14:32:59 -07:00
Peter Steinberger
e30cc79b81
ci: remove redundant extension oxlint lanes
2026-07-13 11:02:51 -07:00