Commit Graph

37139 Commits

Author SHA1 Message Date
Peter Steinberger
81390c643b fix(update): restart Windows startup gateway after update 2026-04-27 23:16:20 +01:00
Peter Steinberger
abf5dea7dd fix(daemon): filter missing service path fallbacks 2026-04-27 23:16:04 +01:00
Peter Steinberger
bf4306d1b0 refactor: route plugin test helpers through sdk 2026-04-27 23:12:21 +01:00
Peter Steinberger
7975305a89 test: cover trusted-proxy secret surfaces 2026-04-27 23:10:22 +01:00
Peter Steinberger
1a98938479 fix: allow trusted-proxy local password fallback 2026-04-27 23:10:22 +01:00
Vincent Koc
61a18e5596 fix(agent): preserve default-agent session routing compatibility (#72414)
* fix(agent): preserve default-agent session routing compatibility

* fix(clownfish): address review for ghcrawl-207038-agentic-merge (1)

* fix(agent): migrate legacy default-agent sessions

* fix(slack): use narrow agent runtime import
2026-04-27 15:09:01 -07:00
Peter Steinberger
5488175b22 test: give xai live search more headroom 2026-04-27 23:07:52 +01:00
Peter Steinberger
42dddbbe78 fix(cli): streamline local model probes 2026-04-27 23:02:26 +01:00
Peter Steinberger
d7dcd0e21e test: stabilize release validation lanes 2026-04-27 23:00:45 +01:00
Peter Steinberger
6f80ba7b78 fix(test): avoid memory provider discovery in registration test 2026-04-27 22:58:55 +01:00
Peter Steinberger
8599fdda4a test: keep extension mocks on sdk seams 2026-04-27 22:55:09 +01:00
Peter Steinberger
c35a96bcbc fix(test): use focused plugin sdk test seams 2026-04-27 22:47:57 +01:00
Peter Steinberger
24b45a038c fix(gateway): bound supervised lock recovery 2026-04-27 22:44:37 +01:00
Peter Steinberger
43ababf96b fix(gateway): keep startup sidecars responsive 2026-04-27 22:44:37 +01:00
Peter Steinberger
75c03b28e0 test(memory): reset timers in index suite 2026-04-27 22:41:56 +01:00
Peter Steinberger
d519dc6976 docs(channels): add channel docking concept 2026-04-27 22:37:58 +01:00
Vincent Koc
2c2a240344 fix(ci): filter macOS CodeQL dependency SARIF
Filter SwiftPM dependency build results from the manual macOS CodeQL shard before upload. Verified with workflow sanity, local jq filtering, and profile=macos-security branch proof in 15m54s. PR CI has the same unrelated extensions/memory-core timeout failure currently present on main.
2026-04-27 14:37:29 -07:00
Peter Steinberger
7807e8118c perf(test): slim codex web search test imports 2026-04-27 22:34:48 +01:00
Peter Steinberger
a8c548f4f3 test: route extension tests through sdk seams 2026-04-27 22:34:21 +01:00
Peter Steinberger
46ba8e7cce feat(plugin-sdk): expose extension test seams 2026-04-27 22:34:21 +01:00
Peter Steinberger
582debbec8 docs(channels): explain dock commands 2026-04-27 22:32:44 +01:00
Peter Steinberger
d24b78e96d test(extensions): use scoped config runtime imports 2026-04-27 22:24:30 +01:00
Peter Steinberger
2216ce3018 test: use narrow config sdk imports 2026-04-27 22:22:34 +01:00
Omar Shahine
da3d17e1ca fix(tts): pre-transcode synthesized audio to opus-in-CAF for native iMessage voice-memo bubbles via BlueBubbles (#72586)
End-to-end testing on macOS + BlueBubbles + ElevenLabs walked through three CAF flavors before landing on the format Apple's Messages.app actually emits when a user records a native iMessage voice memo:

- PCM int16 @ 44.1 kHz CAF: BlueBubbles' internal `afconvert -f m4af -d aac` conversion fails; the original CAF reaches iMessage but renders with 0 s duration.
- AAC @ 22.05 kHz mono CAF: BlueBubbles' conversion succeeds and the server silently downgrades the delivery, sending the converted MP3 as a generic audio attachment.
- **Opus @ 24 kHz mono CAF**: byte-identical to the descriptor block Apple's Messages.app produces; BlueBubbles passes it through unchanged and iMessage renders a native voice-memo bubble with proper duration and waveform UI.

Adds an opt-in `tts.voice.preferAudioFileFormat` channel capability and a macOS `afconvert`-backed pre-transcode in the speech-core pipeline. BlueBubbles declares `preferAudioFileFormat: "caf"`. Other channels are unaffected. Falls back to the original buffer when the host platform, the source/target pair, or the transcoder process can't produce the preferred container — so non-Darwin hosts and unsupported provider combinations are unchanged.

Also adds a `caff` magic-byte sniff in `src/media/mime.ts` so the auto-reply host-local-media validator (which uses `file-type` and didn't recognize CAF natively) accepts the buffer instead of dropping it as "⚠️ Media failed."

Fixes #72506.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 14:15:16 -07:00
Peter Steinberger
fb4d9fc4fb ci: harden npm telegram artifact upload 2026-04-27 22:13:21 +01:00
Peter Steinberger
295d63c331 ci: record package proof in release evidence 2026-04-27 22:00:03 +01:00
Peter Steinberger
1eea534ddb fix(channels): handle generated dock commands 2026-04-27 21:59:15 +01:00
Peter Steinberger
74e62c32c3 test: route extension tests through sdk subpaths 2026-04-27 21:58:48 +01:00
Peter Steinberger
662de55e07 refactor: expose extension sdk boundary seams 2026-04-27 21:58:48 +01:00
Peter Steinberger
3e497f5e2b fix: accept cron delivery thread ids 2026-04-27 21:56:47 +01:00
Peter Steinberger
18ef83c0da fix(feishu): preserve disabled group policy for explicit groups 2026-04-27 21:55:33 +01:00
Peter Steinberger
b3bc60ae25 fix(msteams): unwrap jwt runtime deps 2026-04-27 21:53:51 +01:00
Vincent Koc
bd51f82efa fix(security): harden CodeQL secret ref validation
Remediate current-profile CodeQL findings for file SecretRef id validation and release workflow job permissions. Includes changelog credit. Thanks @vincentkoc.
2026-04-27 13:53:27 -07:00
Peter Steinberger
f2ba8ca927 test: stabilize bundled channel docker smoke 2026-04-27 21:48:26 +01:00
Peter Steinberger
1787d3be07 fix(gateway): scope startup provider discovery 2026-04-27 21:45:54 +01:00
Peter Steinberger
28d9fc5f20 fix(test): include cron delivery thread id in schema keys 2026-04-27 21:43:12 +01:00
Peter Steinberger
db622c67d1 perf(test): slim directive and run-param imports 2026-04-27 21:42:31 +01:00
Vincent Koc
36b5e34fc0 fix(ci): add macOS CodeQL security shard
Add a manual macOS CodeQL security shard scoped to app sources. Verified with profile=macos-security on Blacksmith in 16m55s.
2026-04-27 13:40:34 -07:00
Peter Steinberger
b6be422306 fix(cron): accept threaded delivery in gateway schema 2026-04-27 21:37:18 +01:00
Peter Steinberger
599b1b8462 fix(cloudflare-ai-gateway): strip anthropic thinking prefill 2026-04-27 21:36:50 +01:00
Vincent Koc
013939cfc7 fix(gateway): preserve repeated characters in chat stream merge (#72400)
* fix(gateway): preserve repeated characters in chat stream merge

* fix(gateway): cap live chat stream buffers
2026-04-27 13:35:57 -07:00
Peter Steinberger
59faa023fe fix(gateway): unblock sidecar startup 2026-04-27 21:34:44 +01:00
Peter Steinberger
e60905d754 fix: harden bonjour DNS label truncation (#73022) 2026-04-27 21:33:02 +01:00
Peter Steinberger
7d2d8af3ab fix(plugins): fast-path strict manifest json 2026-04-27 21:27:02 +01:00
Peter Steinberger
11e6928b3e fix: keep runtime context out of user turns 2026-04-27 21:24:56 +01:00
Gustavo Madeira Santana
b9fd13e8d7 qa-matrix: add streaming tool progress scenarios 2026-04-27 16:21:37 -04:00
Gustavo Madeira Santana
3132f4990c qa-lab: generalize tool progress prompts 2026-04-27 16:21:36 -04:00
Gustavo Madeira Santana
24068f19c6 matrix: stream tool progress in previews 2026-04-27 16:21:34 -04:00
MoerAI
01e153986a fix(feishu): admit groups explicitly listed under channels.feishu.groups (#67687)
Feishu config defaults groupPolicy to 'allowlist'. Inbound group handling read groupAllowFrom and called isFeishuGroupAllowed before resolveFeishuReplyPolicy was reached, so a config that only set channels.feishu.groups.<chat_id>.requireMention=false (with no groupAllowFrom) was rejected with 'group not in groupAllowFrom' before per-group requireMention could take effect. Treat the explicit presence of a group entry under channels.feishu.groups as the operator's allowlist signal: if groupConfig is defined, skip the empty-allowlist rejection. resolveFeishuReplyPolicy still owns mention gating, and existing groupConfig.enabled=false / groupAllowFrom-driven rejections are preserved. Adds a regression test that exercises the reporter's exact config shape and confirms inbound text reaches finalize/dispatch.
2026-04-27 21:19:49 +01:00
Peter Steinberger
346d5c28c1 test(acp): use typed attachment root fixture 2026-04-27 21:19:45 +01:00