Vincent Koc
4ee008a026
fix(qa): reuse one immutable Docker candidate ( #121253 )
...
Punchcard-Session: amber-workshop-workshop-36
Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com >
2026-08-10 10:14:24 +08:00
Peter Steinberger
3b641a145e
fix: preserve GPT-5 personality through doctor migration ( #121346 )
...
Operators who disabled the GPT-5 friendly interaction style now keep that preference after openclaw doctor --fix. Existing OpenAI plugin personality config remains authoritative.
2026-08-09 19:14:08 -07:00
Sarah Fortune
732108d973
feat(slack): add workspace routing for Enterprise Grid actions and events ( #121014 )
...
* fix(slack): preserve team scope for deferred actions
* refactor(slack): use typed Bolt team context
* refactor(slack): preserve deferred action IDs
* refactor(slack): treat team IDs as opaque
* refactor(slack): keep deferred action diff focused
* fix(slack): enable scoped enterprise interactions
* fix(slack): keep event scope at listener boundary
* test(slack): model Bolt enterprise interaction context
* refactor(slack): normalize listener team context
* refactor(slack): pass modal event scope directly
* test(slack): preserve interaction harness argument types
* refactor(slack): pass shortcut event scope directly
* refactor(slack): pass action event scope directly
* fix(slack): scope enterprise slash commands
* test(slack): disambiguate slash harness scope
* fix(slack): type slash block suggestions
* fix(slack): preserve option text literal
* fix(slack): keep scope helpers private
* fix(slack): fall back from slash response URLs
* fix(slack): clarify Web API post message call
* fix(slack): scope post message lint suppression
* fix(slack): preserve event scope export after rebase
* fix(slack): preserve team-bound modal session routing
* fix(slack): retain modal direct-message routing
* fix(slack): preserve modal delivery compatibility
* docs(slack): mark enterprise tool actions supported
* docs(slack): align enterprise support with runtime
* test(slack): align enterprise interaction registration
* fix(slack): support Grid channel create and rename events
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-10 02:02:15 +00:00
Peter Steinberger
f805ad0354
refactor(extensions): remove unused compatibility exports ( #121338 )
2026-08-09 19:01:38 -07:00
Kevin Lin
96c5aa86f2
fix(codex): keep Slack turns running when a plugin is disabled ( #120312 )
...
* fix(codex): isolate plugin activation failures
* fix(codex): report rejected plugin installs
* refactor(codex): isolate app-server RPC errors
* fix(codex): classify terminal plugin install rejections
2026-08-09 18:54:28 -07:00
Peter Steinberger
620fcd0e27
refactor(plugins): make manifests own config ui hints ( #121329 )
2026-08-09 18:48:49 -07:00
Peter Steinberger
ba5895a976
test(discord): remove duplicate inbound context contract ( #121318 )
2026-08-09 18:28:14 -07:00
Jason (Json)
0b663e7a62
fix(plugins): preserve legacy runtime-doctor imports ( #121220 )
...
* fix(plugins): preserve legacy runtime doctor imports
* fix(plugins): map legacy doctor package types
2026-08-09 19:01:49 -06:00
Peter Steinberger
90ae49a5e5
test(telegram): remove vacuous rate-limit assertion ( #121292 )
2026-08-09 17:53:20 -07:00
Peter Steinberger
15dc3de1ee
test(telegram): fix vacuous stale-copy assertions ( #121291 )
2026-08-09 17:26:31 -07:00
Peter Steinberger
04b110b932
test(zalo): remove private rate-limit size seam ( #121290 )
2026-08-09 17:22:00 -07:00
Sarah Fortune
6efd013c25
fix(slack): support Grid reaction and pin event listeners ( #120944 )
...
* fix(slack): support Grid reaction and pin events
* refactor(slack): isolate system event routing
* test(slack): align Grid event scope fixture
* refactor(slack): pass optional event scope directly
* fix(slack): support Grid member events
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-09 17:07:25 -07:00
Peter Steinberger
3bdfd60caa
fix(media): accept mixed-case local file URLs ( #121226 )
2026-08-09 16:40:55 -07:00
Peter Steinberger
727e48240b
fix(discord): preserve distinct interaction occurrences ( #121155 )
2026-08-09 16:37:51 -07:00
Peter Steinberger
bd6c6aaef2
refactor(ws): consolidate raw WebSocket payload decoding ( #121268 )
...
* refactor(ws): consolidate raw data conversion
* fix(scripts): keep gateway client source-loadable
* refactor(ws): share plugin frame decoding
2026-08-09 16:32:18 -07:00
Peter Steinberger
1c9649afc4
fix(telegram): enforce recursive rich-message transport limits ( #117020 )
...
* fix(telegram): enforce recursive rich-message limits
* test(telegram): type rich message assertions
* refactor(telegram): build album fragments without map spread
2026-08-09 16:28:47 -07:00
Peter Steinberger
cfb19c7054
fix(telegram): stabilize command menu ordering ( #121239 )
...
Preserve custom, native, plugin, and alias precedence while keeping the documented /skill fallback across local and Telegram-driven menu pressure.
2026-08-09 16:08:10 -07:00
Peter Steinberger
0efd5b4bc9
refactor(channels): move owner policy into plugins ( #121257 )
...
* refactor(channels): move owner policy into plugins
* test(plugin-sdk): lower surface budget after export removal
2026-08-09 15:46:18 -07:00
Peter Steinberger
ce53f7e82e
refactor(agents)!: remove the session write lease ( #121113 )
...
* refactor(agents): remove session write lease
* refactor(plugin-sdk): deprecate session write lease
* refactor(doctor): remove session lock checks
* test(agents): remove session lease fixtures
* test(agents): align writer rebound assertion
* refactor(infra): remove retired session lock exports
* test(tooling): preserve embedded abort race shard
2026-08-09 15:30:48 -07:00
Vito Cappello
67e653e580
fix(anthropic): reject leaked Claude tool protocol output ( #120734 )
...
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
2026-08-09 15:30:38 -07:00
Peter Steinberger
6ee409ca7b
refactor(commands): share native plugin command merging ( #120972 )
2026-08-09 14:57:45 -07:00
Peter Steinberger
0ef798d28d
fix(gateway): keep hello authorization aligned with RPC access ( #120888 )
...
* fix(gateway): separate socket and device token scopes
* chore(i18n): refresh native source baseline
* style(ios): keep gateway channel within lint limit
* refactor(gateway): simplify scope metadata decoding
* ci(ui): isolate real-gateway e2e suites
* docs(ci): align runner table formatting
* chore(plugin-sdk): refresh api baseline
* ci(ui): route real-gateway retries to hosted runners
* chore(plugin-sdk): repair generated api baseline
* test(ui): select Labs toggles by title
* fix(gateway): preserve stored scopes without wire metadata
2026-08-09 14:50:07 -07:00
Peter Steinberger
59ec48439e
fix(telegram): preserve topic routing for reactions and poll answers ( #121231 )
2026-08-09 14:23:19 -07:00
Peter Steinberger
9ede0e9cef
test(qa): remove retired scenario migration ledgers ( #121229 )
...
* test(qa): remove retired scenario migration ledgers
* fix(deps): pin noVNC dependency exactly
2026-08-09 14:06:03 -07:00
Peter Steinberger
2904bbfc47
test(imessage): exercise chat lookup through runtime boundary ( #121205 )
2026-08-09 13:33:30 -07:00
Ayaan Gazali
5262874d64
fix(telegram): reuse saved media for quoted replies
...
Store resolved Telegram media references on observed messages so repeated quoted-photo turns reuse retained bytes instead of downloading them again. Preserve uncached external-reply media for the active turn and keep cache metadata out of model context.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
Co-authored-by: Ayaan Gazali <ayaangazali.work@gmail.com >
2026-08-10 02:03:01 +05:30
Peter Steinberger
c37b53868d
feat(memory): enable MMR diversity by default ( #121224 )
...
Apply deterministic relevance-biased diversity ordering to builtin hybrid recall and preserve distinct non-tokenized snippets.
2026-08-09 13:30:18 -07:00
Peter Steinberger
690f7d7778
refactor(memory): remove obsolete readonly recovery ( #120844 )
2026-08-09 13:10:58 -07:00
Peter Steinberger
8dbd30ba74
feat(memory): per-entry glob patterns for extraPaths ( #121209 )
...
* feat(memory): support globbed extra paths
Allow root-relative glob patterns on existing memory.search.extraPaths entries across discovery, watching, reindex identity, and QMD migration.
* fix(memory): drop stale lease type import
* fix(memory): enforce extra path glob scope
2026-08-09 13:05:24 -07:00
Sarah Fortune
66dee798b5
Revert "fix: enable Slack native approvals for Enterprise Grid installs (#120…" ( #121219 )
...
This reverts commit 96798953b2 .
2026-08-09 19:49:35 +00:00
Shakker
b3d71c754f
fix(clickclack): ignore agent activity inbound events
2026-08-09 20:33:03 +01:00
Shakker
3d80a2f6f2
fix(clickclack): isolate bot loop budgets by thread
2026-08-09 20:33:03 +01:00
Shakker
5a659c624b
fix: preserve bot loop retries
2026-08-09 20:33:03 +01:00
Jacqueline Henriksen
762fa6e428
feat(clickclack): allow opt-in bot-to-bot inbound dispatch
2026-08-09 20:33:03 +01:00
Vincent Koc
2e4683ba7f
fix(qa): finish aggregate suites without shared cache races ( #120816 )
...
* fix(qa): bound parallel aggregate script runs
Punchcard-Session: amber-workshop-workshop-36
Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com >
* test(tui): wait for adopted session frame
Punchcard-Session: amber-workshop-workshop-36
---------
Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com >
2026-08-10 03:32:04 +08:00
Sarah Fortune
96798953b2
fix: enable Slack native approvals for Enterprise Grid installs ( #120874 )
...
* fix(slack): scope Grid native approvals by team
* fix(slack): type action middleware context
* fix(slack): secure Grid native approvals
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-09 12:09:59 -07:00
Vincent Koc
05dc2f8ee1
fix(qa): scope Slack capture evidence by channel ( #121053 )
...
Punchcard-Session: amber-workshop-workshop-36
Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com >
2026-08-10 03:09:39 +08:00
Vincent Koc
126b5a08e7
fix(qa): resolve live model pairs after auth selection ( #121065 )
...
Centralize QA model-pair construction after resolving the actual primary,
preserve explicit and manual single-model selections, and keep omitted
live-frontier alternates on the provider-owned OpenAI Sol/Luna policy.
Punchcard-Session: amber-workshop-workshop-36
Co-authored-by: Dallin Romney <6581799+RomneyDa@users.noreply.github.com >
2026-08-10 02:59:12 +08:00
Peter Steinberger
26e74d8d18
feat(memory): expand conversational recall queries ( #121196 )
...
Supplement thin strict FTS candidate pools with bounded keyword probes while keeping embedding calls unchanged.
2026-08-09 11:55:57 -07:00
Peter Steinberger
05cd389cac
fix(cloud-workers): make Crabbox provisioning idempotent ( #121019 )
...
* fix(cloud-workers): make Crabbox provisioning idempotent
* fix(crabbox): preserve desktop fixed-id warmups
2026-08-09 11:51:34 -07:00
Peter Steinberger
40dbc7a65a
test(plugin-sdk): remove repo-local test helper fossils ( #121190 )
2026-08-09 11:44:18 -07:00
Peter Steinberger
65dc1d0220
fix(telegram): validate command menu language codes ( #121098 )
...
* fix(telegram): validate command menu language codes
* fix(telegram): enforce exhaustive menu languages
* fix(telegram): harden command menu locale state
2026-08-09 11:43:48 -07:00
Peter Steinberger
af4ffb2e8e
fix: exact dated models work after gateway ready ( #121119 )
...
* fix(agents): publish exact configured model facts
* fix(agents): keep prepared model completion internal
* fix(agents): scope prepared model plugin lookup
* refactor(agents): split prepared model configured facts
* fix(agents): keep configured catalog types acyclic
2026-08-09 11:23:32 -07:00
Peter Steinberger
1f4740e95f
fix(opencode): migrate retired free model refs ( #121125 )
...
* fix(opencode): migrate retired free model refs
Repair the shipped beta upgrade path through the provider-owned Doctor contract. Activate the migration from the canonical configured-model selector inventory so every supported selector is covered consistently.
Co-authored-by: samson1357924 <samson1357924@gmail.com >
* fix(opencode): migrate media model preferences
---------
Co-authored-by: samson1357924 <samson1357924@gmail.com >
2026-08-09 11:16:59 -07:00
Peter Steinberger
9809375fda
refactor(plugins)!: remove the plugin state lease API ( #121140 )
...
* refactor(plugins)!: remove plugin state lease API
* docs(plugins): document state lease removal
2026-08-09 11:16:07 -07:00
Peter Steinberger
72283e440e
fix: steering misses the next tool boundary after ACK ( #120964 )
...
* fix(steering): wait for queue acceptance before ack
* fix(steering): preserve session steer call contract
* fix(steering): close runtime ownership gaps
* fix(ci): refresh plugin SDK API baseline
2026-08-09 10:46:09 -07:00
Peter Steinberger
01cf584d2a
fix(telegram): preserve DM topic authorization ( #121117 )
...
Carry canonical direct_messages_topic identity through authorization and config selection so channel DM topics use the same scope as delivery. Keep that identity distinct from message_thread_id.
2026-08-09 09:39:47 -07:00
Peter Steinberger
8fdf7570a1
feat(gateway): live Desktop observer for cloud workers (Labs) ( #120727 )
...
* feat(gateway): live desktop observer for cloud workers
Adds live observation for cloud worker desktops through the gateway and Crabbox plugin, including desktop provisioning, persisted desktop metadata, tunneled WebSocket proxying, and the worker.desktop.observe protocol method.
The gateway, Crabbox plugin, and gateway protocol surfaces remain off by default behind the cloudWorkers.desktop Labs flag.
* feat(ui): Desktop panel for cloud worker observation
* docs(gateway): document cloud worker desktop lab
* fix(ci): regenerate contract baselines after rebase
* fix(protocol): regenerate Android gateway methods
* fix(ci): align rebased SDK and lint baselines
* fix(gateway): enforce view-only RFB boundary and fence desktop teardown
* fix(gateway): tighten RFB filter surface
* fix(state): keep pre-desktop databases readable and harden view-only RFB
* fix(gateway): fence desktop observer upgrades behind work admission
* fix(gateway): bind desktop observer tokens to their owner epoch
* fix(ci): regenerate config and SDK baselines after rebase
* fix(ci): regenerate native protocol and SDK baselines
* fix(ci): regenerate contracts after main rebase
* fix(state): register desktop metadata as lazy additive
* fix(ci): regenerate SDK baseline after final direct-merge rebase
2026-08-09 09:37:01 -07:00
Peter Steinberger
2f8c950701
fix(browser): recover Copilot storage writes ( #116882 )
2026-08-09 09:34:58 -07:00
Ayaan Zaidi
be6f4c3d6a
fix(telegram): make expired Codex automation alerts actionable ( #121067 )
...
* fix(cron): make Codex auth alerts actionable
* fix(telegram): authorize Codex login callbacks centrally
* fix(telegram): make callback outcomes explicit
* fix(telegram): use typed callback result
* test(cron): assert typed delivery payloads
* test(cron): require captured reply payload
* test(cron): require captured reply text
* fix(telegram): authorize login callbacks as commands
* chore(plugin-sdk): refresh API baseline
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-09 21:52:23 +05:30