zengLingbiao
a8e52b49a0
fix(google): reject malformed base64 audio in Gemini TTS responses ( #114041 )
...
* fix(google): reject malformed base64 audio in Gemini TTS responses
* fix(media): validate provider audio payloads
Co-authored-by: zengLingbiao <zeng.lingbiao@xydigit.com >
* fix(xai): terminate malformed realtime audio
Co-authored-by: zengLingbiao <zeng.lingbiao@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 04:17:35 -04:00
Peter Steinberger
8e4b6623e5
test(providers): consolidate streaming and model contract cases ( #114336 )
2026-07-27 01:36:32 -04:00
Peter Steinberger
caa01f4f5b
refactor(providers): table-driven forward compat and manifest-derived contract tests ( #113940 )
...
* refactor(providers): share family forward compat resolution
* test(providers): derive runtime contracts from manifests
* test(providers): validate manifest fixture inputs
* refactor(zai): narrow forward compat inputs
2026-07-25 18:09:37 -07:00
Masato Hoshino
bdcc5d54a5
fix(agents): honor run abort signal in image and pdf tools ( #112644 )
...
* fix(agents): honor run abort signal in image and pdf tools
The image and pdf agent tools declared `execute: async (_toolCallId, args)`
and dropped the run abort signal that `wrapToolWithAbortSignal` supplies as
the third execute argument. The wrapper only races the execute promise, so an
aborted run kept sequentially downloading images/PDFs (up to the per-tool cap,
each up to the byte cap) and still issued a paid vision/PDF-model call for a
dead run.
Thread the signal into the existing `requestInit: { signal }` seam (which the
media fetch layer already merges into the download fetch) and add
`signal.throwIfAborted()` between sequential loop items and before the paid
model call. No new media-options signal field; non-abort behavior is unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
* fix(agents): keep the pdf test suite under the lint ceiling; guard model dispatch
Follow-up on the abort-signal change, resolving the check-lint failure and a
review finding on the same seam.
max-lines
---------
Adding the two pdf abort tests pushed src/agents/tools/pdf-tool.test.ts to 1018
effective lines against a ceiling of 1000, failing check-lint. Resolved without
touching config/max-lines-baseline.txt — a suppression there would also have
tripped the max-lines ratchet.
- The new tests declared their own `describe` with `beforeEach`/`afterEach`
hooks identical to the existing `describe("createPdfTool")`. They exercise
that same tool, so they now live in it and the duplicated scaffolding is gone.
- `stubPdfToolInfra`, `createPdfModelRegistry` and `FAKE_PDF_MEDIA` moved to
pdf-tool.test-support.ts, which already exists for exactly this. They go
through `createPdfToolInfraStub(completeMock)` rather than being exported
directly, because the stub wires the suite's own `complete` mock into the
model registry and vi.mock handles are file-scoped. All 21 existing call
sites are unchanged.
Abort propagation into model dispatch
-------------------------------------
The previous revision stopped cancellation at download boundaries and before
the first model call, but `runImagePrompt`/`runPdfPrompt` never saw the signal.
A run cancelled while the first provider request was in flight could still
issue the remaining ones — the image path dispatches `describeImage` once per
image in a sequential loop, so a dead run kept paying for every later image.
Both now take an optional `signal` and check it immediately before each
provider dispatch (3 sites in image-tool, 4 in pdf-tool).
Forwarding the signal further, into the provider transports themselves, is a
different seam and is deliberately left out of this PR.
Also declares `requestInit` on `ImageToolLoadWebMediaOptions`. The local facade
omitted it while the underlying loader accepts it (web-media.ts declares it and
forwards it to readRemoteMediaBuffer), so the option worked at runtime and only
compiled because spread properties skip excess-property checking. A non-spread
call site would not have.
tsgo core + core-test, oxlint, oxfmt clean; pdf-tool and image-tool suites 266
tests pass.
* test(agents): prove in-flight media aborts
* test(agents): narrow PDF loader options
* test(agents): reject abort mocks with errors
* fix(agents): propagate media cancellation
* test(agents): type PDF abort fixture
* test(agents): type prepared runtime snapshot
* fix(agents): normalize abort rejection errors
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-25 05:17:09 -07:00
Peter Steinberger
b0603cb443
refactor(fs): adopt shared safe filesystem primitives ( #113596 )
...
* refactor(fs): adopt fs-safe helpers
* fix(zalouser): keep stable per-profile QR temp path
* fix(fs): route adoption through owned facades
2026-07-25 03:24:19 -07:00
Vincent Koc
749dbcb2a7
refactor(media): consolidate generated media byte limits ( #113556 )
2026-07-25 15:39:49 +08:00
joshavant
a325467557
fix(cron): preserve scheduled caps across CLI and worker upgrades
2026-07-24 01:24:03 -05:00
joshavant
8287e21445
fix(cron): enforce caps across CLI backends
2026-07-24 01:24:03 -05:00
Peter Steinberger
acd92f6a3d
chore(deps): refresh repository dependencies ( #112453 )
...
* build(deps): update QA broker dependency
* build(deps): refresh repository dependencies
* build(deps): reconcile rebased shrinkwraps
* test(plugins): remove stale loader test state
* test(deps): stabilize updated dependency coverage
* fix(swift): use caller-isolated TaskLocal overload
* build(deps): regenerate rebased shrinkwraps
* test(msteams): preserve DNS validation in fetch helper
* fix(deps): avoid vulnerable optional image stack
* test(deps): validate generated LRU override
* refactor(ui): extract chat resizable divider
* test(ui): update divider ownership path
* fix(matrix): retain restart-compatible SDK
* style(cron): format update test
2026-07-23 16:17:13 +00:00
Peter Steinberger
3c4a1ec905
refactor(agents): move CLI backend adapters from config DSL to registerCliBackend plugins (review request) ( #112539 )
...
* refactor(agents): move CLI backend adapters into plugins
* test(agents): register CLI backend fixtures through plugins
2026-07-22 00:25:29 -07:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Jason (Json)
55cf9523e0
feat: discover models from live provider catalogs ( #112412 )
...
* feat: discover models from live provider catalogs
* fix(provider-catalog): satisfy current catalog contracts
* fix(deps): update fast-uri past new advisory
* fix(deps): refresh fast-uri shrinkwraps
* fix(openrouter): satisfy provider catalog lint
* fix(agents): preserve refreshable catalog metadata
* test(agents): keep catalog fallback proof within lint budget
* fix(provider-catalog): honor live model contracts
* fix(minimax): type discovery headers explicitly
* docs(plugin-sdk): define live model discovery contract
2026-07-21 19:29:57 -06:00
Wynne668
72f77364b3
fix(google): keep embedding batch waits within timeout ( #111674 )
2026-07-20 11:46:06 +03:00
Peter Steinberger
c7e7ac2728
refactor: remove expired plugin compatibility surfaces ( #111451 )
...
* docs(secrets): remove retired web credential paths
* refactor(web): remove retired provider compatibility paths
* refactor(providers): delete retired compatibility routes
* refactor(secrets): remove retired credential aliases
* refactor(plugin-sdk): delete retired compatibility surfaces
* docs(plugin-sdk): remove retired migration guidance
* chore(plugin-sdk): refresh rebased surface budgets
* chore(plugin-sdk): refresh API removal baseline
* refactor(compat): migrate retired internal callers
* chore(plugin-sdk): refresh current-main baselines
* test(config): migrate plugin-owned secret assertions
* test(gateway): narrow plugin secret refs
* fix(plugin-sdk): preserve private boundary type identity
* chore(compat): remove stale sweep references
* chore(lint): lower max-lines budget
* refactor(secrets): remove unused web helper
* build(plugin-sdk): drop removed compat entries
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): use Linux API baseline hash
* fix(plugin-sdk): preserve private bundled build entries
* fix(plugin-sdk): package private runtime facades
* fix(plugins): preserve external credential contracts
2026-07-19 11:04:48 -07:00
Peter Steinberger
3fd3ad8301
fix(ci): restore plugin prerelease validation ( #110787 )
...
* test: align plugin prerelease assertions
* test: remove stale vitest import
2026-07-18 17:00:15 +01:00
Peter Steinberger
349f78776d
fix(models): refresh bundled provider catalogs ( #109410 )
...
* fix(models): refresh bundled provider catalogs
* docs(models): refresh generated docs map
* fix(xiaomi): keep provider helper private
* chore(release): defer catalog release note
2026-07-16 16:47:25 -07:00
Peter Steinberger
0631252f4b
refactor: reduce plugin SDK test import overhead ( #109333 )
...
* refactor(test): split plugin SDK test helpers
* fix(test): align plugin SDK test subpaths
2026-07-16 13:55:23 -07:00
Peter Steinberger
04c31f453c
fix: reject oversized credential files in remaining readers ( #109260 )
...
* fix(security): bound remaining credential file reads
* fix(anthropic-vertex): keep ADC helper type private
2026-07-16 11:33:18 -07:00
Peter Steinberger
e2fed32131
fix(onboarding): explain how to get provider tokens and revive logged-out CLI candidates ( #108739 )
...
* fix(onboarding): explain how to obtain provider tokens in auth setup copy
* fix(onboarding): add per-CLI login remediation to detected candidate details
2026-07-16 01:12:15 -07:00
Peter Steinberger
73ada8fd4c
fix(ai): preserve tool-result text for payload-less media ( #108697 )
...
* fix(ai): require payload bytes for tool media
Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com >
Co-authored-by: 0668000539 <shu.zongyu@xydigit.com >
* chore: keep release notes out of PR
---------
Co-authored-by: 0668000539 <shu.zongyu@xydigit.com >
2026-07-16 00:42:36 -07:00
Peter Steinberger
d3dcb36895
refactor(deadcode): tighten Google and xAI extension roots ( #108523 )
2026-07-15 17:34:53 -07:00
pick-cat
1c2bcbb56f
fix: classify provider code-only failover errors ( #95729 )
...
* fix(agents): classify provider-native failover errors
Co-authored-by: Altay <altay@hey.com >
* fix(agents): scope provider failover codes
* docs(changelog): credit provider failover fix
* style(anthropic): format failover classifier
* docs(changelog): defer release-owned entry
---------
Co-authored-by: Pick-cat <266665499+Pick-cat@users.noreply.github.com >
Co-authored-by: Altay <altay@hey.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-15 04:07:51 -07:00
Peter Steinberger
7b9a72fc4f
refactor(extensions): trim small plugin exports ( #107784 )
...
* refactor(workspaces): privatize internal plugin surfaces
* refactor(canvas): trim internal host exports
* refactor(qa-channel): privatize media URL validation
* refactor(google): remove web search test facade
* refactor(xai): remove response helper test facades
* chore(deadcode): shrink extension export baseline
2026-07-14 14:38:08 -07:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
4341d85268
refactor(google): use GenAI runtime enums
2026-07-14 01:51:34 -07:00
Peter Steinberger
9b8fa12f25
refactor(google): use genai session type
2026-07-13 13:28:06 -07:00
Peter Steinberger
6c5084f1ad
feat(xai): add realtime voice provider ( #106267 )
...
* feat(xai): add realtime voice provider
Co-authored-by: Vitor Cepeda Lopes <vitor@vitorcepedalopes.com >
* fix(xai): satisfy realtime voice validation
* fix(xai): harden realtime relay boundaries
* chore: drop release-owned changelog edit
* chore(i18n): refresh native voice catalogs
* chore(i18n): refresh Control UI raw-copy baseline
* chore(plugin-sdk): refresh API baseline hashes
* chore(i18n): use canonical main catalogs
* chore(i18n): refresh realtime voice source inventory
* chore: refresh xai voice landing head [skip ci]
* chore: refresh integrated protocol artifacts [skip ci]
---------
Co-authored-by: Vitor Cepeda Lopes <vitor@vitorcepedalopes.com >
2026-07-13 05:17:24 -07:00
Alix-007
d33254b7ec
fix(google): bound realtime browser token requests ( #106034 )
...
* fix(google): bound realtime browser token requests
* fix(google): satisfy realtime timeout checks
* test(google): use placeholder browser key
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-13 01:36:19 -07:00
Vincent Koc
6f9a607b90
refactor(google): remove obsolete Gemini testing alias ( #105400 )
2026-07-12 15:36:04 +02:00
Peter Steinberger
81941f2d68
test: enable noUncheckedIndexedAccess for extension tests ( #105343 )
2026-07-12 12:48:22 +01:00
Peter Steinberger
218dcd815a
feat(tooling): enforce noUncheckedIndexedAccess in the extensions lane (NUIA phase 4) ( #105132 )
...
* fix(extensions): make indexed access explicit across channel plugins
Transport-payload-safe burn-down: malformed Telegram/Discord/QQ/LINE
and sibling channel input keeps existing skip paths; no synthesized
fields, no new throws in delivery loops. Zalo escape sentinels preserve
literal matches instead of undefined replacements.
* fix(extensions): make indexed access explicit across provider and memory plugins
Stream and model iteration, tool-block guards, capture guards, and
sparse accumulators; singleton model reads carry named invariants.
* fix(extensions): make indexed access explicit across tooling plugins, flip the extensions lane
Remaining plugins (oc-path, qa-lab, browser, logbook, and siblings) plus
the tsconfig.extensions.json flag flip. Cleanup: logbook sampleFrames
NaN index at max=1, QA retry clamp at non-positive attempts, dead Canvas
probe and OpenShell no-op slice removed, twitch test setup leak excluded
from the prod lane.
* refactor(plugin-sdk): expose expectDefined via a focused SDK subpath
Extensions imported @openclaw/normalization-core directly, crossing the
external-plugin packaging boundary (it only worked because the runtime
builder bundles undeclared workspace helpers). expect-runtime joins the
canonical entrypoints JSON, generated exports, API baseline, docs, and
subpath contract test; all 78 extension imports now use the SDK seam.
Two scanner-shaped locals renamed for review-bundle hygiene.
* chore(plugin-sdk): raise surface budgets for the expect-runtime subpath
One new entrypoint with one callable export, added intentionally as the
packaging-honest seam for extension invariant helpers.
2026-07-12 09:17:31 +01:00
wuqxuan
dfa9569ca7
fix(google): exclude versioned Gemini client header from memory identity ( #104759 )
...
* fix(google): exclude versioned Gemini client header from memory identity
* test(google): focus memory identity coverage
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 17:06:21 -07:00
ZOOWH
fb702e5cae
fix(memory): harden embedding batch workflows ( #103472 )
...
* fix(memory): harden embedding batch workflows
Co-authored-by: 徐闻涵0668001344 <xu.wenhan1@xydigit.com >
Co-authored-by: ben.li <li.yang6@xydigit.com >
* test(memory): align batch redaction expectation
* test(memory): tighten batch dependency types
* refactor(google): clarify batch state control flow
* test(google): make batch stage fallback lint-safe
* build(plugin-sdk): refresh memory batch surface budget
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: ben.li <li.yang6@xydigit.com >
2026-07-11 16:43:58 -07:00
Peter Steinberger
2a479bd4ac
fix(ci): make owner-approved Testbox landing reliable ( #104726 )
...
* fix(ci): isolate nested pnpm verification
* test(google): verify OAuth abort signal forwarding
* docs: treat owner land requests as Testbox approval
2026-07-11 15:04:25 -07:00
Peter Steinberger
8310c565e0
feat(onboarding): add provider sign-in ( #104502 )
...
* feat(onboarding): add provider sign-in flows
* fix(oauth): keep callback compatibility
* fix(onboarding): reconcile lost auth outcomes
* fix(onboarding): lock auth cancellation at commit
* fix(onboarding): close provider auth lifecycle gaps
* fix(onboarding): make terminal auth failures dismissable
* fix(onboarding): satisfy native app checks
* fix(onboarding): reconcile absent auth sessions
* fix(onboarding): bound provider auth sessions
* fix(onboarding): open provider auth links safely
* test(onboarding): use scanner-safe auth fixtures
* revert: keep established onboarding auth fixtures
* fix(onboarding): close provider auth cancellation gaps
* fix(gateway): retain uncollected wizard results
* fix(onboarding): bind provider reconciliation attempt
* fix(i18n): avoid guessing moved string identities
* style(onboarding): normalize remote auth choices efficiently
* fix(protocol): refresh optional provider auth choices
* test(gateway): cover provider auth dispatch order
* refactor(macos): split onboarding setup support
* fix(macos): refresh merged native checks
2026-07-11 13:00:17 -07:00
NIO
18e8713b99
fix(google): stream Gemini batch JSONL output instead of res.text() ( #102974 )
...
* fix(google): stream Gemini batch JSONL output instead of res.text()
* fix(google): avoid Promise executor return in batch stream test
---------
Co-authored-by: NIO <nocodet@mail.com >
2026-07-11 13:48:13 -04:00
Peter Steinberger
96f0983a85
fix(onboarding): skip setup for configured gateways and require inference first ( #102883 )
...
* fix(crestodian): keep onboarding RPCs restart-safe
* fix(profiles): isolate approval state migrations
* fix(crestodian): bypass configured gateway setup
* test(crestodian): type onboarding mocks
* fix(onboarding): require inference before Crestodian
* fix(onboarding): enforce verified inference handoff
* fix(macos): reset setup on gateway endpoint edits
* chore(i18n): refresh native source inventory
* fix(gateway): keep socket on request cancellation
* test(packaging): require workspace templates
* fix(onboarding): bind setup to verified inference
* fix(onboarding): align inference gate contracts
* fix(crestodian): classify concurrent policy rejection
* test(crestodian): expect registry restoration
* fix(onboarding): bind setup to configured gateways
* fix(codex): preserve startup phase deadlines
* test(crestodian): match fail-closed policy ordering
* test(onboarding): assert bound gateway handoff
* fix(codex): bind runtime resolution to spawn cwd
* test(crestodian): assert policy rejection order
* fix(cli): preserve gateway routing across restarts
* fix(macos): fail closed during gateway edits
* test(macos): cover gateway route generation races
* chore: keep release notes out of onboarding PR
* fix(ci): refresh onboarding generated checks
* style(swift): align gateway channel formatting
* fix(ci): refresh plugin SDK surface budgets
* fix(ci): resync native string inventory
* refactor(swift): split gateway channel support
* test(doctor): isolate plugin compatibility registry
* test(macos): isolate gateway onboarding fixtures
* test(macos): assert gateway lease health ordering
* fix(codex): reconcile computer-use startup changes
2026-07-11 10:25:14 -07:00
Peter Steinberger
dba64d574f
chore(release): set version to 2026.7.2
2026-07-11 04:00:49 +01:00
Peter Steinberger
d9f9d339ea
fix(google): retry transient Lyria no-audio responses ( #103326 )
...
* fix(google): retry transient Lyria no-audio responses
* fix(google): bound Lyria retry timeout
2026-07-10 06:18:37 +01:00
Peter Steinberger
e8fcc93cd3
fix(talk): await realtime tool result delivery ( #103268 )
...
* fix(talk): await realtime tool result delivery
* fix(talk): terminally cancel queued results
* chore: keep release changelog out of PR
---------
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-09 20:11:20 -07:00
LiLan0125
db0f6f09dc
fix(google): restore image tool results for prefixed Gemini 2 models ( #102382 )
...
* fix(google): handle prefixed Gemini 2 image fallback
* test(google): cover prefixed Gemini 3 image responses
* docs(changelog): note prefixed Gemini fallback
Co-authored-by: 李兰 0668001394 <li.lan3@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 15:09:05 +01:00
Alix-007
e5259fa8bb
fix(google): add timeout to Vertex ADC token refresh ( #102050 )
...
* fix(google): add timeout to Vertex ADC token refresh
* test(google): consolidate ADC timeout proof
* fix(google): bound all ADC token refreshes
* test(google): observe ADC timeout before advancing time
* fix(google): keep dependency timeout claims exact
* fix(google): bound library-managed ADC refreshes
* fix(google): recover after ADC refresh timeout
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 13:46:33 +01:00
Peter Steinberger
07a7d596ff
feat(providers): add Qwen 3.6 Flash and Gemini 3.1 Live ( #102791 )
...
* feat(providers): add current Qwen and Gemini Live models
* fix(google): align live thinking enum type
* fix(google): align live thinking enum type
2026-07-09 13:37:16 +01:00
Vishal Dharmadhikari
d708df47a3
improve(google): identify OpenClaw Gemini API traffic ( #101834 )
2026-07-07 16:09:02 -06:00
Vincent Koc
b88f80940a
refactor: localize internal implementation symbols ( #101831 )
2026-07-07 10:23:36 -07:00
Happy Dog Support Bot
e591dcfa82
fix(voice-call): persist complete realtime transcripts ( #84161 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Happy Dog Support Bot <bot@happydog.digital >
2026-07-07 14:13:02 +01:00
Vortex Openclaw
1f6ddb5df0
feat(models): add Claude Sonnet 5 support ( #98254 )
...
* feat(models): add Claude Sonnet 5 support
Co-authored-by: Ariel Bravy <ariel@vortexradar.com >
* fix(models): align Sonnet 5 validation baselines
* fix(models): satisfy Sonnet 5 CI contracts
* fix(models): enforce Sonnet 5 provider contracts
* docs(changelog): defer Sonnet 5 release note
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Ariel Bravy <ariel@vortexradar.com >
2026-07-07 00:05:35 +01:00
Martin Moellenbeck
cac05ff695
Fix realtime voice-call barge-in cancellation ( #90749 )
...
* fix voice call realtime barge-in cancellation
* chore: retrigger PR checks
* chore: retrigger PR checks
* fix voice call realtime barge-in fallback
* fix voice call provider barge-in precedence
* fix voice call speech-started fallback contract
* fix late provider barge-in queued audio clear
* fix realtime handler test raw message parsing
* chore rerun ci
* Document realtime speech-start capability
* fix voice call barge-in interruption policy
* fix(voice-call): centralize realtime barge-in
Co-authored-by: Martin Möllenbeck <martin.moellenbeck@5minds.de >
* chore(changelog): leave voice fix to release flow
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-06 23:30:16 +01:00
Peter Steinberger
80537c1ba4
feat(macos): load provider catalog during AI onboarding ( #101132 )
...
* feat(macos): load onboarding providers from gateway
* test(crestodian): widen setup config mock
* fix(crestodian): satisfy onboarding lint gate
* chore(macos): refresh onboarding localization inventory
* test(plugins): cover guided Copilot secret metadata
2026-07-06 20:57:56 +01:00
NIO
2e967ea61d
fix(google): bound OAuth JSON response reads ( #97587 )
...
Co-authored-by: NIO <nocodet@mail.com >
2026-07-06 13:01:25 -04:00