Peter Steinberger
4273ca9dbd
refactor(sessions): remove file-era transcript runtime ( #113233 )
...
* refactor(sessions): keep helper transcripts in memory
* refactor(sessions): remove file-era transcript storage
* test(sessions): use SQLite identity in attempt persistence
* test(codex): isolate legacy transcript fixtures
* fix(sessions): preserve SQLite transcript identity
* fix(sessions): harden transcript lifecycle invariants
* fix(sessions): validate transcript identities
* fix(sessions): close identity compatibility gaps
* fix(sessions): preserve leaf and plugin identities
* fix(sessions): retain dispatch transcript targets
* fix(sessions): preserve active transcript context
* fix(sessions): isolate artifact accounting
* fix(sessions): bound SQLite usage accounting
* fix(sessions): retain bounded latest usage
* fix(sessions): align rebased transcript targets
* test(sessions): align accessor scope fixture
* fix(telegram): derive SQLite transcript identity
* refactor(sessions): remove file-era compaction residue
* chore(sessions): lower max-lines baseline
* fix(sessions): preserve structured transcript identity
* test(sessions): align doctor identity assertions
* fix(sessions): isolate default SDK database
* refactor(sessions): remove dead file-era exports
* fix(sessions): reconcile SQLite transcript identity
* fix(sessions): pass checkpoint identity explicitly
* test(sessions): make entry field probe explicit
* test(sessions): satisfy transcript cleanup lint
* test(sessions): align diagnostics identity proof
* fix(sessions): finish transcript runtime teardown
* fix(sessions): preserve transcript identity invariants
* fix(sessions): harden transcript compatibility edges
* fix(sessions): preserve checkpoint transcript anchors
* fix(sessions): preserve SQLite lifecycle invariants
* fix(sessions): retarget compaction successors
* test(sessions): preserve transcript fixture semantics
* feat(plugin-sdk): add command transcript targets
* fix(sessions): serialize transcript rewrites
* fix(sessions): validate legacy successor identity
* fix(sessions): normalize compaction ownership
* fix(sessions): validate successor identity before adoption
* fix(sessions): preserve plugin transcript ownership
* fix(sessions): carry transcript identity through commands
* fix(sessions): import legacy checkpoint artifacts into SQLite
* fix(sessions): preserve successor transcript ownership
* fix(sessions): align transcript consumers with target identity
* fix(sessions): scope transcript token estimates
* fix(sessions): retain agent identity across lifecycle hooks
* fix(sessions): resolve scoped SQLite targets
* fix(sessions): isolate lifecycle transcript targets
* fix(sessions): validate compaction agent ownership
* fix(sessions): preserve reset and cleanup lifecycle
* fix(sessions): serialize prompt cleanup lifecycle
* fix(sessions): remove stale lock import
* fix(sessions): preserve reset target context
* fix(sessions): fence prompt reload takeover
* fix(sessions): unblock abort and default lifecycle reads
* fix(sessions): validate legacy successor scope
* fix(sessions): reject metadata-only runtime rows
* fix(sessions): propagate custom transcript stores
* fix(sessions): preserve adopted retry targets
* fix(sessions): allow unkeyed usage reads
* fix(sessions): harden runtime target boundaries
* fix(sessions): serialize retry transcript writes
* fix(sessions): bound prompt reload disposal
* fix(sessions): complete retry marker identity
* fix(sessions): keep legacy marker identity minimal
* test(sessions): tighten teardown fixture types
* fix(sessions): preserve compatibility target identity
* test(sessions): persist post-checkpoint boundary turn
* test(sessions): align runtime store mock contracts
* style(sessions): simplify persisted identity guard
* fix(sessions): prefer complete typed targets
* fix(sessions): recover legacy marker targets
* test(sessions): align marker lookup fixture scope
* fix(sessions): validate partial transcript targets
* fix(sessions): reconcile partial transcript identities
* fix(sessions): canonicalize compatibility identities
* test(sessions): cover compatibility aliases
* fix(sessions): adopt legacy successor identity
* fix(sessions): preserve usage read identity
* fix(sessions): preserve partial marker compatibility
* fix(sessions): validate legacy successor mappings
* fix(sessions): reconcile marker store mappings
* fix(sessions): preserve legacy fallback identity
* fix(sessions): harden marker alias resolution
* fix(sessions): prefer verified successor aliases
* fix(sessions): resolve preferred marker aliases
* fix(sessions): serialize cleanup admission
* fix(sessions): align marker lookup scopes
* fix(codex): type marker alias summaries
* style(sessions): satisfy changed lint
* test(sessions): align structured target assertions
* fix(sessions): reconcile latest identity contracts
* fix(sessions): validate transcript identity boundaries
* docs(sessions): explain stable registry keys
* fix(sessions): harden compatibility target round trips
* fix(sessions): port usage identity to split modules
* test(sessions): align subagent transcript identity
* fix(sessions): finish transcript identity migration
* fix(agents): route subagent completion capture through transcript targets
* fix(agents): settle SQLite prompt handoff during cleanup
* chore: shrink max-lines baseline after teardown
* fix(sessions): port teardown across split runtime owners
* fix(sessions): carry transcript targets through split owners
* test(agents): use SQLite compaction target in abort coverage
* chore: retain unrelated max-lines suppressions
* chore: shrink max-lines baseline after main splits
* style(agents): const compaction checkpoint locals
* fix(sessions): harden SQLite teardown boundaries
* test(sessions): use typed metadata in predicate isolation fixture
* test(agents): cover malformed settlement rejections lint-safely
* fix(sessions): close remaining SQLite identity races
* fix(agents): fail closed on incomplete successor targets
* fix(sessions): preserve transcript identity fallbacks
* fix(agents): preserve session-key abort admission
* fix(trajectory): validate incomplete export targets
* test(sessions): drop retired pricing cache imports
* fix(sessions): validate partial transcript identities
* fix(sessions): close transcript identity edge cases
* fix(plugins): reserve retired transcript locator slot
* fix(sessions): scope transcript locks by target
* style(sessions): simplify SDK initialization error
* fix(sessions): preserve initialized transcript state
* fix(codex): verify mirrored history session keys
* fix(sessions): reject stale transcript ownership
* fix(sessions): anchor asynchronous transcript ownership
* fix(sessions): measure active transcript state
* fix(sessions): preserve scoped transcript compaction
* fix(sessions): harden transcript identity and lifecycle
* fix(sessions): resolve scoped command transcript stores
* fix(sessions): make transcript appends failure-atomic
* fix(sessions): enforce scoped transcript ownership
* fix(sessions): reject cross-owner transcript handoffs
* fix(sessions): fence cleanup transcript ownership
* fix(sessions): retire stale write ownership contexts
* fix(sessions): preserve pending session migration state
* fix(sessions): validate migrated transcript ownership
* fix(sessions): validate usage transcript targets
* fix(sessions): clear predecessor transcript metadata
* fix(sessions): align durable session event targets
* fix(sessions): fence late prompt handoffs
* fix(sessions): fence lifecycle transcript fallbacks
* fix(sessions): bound zero-length memory capture
* fix(sessions): preserve transcript teardown ownership
* fix(sessions): reject duplicate cleanup ownership
* fix(sessions): serialize runtime writes with sqlite leases
* fix(sessions): close sqlite teardown concurrency gaps
* fix(sessions): preserve nested lifecycle failures
* fix(sessions): canonicalize sqlite transcript ownership
* fix(sessions): settle disposed prompt handoffs
* fix(sessions): resolve canonical attempt lock targets
* test(sessions): align canonical target fixtures
* test(sessions): retire redundant jsonl parser coverage
* refactor(sessions): split active transcript cursors
* test(memory): retire legacy marker fixture
* fix(sessions): preserve canonical transcript access after rebase
* fix(sessions): fence prompt lease and return transcript targets
* fix(sessions): colocate transcript leases with target store
* fix(sessions): canonicalize transcript lease and worker targets
* fix(sessions): preserve plugin and fork identity markers
* fix(sessions): complete sqlite transcript target migration
* fix(sessions): integrate canonical followup identity
* fix(sessions): preserve bounded transcript topology
* fix(sessions): validate transcript identity boundaries
* fix(context): separate caller and successor targets
* test(sessions): split persistence compatibility coverage
* test(sessions): preserve fixture topology efficiently
* chore(sdk): refresh plugin api baseline
* test(agents): align compaction lock target mocks
* test(sessions): seed malformed transcript fixtures directly
* fix(agents): canonicalize transcript compatibility inputs
* fix(agents): type optional tool result ids
* test(ci): stabilize loaded process timing
* test(tui): wait for collect queue admission
2026-07-27 22:33:24 -04:00
Peter Steinberger
3806c3866b
fix(cli): keep read-only config queries from writing state ( #114847 )
...
* fix(cli): keep config queries read-only
* test(cli): preserve read-only routed config coverage
2026-07-27 22:27:00 -04:00
Peter Steinberger
5ae4a8fb8e
fix(release): trust corrected beta runtime evidence ( #114838 )
...
* fix(release): trust corrected beta runtime evidence
* style(test): format runtime evidence cases
2026-07-27 21:14:41 -04:00
Peter Steinberger
924004d35c
test(scripts): deflake credential process-tree timeout tests ( #114821 )
2026-07-27 21:01:03 -04:00
Peter Steinberger
6125edfb76
fix(pr): require ripgrep consistently ( #114809 )
2026-07-27 20:23:25 -04:00
Peter Steinberger
a1e0c9ea09
refactor(packages): DM-policy contract suite, dead routes, package folds ( #114776 )
...
* test(channels): share DM policy contract suite
* refactor(memory): remove dead host CLI routes
* refactor(acp): use canonical normalization helpers
* refactor(web): fold provider runtime into core
* refactor(packages): remove dead runtime exports
* chore(knip): drop retired ACP entry roots
2026-07-27 20:20:13 -04:00
Ho Lim
50f0e8d8ab
fix(diagnostics): exclude active steering from session backlog ( #114780 )
...
* fix(diagnostics): exclude active steering from session backlog
Signed-off-by: Ho Lim <subhoya@gmail.com >
* fix(diagnostics): cover reply-run steering backlog
Signed-off-by: Ho Lim <subhoya@gmail.com >
* test(qa): prove active steering drains diagnostics
Signed-off-by: Ho Lim <subhoya@gmail.com >
* test(diagnostics): format reply-run steering coverage
Signed-off-by: Ho Lim <subhoya@gmail.com >
* fix(diagnostics): keep backlog policy internal
Signed-off-by: Ho Lim <subhoya@gmail.com >
* test(qa): isolate Talk diagnostics client
Signed-off-by: Ho Lim <subhoya@gmail.com >
* test(qa): close Talk client before diagnostics
* test(qa): reuse Gateway diagnostic RPC client
* test(qa): retry Talk steering admission
---------
Signed-off-by: Ho Lim <subhoya@gmail.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 20:01:22 -04:00
Peter Steinberger
0fdc825b29
fix(ui): make the Control UI e2e suite green and gate merges on it ( #114554 )
...
* fix(ui): restore chat flow e2e coverage
(cherry picked from commit 16a094eaec4ae121db09f67c094a41262aa9cefc)
* test(ui): align browser Talk mocks with voice sessions
(cherry picked from commit ef0649334539954b253ab8c51ff436bd8ce757c6)
* test(ui): wait for chat startup in update E2E
(cherry picked from commit 586e1046320dd56398fd8a3b995a1a465f6c6fe2)
* test(ui): update sidebar session route expectation
(cherry picked from commit 9692985027556fad7bb7819c8e140a101e181c47)
* test(ui): update session management e2e contracts
(cherry picked from commit 4e99348dabf08fb8886d55e25a9f9eda1dfe1056)
* test(ui): align Codex session E2E contracts
Update the catalog layout assertion for reorderable sibling sections, expose advanced plugin settings explicitly, and make adopted sessions resolvable through the current path router.
(cherry picked from commit 1a03f924a32facb23302c5618a2b15004feeccff)
* test(ui): align composer e2e with metadata hydration
(cherry picked from commit eca1902e773be32c993ddb22594925f7da82f98f)
* fix(ui): restore usage hint click behavior
(cherry picked from commit ea63b5dab7c3c54048a04d60703e529e5b900df6)
* fix(ui): give reveal-only tooltips an explicit click-to-open opt-in
#112602 made the shared tooltip dismiss on pointer activation so an action
button never strands one open. The usage summary hint exists only to be read,
so clicking it did nothing on touch or in browsers that skip focus on click.
Opt that trigger in rather than bouncing focus through blur/focus, which
briefly drops focus for assistive tech.
(cherry picked from commit 16d165857a4006ae0a0df42168f34a40f4cc9117)
* test(ui): follow sidebar dock resize ownership
(cherry picked from commit fd4792a2dd9fc81fc63f8c9e25291ff2246d235a)
* test(ui): prove the dock resize persists off its clamp
Asserting the post-End width equals SIDEBAR_MIN_WIDTH_PX compared the clamp
to itself across reload, so the check would pass even if the persisted width
were dropped and the column fell back to its minimum. Step off the clamp
first and assert that value survives.
(cherry picked from commit 3636124c326a93b80006ccc4064415ec1a6c2c9f)
* test(ui): align native link routing e2e contracts
Use a non-link bubble hit target after flat assistant styling, assert modified clicks at the routing boundary instead of relying on Chromium tab creation, and preserve native context menus for internal anchors.
(cherry picked from commit 55fbd3052a40c5c03f00f0bf595ef356ac0d1f10)
* test(ui): align native catalog host assertions
(cherry picked from commit 9db9a2fcd5633675a88296b2ccd874563a00cb80)
* test(ui): target tool outcome rollup at dashboard session
Completed-work groups are dashboard-only, so the legacy main session never rendered the disclosure exercised by this test.
(cherry picked from commit ba84b617ef038866451ad03491298349d966a54f)
* test(ui): track discussion panel close action
The flexible multi-sidebar layout replaced the generic Close sidebar action with a panel-specific Close Discussion action. Keep the E2E toggle proof aligned with that intentional accessible-name contract.
(cherry picked from commit 422b1f2bd8fae2a7571881d0455c3040c2ef2de9)
* test(ui): mock pairing list in WhatsApp logout e2e
(cherry picked from commit 3730de075bbb50071fc0cb57c007ab894688a7a1)
* test(ui): open build info from identity menu
(cherry picked from commit b1626a6a723ec13c2cf50444b4c7a65fec289213)
* fix(ui): let the board fixture host page own its theme
The fixture module unconditionally re-added `wa-dark` at import time, which
runs after the host page's inline theme script. #111998 gave that page the
real prefers-color-scheme contract, leaving the line from #112076 stale: in
light mode the root ended up with both `wa-light` and `wa-dark`, so Web
Awesome rendered dropdowns dark.
(cherry picked from commit 43e50de9728f3d5feac9609142d28821896b4f77)
* test(ui): align approval E2E with scoped errors
(cherry picked from commit 6435fe995491c6bae2c28fa374d06cd77f3c46ac)
* test(ui): use radio role in Set Default E2E
(cherry picked from commit acc8d5a487aac4d56515ae35d976fd347efa0be5)
* ci: gate merges on the Control UI e2e suite
test/vitest/vitest.ui-e2e.config.ts was referenced only by package.json and
mantis-web-ui-chat-proof.yml, so nothing in the merge gate ever ran it and 39
failures accumulated across 21 files (#114438 ). Give it its own job: the suite
runs one file at a time because each owns a Chromium context and a mocked
Gateway, ~21 min measured, which does not fit checks-ui's 20-minute budget.
Also route the config file itself through the Control UI changed-scope so a
change to it triggers the job.
* test(ui): isolate MCP app conformance from sidecars
(cherry picked from commit c2bfd0a00edad804474ebb23449d3150557c7f78)
* test(ui): list newly created E2E sessions
(cherry picked from commit e1a2188699011e818e040358d4eaf6ce26eb0732)
* test(ui): synchronize full-suite e2e setup
* test(ui): drop implied-eval module import and align the e2e workflow guard
* test(ui): wait for pin editor roving focus before keyboard nav
* test(ui): read the startle class in one in-page step
* test(ui): synchronize transient e2e assertions
2026-07-27 19:31:31 -04:00
Peter Steinberger
37cf0c6064
improve: reduce GPT-5.6 coding harness overhead ( #114574 )
...
* improve: reduce GPT-5.6 coding harness overhead
* refactor: extract runtime parity timing helpers
* fix(qa): verify native apply-patch runtime parity
* fix(qa): use mock patch execution evidence
* fix(qa): preserve workspace templates in full syncs
* fix(qa): make rejected patch fixtures deterministic
* fix(qa): prove apply-patch workspace containment
* fix(qa): expose runtime prompt-cache usage
* fix(codex): confine forced private QA patch turns
* fix(qa): verify native patch execution and sandbox precedence
* fix(qa): execute native patches and prove disk mutation
* fix(codex): avoid duplicate native patch registration
* perf(agents): keep code mode catalog guidance compact
* fix(qa): make native Codex patch evidence deterministic
* fix(qa): recognize native sandbox denial errors
* fix(qa): advertise native Codex mock model capabilities
* fix(qa): seed native Codex mock model catalog at startup
* fix(qa): recognize native Codex patch denial results
* fix(ci): repair Codex harness parity checks
* fix(qa): distinguish unknown prompt-cache measurements
* fix(qa): accept native Codex project patch denials
* fix(ci): isolate runtime parity report contracts
* fix(codex): eliminate native runtime transport overhead
* fix(qa): consume runtime parity report contract
* fix(qa): compare matched runtime timing captures
* fix(qa): type native response delta context
* fix(qa): satisfy native codex websocket lint
2026-07-27 19:24:52 -04:00
Peter Steinberger
6bc06abbfb
fix(release): exclude automation changelog credit ( #114788 )
...
* fix(release): exclude automation changelog credit
* fix(ci): repair release-note verifier gates
2026-07-27 19:24:47 -04:00
Peter Steinberger
69b54cf13c
chore(docs): harden external link audit results ( #114746 )
2026-07-27 17:37:02 -04:00
Peter Steinberger
960b050add
refactor(extensions): remove orphaned shadow trial and retired config aliases ( #114709 )
...
* refactor(memory-core): remove orphaned shadow trials
* refactor(qqbot): migrate direct voice upload formats
Release note: QQBot configs using voiceDirectUploadFormats now migrate through openclaw doctor --fix to audioFormatPolicy.uploadDirectFormats at root and account scope. Existing nested uploadDirectFormats values win conflicts, and runtime reads only the nested policy.
* refactor(feishu): migrate tools base alias
Release note: Feishu configs using tools.base now migrate through openclaw doctor --fix to tools.bitable at root and account scope. Existing bitable values win conflicts, and runtime accepts only the canonical key.
* refactor(extensions): remove dead runtime state
* chore(config): refresh bundled channel metadata
* refactor(codex): keep realtime fallback type private
* test(ci): align QA compatibility scenario count
2026-07-27 17:12:41 -04:00
Peter Steinberger
6f7edb3695
fix: make auto-review and PR triage fail safely ( #114745 )
...
* fix: make auto-review and PR triage fail safely
* test: cover fail-closed PR merge review gates
* fix: preserve GitHub pending-check review semantics
2026-07-27 17:11:28 -04:00
Peter Steinberger
3a39dbcdfd
fix(agents): harden code mode module isolation ( #114742 )
2026-07-27 16:38:44 -04:00
Peter Steinberger
f275db6974
refactor: remove dead split facades ( #114726 )
...
* refactor: remove dead split facades
* fix: update facade ownership references
2026-07-27 16:32:52 -04:00
Peter Steinberger
e879ce7e0e
feat(pr): support pinned auto-merge landings ( #114702 )
...
* feat(pr): add pinned auto-merge mode
* test(ci): remove duplicate codex prewarm route
2026-07-27 16:12:05 -04:00
Peter Steinberger
9e2ffea0de
fix(cli): reject empty update timeout arguments ( #114700 )
2026-07-27 16:08:00 -04:00
Peter Steinberger
f3055f64f4
fix(pr): keep landing mutations inside the dedicated PR worktree ( #114723 )
2026-07-27 16:04:52 -04:00
Peter Steinberger
f0371e8d88
fix: stop blocked tool loops stalling until timeout ( #114673 )
...
* fix(agents): make global loop breaker reachable
Record loop-detector vetoes as typed no-progress outcomes so repeated blocked calls continue the existing streak without colliding with plugin or approval denials. Extract streak accounting into its own owner module and keep completed veto records out of argument reconciliation.\n\nFixes #109435 .
* test: harden isolated project routing
Route registry-sensitive UI tests through the isolated project for both focused and broad runs, centralize the isolated file list, and register the Codex prewarm test in the full extension shard.
* test(qa): prove global loop breaker runtime
Drive 31 identical read attempts through the real QA Gateway agent loop and verify the typed veto streak reaches the global circuit breaker before the turn returns a final marker.
* test: keep isolated UI files out of shared runs
Always exclude registry-sensitive files from the shared UI project and reject broad watch targets that would span shared and isolated projects.
2026-07-27 16:02:28 -04:00
Peter Steinberger
277e887c3a
fix(release): validate frozen runtime pair evidence ( #114707 )
...
* fix(release): validate frozen runtime pair evidence
* fix(release): pin frozen runtime gap identities
* style(release): satisfy frozen validator lint
* fix(ci): repair release blocker checks
2026-07-27 15:49:42 -04:00
Peter Steinberger
3dc3370d9e
fix(copilot): keep tool transcript groups structurally complete ( #114403 )
...
* refactor(copilot): make SQLite own transcripts
* fix(copilot): harden transcript event projection
* test(copilot): tighten transcript journal types
* fix(copilot): retain unmatched usage metadata
* refactor(copilot): commit tool groups atomically
* fix(copilot): break journal bridge import cycle
* fix(copilot): preserve grouped transcript replay
* test(copilot): cover opaque replay state
* fix(copilot): invalidate lossy transcript replay
* fix(copilot): guard transcript rewrite topology
* fix(copilot): drain transcript finalization
* fix(copilot): preserve resumed session history
* fix(copilot): dedupe replayed transcript snapshots
* fix(copilot): isolate transcript write hooks
* fix(copilot): track staged transcript identities
* fix(copilot): isolate ephemeral transcript events
* fix(copilot): coalesce assistant snapshots
* fix(copilot): invalidate unprojected SDK context
* fix(copilot): guard resumed transcript replay
* fix(plugin-sdk): expose strict transcript append
* fix(copilot): persist journal provenance safely
* fix(copilot): separate live and durable deltas
* fix(copilot): require durable projection ownership
* fix(copilot): preserve strict append typing
* fix(copilot): gate deferred session deletion
* fix(copilot): preserve transcript replay identity
* fix(copilot): retain cited replay history
* fix(copilot): require complete replay provenance
* fix(copilot): reject ambiguous assistant snapshots
* fix(copilot): return latest assistant snapshot
* chore(copilot): align transcript lint gates
* test(lint): cover Copilot line budgets
* test(ci): dedupe Codex prewarm shard
2026-07-27 15:42:00 -04:00
Peter Steinberger
6353412ace
fix(agents): keep reply-path and run-contract tools visible under tool search ( #114664 )
...
* fix(agents): keep reply-path and run-contract tools visible under tool search
* test(agents): refresh prompt snapshots for direct-only contract tools
* fix(ci): register prewarm test in codex attempt-extra shard
2026-07-27 15:00:38 -04:00
Peter Steinberger
f85a458a45
refactor(mobile): consolidate native gateway and voice lifecycles ( #114671 )
...
* refactor(mobile): consolidate native lifecycle ownership
* fix(ci): cover Codex prewarm and chat lifecycle proof
2026-07-27 14:52:02 -04:00
Peter Steinberger
e2fbd3b1ed
fix(tui): prevent wrapped terminal stress-test failures ( #114672 )
...
* fix(tui): stabilize wrapped terminal stress tests
* fix(ci): cover Codex prewarm in full-suite shard
2026-07-27 14:34:43 -04:00
Peter Steinberger
2b11203eb3
fix(cli): keep config file queries fast and read-only ( #114660 )
2026-07-27 13:56:00 -04:00
Peter Steinberger
8d2e111053
fix(mac): stop Settings crashing on packaged SwiftPM resources ( #114648 )
...
* fix(mac): repair packaged SwiftPM resources
* chore(mac): keep release note in PR body
2026-07-27 13:42:01 -04:00
Peter Steinberger
1695854877
fix(qa): isolate Mantis candidate execution ( #114465 )
...
* fix(qa): allow restricted Mantis worktree traversal
* fix(qa): pin Mantis harness checkout revision
* fix(qa): isolate Mantis candidate execution
* fix(qa): harden Mantis teardown
2026-07-27 12:11:34 -04:00
Peter Steinberger
ee9bc9a502
fix: harden cron and Workboard scheduling under load ( #114564 )
...
* fix: harden cron and Workboard scheduling under load
* test: refresh cron pagination prompt snapshots
* test: verify Workboard stress and generated cron snapshots
* fix(workboard): reclaim expired cross-board worker capacity safely
* fix(workboard): keep reclaim interval private to lifecycle owner
* fix(ci): pin and verify reliable OpenGrep security scanner
* test: guard checksum-verified OpenGrep installation
2026-07-27 09:29:42 -04:00
Dallin Romney
2e0a1d3c37
fix(release): use trusted harness pnpm pin ( #114106 )
2026-07-27 21:01:10 +08:00
qingminlong
a01319b27f
fix: account for CJK text in compaction estimates (issue #103930 ) ( #114386 )
...
* fix: account for CJK text in compaction estimates
* fix: share CJK compaction estimator
* fix: format CJK compaction estimator
* fix: make CJK regexes lint-safe
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 08:51:44 -04:00
Peter Steinberger
8d6971ecc9
fix(test): prevent SQLite worker teardown crashes ( #114567 )
2026-07-27 08:34:01 -04:00
Peter Steinberger
dd77dd9acf
fix(release): keep bundled plugin package verification complete ( #114497 )
...
* perf(release): reuse bundled plugin package inventory
* fix(release): ignore inherited bundled plugin build filters
2026-07-27 08:25:52 -04:00
Peter Steinberger
187b604e50
fix(telegram): release validation stalls in isolated test runs ( #114532 )
...
* fix(telegram): isolate extension tests from shared state
* test(telegram): extract isolated bot fixtures
* test(telegram): restore harness dependency type
2026-07-27 07:45:02 -04:00
Peter Steinberger
de6b114639
fix(ui): keep first turns visible and block browser regressions ( #114498 )
...
* fix(ui): require new-session Chromium regression checks
* fix(ui): stabilize first-turn browser regression scenarios
* test(ui): keep browser regressions within lint boundaries
* test(ui): keep rejected sessions out of browser fixtures
2026-07-27 07:38:48 -04:00
Peter Steinberger
3f37731175
docs(agents): surface hidden tool capabilities in model-facing descriptions ( #114516 )
2026-07-27 07:20:25 -04:00
Peter Steinberger
c6b2ec28c8
refactor: mechanical dedup batch (protocol types, update-cli bridge, talk fallback) ( #114432 )
...
* refactor(onboarding): remove search setup barrel
* refactor(plugins): reuse detected package manifest
* test(update): replace global helper bridges
* refactor(talk): remove dead legacy response fallback
* refactor(protocol): derive root types from schema
The maintainer approved broadening the additive schema-backed type surface without a protocol version bump.
* fix(plugins): drop stale package path import
* test(protocol): type dynamic registry lookups
* docs(talk): explain canonical response boundary
* refactor(talk): enforce canonical response input
* fix(protocol): keep root type exports registry-free
* refactor(update): expose helpers through test facades
* fix(protocol): keep result types on leaf schema modules
2026-07-27 06:55:07 -04:00
Peter Steinberger
0f879595d4
test(vitest): route zod and undici through Bun-safe test resolutions ( #114520 )
2026-07-27 06:54:45 -04:00
Peter Steinberger
c1dab6a5e0
test: speed up measured CI hotspots ( #114367 )
...
* test: remove redundant followup goal integration
* test: cover CLI help table in process
* test: inject usage cost settle timing
* test: reuse rendered plugin SDK baseline
* test: reuse bundled provider registrations
* test: isolate startup quarantine mapping
* test: inject session patch auth metadata
* test: avoid CLI help catch shadowing
* test(cli): keep gateway dependencies internal
* test(auto-reply): stabilize cold followup setup
2026-07-27 06:25:56 -04:00
Peter Steinberger
9f5ba09a0d
fix(sessions): prevent lifecycle races and unsafe session management ( #114477 )
...
* fix(sessions): harden lifecycle, ownership, and subagent spawning
* test(agents): refresh session tool prompt snapshots
* fix(sessions): await rebuilding transcript projections
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 06:17:51 -04:00
Peter Steinberger
914bd1946a
fix(cli): isolate explicit profiles from inherited service state ( #114446 )
2026-07-27 04:59:20 -04:00
Peter Steinberger
95a1420d97
test(tooling): publish the gauntlet grandchild pid atomically ( #114418 )
...
fs.writeFileSync creates the pid file before its bytes land, so waiting on
existence could read it empty and parse NaN. Write to a temp path and
rename, so a reader sees either nothing or the complete pid.
2026-07-27 04:48:34 -04:00
Peter Steinberger
45bad50e26
fix(qa): harden Mantis Telegram proof harness ( #114429 )
...
* fix(qa): harden Mantis Telegram proof harness
* fix(qa): require explicit Mantis dispatch
2026-07-27 04:33:06 -04:00
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
067820f2d4
fix(release): detect missing bundled providers after npm install ( #114400 )
...
* fix(release): verify all installed bundled provider manifests
* test(release): seed all packaged bundled plugin fixtures
2026-07-27 04:29:47 -04:00
Peter Steinberger
669db2968f
refactor(agents): retire TOOLS.md into an AGENTS.md section with a doctor migration ( #113966 )
...
* fix(agents): stop retired attestation hashes from faking a vanished workspace
* feat(agents): migrate TOOLS.md content into the AGENTS.md tools section
* refactor(agents): drop TOOLS.md from the workspace bootstrap set
* refactor(policy): read tool policy entries from AGENTS.md
* docs: describe local tool notes as an AGENTS.md section
* test(codex): drop TOOLS.md developer-instruction coverage with the removed path
* test(agents): cover the TOOLS.md doctor migration behaviors
* refactor(doctor): satisfy TOOLS.md migration lint
* test(agents): split workspace attestation survival coverage
* refactor(codex): simplify workspace context basenames
* refactor(doctor): keep TOOLS.md migration helpers module-local
* docs: regenerate docs map
* fix(doctor): keep migration claims fresh
* fix(doctor): preserve nested tool notes
* refactor(doctor): split tools migration helpers
* refactor(doctor): limit TOOLS.md migration to workspace root
* style(doctor): keep migration under line limit
* fix(doctor): recover interrupted AGENTS publish
* docs(hooks): describe root-only TOOLS.md migration accurately
* fix(doctor): preserve migrated tool guidance visibility
* test(agents): regenerate prompt snapshots after rebase
* fix(policy): block evaluation while TOOLS.md is unmigrated
* fix(doctor): check merged bootstrap budget per agent
* fix(doctor): keep budget helper internal
* refactor(doctor): keep migration budget helpers to their consumers
2026-07-27 03:56:30 -04:00
Peter Steinberger
3c67fcc45d
fix(release): stabilize beta validation and completion ( #114396 )
...
* test(release): fix rebased validation gates
* test(migrate-hermes): use canonical auth store fixture
* test(secrets): reset runtime state before migration isolation
* test(secrets): reload singleton graph for migration isolation
* test(secrets): isolate auth migration state
* fix(release): return completed validation run
* docs: refresh docs map after forward-port
2026-07-27 03:42:00 -04:00
Peter Steinberger
3796a45911
fix(release): keep advisory summaries portable on macOS ( #114371 )
2026-07-27 02:38:11 -04:00
Peter Steinberger
0f68118176
fix(ci): run Testbox validation when draft PRs become ready ( #114372 )
2026-07-27 02:36:36 -04:00
Peter Steinberger
054495d16d
fix(ci): verify stale bugs before closure ( #114365 )
2026-07-27 02:25:15 -04:00
Peter Steinberger
fee6db765d
fix(openai): prevent onboarding from offering unavailable account models ( #114356 )
...
* fix(openai): keep account models and onboarding release proof authoritative
* fix(openai): document configured model catalog authority
2026-07-27 02:23:50 -04:00