Drew Meyer
51b31fc131
fix(codex): timed-out native hooks exhaust memory ( #109446 )
...
* fix(codex): prevent native hook relay orphans
* test(codex): prove native relay timeout ownership
* fix(codex): keep source hook relay pid stable
* test: auto-clean compile-cache fixtures
Co-authored-by: Drew Meyer <dr00-eth@users.noreply.github.com >
---------
Co-authored-by: Drew Meyer <dr00-eth@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-20 20:07:11 -07:00
wangmiao0668000666
998f0ed27d
fix(e2e): keep phase log tails UTF-8 safe ( #109923 )
...
* fix(e2e): keep phase log tails UTF-8 safe
The phase runner keeps a bounded in-memory log tail per phase and writes it
to stderr when a phase fails. The byte-based cut can land inside a multi-byte
UTF-8 character, and decoding from that offset emits U+FFFD replacement
characters at the start of the diagnostics tail. Reuse the decodeUtf8Tail
helper from scripts/e2e/lib/text-file-utils.mjs (#109669 ) so the retained
window starts on a character boundary.
Co-Authored-By: Claude <noreply@anthropic.com >
* fix(e2e): declare decodeUtf8Tail in text-file-utils types
phase-runner.ts imports decodeUtf8Tail from text-file-utils.mjs; the
adjacent declaration file must export it or check-test-types fails with
TS2305.
Co-Authored-By: Claude <noreply@anthropic.com >
* refactor(e2e): reuse tailText wrapper for phase log tails
Co-Authored-By: Claude <noreply@anthropic.com >
* test(e2e): focus phase tail regression
Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com >
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-20 19:45:35 -07:00
Peter Steinberger
2bb6b870aa
fix: preserve Codex-bound conversation history across session rotation ( #112016 )
...
* fix: preserve Codex conversation bindings
* test: harden Codex live gateway stress
* chore: refresh plugin SDK API baseline
* test: tighten restart recovery fixtures
* test: complete restart recovery recorder fixture
* fix: keep plugin command authorization fail closed
* fix: restore private queue source imports
* fix: keep private SDK imports inside core
* fix: keep speech core on private SDK paths
* fix: stage private SDK exports for live tests
* fix: preserve plugin-bound gateway history
* fix: block transcript writes after binding races
* test: complete live stage helper contracts
* test: align binding mocks with current types
* fix: preserve compiler OOM diagnostics
* chore: move release notes to PR context
2026-07-20 19:42:56 -07:00
Dallin Romney
3abf8ce964
fix(ci): freeze floating maturity main refs ( #112015 )
2026-07-21 11:42:22 +09:00
Peter Steinberger
64607ba63d
feat: show cloud workspace conflicts in the Control UI ( #111329 )
...
* feat(ui): surface cloud workspace conflicts with staged-ref guidance
* fix(ui): satisfy workspace conflict CI checks
* fix(ui): reject terminal controls in conflict paths
* chore: keep release notes out of the PR
* fix(ui): satisfy conflict path lint
* fix(ui): retain cloud conflicts after reclaim
* fix(ui): keep child conflict badges visible
* test(ui): cover cloud conflict recovery in browser
* fix(ci): rotate poisoned dependency snapshot
* fix(ui): keep nested cloud conflicts discoverable
* docs(changelog): note cloud conflict UI
* fix(ui): restore conflict UI budget headroom
2026-07-20 19:27:19 -07:00
Dallin Romney
29737496a8
fix(qa): run independent evidence channels concurrently ( #112008 )
...
* fix(qa): overlap independent channel evidence
* fix(ci): pin nested maturity evidence ref
* test(qa): satisfy promise executor lint
2026-07-21 11:25:46 +09:00
zw-xysk
9db4b991b0
fix(scripts): preserve UTF-16 surrogate pairs at truncation boundaries in label-open-issues ( #109498 )
...
Replace .slice(0, maxChars) with truncateUtf16Safe in two locations:
- readBoundedResponseText (error body truncation)
- truncateBody (issue body preview)
Without this fix, an emoji (or any astral character) straddling the
truncation boundary would leave a lone surrogate in the output, producing
invalid UTF-16 that serializes to a garbled replacement character.
Follows the same pattern as Leon-SK668's PRs #108184 , #108193 , #108208 .
2026-07-20 19:06:06 -07:00
Dallin Romney
d4deddb6ed
fix(ci): budget maturity evidence runs ( #111980 )
2026-07-21 10:54:37 +09:00
lzyyzznl
f267a4f99b
fix(scripts): preserve UTF-16 surrogate pairs in firecrawl truncation ( #109561 )
...
* fix(scripts): preserve UTF-16 surrogate pairs in firecrawl truncation
* test(scripts): cover UTF-16-safe firecrawl truncation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-20 18:50:03 -07:00
Patrick Erichsen
ff98dd93f5
ci: scan pull requests with TruffleHog ( #111935 )
...
* ci: scan pull requests with TruffleHog
* ci: scan staged changes with TruffleHog
* ci: fetch pull request base for secret scan
* ci: fetch complete pull request scan history
2026-07-20 17:08:41 -07:00
Josh Lehman
a2a0e932c8
fix: preserve transcript cursors across embedded turns ( #111949 )
...
* fix(agents): preserve transcript generation on flush (clawdbot-85c)
* fix(agents): preserve SQLite transcript parents (clawdbot-85c.5)
* test(agents): prove cursor continuity through Gateway (clawdbot-85c.7)
2026-07-20 15:41:31 -07:00
Jason (Json)
e2bb04328f
fix(release): accept large tarball entry lists ( #111672 )
2026-07-20 13:21:27 -06:00
Peter Steinberger
ba3711bb82
feat(linux): render widgets in Quick Chat ( #111933 )
2026-07-20 11:56:03 -07:00
Dinesh H Suthar
444fd4bbea
test(ci): provide rg in PR wrapper fixture ( #111824 )
...
* test(ci): avoid lock path in wrapper opt-in test
* test(ci): stub rg in PR wrapper fixture
2026-07-20 06:49:32 -07:00
Peter Steinberger
a971188a6d
build(client): make @openclaw/gateway-client publishable to npm ( #111707 )
2026-07-20 00:23:36 -07:00
Peter Steinberger
6b80b01369
chore(pr): warn when ci-dispatch targets a remote head behind local work ( #111694 )
2026-07-19 23:24:29 -07:00
Peter Steinberger
fef846a3f0
build(protocol): make @openclaw/gateway-protocol publishable to npm ( #111664 )
...
* build(protocol): make @openclaw/gateway-protocol publishable to npm
* chore(mxc): align package version with release train
* fix(release): support gateway-only core packages
2026-07-19 23:18:24 -07:00
Peter Steinberger
104128dd32
chore(pr): dev-wrapper opt-in — advisory subcommands may dogfood modified wrappers ( #111656 )
...
* chore(pr): dev-wrapper opt-in — advisory subcommands may dogfood modified wrappers
* fix(pr): hermetic dev-wrapper test fixture and type narrowing
2026-07-19 22:58:15 -07:00
Peter Steinberger
bdf71d7d98
refactor(apple): unify offline client databases ( #111598 )
...
* refactor(apple): unify offline client databases
* refactor(apple): remove dead cache APIs
* fix(apple): satisfy native storage gates
* fix(apple): sync generated localization catalog
* Revert "fix(apple): sync generated localization catalog"
This reverts commit d0f5e7b74932e98ccc5f1984840e8f9d545edc2d.
* fix(i18n): keep source validation pre-merge
* test(macos): isolate flaky suite state
* test(macos): isolate log locator on main actor
2026-07-19 22:14:12 -07:00
Peter Steinberger
8f9e42f2a9
fix(cli): report honest SQLite store labels and consistent build SHA in help ( #111659 )
2026-07-19 22:07:44 -07:00
Peter Steinberger
3564c1c795
fix(test): bound Matrix test process memory ( #111607 )
...
* test: bound Matrix test process memory
* test: align Matrix runner mock contract
2026-07-19 20:04:14 -07:00
Peter Steinberger
e0b1a39d2a
improve(i18n): generate native locales after merge ( #111557 )
...
* ci(i18n): move native locale generation post-merge
* fix(i18n): allow generated Android companions
2026-07-19 15:42:41 -07:00
Peter Steinberger
3247a56d15
fix(ui): prevent cross-file mock leakage in Control UI tests ( #111554 )
...
* test(ui): stop shared mock registry leakage
* ci: add three-worker UI leakage canary
2026-07-19 15:38:50 -07:00
Peter Steinberger
5fcf7e75de
test: clear plugin runtimes between shared files ( #111556 )
2026-07-19 15:28:46 -07:00
Peter Steinberger
50114c5163
fix(test): recognize CI env aliases ( #111521 )
2026-07-19 12:44:18 -07:00
Peter Steinberger
5ec3b2dab4
fix(install): isolate source postinstall state ( #111514 )
2026-07-19 12:14:21 -07:00
Peter Steinberger
163a6c6e16
fix(agents): declare visible-session constraints upfront in sessions_spawn ( #111502 )
2026-07-19 11:42:05 -07:00
Peter Steinberger
c7e7ac2728
refactor: remove expired plugin compatibility surfaces ( #111451 )
...
* docs(secrets): remove retired web credential paths
* refactor(web): remove retired provider compatibility paths
* refactor(providers): delete retired compatibility routes
* refactor(secrets): remove retired credential aliases
* refactor(plugin-sdk): delete retired compatibility surfaces
* docs(plugin-sdk): remove retired migration guidance
* chore(plugin-sdk): refresh rebased surface budgets
* chore(plugin-sdk): refresh API removal baseline
* refactor(compat): migrate retired internal callers
* chore(plugin-sdk): refresh current-main baselines
* test(config): migrate plugin-owned secret assertions
* test(gateway): narrow plugin secret refs
* fix(plugin-sdk): preserve private boundary type identity
* chore(compat): remove stale sweep references
* chore(lint): lower max-lines budget
* refactor(secrets): remove unused web helper
* build(plugin-sdk): drop removed compat entries
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): use Linux API baseline hash
* fix(plugin-sdk): preserve private bundled build entries
* fix(plugin-sdk): package private runtime facades
* fix(plugins): preserve external credential contracts
2026-07-19 11:04:48 -07:00
Peter Steinberger
7aedca21b2
test(release): align built-in timing proofs ( #111483 )
2026-07-19 09:42:16 -07:00
Peter Steinberger
87fbc19fe3
fix: complete lint toolchain reuse in worktrees ( #111467 )
...
* fix(scripts): complete worktree lint toolchain
* fix(scripts): prepare complete lint pipeline
2026-07-19 08:58:43 -07:00
Peter Steinberger
ca3a1873a6
fix(test): make broad shard execution deterministic ( #111416 )
...
* fix(test): harden broad shard execution
* test: allow broad-profile contention
* style(telegram): remove redundant chat id cast
* style(test): preserve setup test spacing
2026-07-19 08:39:16 -07:00
Peter Steinberger
1f507162ee
fix(ci): validate sticky importer restores ( #111444 )
2026-07-19 07:57:46 -07:00
Peter Steinberger
783a5d21cf
refactor(config): purge numeric tuning knobs behind built-in defaults ( #111382 )
2026-07-19 07:35:45 -07:00
Peter Steinberger
d9c9eeb8cd
fix(ci): resolve manual protocol baseline
2026-07-19 14:53:32 +01:00
Peter Steinberger
be831088e9
fix: local lint works in dependency-less worktrees ( #111393 )
...
* fix(scripts): resolve worktree oxlint toolchain
* fix(scripts): declare worktree tool resolver
2026-07-19 06:23:36 -07:00
Peter Steinberger
6a8f16a69e
chore(pr): reuse green hosted CI from patch-identical pre-rebase heads ( #111335 )
...
* chore(pr): reuse green hosted CI from patch-identical pre-rebase heads (24h window)
* fix(pr): type-safe fixtures and lint cleanup for hosted-CI reuse tests
2026-07-19 05:34:48 -07:00
Peter Steinberger
06f5f73e47
refactor: own model discovery by runtime lifecycle ( #111173 )
...
* refactor(agents): prepare model runtime catalogs
Build lifecycle-owned model and auth snapshots, carry prepared stores into hot agent paths, and serialize config/auth publication.
Credits @zeroaltitude's #90741 investigation and benchmark approach.
* refactor: finish lifecycle-owned model discovery
* fix: align prepared model catalog contracts
* test: align lifecycle catalog mocks
* test: fix prepared catalog type fixtures
* refactor: split prepared model runtime ownership
* fix: import prepared runtime replacement gate type
* test: split media runtime coverage
* test: preserve image auth fixture key types
* test: isolate lifecycle gate fixtures
* chore: keep release changelog owned
* refactor: finish prepared model catalog migration
* test: keep catalog review fixtures scanner-safe
* refactor: preserve lifecycle model runtime ownership
* fix: close prepared runtime lifecycle races
* fix: preserve compaction workspace fallback
* chore: document btw generation rebinding
* fix: preserve prepared generation boundaries
* fix: keep model-list discovery flag explicit
* fix: serialize standalone model runtime activation
* refactor: migrate subagent model catalog lookup
* refactor: clarify doctor catalog lookup seam
* chore: refresh plugin sdk api baseline
* test: migrate swarm catalog dependency
* refactor(telegram): rename runtime catalog seam
* refactor: extract model-aware tool context
* test(models): isolate lifecycle catalog fixtures
* refactor(agents): avoid btw parameter rebinding
* fix(net-policy): align root ipaddr dependency
* fix(build): keep net policy dependency bundled
* fix(deadcode): document net policy compile dependency
2026-07-19 05:30:54 -07:00
Peter Steinberger
ef91ce5712
feat: keep reset session history searchable ( #111194 )
...
* feat(sessions): retain reset history in sqlite with physical disk budget
* fix(sessions): satisfy test-types, knip export scan, and docs map
* fix(sessions): align behavioral suites and flip proof with retained history, route-aware cleanup plans
2026-07-19 03:38:51 -07:00
Peter Steinberger
e2930422d0
fix(ci): make pr-ci-sweeper clock injectable so lookback fixtures cannot rot
2026-07-19 03:26:50 -07:00
Peter Steinberger
c7d2d111d8
fix(ci): enforce plugin SDK API baseline ( #111289 )
...
* fix(ci): enforce plugin SDK API baseline
* fix(plugin-sdk): refresh fs-safe API baseline
2026-07-19 02:38:58 -07:00
Peter Steinberger
b3bb40551b
fix(mac): opening General Settings crashes in packaged app ( #111300 )
...
* fix(macos): package KeyboardShortcuts resources
* fix(macos): keep dependency patch whitespace-safe
* fix(macos): preserve locked Swift resolution
* fix(macos): guard Swift lock across builds
* fix(macos): simplify KeyboardShortcuts packaging
2026-07-19 02:30:49 -07:00
Peter Steinberger
84e54ab264
chore(pr): landing-UX — aggregated validation, lock classes, ci-dispatch, committer guard ( #111287 )
...
* chore(pr): landing-UX — aggregate artifact validation, lock classes, ci-dispatch, committer worktree guard
* fix(pr): CI lane cleanup for landing-ux — lint causes, hermetic tests, private helpers
* chore(deadcode): register pr-lib CLI entries in knip config
2026-07-19 02:09:55 -07:00
Mason Huang
c26d3cfbd0
fix(ci): skip Periphery scans for unrelated PR changes ( #107991 )
...
* fix(ci): scope Periphery to PR merge changes
* test(ci): align Periphery changed-test routing
2026-07-19 16:52:44 +08:00
Peter Steinberger
f07a1fb502
refactor: centralize bounded file reads in fs-safe ( #111104 )
...
* refactor: use fs-safe bounded descriptor reads
* build: update fs-safe to 0.4.2
* build: refresh root npm shrinkwrap
* fix: satisfy bounded read return paths
* fix: update fs-safe integration for latest main
* fix: adopt fs-safe overflow compatibility release
* build: complete fs-safe lockfile update
* build: update fs-safe to 0.4.4
* build: refresh plugin SDK API baseline
* test: follow fs-safe bounded read seam
2026-07-19 01:29:23 -07:00
xingzhou
59124313f4
fix(release): plugin npm preflight no longer hangs on stalled registries ( #110862 )
...
* fix(release): bound plugin npm freshness lookups
* fix(release): fail closed on npm view timeouts
* test(release): fix npm timeout mock types
2026-07-19 16:10:49 +08:00
Peter Steinberger
0f95e66b7f
feat(talk): add durable client voice sessions ( #111216 )
...
Live-append voice transcripts into the agent session and persist a per-agent SQLite call record across relay and client transcript paths.
Add run-scoped spoken confirmation for high-impact actions, mutation digests, bootstrap-context injection, talk.client.transcript and talk.client.close protocol methods, and Control UI adoption. This adds zero new configuration.
Co-authored-by: Clifton King <clifton@users.noreply.github.com >
2026-07-19 01:06:49 -07:00
Peter Steinberger
58452de711
refactor(config): config-surface reduction tranche 1 — retire dead keys, dedupe channel schemas, add growth ratchet ( #111142 )
...
* refactor(config): retire dead and aliased config keys via doctor migrations
* refactor(config): dedupe bundled channel config schemas into shared builders
* feat(config): add config-surface count ratchet to doc-baseline check
* test(config): drop stale fixtures for retired config keys
* fix(doctor): migrate only positive finite MCP timeout aliases
* fix(migrate-hermes): emit canonical MCP timeouts only
* fix(config): satisfy lint and contract gates
2026-07-19 00:52:37 -07:00
Jason (Json)
baa8b9b24f
test(telegram): add MCP App Funnel proof fixture ( #111238 )
2026-07-19 00:14:36 -06:00
Peter Steinberger
b57660d024
fix(apps): call chat sessions threads ( #111038 )
...
* fix(apps): call chat sessions threads
* test(apps): update thread wording expectations
* fix(i18n): guard retained Android translations
2026-07-18 20:34:12 -07:00
Peter Steinberger
28ce6b8116
fix(macos): accept current native state schema ( #111032 )
2026-07-18 19:58:37 -07:00