Peter Steinberger
b5b17c654b
fix: keep Workboard visible in the sidebar ( #125473 )
...
* fix(ui): keep workboard in sidebar navigation
* test(ui): align workboard navigation ownership
* fix(ui): preserve saved workboard sidebar slots
* test(ui): shrink assertion safety baseline
* fix(plugins): bind native routes to bundled owners
* refactor(plugins): isolate native route policy
2026-08-17 18:44:39 -07:00
Peter Steinberger
1ca4103fe9
fix(voice-call): expose realtime/streaming stream paths through tailscale serve/funnel ( #125468 )
...
* fix(voice-call): expose realtime/streaming stream paths through tailscale serve/funnel
Tailscale serve/funnel now auto-exposes the realtime and streaming WebSocket stream paths when those audio modes are enabled; previously Twilio <Connect><Stream> could not reach wss://<ts-host><streamPath> and realtime calls dropped after ~1s with no log.
Also: CLI voicecall expose mounts/clears stream paths symmetrically, partial tailscale mounts roll back on failure, and a warning now fires when a call's stream WebSocket never arrives within the token TTL. Reported/observed live by Peter Steinberger.
* fix(voice-call): make tailscale stream exposure atomic
Preserve configured public Tailscale prefixes when mapping realtime and streaming routes, and roll back the full route set when any mount fails. The CLI now uses the same transactional setup path and reports failure instead of accepting a partial exposure.
* fix(voice-call): expose Twilio's configured streaming path
Keep realtime routes under the public webhook prefix they advertise, while mounting streaming.streamPath exactly as Twilio emits it. This preserves the canonical public-to-local route list without expanding the provider API outside the scoped repair.
2026-08-17 18:10:45 -07:00
Peter Steinberger
720da745d9
fix(voice-call): keep realtime calls alive through brief stream reconnects ( #125469 )
...
* fix(voice-call): grace realtime stream disconnects
Share reconnect grace by CallSid and stream ID across classic and realtime streams while cleaning realtime bridge resources immediately.
Log terminal call reasons and document Twilio inbound voice and status callback setup.
* test(voice-call): align reconnect grace after rebase
Preserve the newly landed realtime generation and inactivity coverage while updating its terminal expectations for shared delayed finalization.
Remove the redundant replacement cross-product case so the lifecycle suite remains below the max-lines limit.
2026-08-17 17:51:46 -07:00
Peter Steinberger
244712f69a
fix(voice-call): tear down realtime calls on stream close and media inactivity ( #125463 )
...
Realtime call teardown previously depended on an object-identity guard
that silently skipped ending the call record when bridge instances were
replaced, and had no transport-liveness backstop: a WS close that never
propagated left an answered call running forever. Bindings are now
socket-bound with current-generation terminal ownership, predecessor
audio is retired on successor admission (the overlapping-voices bug),
a 30s media-inactivity watchdog with 2s grace ends calls whose
transport dies silently, and every realtime call end is logged with
its cause.
2026-08-17 17:17:47 -07:00
Peter Steinberger
a996ea25d9
fix(update): support npm before lifecycle allowlists ( #125452 )
2026-08-17 17:01:23 -07:00
Peter Steinberger
2fc85bdc1b
refactor(workers): make worker turns node-only ( #125384 )
...
* refactor(workers): bind placement modes to transports
* refactor(workers): split provider reconciliation
* Revert "refactor(workers): split provider reconciliation"
This reverts commit 0a1f97399b23eca81e99af45dd9ea616e266de54.
* refactor(workers): split lifecycle options
* test(workers): align SSH fixture with remote exec
* refactor(workers): encode one placement mode
* fix(workers): fence persisted transport mismatches
* style(workers): keep persisted lease note concise
* test(workers): declare node access fixture modes
* test(agents): match exec notifications by receipt
2026-08-17 15:46:59 -07:00
Peter Steinberger
7f3b65e783
fix(plugins): expose background service failures in health ( #125366 )
...
* fix(plugins): surface service runtime failures
* chore: leave changelog to release tooling
2026-08-17 12:18:50 -07:00
Peter Steinberger
45e6784338
feat(gateway): run disposable cloud workers through node transport ( #125288 )
...
* feat(gateway): converge cloud workers onto nodes
* fix(gateway): honor public URL for cloud enrollment
* fix(crabbox): execute cloud bootstrap package binary
* fix(gateway): bind cloud nodes in pairing transaction
* fix(crabbox): prefer exact installed cloud bootstrap
* fix(gateway): complete cloud node bootstrap
* fix(gateway): enforce cloud worker capability boundaries
* fix(gateway): complete cloud node migration
* fix(gateway): preserve paired node roles on teardown
2026-08-17 11:49:06 -07:00
Peter Steinberger
7170a6231a
feat(agents): unify agent status into a durable progress_card ( #125125 )
...
* feat(agents): unify agent status into a durable progress_card
Replace the write-only update_plan to-do tool and the fragmented plan
rendering with one durable status artifact per session: progress_card
({plan?, markdown?}, replace-on-write, 8 KiB markdown / 50-step caps).
Cards persist in a lazy-additive session_progress_cards table in the
per-agent DB (no schema-version bump), broadcast progressCard.changed,
and render from the store with exactly one live placement per view
(session rail when visible, else the composer-adjacent bar); transcripts
collapse to one-line receipts, and the sidebar hovercard shows other
sessions' cards inline (markdown + <progress>, DOMPurify allowlist, no
iframes). The three stream-derived plan renderers and their dedup
heuristics are deleted.
Codex runs disable the native plan tool per thread
(tools.update_plan.enabled=false) and receive progress_card via the
dynamic-tool bridge; compaction restore now reinjects the card (steps +
bounded markdown). Card writes still emit the legacy plan stream event so
native apps and channels keep working until their per-platform
migrations. Policy names map update_plan -> progress_card; the shipped
tools.updatePlan=false kill switch is honored.
Net -277 production LOC; -480 test LOC.
* test(agents): regenerate Codex prompt snapshots for update_plan thread-config disable
* chore(protocol): allowlist progressCard.changed for native apps pending card migration
* fix(ci): repair progress card integration checks
* fix(codex): canonicalize native progress cards
* test(gateway): reconcile progress card method order
* test(codex): stabilize native approval fixture
2026-08-17 09:44:04 -07:00
Ayaan Zaidi
d90dcc2111
feat(plugin-sdk): export saveMediaSource from media-store ( #125278 )
...
Plugins holding a remote URL had no non-deprecated Plugin SDK path to turn it into managed media; saveMediaSource was only reachable through the deprecated media-runtime barrel while docs pointed at media-store. Re-export it from the focused subpath and move the bundled qa-channel plugin off the deprecated barrel. Maintainer decision: full saveMediaSource (local path + HTTP(S)) is the supported media-store contract.
Fixes #125259
2026-08-17 12:54:52 +00:00
Peter Steinberger
916932b007
fix(agents): standardize image inspection as view_image ( #125024 )
...
* chore: refresh CI after main fix
* fix(agents): standardize image inspection as view_image
* fix(agents): preserve view_image activity display
* fix(agents): satisfy view_image display gates
* fix(ui): snapshot cloud worker draft before save
* perf(ui): compact fallback tool catalog
* fix(agents): preserve view_image upgrade boundaries
* chore(ui): refresh historical image display snapshot
2026-08-17 03:01:12 -07:00
Peter Steinberger
2b55b55b72
feat(workboard): run attached automations after linked sessions finish ( #125170 )
...
* feat(workboard): nudge attached automations on session events
* fix(workboard): share automation nudge lifecycle state
* fix(workboard): satisfy nudge type guards
* fix(cron): add enabled-only immediate runs
2026-08-17 02:29:26 -07:00
Peter Steinberger
05bbd48c51
docs(install): clarify lifecycle script trust ( #124727 )
...
* docs(install): approve OpenClaw lifecycle scripts
Amp-Thread-ID: https://ampcode.com/threads/T-01a00ae0-190d-718b-8a76-b75f3e8d1fae
* fix(update): bind npm lifecycle policy to install owner
Amp-Thread-ID: https://ampcode.com/threads/T-01a00ae0-190d-718b-8a76-b75f3e8d1fae
* fix(update): gate npm lifecycle policy before mutation
* test(update): cover npm lifecycle ownership
* fix(update): defer backup cleanup until package preflight passes
Amp-Thread-ID: https://ampcode.com/threads/T-01a00ae0-190d-718b-8a76-b75f3e8d1fae
* fix(update): preflight npm policy before service stop
Amp-Thread-ID: https://ampcode.com/threads/T-01a00ae0-190d-718b-8a76-b75f3e8d1fae
* docs(install): avoid unsupported lifecycle claim
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-17 01:00:17 -07:00
Peter Steinberger
23ea04a375
refactor(media): remove orphan runtime facades ( #125121 )
2026-08-17 00:42:33 -07:00
Peter Steinberger
0e3a3aa203
refactor: finish canonicalization stragglers ( #125056 )
...
* refactor: finish canonicalization stragglers
* chore: remove release-owned changelog entry
* refactor: narrow SecretRef SDK import
2026-08-17 00:09:29 -07:00
Peter Steinberger
2915e563d6
feat(workboard): show full boards on session dashboards ( #125094 )
...
* feat(workboard): full-board dashboard widget
Adds a third trusted plugin widget kind, workboard:board, rendering the
complete Kanban board (all columns, live plugin.workboard.changed
refresh) inside a session dashboard. Props {boardId} scope it to one
board; without it the widget shows every board, matching workboard:mini
semantics. Card rendering reuses the workboard page renderColumn with an
explicit surface option so page and widget cannot drift; the shared
board filter moved to ui/src/lib/workboard/board-filter.ts. Mutations
follow the connection's canMutate; read-only connections get a
view-only board.
Proof: pnpm test ui/src/lib/board ui/src/pages/workboard
ui/src/lib/workboard extensions/workboard (9,494 passed), i18n baseline
green, autoreview clean (codex/gpt-5.6-sol). tsgo core/ui/extensions
green locally; remote check:changed blocked by Daytona capacity and the
tsgo:core Daytona exit reproduced locally as a heavy-check lock race,
passing on retry.
* test(ui): seed workboard fixtures in the mocked dev server
* fix(ci): register workboard proof capture script
2026-08-16 23:19:30 -07:00
Peter Steinberger
f9b1ccc4fa
refactor(plugin-sdk): discriminate delivery and exec results ( #124979 )
...
* refactor(plugin-sdk): discriminate delivery and exec results
* test(plugin-sdk): update delivery target expectations
* fix(outbound): preserve canonical delivery targets
* fix(irc): normalize message delivery target
2026-08-16 22:55:41 -07:00
Peter Steinberger
c4eb9078d9
feat(workboard): link boards to owning automations ( #125076 )
...
* feat(workboard): reference the automation job that owns a board's prompt
Boards can now record automationJobId, linking a board to the cron
automation whose prompt/model/schedule categorize its cards. The cron
job remains the single owner of that configuration; workboard stores
only the reference. The board toolbar shows an Automation chip linking
to the cron page when set. Deleting a board never deletes the job.
Proof: pnpm test extensions/workboard packages/workboard-contract
ui/src/pages/workboard ui/src/lib/workboard (9,492 passed), autoreview
clean (codex/gpt-5.6-sol). check:changed blocked by remote capacity
(Blacksmith down, Daytona lease cap); local fallback lanes green except
a parent-branch lint finding fixed on that branch.
* fix(ui): describe workboard automation destination
2026-08-16 22:52:26 -07:00
Peter Steinberger
d0b1b6d0ec
fix(workboard): keep cards synced when dashboard is closed ( #125023 )
...
* fix(workboard): own linked-session lifecycle sync gateway-side
* test(workboard): align lifecycle proof with gateway ownership
2026-08-16 22:02:43 -07:00
Peter Steinberger
b555a32ee9
fix(openrouter): keep OAuth loopback open after invalid callbacks ( #124922 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-01a00ae0-190d-718b-8a76-b75f3e8d1fae
Co-authored-by: Amp <amp@ampcode.com >
2026-08-16 20:11:04 -07:00
Peter Steinberger
13872f4338
fix: plugin tools disappear from Codex and restricted profiles ( #124947 )
...
* fix(memory): make standing intents reachable
* fix(agents): dedupe macOS read path variants
* docs(plugins): document profile tool metadata
* test(codex): complete prepared runtime fixtures
* fix(agents): preserve prepared tool boundaries
2026-08-16 19:38:07 -07:00
Peter Steinberger
78beccf053
feat: add cloud worker profiles and machine selection ( #124864 )
...
* feat(workers): add per-dispatch machine classes
* feat(ui): add cloud worker machine picker
2026-08-16 18:37:00 -07:00
Peter Steinberger
bda2d54dcf
docs(codex): clarify loop relay behavior ( #124918 )
2026-08-16 16:57:43 -07:00
Peter Steinberger
33f3b72a19
refactor(plugin-sdk): extract stream and SecretRef primitives ( #124835 )
2026-08-16 14:30:11 -07:00
Peter Steinberger
2523943ef1
feat(codex): name additional session-catalog homes ( #124807 )
2026-08-16 13:30:49 -07:00
Peter Steinberger
4d4ee7bc86
refactor(plugin-sdk): consolidate session catalog families ( #124801 )
2026-08-16 13:25:11 -07:00
Peter Steinberger
4667d188f2
fix(codex): honor session node exec host ( #124777 )
2026-08-16 12:41:48 -07:00
Peter Steinberger
6cc72f9b3d
fix: honor context caps on Codex-routed models ( #124735 )
...
* fix(codex): forward authored context caps
* test(codex): keep binding fixtures uncapped
* fix(agent-harness): separate authored context cap
2026-08-16 12:31:20 -07:00
WhatsSkiLL
08786d32b2
feat(codex): show sessions from additional homes ( #124660 )
...
* feat(codex): register additional session homes
* fix(codex): preserve automatic session homes
* docs(codex): explain automatic home discovery around sessionCatalog.homes
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-16 12:14:10 -07:00
Peter Steinberger
5168b5d4ab
feat(voice-call): sessionScope "main" routes calls into the agent main session ( #124708 )
...
* feat(voice-call): add sessionScope "main" for main-session call routing
Inbound and outbound calls can now share the configured agent's main
session instead of a dedicated voice session. The new scope resolves
through the existing explicit-key canonicalization path, honoring core
session.mainKey and global-scope aliasing. The inbound webhook path now
forwards coreSession like every other resolver call site.
* style: format events.test.ts
* test(voice-call): split events.test.ts under the max-lines cap
2026-08-16 11:47:47 -07:00
Peter Steinberger
aeff737da9
fix(agents): prevent invalid names from targeting the default agent ( #124670 )
...
* fix(agents): reject unrepresentable agent ids
* refactor(system-agent): split model selection setup
* chore: shrink assertion safety baseline
* docs: record strict agent id validation proof
* style: format strict agent id report
* chore: drop stray unrelated report artifact
* chore: restore REPORT.md to main state
2026-08-16 10:37:06 -07:00
Peter Steinberger
63401b730b
fix: keep doctor security conditions as single findings ( #124666 )
...
* fix(doctor): record security finding severity
* refactor(security): keep audit severity internal
* fix(security): preserve channel finding severity
2026-08-16 10:24:40 -07:00
Peter Steinberger
715c379fd9
refactor(config): consolidate context budget to one per-model knob ( #124665 )
...
* refactor(config): consolidate context budget settings
* test(config): type legacy context fixtures
* test(config): align context budget fixtures
* fix(status): honor runtime context discovery
* docs(config): clarify context budget fallbacks
* fix(ci): resolve context budget lint failures
* test(ci): align context budget shard fixtures
* fix(models): preserve catalog context metadata
* fix(config): surface context migration diagnostics
* test(plugin-sdk): keep live catalog coverage focused
2026-08-16 10:05:01 -07:00
Marvinthebored
2404d41de2
fix(codex): preserve delegation when image generation is denied ( #124598 )
...
Forward exact audited tool denies into agent harnesses so Codex can disable native image generation without dropping delegation. Fail closed when managed policy forces image generation and rotate retained threads when effective native config changes.
Co-authored-by: Marvinthebored <262704729+Marvinthebored@users.noreply.github.com >
2026-08-16 21:42:38 +05:30
Jason (Json)
eb174bcaff
fix(codex): candidate checks reject a mismatched app-server ( #124137 )
...
* fix(codex): validate managed app-server candidates
* docs(codex): document managed binary preflight
* test(codex): review managed preflight execution
* docs(codex): document managed app-server check
* fix(pr): support macOS system Bash operation locks
* fix(codex): scope managed preflight to Codex agents
2026-08-16 09:27:12 -06:00
Peter Steinberger
ebd23631ae
perf(cli): build root help from plugin metadata ( #124562 )
2026-08-16 05:43:35 -07:00
Jason (Json)
bccbb8a0c7
fix(memory): make persistence promises receipt-backed ( #120989 )
...
* fix: require memory persistence receipts
* fix(memory): bind persistence failures to tool owners
* fix(memory): preserve Codex persistence ownership
* test(plugin-sdk): account for owner metadata export
* test(codex): split owner timeout regression
* fix(memory): cover durable deletes across runtimes
* test(codex): type dynamic mutation fixtures
* fix(agents): fail closed ambiguous side-effect owners
* fix(memory): fail zero-row delete receipts
2026-08-16 00:50:10 -06:00
Peter Steinberger
6aa27d6ecd
refactor: retire August compat windows (embedding API, pi aliases, target parser, spawning hook, setup exports, WhatsApp inbound aliases) ( #124416 )
...
* refactor(plugin-sdk): retire embedded Pi aliases
* refactor(channels): retire explicit target compatibility
* refactor(plugins): retire subagent spawning hook
* refactor(plugin-sdk): retire shipped channel setup exports
* refactor(whatsapp): retire inbound callback aliases
Proof: focused build and WhatsApp E2E green; broad WhatsApp suite 188/189 files green. extensions/whatsapp/src/monitor-inbox.policy.test.ts flakes only in the parallel batch and passes isolated (10/10).
* refactor(plugin-sdk): retire memory embedding registrar
Migrate every bundled provider and manifest to registerEmbeddingProvider and contracts.embeddingProviders. Preserve memory-specific batching, local-service acquisition, index identity, and auto-selection through the canonical generic registry adapter, then remove the parallel registrar, registry, diagnostics, contracts, tests, and docs.
* chore(plugin-sdk): tighten retired surface budgets
Pin the post-retirement public SDK surface to 144 entrypoints, 4,312 exports, 2,564 callable exports, and 1,133 deprecated exports; agent-harness-runtime now permits exactly nine deprecated exports.
2026-08-15 22:43:47 -07:00
Pavan Kumar Gondhi
8668aeb969
fix(discord): bind transcript capture to source account [AI] ( #118579 )
...
* fix(discord): bind transcript capture to source account
* style(agents): keep transcript tool wiring compact
* fix(transcripts): declare account binding channels
* fix(transcripts): report effective capture account
* fix(transcripts): enforce account lifecycle ownership
* fix(transcripts): preserve cross-surface control
* fix(copilot): preserve transcript channel context
* fix(transcripts): fail closed for legacy channel owners
* fix(transcripts): add trusted legacy recovery
* fix(transcripts): preserve auto-start cleanup ownership
* fix(transcripts): reject untrusted account starts
* fix(transcripts): keep persisted ownership authoritative
* fix(transcripts): harden legacy recovery
* fix(transcripts): preserve agent ownership boundary
* fix(transcripts): scope account binding to source channel
* fix(transcripts): preserve unattributed owner isolation
* fix(transcripts): own configured captures by account
* docs(plugins): clarify transcript auto-start ownership
* test(transcripts): cover account-less recovery
* docs(transcripts): scope legacy recovery by provider
* fix(discord): reuse eligible account ordering for transcripts
* test(discord): use neutral transcript account fixtures
* fix(transcripts): keep accountless recovery local
* fix(discord): resolve transcript accounts by voice capability
* fix(transcripts): bound account resolution failures
* fix(transcripts): bound account tool output
* fix(transcripts): honor unresolved provider accounts
* fix(transcripts): preserve binding when providers are missing
* fix(transcripts): fail closed on unknown binding provenance
* fix(transcripts): qualify account lifecycle capability
* fix(transcripts): normalize provable legacy owners
* fix(transcripts): bind scheduled capture to caller authority
* fix(transcripts): preserve scheduled caller identity tuple
* fix(transcripts): preserve channel-less scheduled authority
* fix(plugin-sdk): publish transcript provider types
* fix(transcripts): use exact lifecycle ownership tokens
* fix(transcripts): preserve local ownerless lifecycle access
* fix(transcripts): allow local configured capture control
* fix(transcripts): preserve scheduled caller channel
* fix(transcripts): retain named-agent legacy recovery
* fix(transcripts): deny unrelated remote channels
* fix(doctor): validate transcript owner inference
* fix(transcripts): restrict legacy remote recovery
* fix(ci): align transcript Doctor checks
* fix(transcripts): require Doctor-owned legacy metadata
* fix(transcripts): reject unowned remote capture starts
* fix(transcripts): reject unbound Discord lifecycle calls
* fix(transcripts): distinguish legacy owner rows
* test(discord): keep unavailable account fixture typed
* fix(transcripts): mark current imports for Doctor
* fix(transcripts): complete account ownership validation
* fix(discord): restore transcript package boundary
* fix(discord): preserve bundled transcript entry boundary
* docs(transcripts): clarify Discord auto-start account
* fix(transcripts): bind account-owned imports
* fix: preserve transcript and cron policy state
* fix(cron): preserve scheduled transcript authority
* fix(discord): keep legacy transcript rows local
* fix(transcripts): narrow account ownership boundary
* fix(transcripts): preserve trusted caller ownership
* fix(discord): enforce transcript source authorization
* fix(ci): bound Control UI gzip build variance
* test(qa): align transcript scenario contracts
* fix(agents): repair rebased caller context
* fix(discord): restore rebased account ownership
* test(discord): restore voice account fixtures
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-08-15 12:10:43 -07:00
Peter Steinberger
3109bc3b5d
fix(gateway): restart after prepared maintenance suspension ( #124157 )
...
* fix(gateway): hand off prepared suspension to restart
* chore: keep release changelog owner-managed
2026-08-15 04:53:38 -07:00
WhatsSkiLL
632581477f
fix(session-catalog): preserve explicit agent ownership across UI and CLI ( #123899 )
...
* fix(session-catalog): preserve explicit agent ownership across UI and CLI
* fix(session-catalog): repair owner routing regressions
* Fix-session-catalog-CI-checks
* test(ui): split chat catalog pane coverage
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* refactor(session-catalog): bind Codex homes per request
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* refactor(session-catalog): centralize owner resolution
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* fix(codex): resolve session fork against the adopted home
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
* refactor(ui): extract chat session discussion
* test(sessions): stabilize archive worker responsiveness check
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-15 04:47:28 -07:00
Gio Della-Libera
103e1a4cc9
fix(claws): recover lifecycle state safely ( #123254 )
...
* fix(claws): preserve runtime lifecycle state
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 34377cd6-beac-4e49-8ab0-22cfaf8b54a5
* fix(claws): harden lifecycle reconciliation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 34377cd6-beac-4e49-8ab0-22cfaf8b54a5
* fix(mcp): serialize ownership mutations
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 34377cd6-beac-4e49-8ab0-22cfaf8b54a5
* test(mcp): prove lifecycle lease ordering
* fix(claws): page cron recovery inventory
* fix(claws): fail closed on missing cron ownership
* refactor(claws): keep pending cron recovery unchanged
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: Gio Della-Libera <235387111+giodl73-repo@users.noreply.github.com >
Copilot-Session: 34377cd6-beac-4e49-8ab0-22cfaf8b54a5
2026-08-14 20:52:45 -07:00
Peter Steinberger
d7d059c7e6
perf(test): move direct import smoke to test fixtures ( #123923 )
2026-08-14 19:07:48 -07:00
Peter Steinberger
27bf9c2a74
docs: fix stale cua-computer section link on the Codex Computer Use page ( #123892 )
...
The Windows/Linux cross-reference still pointed at the pre-rename anchor
("experimental, via CUA Driver SDK"); the heading became "experimental,
direct SDK" in 19ace6830b , so the link landed at the top of the node
computer-use page instead of the fulfiller section.
2026-08-14 17:33:23 -07:00
Peter Steinberger
bd1814bede
fix(policy): require --agent for explicit workspaces ( #123880 )
...
* fix(policy): require explicit CLI agent owner
* chore(policy): leave release notes to release flow
2026-08-14 16:15:17 -07:00
Pavan Kumar Gondhi
d5e89de906
fix(synology-chat): deliver attachments without forwarding source URLs [AI] ( #119941 )
...
* fix(synology-chat): host outbound attachments
* fix(synology-chat): isolate hosted media routes
* fix(synology-chat): harden hosted media limits
* fix(synology-chat): inspect hosted media content
* fix(synology-chat): reject ambiguous media routes
* fix(synology-chat): retain indeterminate media capabilities
* fix(synology-chat): mask public callback URLs
* fix(synology-chat): align callback sensitivity metadata
* fix(synology-chat): reserve media capability query keys
* fix(synology-chat): release rejected staged media
* fix(synology-chat): preserve ambiguous media handoffs
* fix(synology-chat): scan complete active media preamble
* fix(synology-chat): report validated attachment readiness
* fix(synology-chat): bound public media capability probes
* fix(synology-chat): bound hosted media responses
* test(synology-chat): model response headers read-only
* fix(synology-chat): bound hosted media reads
* fix(synology-chat): bound hosted media delivery
* fix(synology-chat): retain media through active serves
* fix(plugin-sdk): lease hosted media readers atomically
* fix(synology-chat): close hosted media review gaps
* test(synology-chat): clean up hosted media state
* fix(system-agent): canonicalize sensitive config paths
* fix(system-agent): honor runtime config sensitivity hints
* fix(config): inherit sensitive metadata
* fix(synology-chat): close latest review findings
* test(system-agent): keep config recovery checks lint-clean
* fix(system-agent): redact structured config secrets
* fix(synology-chat): harden active-content sniffing
* fix(security): close hosted media review gaps
* fix(security): close remaining hosted media review findings
* fix(system-agent): narrow dynamic owner ids safely
* fix(system-agent): narrow dynamic channel ids safely
* test(channels): isolate hosted media proofs
* fix(security): close config and hosted media review gaps
* test(plugin-sdk): split outbound media retention coverage
* test(plugin-sdk): isolate capacity store fixtures
* test(system-agent): assert config secrecy invariant
2026-08-14 17:05:20 -05:00
Jesse Merhi
bf40269cb7
feat(security): require acknowledgement for policy warnings ( #116489 )
2026-08-15 03:58:45 +10:00
Peter Steinberger
8885be4756
fix(codex): refresh session meters after /codex compact ( #123640 )
...
* fix(codex): route compact through session pipeline
Route /codex compact through host-owned manual compaction so native completion and token snapshots update session meters, and report the terminal outcome to the user.
* test(codex): cover unavailable compact outcome
* fix(plugins): fence command compaction capability
Bind compactCurrent to one command invocation and captured session generation so retained or stale callbacks fail closed without running compaction.
* fix(plugins): lazy-load command session revalidation
Keep compaction session freshness checks at the auto-reply owner without pulling the session accessor into generic plugin command module initialization.
* fix(plugins): keep session revalidation lazy
Avoid loading the session accessor through generic plugin command initialization while preserving pre-compaction session-generation checks.
* fix(compaction): fence session lifecycle admission
Revalidate the exact session id and lifecycle revision immediately before native compaction and again before accounting so resets and rebinds fail closed across awaited work.
* fix(commands): fence plugin compaction authority
* fix(compaction): require accounting commit
* test(compaction): keep regression under lint cap
* fix(codex): preserve compact admission
* fix(codex): preserve compaction target identity
* fix(compaction): bind admitted target
* fix(compaction): fence accounting commit
2026-08-14 09:47:43 -07:00
Vito Cappello
f5c46de8ac
fix(compaction): allow Claude CLI sessions to compact without API keys ( #120496 )
...
* fix(compaction): route manual CLI compaction natively
* fix(compaction): harden native CLI control operations
* fix(compaction): honor Claude native completion signals
* chore(plugin-sdk): refresh API baseline
* test(compaction): assert native session binding
* fix(compaction): preserve control session reuse
* fix(plugin-sdk): preserve boolean compaction ownership
* fix(agents): preserve native compaction ownership
* fix(compaction): bypass model auth for native control
* test(compaction): isolate authless control fixture
* test(compaction): isolate auth bypass regression
* fix(compaction): bypass generic auth for native CLI control
* fix(compaction): preserve native rejection failover
* test(compaction): isolate native queue regressions
* test(compaction): prevent native auth mock leakage
* fix(cli): isolate control operations from skill env
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-08-14 09:30:15 -07:00
Peter Steinberger
f65a6f81de
feat(llama-cpp): raise default context size to 64K ( #123701 )
...
The managed llama-server default ctx-size was 8192, but the full OpenClaw
agent system prompt alone is ~31K tokens, so the first agent turn overflowed
the context window and forced immediate compaction (observed live on the Mac
app local-model onboarding). Raise the default to 65536 so a fresh local-model
install can run a real agent turn out of the box.
The default-download 16 GiB RAM floor already bounds weaker machines, and
Gemma 4 supports far more than 64K, so this only changes headroom, not the
offer gate. Docs updated to match.
2026-08-14 08:26:41 -07:00