Mariano
d346f2d9ce
acp: restore session context and controls ( #41425 )
...
Merged via squash.
Prepared head SHA: fcabdf7c31e33bbbd3ef82bdee92755eb0f62c82
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-03-09 22:17:19 +01:00
Mariano
e6e4169e82
acp: fail honestly in bridge mode ( #41424 )
...
Merged via squash.
Prepared head SHA: b5e6e13afe917f47e0bb303159430930591c0c87
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-03-09 22:01:30 +01:00
Mariano
1bc59cc09d
Gateway: tighten node pending drain semantics ( #41429 )
...
Merged via squash.
Prepared head SHA: 361c2eb5c84e3b532862d843536ca68b21336fb2
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-03-09 21:56:00 +01:00
Mariano
ef95975411
Gateway: add pending node work primitives ( #41409 )
...
Merged via squash.
Prepared head SHA: a6d7ca90d71a33c6d634a6396d1e7ae40545ea66
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-03-09 21:42:57 +01:00
zerone0x
5f90883ad3
fix(auth): reset cooldown error counters on expiry to prevent infinite escalation ( #41028 )
...
Merged via squash.
Prepared head SHA: 89bd83f09a141f68c0cd715a3652559ad04be7c6
Co-authored-by: zerone0x <39543393+zerone0x@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-03-09 23:40:11 +03:00
Robin Waslander
2b2e5e2038
fix(cron): do not misclassify empty/NO_REPLY as interim acknowledgement ( #41401 )
...
* fix(cron): do not misclassify empty/NO_REPLY as interim acknowledgement
When a cron task's agent returns NO_REPLY, the payload filter strips the
silent token, leaving an empty text string. isLikelyInterimCronMessage()
previously returned true for empty input, causing the cron runner to
inject a forced rerun prompt ('Your previous response was only an
acknowledgement...').
Change the empty-string branch to return false: empty text after payload
filtering means the agent deliberately chose silent completion, not that
it sent an interim 'on it' message.
Fixes #41246
* fix(cron): do not misclassify empty/NO_REPLY as interim acknowledgement
Fixes #41246 . (#41383 ) thanks @jackal092927.
---------
Co-authored-by: xaeon2026 <xaeon2026@gmail.com >
2026-03-09 21:16:28 +01:00
Mariano
0bcddb3d4f
iOS: reconnect gateway on foreground return ( #41384 )
...
Merged via squash.
Prepared head SHA: 0e2e0dcc36fb90e92342430198f82f9594c8caf3
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-03-09 21:12:23 +01:00
Vincent Koc
d86647d7db
Doctor: fix non-interactive cron repair gating ( #41386 )
2026-03-09 12:35:31 -07:00
Altay
87d939be79
Agents: add embedded error observations ( #41336 )
...
Merged via squash.
Prepared head SHA: 490004229862129ceb21939e382658714e23bd68
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-03-09 22:27:05 +03:00
Mariano
d4e59a3666
Cron: enforce cron-owned delivery contract ( #40998 )
...
Merged via squash.
Prepared head SHA: 5877389e33d5b3a518925b5793a6f6294cb3fb3d
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-03-09 20:12:37 +01:00
Vincent Koc
7b88249c9e
fix(telegram): bridge direct delivery to internal message:sent hooks ( #40185 )
...
* telegram: bridge direct delivery message hooks
* telegram: align sent hooks with command session
2026-03-09 11:21:19 -07:00
Vincent Koc
12702e11a5
plugins: harden global hook runner state ( #40184 )
2026-03-09 11:20:33 -07:00
Pejman Pour-Moezzi
14bbcad169
fix(acp): propagate setSessionMode gateway errors to client ( #41185 )
...
* fix(acp): propagate setSessionMode gateway errors to client
* fix: add changelog entry for ACP setSessionMode propagation (#41185 ) (thanks @pejmanjohn)
---------
Co-authored-by: Pejman Pour-Moezzi <481729+pejmanjohn@users.noreply.github.com >
Co-authored-by: Onur <onur@textcortex.com >
2026-03-09 17:50:38 +01:00
Pejman Pour-Moezzi
eab39c721b
fix(acp): map error states to end_turn instead of unconditional refusal ( #41187 )
...
* fix(acp): map error states to end_turn instead of unconditional refusal
* fix: map ACP error stop reason to end_turn (#41187 ) (thanks @pejmanjohn)
---------
Co-authored-by: Pejman Pour-Moezzi <481729+pejmanjohn@users.noreply.github.com >
Co-authored-by: Onur <onur@textcortex.com >
2026-03-09 17:37:33 +01:00
Radek Sienkiewicz
4815dc0603
Update CONTRIBUTING.md
2026-03-09 17:27:29 +01:00
Robin Waslander
2cce45962f
Add Robin Waslander to maintainers
2026-03-09 17:23:56 +01:00
Radek Sienkiewicz
258b7902a4
Update CONTRIBUTING.md
2026-03-09 17:13:16 +01:00
xaeon2026
425bd89b48
Allow ACP sessions.patch lineage fields on ACP session keys ( #40995 )
...
Merged via squash.
Prepared head SHA: c1191edc08618dec1826c57b75556c4e35ccccaf
Co-authored-by: xaeon2026 <264572156+xaeon2026@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-03-09 17:08:11 +01:00
Charles Dusek
54be30ef89
fix(agents): bound compaction retry wait and drain embedded runs on restart ( #40324 )
...
Merged via squash.
Prepared head SHA: cfd99562d686b21b9239d3d536c6f6aadc518138
Co-authored-by: cgdusek <38732970+cgdusek@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-03-09 08:27:29 -07:00
Daniel Reis
fbf5d56366
test(context-engine): add bundle chunk isolation tests for registry ( #40460 )
...
Merged via squash.
Prepared head SHA: 44622abfbc83120912060abb1059cbca8a20be83
Co-authored-by: dsantoreis <220753637+dsantoreis@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-03-09 08:15:35 -07:00
Joshua Lelon Mitchell
98ea71aca5
fix(swiftformat): exclude HostEnvSecurityPolicy.generated.swift from formatters ( #39969 )
2026-03-09 07:30:43 -07:00
opriz
51bae75120
fix(kimi-coding): fix kimi tool format: use native Anthropic tool schema instead of OpenAI … (openclaw#40008)
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: opriz <51957849+opriz@users.noreply.github.com >
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com >
2026-03-09 08:28:47 -05:00
Radek Sienkiewicz
f2f561fab1
fix(ui): preserve control-ui auth across refresh ( #40892 )
...
Merged via squash.
Prepared head SHA: f9b2375892485e91c838215b8880d54970179153
Co-authored-by: velvet-shark <126378+velvet-shark@users.noreply.github.com >
Co-authored-by: velvet-shark <126378+velvet-shark@users.noreply.github.com >
Reviewed-by: @velvet-shark
2026-03-09 12:50:47 +01:00
Peter Steinberger
f6d0712f50
build: sync plugin versions for 2026.3.9
2026-03-09 08:39:52 +00:00
Peter Steinberger
6c579d7842
fix: stabilize launchd paths and appcast secret scan
2026-03-09 08:37:37 +00:00
Peter Steinberger
f9706fde6a
build: bump unreleased version to 2026.3.9
2026-03-09 08:33:58 +00:00
Peter Steinberger
7217b97658
fix(onboard): avoid persisting talk fallback on fresh setup
2026-03-09 08:33:58 +00:00
Peter Steinberger
ce9e91fdfc
fix(launchd): harden macOS launchagent install permissions
2026-03-09 08:14:46 +00:00
Peter Steinberger
3caab9260c
test: narrow gateway loop signal harness
2026-03-09 07:42:15 +00:00
Peter Steinberger
d0847ee322
chore: prepare 2026.3.8 npm release
2026-03-09 07:37:50 +00:00
Peter Steinberger
1d3dde8d21
fix(update): re-enable launchd service before updater bootstrap
2026-03-09 07:27:11 +00:00
Peter Steinberger
cc0f30f5fb
test: fix windows runtime and restart loop harnesses
2026-03-09 07:22:23 +00:00
Peter Steinberger
250d3c949e
chore: update appcast for 2026.3.8-beta.1
2026-03-09 07:20:08 +00:00
Peter Steinberger
5fca4c0de0
chore: prepare 2026.3.8-beta.1 release
2026-03-09 07:09:37 +00:00
Peter Steinberger
66c581c64c
fix: normalize windows runtime shim executables
2026-03-09 07:01:42 +00:00
Peter Steinberger
912aa8744a
test: fix Windows fake runtime bin fixtures
2026-03-09 06:50:52 +00:00
Peter Steinberger
8d2d6db9ad
test: fix Node 24+ test runner and subagent registry mocks
2026-03-09 06:45:13 +00:00
Peter Steinberger
2d55ad05f3
docs: move 2026.3.8 entries back to unreleased
2026-03-09 06:34:53 +00:00
Peter Steinberger
9631f4665c
chore: refresh secrets baseline
2026-03-09 06:31:35 +00:00
Peter Steinberger
e2a1a4a3db
build: sync pnpm lockfile
2026-03-09 06:25:01 +00:00
Peter Steinberger
f82931ba8b
docs: reorder 2026.3.8 changelog by impact
2026-03-09 06:24:29 +00:00
Peter Steinberger
17599a8ea2
refactor: flatten supervisor marker hints
2026-03-09 06:19:30 +00:00
Peter Steinberger
e86b38f09d
refactor: split cron startup catch-up flow
2026-03-09 06:19:10 +00:00
Peter Steinberger
1d301f74a6
refactor: extract telegram polling session
2026-03-09 06:18:07 +00:00
Peter Steinberger
2e79d82198
build: update app deps except carbon
2026-03-09 06:09:33 +00:00
Peter Steinberger
96d17f3cb1
fix: stagger missed cron jobs on restart ( #18925 ) (thanks @rexlunae)
2026-03-09 06:07:43 +00:00
rexlunae
79853aca9c
fix(cron): stagger missed jobs on restart to prevent gateway overload
...
When the gateway restarts with many overdue cron jobs, they are now
executed with staggered delays to prevent overwhelming the gateway.
- Add missedJobStaggerMs config (default 5s between jobs)
- Add maxMissedJobsPerRestart limit (default 5 jobs immediately)
- Prioritize most overdue jobs by sorting by nextRunAtMs
- Reschedule deferred jobs to fire gradually via normal timer
Fixes #18892
2026-03-09 06:07:43 +00:00
Peter Steinberger
2d5e70f3e7
fix: abort telegram getupdates on shutdown ( #23950 ) (thanks @Gkinthecodeland)
2026-03-09 06:03:46 +00:00
George Kalogirou
6186f620d2
fix(telegram): use manual signal forwarding to avoid cross-realm AbortSignal
...
AbortSignal.any() fails in Node.js when signals come from different module
contexts (grammY's internal signal vs local AbortController), producing:
"The signals[0] argument must be an instance of AbortSignal. Received an
instance of AbortSignal".
Replace with manual event forwarding that works across all realms.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 06:03:46 +00:00
George Kalogirou
2767907abf
fix(telegram): abort in-flight getUpdates fetch on shutdown
...
When the gateway receives SIGTERM, runner.stop() stops the grammY polling
loop but does not abort the in-flight getUpdates HTTP request. That request
hangs for up to 30 seconds (the Telegram API timeout). If a new gateway
instance starts polling during that window, Telegram returns a 409 Conflict
error, causing message loss and requiring exponential backoff recovery.
This is especially problematic with service managers (launchd, systemd)
that restart the process immediately after SIGTERM.
Wire an AbortController into the fetch layer so every Telegram API request
(especially the long-polling getUpdates) aborts immediately on shutdown:
- bot.ts: Accept optional fetchAbortSignal in TelegramBotOptions; wrap
the grammY fetch with AbortSignal.any() to merge the shutdown signal.
- monitor.ts: Create a per-iteration AbortController, pass its signal to
createTelegramBot, and abort it from the SIGTERM handler, force-restart
path, and finally block.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 06:03:46 +00:00