Commit Graph

66940 Commits

Author SHA1 Message Date
Vincent Koc
7d4001c855 fix(sdk): raise plugin SDK usage heap 2026-06-16 23:59:29 +02:00
Vincent Koc
2caf92a5b7 fix(qa): ignore unsafe Ubuntu VM fallbacks 2026-06-16 23:55:59 +02:00
Vincent Koc
4747e949c7 fix(ci): reject unsafe boundary shard specs 2026-06-16 23:46:37 +02:00
Vincent Koc
5a251bc54c fix(qa): require exact benchmark RSS samples 2026-06-16 23:42:08 +02:00
Vincent Koc
6ede75dbeb fix(qa): reject malformed kitchen sink process samples 2026-06-16 23:33:28 +02:00
Vincent Koc
3576d1e967 fix(testbox): reject unsafe Crabbox version tuples 2026-06-16 23:12:17 +02:00
liuhao1024
003d3100c3 feat(inbound-meta): expose per-turn source modality (#93754)
* feat(inbound-meta): expose message_type in trusted inbound metadata (fixes #50482)

Add resolveInboundMessageType() that extracts the media type prefix
(e.g. 'audio' from 'audio/ogg') from MediaType or MediaTypes fields.
Expose it as message_type in the inbound metadata JSON so agents can
distinguish voice messages from typed text for turn-completion heuristics.

* fix(inbound-meta): preserve per-turn source modality

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 05:10:12 +08:00
liuhao1024
94e6255666 feat(memory): apply outputDimensionality truncation to local GGUF embeddings (fixes #58765) (#93758)
* feat(memory): apply outputDimensionality truncation to local GGUF embeddings

The outputDimensionality config field was passed through to the local
embedding provider but never applied. Local GGUF models (e.g.
Qwen3-Embedding-0.6B) always returned their full dimension vector.

Apply slice(0, N) after normalization so MRL-capable models can benefit
from dimension truncation — matching the behavior already supported by
Gemini embedding-2 and OpenAI providers.

Fixes #58765

* fix(memory): preserve local embedding dimensions through worker

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 05:05:49 +08:00
Vincent Koc
5af44a7616 fix(mobile): reject impossible release pins 2026-06-16 23:03:26 +02:00
Josh Lehman
00a75db428 refactor: route transcript writers through session seam (#89123)
* clawdbot-d08: route transcript writers through accessor seam

* fix: refresh transcript writer seam proofs

* refactor: add transcript turn writer operation

* fix: preserve transcript writer store targeting

* fix: preserve transcript append lock ordering

* refactor: guard transcript turn session rebound

* clawdbot-d02.1.9.1.35: route transcript rewrites through runtime scope

* fix: preserve transcript event append return type

* fix: publish transcript turn owned entries
2026-06-16 13:59:48 -07:00
Gautam Kumar
01d3812ea2 fix: correct tautological uppercase check in tool description summarizer (#93753)
The isToolDocBlockStart function checked normalized === normalized.toUpperCase()
but normalized is already uppercased from line 24, making the condition always true.
This caused mixed-case lines ending with ':' to be incorrectly detected as doc block
starts, truncating tool descriptions unnecessarily.

Compare the original line instead to correctly detect all-uppercase headings.

Co-authored-by: Gautam Kumar <gautamkumarofficial@users.noreply.github.com>
2026-06-17 04:55:25 +08:00
Yuval Dinodia
bc4b1b018a fix(compaction): ignore stale persisted totalTokens in preflight gate (#93749) 2026-06-17 04:47:45 +08:00
Sash Zats
c5b79e3b7a fix(ios): fix quick setup sheet layout design (#93751)
* fix(ios): simplify quick setup sheet layout

* fix(ios): restore quick setup card chrome
2026-06-17 04:45:24 +08:00
Vincent Koc
2a6c0ab5bf fix(release): reject loose upgrade recipe baselines 2026-06-16 22:44:22 +02:00
Vincent Koc
c38bbe751f fix(release): share upgrade baseline version parsing 2026-06-16 22:35:11 +02:00
Vincent Koc
68363368be fix(release): reject unsafe release version numbers 2026-06-16 22:27:20 +02:00
shushushu
d211d49011 fix(ui): populate realtime talk provider and transport options from talk.catalog (#93746)
* fix(ui): populate realtime talk provider and transport options from talk.catalog

* test(ui): cover realtime talk catalog options

* fix(ui): keep realtime talk catalog selections valid

* fix(ui): honor realtime browser session support

* fix(ui): preserve realtime provider fallback options

* fix(ui): clear stale realtime talk catalogs

* fix(ui): refresh realtime talk catalog on reconnect

* fix(ui): reconcile realtime talk catalog selections

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 04:27:05 +08:00
Vincent Koc
52908649d9 fix(release): reject invalid Sparkle prerelease lanes 2026-06-16 22:22:19 +02:00
Vincent Koc
331cc6a8c1 fix(qa): reject loose gateway RSS samples 2026-06-16 22:16:30 +02:00
Vincent Koc
ee9a1f7eac fix(release): reject loose Android version codes 2026-06-16 22:06:32 +02:00
Vincent Koc
2c7c6feb99 fix(qa): reject loose cron cleanup probe pids 2026-06-16 22:01:44 +02:00
Harjoth Khara
a3f3b043c9 fix(usage): reject invalid explicit dates in usage RPC date parsing (#93745)
* fix(usage): reject invalid explicit dates in usage RPC date parsing

usage.cost and sessions.usage accepted shape-valid but impossible dates such as 2026-02-30: parseDateParts validated only the YYYY-MM-DD regex, so Date.* silently rolled them over (2026-02-30 -> 2026-03-02) and the RPC returned cost/usage for the wrong day. Out-of-range parts now fail a UTC round-trip check, and an explicitly provided unparseable date (bad format or impossible calendar date) returns INVALID_REQUEST instead of silently falling back to the default range. Absent/valid dates are unchanged.

[AI-assisted]

* fix(usage): reject non-string explicit dates

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 03:58:46 +08:00
Vincent Koc
edff873d31 fix(qa): reject loose tasklist RSS samples 2026-06-16 21:55:20 +02:00
Vincent Koc
f5194c4647 fix(test): reject loose Vitest wrapper limits 2026-06-16 21:50:19 +02:00
Andy Ye
357462deef fix(sessions): release retained locks after takeover (#93740) 2026-06-17 03:49:59 +08:00
Gio Della-Libera
e58719503e fix: break plugin registry type import cycle (#93738) 2026-06-17 03:49:46 +08:00
Yuval Dinodia
fa65b3270e fix(agents): preserve kept-tail prompt during compaction transcript rotation (#93732)
Duplicate user-message detection ran over the full branch, so when a prompt
was re-sent within the 60s window its earlier copy in the summarized prefix
and the later copy in the kept tail were both removed: the summarized copy via
summarizedBranchIds and the kept copy as a duplicate. With
truncateAfterCompaction enabled the prompt then vanished from the successor
transcript entirely. Restrict dedup to the kept region so the first surviving
copy is preserved.
2026-06-17 03:49:19 +08:00
Vincent Koc
642ae61828 fix(qa): reject loose Windows sampler metrics 2026-06-16 21:43:27 +02:00
Vincent Koc
b816dfbb9f fix(qa): reject malformed kitchen-sink CPU samples 2026-06-16 21:36:59 +02:00
lsr911
583b7195b4 fix: pin plugin workspace dir for sessions.list to avoid O(rows) memo busting (#93719)
* fix: pin plugin workspace dir for sessions.list to avoid O(rows) memo busting

sessions.list was O(rows) slow under concurrent agent/cron load because
each row read a process-global active plugin-registry workspace dir
that was mutated by other turns between rows. The per-row memo key
changed every time, so loadPluginMetadataSnapshot scanned fresh
(~100ms per row).

Fix:
1. Add AsyncLocalStorage-based workspace dir pinning to
   runtime-workspace-state.ts — withPinnedActivePluginRegistryWorkspaceDir()
   snapshots the current workspace dir for the duration of a callback.
2. Wrap listSessionsFromStoreAsync body in the pin so all per-row
   metadata lookups use a stable memo key.

Fixes #90814

* test(plugins): cover request-scoped workspace pins

* fix(plugins): pin canonical runtime workspace reads

* fix(plugins): preserve workspace pins across reloads

---------

Co-authored-by: lsr911 <lsr911@github.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 03:33:46 +08:00
zhang-guiping
f0b5d78ff9 fix(ollama): preserve configured API during discovery (#93729)
* fix(ollama): preserve configured API during discovery

* fix(ollama): keep compatible discovery base URL

* fix(ollama): route compatible APIs through configured transport

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 03:29:46 +08:00
Peter Lee
f3982d6442 fix(discord): propagate timeout through channel capabilities diagnostics (#93716)
* fix(discord): propagate timeout through channel capabilities diagnostics

* fix(discord): fix type error in capabilities timeout test

* fix(discord): cancel timed-out capability diagnostics

* fix(discord): abort in-flight capability requests

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 03:27:50 +08:00
Vincent Koc
e8022eb4a5 fix(qa): reject loose OpenWebUI probe statuses 2026-06-16 21:24:09 +02:00
Vincent Koc
49cc82e547 fix(qa): reject loose docker stats ceilings 2026-06-16 21:20:59 +02:00
Vincent Koc
fd166a5318 fix(qa): reject loose code-mode live task limits 2026-06-16 21:15:55 +02:00
Peter Lee
319e41d0c5 fix(typing): start typing on reasoning deltas in thinking mode before visible text (#93726) 2026-06-17 03:09:25 +08:00
Marko Milosevic
c6b1921a91 fix(usage): prune stale usage cache temp files (#93725)
Co-authored-by: markoub <2418548+markoub@users.noreply.github.com>
2026-06-17 03:07:09 +08:00
Vincent Koc
6fa9ea08ea fix(qa): reject loose upgrade survivor baseline counts 2026-06-16 21:02:53 +02:00
Vincent Koc
ef5d6a66bd fix(qa): reject loose bundled plugin runtime indexes 2026-06-16 20:58:23 +02:00
Shakker
920e6a8eec chore: set version 2026.6.9 2026-06-16 19:54:07 +01:00
lsr911
4aba273939 fix: scope assistant avatar override to agent ID (#93712)
* fix: scope assistant avatar override to agent ID

The local assistant avatar override was stored globally in
localStorage without an agentId, causing the same avatar to
apply to all agents. Setting an avatar for agent A would
overwrite the avatar for agent B.

Fix: include agentId when saving the local avatar override,
and filter by agentId when loading. An override saved for one
agent no longer bleeds into other agents.

Fixes #90890

* fix(ui): persist assistant avatars per agent

* fix(ui): satisfy scoped avatar checks

---------

Co-authored-by: lsr911 <lsr911@github.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 02:53:35 +08:00
Vincent Koc
ff5d6571f2 test(qqbot): avoid bare temp dirs in media path coverage 2026-06-16 20:44:48 +02:00
keshavbotagent
257d540297 Keep command text in progress drafts (#93711)
* Keep command text in progress drafts

* test(channels): align successful progress drafts

---------

Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 02:41:59 +08:00
Vincent Koc
ae9ae560e9 fix(qa): reject loose ClickClack wait timeouts 2026-06-16 20:41:12 +02:00
Vincent Koc
ae99ce729a fix(qa): reject loose mock OpenAI ports 2026-06-16 20:37:36 +02:00
Marko Milosevic
b9e193ce22 test(macos): cover root command dispatch (#93705)
* test(macos): cover root command dispatch

* chore(macos): format root command coverage

---------

Co-authored-by: markoub <2418548+markoub@users.noreply.github.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com>
2026-06-17 02:36:33 +08:00
lsr911
617c9d4b7f fix: isolate async model resolution mock from sync mock in test (#93714)
The 'can preserve asynchronous provider model discovery' test was
flaky because resolveModelAsyncMock in beforeEach delegates to
resolveModelMock. When useAsyncModelResolution=true, the test
asserted resolveModelMock was not called, but the delegation
caused it to be called, failing CI on two lanes.

Fix: use a standalone vi.fn() for the async resolver in this
test, and explicitly reset resolveModelMock before the assertion
to guard against mock state leakage from prior tests.

Fixes #92117

Co-authored-by: lsr911 <lsr911@github.com>
2026-06-17 02:29:29 +08:00
Vincent Koc
76658cd159 fix(ci): keep ci workflow edits off fast-only routing 2026-06-16 20:28:23 +02:00
dwc1997
3ad3cc61b8 fix(minimax): check base_resp envelope errors in TTS provider (#93688)
MiniMax TTS API returns HTTP 200 even on quota/billing errors, with the
error encoded in base_resp.status_code. Without this check, placeholder
audio returned alongside the error is silently accepted, preventing the
TTS dispatcher from falling back to a configured secondary provider.

This follows the same pattern used by all other MiniMax providers:
- image-generation-provider.ts
- video-generation-provider.ts
- music-generation-provider.ts
- minimax-web-search-provider.runtime.ts

Fixes #76904

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 02:25:46 +08:00
Vincent Koc
3b7729779a fix(ios): reject malformed node e2e wait seconds 2026-06-16 20:20:46 +02:00