Peter Steinberger
57f239fb5d
test(gateway): split observer bookkeeping coverage
2026-07-27 05:43:19 -04:00
Peter Steinberger
51f228f6fe
fix(ui): preserve agent-owned session navigation
...
Add agent ownership to observer digests, scope global observer delivery and reconciliation, and centralize application session selection across navigation and reconnects.
Co-authored-by: xbrxr03 <abrarhabib03@gmail.com >
2026-07-27 05:43:19 -04:00
Peter Steinberger
95bac0129d
fix(gateway): stop listing IDENTITY.md as a core file editor tab ( #114470 )
2026-07-27 05:34:44 -04:00
Peter Steinberger
84a4ff30d5
refactor(gateway): centralize parameter validation and shared helpers ( #114353 )
...
* refactor(gateway): centralize parameter validation
* refactor(outbound): centralize runtime scaffolding stripping
* refactor(usage): remove session cost forwarding layers
* refactor(gateway): share attachment failure logging
* refactor(gateway): centralize startup tracing helpers
* fix(usage): keep refresh result type internal
* fix(outbound): preserve visible whitespace around runtime context
2026-07-27 05:34:12 -04:00
WilShi
dafecc756a
fix(cli): surface deviceId in devices list table ( #114370 )
...
* fix(cli): surface deviceId in devices list table
* docs(changelog): add devices list deviceId fix (#114279 )
* fix(cli): keep paired device IDs copyable
Co-authored-by: WilShi <1638083992@qq.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 05:24:34 -04:00
Pavan Kumar Gondhi
db97a748f2
fix: block additional exec wrapper carriers ( #114132 )
2026-07-27 14:52:48 +05:30
Peter Steinberger
c7842b2713
test(plugins): refresh process-stable metadata explicitly ( #114469 )
2026-07-27 05:20:04 -04:00
Peter Steinberger
04376ccd43
docs(agents): make sessions tool archive/pin capabilities discoverable ( #114463 )
2026-07-27 05:15:20 -04:00
Peter Steinberger
4b9c922458
fix(agents): harden compact tool search and execution ( #114461 )
2026-07-27 05:13:41 -04:00
ooiuuii
f9be52b5f9
fix(cron): clear future orphan run markers ( #111743 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 05:09:00 -04:00
Peter Steinberger
b6c3ff1aa1
fix(providers): make Ollama and LM Studio onboarding reliable ( #114405 )
...
* fix(ollama): persist local auth only after model selection
* fix(ollama): preserve native max thinking effort
* fix(lmstudio): preserve model tool capabilities
* fix(lmstudio): preserve configured model compatibility
* test(ollama): prove isolated onboarding and persisted gateway turns
* fix(ollama): fail closed on unresolved secret references
* fix(ollama): keep local onboarding model catalogs installed-only
* fix(onboard): preflight local models before reset
* fix(lmstudio): normalize unsupported tool schema patterns
* Revert "test(ollama): prove isolated onboarding and persisted gateway turns"
This reverts commit 1d333d4c67 .
* Revert "fix(ollama): preserve native max thinking effort"
This reverts commit 5d2600b098 .
* fix(lmstudio): preserve typed model compatibility
* test(lmstudio): await provider catalog augmentation
* test(ollama): narrow optional discovery auth fixture
* test(lmstudio): narrow reset validator registration
* fix(onboard): preserve verified local model lean defaults
* test(ollama): split non-interactive onboarding auth regressions
* fix(onboard): exclude hosted Ollama models from lean defaults
* test(onboard): prove local reset preflight order
2026-07-27 05:07:29 -04:00
Peter Steinberger
ed2c01308c
refactor(agents): consolidate lifecycle regression coverage ( #114425 )
2026-07-27 05:05:34 -04:00
Peter Steinberger
faafafb875
fix(cron): carry bounded current conversation context ( #114455 )
2026-07-27 05:03:34 -04:00
Peter Steinberger
78d7a8489c
refactor(gateway): derive the agent core-files list from the canonical workspace set ( #114436 )
2026-07-27 05:02:57 -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
6b48140a53
fix(cron): completed jobs stay stuck behind slower batch runs ( #114441 )
...
* fix(cron): finalize completed jobs without blocking sibling runs
Co-authored-by: Eduardo Piva <efpiva@gmail.com >
* fix(cron): keep completion drain helpers private
---------
Co-authored-by: Eduardo Piva <efpiva@gmail.com >
2026-07-27 04:58:34 -04:00
Peter Steinberger
2d5dfe4063
refactor(config): consolidate session and recovery regression tests ( #114426 )
2026-07-27 04:56:14 -04:00
ClawSweeper
afb1b014e2
fix(ui): show background tasks per chat session ( #114433 )
...
* fix(ui): scope background tasks to chat sessions
* refactor(ui): privatize session agent helper
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 01:53:03 -07:00
Peter Steinberger
bc54710daf
fix: restore live Gateway model verification ( #114451 )
2026-07-27 04:50:52 -04:00
Peter Steinberger
ac6009eab1
fix(tui): keep shared sessions live and bound stream state ( #114443 )
...
Fix cross-client terminal history synchronization without letting stale snapshots erase in-flight responses. Bound orphaned stream assembly, preserve session and agent ownership, and cover real Gateway delivery, persistence races, reconnects, and stress bursts.
Closes #38829 .
Credits prior issue investigation in #96252 and bounded-stream work in #109492 .
Co-authored-by: Harjoth Khara <48686985+harjothkhara@users.noreply.github.com >
Co-authored-by: Wynne668 <290981215+ZengWen-DT@users.noreply.github.com >
2026-07-27 04:39:42 -04:00
Peter Steinberger
4029070c3d
refactor(gateway): consolidate chat voice and reload test fixtures ( #114420 )
2026-07-27 04:38:00 -04:00
Peter Steinberger
2fa5281b14
fix(cron): bind jobs to durable session ( #114421 )
2026-07-27 04:34:02 -04:00
Peter Steinberger
4aa2ab2b25
perf(gateway): fold session touched-files incrementally via transcript delta ( #114401 )
...
* perf(gateway): fold session touched-files incrementally via transcript delta
* refactor(gateway): keep session touched-files fold on the canonical sqlite path
* test(gateway): split session files transcript-fold coverage
* test(gateway): drop unused session-files test-support exports
2026-07-27 04:32:57 -04:00
Peter Steinberger
9b171190f2
perf(sessions): cache branch summaries behind a transcript watermark ( #114412 )
2026-07-27 04:24:48 -04:00
Dallin Romney
ec391edea7
fix: clarify unstored exec approval defaults ( #114417 )
2026-07-27 16:07:11 +08: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
3b519cecb8
refactor(plugins): consolidate security and install test fixtures ( #114410 )
2026-07-27 03:52:37 -04:00
Peter Steinberger
08b1ff73e2
refactor(channels): fix account resolution and setup isolation ( #114395 )
...
* refactor(channels): fix account resolution and setup isolation
* fix(channels): keep account resolvers safely destructurable
2026-07-27 03:49:37 -04:00
Peter Steinberger
e9990b818a
feat(cli): add models auth logout ( #114407 )
2026-07-27 03:48:27 -04:00
Peter Steinberger
498a2caaf2
fix(models): keep dynamic model lists consistent across CLI and Gateway ( #114393 )
...
* fix(models): unify prepared catalogs and safe migration
* refactor(models): remove obsolete prepared catalog paths
2026-07-27 03:46:56 -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
Yuval Dinodia
0017566618
fix(acp): keep ACP turns alive when a backend rejects the requested thinking level ( #113935 )
...
* fix(acp): keep ACP turns alive when a backend rejects the requested thinking level
ACP sessions carrying a thinking level the backend cannot express died before
their first turn. Pre-turn control application forwarded the persisted thinking
option to the backend-advertised effort key, and a rejected value aborted the
whole turn with ACP_TURN_FAILED.
The skip path for thinking config rejections only matched the
ACP_BACKEND_UNSUPPORTED_CONTROL code, which OpenClaw mints for keys a backend
does not advertise. Backends that advertise the key but reject the value answer
with a JSON-RPC error instead, so the skip never fired and the optional control
became fatal. Thinking rejections now match the same rejection signals the
sibling timeout control already tolerates, including invalid-value answers.
Required controls and genuine runtime failures still fail the turn.
* fix(acp): narrow thinking rejection fallback
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 03:25:43 -04:00
Peter Steinberger
97467fe73b
refactor(gateway): consolidate RPC test scenarios ( #114404 )
2026-07-27 03:25:22 -04:00
Peter Steinberger
0cc0a100ee
refactor(cron): split oversized modules, retire max-lines suppressions, behavior-name regression suites ( #114391 )
...
* refactor(cron): split oversized modules
* test(cron): consolidate regression suites
* refactor(cron): keep delivery outbound loader module-private
2026-07-27 03:22:51 -04:00
Peter Steinberger
eec2c0cc26
refactor(providers): unify lifecycle-safe manifest registration ( #114381 )
...
* refactor(providers): canonicalize manifest-driven registration
* fix(zai): eliminate type-only SDK import side effects
2026-07-27 03:20:02 -04:00
Fede Kamelhar
cc027149e5
security fix(agents): close symlink-then-.. workspace boundary bypass in assertSandboxPath ( #113405 )
...
* fix(agents): close symlink-then-.. workspace boundary bypass in assertSandboxPath
resolveSandboxPath builds on path.resolve, which collapses ".." lexically
before any symlink is resolved. When a "<symlink>/.." sequence appears, the
lexical collapse lands on a harmless in-root path while the OS resolves the
same raw string (symlink first, then "..") to a location outside the
workspace, so assertSandboxPath approved inputs whose real resolution escaped
the boundary.
Add assertRawParentWithinRoot: it resolves the raw (non-collapsed) parent
chain via the OS realpath (fs.realpath.native; the JS realpath and
path.resolve both pre-collapse "..") and asserts it stays inside the
workspace root. It runs after assertNoPathAliasEscape so that guard's more
specific messages still win for cases it already catches, adding coverage only
for the residual gap it never sees.
Not currently reachable through shipped tools (read/write/edit route I/O
through fs-safe Root, which opens its own collapsed path; other callers use
the returned .resolved) -- this hardens the validator so the boundary no
longer depends on caller discipline. Regression test included.
* fix(agents): simplify raw sandbox path guard
* fix(agents): preserve symlinked sandbox roots
* fix(agents): validate raw final path aliases
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 03:15:59 -04:00
Peter Steinberger
3a4f337802
fix(gateway): connect first-boot loopback agents after readiness ( #114380 )
...
* fix(gateway): pair local CLI before runtime-token readiness
* docs(gateway): explain first-boot loopback CLI auth
* fix(gateway): keep startup pairing result internal
* chore(gateway): leave release note to release process
2026-07-27 03:15:12 -04:00
Peter Steinberger
7ad7cf8b0f
refactor(sessions): unify canonical SQLite lifecycle and transcript projection ( #114369 )
...
* refactor(sessions): unify canonical SQLite lifecycle and transcript projection
* fix(sessions): ratchet eliminated transcript accessor debt
2026-07-27 02:59:08 -04:00
Peter Steinberger
b34c19632f
refactor(daemon): split Windows task scheduler integration ( #113783 )
...
* refactor(daemon): split Windows task scheduler integration
* refactor(daemon): keep split helpers private
* refactor(daemon): remove superseded schtasks script module
2026-07-27 02:55:23 -04:00
Pavan Kumar Gondhi
33f44caa5d
fix: restrict QQBot quoted context [AI] ( #114136 )
...
* fix: restrict qqbot quoted context
* fix: narrow qqbot bot quote exemption
* test: use valid qqbot ingress reasons
* fix: honor narrowed qqbot open dm quotes
* fix: honor narrowed qqbot open group quotes
* test: use valid qqbot blocked ingress decisions
* fix: honor qqbot quote visibility mode
* docs: mention qqbot context visibility
* fix: validate qqbot context visibility config
* fix: hide denied qqbot quote sender
* test: avoid unbound qqbot access mock
* test: allow auth migration isolation to finish
* Revert "test: allow auth migration isolation to finish"
This reverts commit f2b9a4f5e9 .
2026-07-27 12:23:21 +05:30
Peter Steinberger
dda4883a4c
fix(auto-reply): prevent duplicate rewritten-command replies ( #114379 )
...
* fix(auto-reply): dedupe settled block finals
* chore: leave release note to release flow
2026-07-27 02:49:23 -04:00
Pavan Kumar Gondhi
af7b0708aa
fix: block unsafe workspace dotenv controls [AI] ( #114133 )
...
* fix: block unsafe workspace dotenv controls
* fix: narrow workspace dotenv control blocking
* fix: narrow dotenv token matching
* fix: scope dotenv access control keys
* fix: block bedrock bearer dotenv key
* fix: block bedrock credential dotenv keys
* test: split dotenv blocklist coverage
* fix: block aws sdk dotenv controls
* fix: block aws credential provider dotenv controls
* fix: block aws credential metadata dotenv controls
2026-07-27 12:15:31 +05:30
Peter Steinberger
a731397ea1
refactor: unify doctor repairs and configure setup ( #114375 )
2026-07-27 02:42:09 -04:00
Peter Steinberger
2242b968b3
fix(tui): prevent duplicate session rollover after stale terminal redraw ( #114373 )
...
* test(tui): make real session rollover deterministic
* test(tui): satisfy typed deferred lint
2026-07-27 02:40:43 -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
Peter Steinberger
604f379203
perf: collapse board.get store reads ( #114363 )
2026-07-27 02:21:12 -04:00
Peter Steinberger
390f46d042
fix(agents): preserve fallback route provenance ( #114360 )
...
Co-authored-by: 1052326311 <65798732+1052326311@users.noreply.github.com >
2026-07-27 02:20:56 -04:00
Peter Steinberger
2ce0362f12
perf(gateway): stabilize parallel channel status probes ( #114362 )
2026-07-27 02:15:56 -04:00
Peter Steinberger
8ad5139d7c
refactor(tests): consolidate plugin update fixtures and version cases ( #114344 )
2026-07-27 02:15:49 -04:00
Peter Steinberger
7b71d5608e
perf(gateway): reuse session catalog entry snapshots per request ( #114358 )
...
* perf(gateway): reuse session catalog entry snapshots
* chore(gateway): satisfy knip and typed-test lanes for catalog snapshot
2026-07-27 02:14:11 -04:00