Peter Steinberger
abfe7c64a7
docs(install): recommend Node 26 as the OpenClaw runtime ( #114399 )
...
* docs(install): recommend Node 26; CI/installer stay on Node 24 for now
* feat(cli): point unsupported-runtime nvm hint at Node 26
* feat(install): provision Node 26 by default (brew mainline node formula, NodeSource 26.x, portable win zip)
* test(install): align installer tests with Node 26 provisioning defaults
* docs(install): state per-platform Node provisioning accurately
2026-07-27 04:32:21 -04:00
Peter Steinberger
d4ed57bc88
docs(agents): note null-delimited file lists for tool invocations
2026-07-27 00:29:16 -07:00
Peter Steinberger
94923a1688
docs(agents): add ops telegraph notes for CI dispatch, release logs, and shared checkouts ( #114307 )
2026-07-27 01:17:38 -04:00
Peter Steinberger
f6131a4fbf
build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks ( #114006 )
...
* build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks
npm 12 removed shrinkwrap (command + tarball/root loading). Delete all 82
committed npm-shrinkwrap.json files and stop publishing lockfiles; keep
pnpm-lock.yaml as the single reviewed dependency boundary. The generator
becomes scripts/generate-npm-package-lock.mjs and feeds plugin bundling via
a transient package-lock.json + npm ci (works on npm 11 and 12). Tarball
validation treats the published 2026.7.2 beta train as a shrinkwrap
transition; self-update npm detection now uses install topology instead of
the shipped shrinkwrap.
* fix(deps): repair lint, deadcode, and test-type lanes for the npm 12 migration
- sort integrity comparisons with an explicit comparator (oxlint)
- keep resolveBunGlobalNodeModules module-local (knip unused-export gate)
- model npm pack --json as npm<=11 array / npm 12 name-keyed object
- default calver destructuring in the tarball test fixture
2026-07-26 01:29:55 -04:00
Peter Steinberger
4c5e8f3b85
feat(scripts): add watch-pr-ci CI watcher with mergeable and attach prechecks ( #112821 )
...
* feat(scripts): add watch-pr-ci CI watcher with mergeable and attach prechecks
* fix(scripts): require successful attached PR CI run
* fix(scripts): harden watch-pr-ci verdicts against foreign runs and truncated rollups
* fix(scripts): add fresh-run gating to watch-pr-ci attachment
* fix(scripts): guard stale-cancelled verdict against truncated context pages
* fix(scripts): declare rollup context total count
* fix(scripts): sanitize check names and close the final polling interval
* test(scripts): type deadline wait samples
2026-07-22 23:33:45 -04:00
Peter Steinberger
8d1267dbc1
docs(agents): spell out script declaration contract and fail-loud wrapper rule ( #112543 )
...
Codex readers only reliably see the root AGENTS.md, so the .d.mts
declaration contract, the wrapper fail-loud convention, and the
stale-node_modules crash signature move from tribal knowledge into the
root file's Commands section.
2026-07-21 23:13:18 -07:00
Peter Steinberger
4e008cd713
feat(ios): adopt Talk voice sessions ( #111369 )
...
* feat(ios): adopt Talk voice sessions
* docs(agents): fix unrelated red-main breakage in the landing PR
* chore(i18n): translate Talk voice-session strings across native locales
2026-07-19 06:28:18 -07:00
clawsweeper[bot]
431482ca3e
docs(agents): require reading ClawSweeper rank-up moves before landing PRs ( #111385 )
...
Co-authored-by: Molty <molty@openclaw.ai >
2026-07-19 05:37:44 -07:00
Peter Steinberger
fa9ae68c34
docs(agents): draft-then-ready PR creation prevents the merge-ref CI race ( #110970 )
2026-07-18 22:41:10 +01:00
Peter Steinberger
6d5ebac0b1
docs(agents): additive SQLite surfaces skip schema-version bumps
2026-07-18 10:27:27 -07:00
Peter Steinberger
a54a292d62
test(ui): fix Node 25+ localStorage crashes in jsdom suites; document PR-open CI drops ( #110812 )
...
* test(ui): shim dead Node 25+ WebStorage localStorage in jsdom test setup
Node 25+ ships a default-on global localStorage that is dead without
--localstorage-file (undefined on 26.5; throwing or inert elsewhere). It
shadows jsdom's Storage during vitest global population, so storage-touching
UI tests crash on newer local Node while Linux CI (Node 24) passes — six
files failed locally on Node 26.5. The shared setup now capability-probes
(round-trip, throw-safe), prefers jsdom's own window Storage when only the
global alias is dead, and otherwise installs one in-memory Storage on both
window and globalThis.
Also documents the PR-open CI drop pattern in AGENTS.md: fresh PRs race
GitHub's merge-ref computation and the open-event CI run can drop or die
as startup_failure/BuildFailed (not rerunnable); verify attach and
close/reopen to re-fire.
* fix(test): drop unnecessary String() conversions in localStorage shim
2026-07-18 18:19:44 +01:00
Peter Steinberger
2ca4d92f1a
docs: live-test gateway isolation policy (session-owned dev gateway, operator approval for real instances)
2026-07-17 17:55:33 -07:00
Peter Steinberger
cc0b8479d9
docs: require approval for SQLite schema bumps
2026-07-17 06:11:51 +01:00
Peter Steinberger
523c07d20e
docs(agents): add correct-but-pragmatic code guidance
...
Two Code-section bullets: correctness on real inputs is mandatory but
over-engineering for imagined ones is a defect; extremely unlikely edge
cases are tradable for real simplification when the tradeoff is named.
2026-07-17 02:24:41 +01:00
Peter Steinberger
333409908d
docs: define SecretRef failure isolation policy ( #109430 )
2026-07-16 17:05:20 -07:00
Peter Steinberger
442d6fc94a
docs(agents): prefer remote testboxes with trusted local fallback when unavailable
2026-07-16 21:52:58 +01:00
Peter Steinberger
6dc3e6055f
docs(agents): note OPENCLAW_BUILD_PRIVATE_QA=1 to build QA Lab/qa-channel into dist
2026-07-16 13:40:46 -07:00
Peter Steinberger
c57d1af958
fix(qa): wait for Matrix config reload ( #108214 )
2026-07-15 03:31:59 -07:00
Peter Steinberger
40e245856e
fix: synchronize gateway dispatch tests before invocation ( #108138 )
...
* test(gateway): capture dispatch baseline before invocation
* docs(agents): guard local PR token identity
2026-07-15 01:22:23 -07:00
Peter Steinberger
4f71a2855e
test(auto-reply): install channel metadata for group prompt cases ( #108113 )
2026-07-15 00:43:03 -07:00
Peter Steinberger
d801f2e68c
docs: document CI rerun attempt selection ( #108095 )
2026-07-15 00:12:41 -07:00
Peter Steinberger
18c14abc2a
docs: require post-merge recap
2026-07-14 23:48:20 -07:00
Peter Steinberger
c51bb5ed20
test(github-copilot): align token endpoint fixtures ( #108047 )
...
* test(github-copilot): align token endpoint fixtures
* docs: refresh generated docs map
2026-07-14 23:25:49 -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
ec5a6d83ef
docs: note bounded maintainer invocations ( #107830 )
...
* docs: note bounded maintainer invocations
* docs: note exact run filtering
2026-07-14 16:20:10 -07:00
Peter Steinberger
59dea92da1
docs: note gh pr diff stat limitation ( #107819 )
...
* docs: note gh pr diff stat limitation
* docs: note yielded exec session handling
2026-07-14 15:55:58 -07:00
Peter Steinberger
80fed99d08
docs(agents): record invocation guards ( #107757 )
2026-07-14 13:46:48 -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
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
ca83f1ca51
fix(ci): restore release validation after runtime migrations ( #107371 )
...
* test(ci): repair plugin prerelease validation
* test(zalo): preserve adapter narrowing in sender helpers
* test(ci): track current bundled startup metadata
* fix(google-meet): refresh plugin shrinkwrap
2026-07-14 03:52:44 -07:00
Peter Steinberger
625d859938
test(ci): harden scheduled release probes ( #107272 )
...
* test(ci): harden scheduled release probes
* docs(agents): record testbox warmup failure
* test(wizard): avoid Promise executor return
2026-07-14 01:48:10 -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
044392684b
test(release): repair scheduled E2E regressions ( #107173 )
...
* test(release): repair scheduled E2E regressions
* test(release): refresh generated protocol bindings
* docs(agents): harden remote proof invocations
2026-07-13 23:49:36 -07:00
Peter Steinberger
61986571bb
fix(plugins): forward-port bundled SDK fallback hardening ( #107131 )
...
* fix(plugins): avoid bundled SDK fallback races
* fix(ci): satisfy plugin SDK LOC ratchet
* fix(ci): align fallback forward-port guards
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-13 21:50:46 -07:00
Peter Steinberger
be5558cb4e
fix(plugin-sdk): preserve runtime contexts in test mocks ( #107059 )
...
* test(plugin-sdk): make runtime context mock stateful
* docs(agents): record Testbox invocation contracts
2026-07-13 21:21:09 -07:00
Peter Steinberger
8a66398b2b
fix(release): harden validation orchestration ( #106873 )
...
* fix(release): harden validation orchestration
* fix(ci): repair release gate regressions
* docs(agents): record PR review guard mode
* test(ci): stabilize release gate coverage
* refactor(agents): remove session factory test export
2026-07-13 17:53:10 -07: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
b4343426f1
docs: make CI polling sparse ( #106821 )
2026-07-13 14:19:54 -07:00
Peter Steinberger
668e5e8096
refactor: split config reply dispatch ( #106642 )
...
* docs: relax refactor issue and CI gates
* refactor: split config reply dispatch
* test: allow ACP dispatch startup under parallel load
* refactor: keep dispatch helper types private
2026-07-13 11:12:32 -07:00
Peter Steinberger
6df498c3cd
refactor: canonicalize binary operation results ( #106049 )
...
* refactor(normalization-core): promote shared result type
* refactor(agent-core): reuse canonical error coercion
* refactor: discriminate internal operation results
* docs: establish shared result convention
* fix(agent-core): preserve error coercion facade
* build: derive package entries from exports
* fix(plugins): resolve shared result subpath
* fix(ci): align Result integration guards
* build: refresh plugin SDK API baseline
* fix(agent-core): preserve toError compatibility
2026-07-13 00:39:43 -07:00
Vincent Koc
f33ab243cf
fix(sqlite): reject runtimes vulnerable to WAL corruption ( #106065 )
...
* fix(sqlite): require WAL-reset-safe Node runtime
* docs(sqlite): document safe Node runtime floor
* fix(sqlite): defer runtime library validation until use
* fix(ci): align startup memory with Node 24.15
2026-07-13 13:59:00 +08:00
Vincent Koc
6a0eecdb44
fix(release): separate code and release SHA validation ( #105948 )
2026-07-13 13:38:19 +08:00
Peter Steinberger
67d7bf1037
ci(release): deduplicate Telegram routing proofs ( #105613 )
2026-07-12 21:07:24 +02:00
Peter Steinberger
1634d849c7
fix(ci): allow empty success diagnostics ( #105569 )
...
* fix(ci): allow empty success diagnostics
* docs(agents): guard non-main PR landing
2026-07-12 18:57:42 +01:00
Peter Steinberger
c41326e320
fix(ci): retain safe Telegram trace milestones ( #105521 )
2026-07-12 17:37:14 +01:00
Peter Steinberger
f5474fcea3
test(ui): stabilize read tool card fixture ( #105508 )
...
* test(ui): stabilize read tool card fixture
* docs(agents): wait for CI before PR prepare
2026-07-12 17:16:31 +01:00
Peter Steinberger
a24eab8488
fix(qa): read runtime parity transcripts from sqlite ( #105495 )
...
* fix(qa): read runtime parity transcripts from sqlite
* test(qa): track parity temp directories
* docs(agents): note PR head refresh sequence
2026-07-12 16:48:35 +01:00
Peter Steinberger
30cc87a8a6
test(qa): model Codex compaction in parity mock ( #105493 )
...
* test(qa): model codex compaction in parity mock
* docs(agents): record gh branch lookup syntax
2026-07-12 16:37:39 +01:00
Peter Steinberger
3b0d3574e3
fix(qa): keep mock memory embeddings offline ( #105488 )
2026-07-12 16:28:46 +01:00
Peter Steinberger
7ca827eba2
fix(qa): align mock catalog with selected models ( #105401 )
...
* fix(qa): align mock catalog with selected models
* test(qa): verify selected refs reach mock server
2026-07-12 15:21:19 +01:00