Commit Graph

66940 Commits

Author SHA1 Message Date
github-actions[bot]
6ec49620ba chore(i18n): refresh native de locale 2026-07-04 01:20:54 +00:00
github-actions[bot]
5516775933 chore(i18n): refresh native pt-BR locale 2026-07-04 01:20:38 +00:00
Ivan Z
b381559184 fix(auto-reply): don't block reply completion on transcript mirror (#99549)
* fix(auto-reply): don't block reply completion on transcript mirror

mirrorTranscriptAfterDispatcherDelivery() opens with
`await dispatcher.waitForIdle()` and is awaited from sendFinalPayload,
i.e. before the reply operation completes. When a follow-up is queued
(queueDepth>=2) the dispatcher cannot go idle until this operation
clears, and the operation cannot clear until sendFinalPayload returns —
a completion<->dispatcher-idle deadlock. The reply operation stays
phase=running and surfaces as stalled_agent_run (recovery=none) until
the ~15-minute stuck-session abort.

Run the transcript mirror as fire-and-forget: it is post-delivery
bookkeeping and does not need to gate completion. The operation
completes immediately, the queued follow-up proceeds, the dispatcher
goes idle, and the detached mirror then records the transcript.

Validated live across three backends (LMStudio openai-completions,
claude-cli, DeepSeek cloud): queueDepth 2 and 3, zero stalls.

* test(auto-reply): regression coverage for detached transcript mirror

Two focused tests on the queueDepth>=2 completion<->dispatcher-idle deadlock:
- final reply completes even when dispatcher.waitForIdle() never resolves
  (pre-fix this awaited-mirror path deadlocked; the test hangs on the old code).
- a rejecting background mirror does not fail the reply (the detached .catch
  contains it instead of surfacing an unhandled rejection).

* fix(auto-reply): settle transcript mirrors after delivery

Co-authored-by: Zaytsev Ivan <ivan@jad.ru>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 18:19:58 -07:00
github-actions[bot]
e296d1447e chore(i18n): refresh native zh-TW locale 2026-07-04 01:19:00 +00:00
github-actions[bot]
3b27bb4536 chore(i18n): refresh native zh-CN locale 2026-07-04 01:18:56 +00:00
Marvin Kaunda
5370f64cf0 improve: native iOS look with stock SwiftUI navigation, forms, chat, and talk visualizer (#99231)
* improve(ios): adopt native SwiftUI chrome across the app

* fix(ios): keep phone chat on the native navigation bar

* fix(ios): render licenses screen as native settings rows

* fix(ios): complete native interface polish

* fix(ios): preserve branded native interface

* test(ios): align gateway badge source guard

* fix(ios): center onboarding on iPad

* fix(ios): remove dead reskin symbols

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 18:17:09 -07:00
Dallin Romney
ab9e233d02 improve(qa): execute runtime scenarios through Docker (#99705)
* test(qa): run Docker runtime scenarios end to end

* test(qa): keep plugin lifecycle probe runtime-only
2026-07-03 18:13:28 -07:00
Vincent Koc
bc802ceee1 test(qa): loosen mac script timeout harness 2026-07-04 03:06:25 +02:00
github-actions[bot]
87d8887878 chore(ui): refresh fa control ui locale 2026-07-04 01:04:12 +00:00
github-actions[bot]
484d2e4599 chore(ui): refresh vi control ui locale 2026-07-04 01:03:58 +00:00
github-actions[bot]
54bd83d254 chore(ui): refresh nl control ui locale 2026-07-04 01:03:56 +00:00
github-actions[bot]
77b61d5590 chore(ui): refresh th control ui locale 2026-07-04 01:03:31 +00:00
github-actions[bot]
1622799eb4 chore(ui): refresh pl control ui locale 2026-07-04 01:03:28 +00:00
github-actions[bot]
ccd960ac4a chore(ui): refresh id control ui locale 2026-07-04 01:03:16 +00:00
github-actions[bot]
1f499b01c4 chore(ui): refresh uk control ui locale 2026-07-04 01:03:00 +00:00
github-actions[bot]
a1aaa32e14 chore(ui): refresh tr control ui locale 2026-07-04 01:02:45 +00:00
github-actions[bot]
7e11650d48 chore(ui): refresh it control ui locale 2026-07-04 01:02:42 +00:00
github-actions[bot]
44a8ea4f67 chore(ui): refresh ar control ui locale 2026-07-04 01:02:24 +00:00
github-actions[bot]
336b14978b chore(ui): refresh fr control ui locale 2026-07-04 01:01:53 +00:00
github-actions[bot]
257c50646e chore(ui): refresh es control ui locale 2026-07-04 01:01:43 +00:00
github-actions[bot]
1600621116 chore(ui): refresh ko control ui locale 2026-07-04 01:01:38 +00:00
github-actions[bot]
0ec62b0762 chore(ui): refresh ja-JP control ui locale 2026-07-04 01:01:32 +00:00
github-actions[bot]
261f97c9bf chore(ui): refresh zh-CN control ui locale 2026-07-04 01:01:05 +00:00
github-actions[bot]
d044595776 chore(ui): refresh de control ui locale 2026-07-04 01:00:57 +00:00
github-actions[bot]
c9b2d8d05f chore(ui): refresh zh-TW control ui locale 2026-07-04 01:00:52 +00:00
github-actions[bot]
d1406e835c chore(ui): refresh pt-BR control ui locale 2026-07-04 01:00:44 +00:00
Dallin Romney
1a04c9c2ad refactor: consolidate string reader mechanics (#99676)
* refactor: consolidate string reader mechanics

* fix: declare model catalog normalization dependency

* fix: keep model catalog dependency-free

* refactor(core): keep string readers internal
2026-07-03 18:00:07 -07:00
Ayaan Zaidi
3706ebed33 fix(agents): keep mention state and group intro out of session-stable prompt hash 2026-07-03 17:58:36 -07:00
Dallin Romney
c7aca4f029 refactor: consolidate async timing helpers (#99721) 2026-07-03 17:58:15 -07:00
Alex Knight
342d13a914 fix(plugins): resolve public artifacts from installed plugin roots (#98819)
* fix(plugins): resolve public artifacts from installed plugin roots

Externalized official plugins ship gateway-auth/doctor/secret/message-tool
public artifacts in their installed npm package, but the public-surface
loader only searched bundled locations. On packaged installs this emptied
the gateway auth bypass set for /api/channels/mattermost/command, so every
Mattermost slash callback was rejected 401 before the plugin ran.

Fall back to the plugin's installed package root (install-record index)
when bundled resolution misses; bundled/source locations keep precedence.

Fixes #98740

* fix(gateway): resolve channel auth-bypass artifacts via activation-gated facade

Route gateway-auth bypass artifact loading through the activation-gated
facade seam so externalized (installed) channel plugins keep their
unauthenticated callback paths, while denied/disabled plugins contribute
nothing and never execute artifact code. Reject hardlinked artifacts for
installed plugin roots in the facade loader per hardlink-policy.

Replaces the earlier install-record fallback in the shared bundled
artifact loader, which broadened every artifact surface past its trust
boundary (see PR review); other externalized-plugin surfaces are #98842.

Fixes #98740

* fix(gateway): load facade activation runtime via async lazy import

The sync createRequire/jiti candidate loader for
facade-activation-check.runtime.js only resolves from built dist; under
vitest source runs it cannot follow .js->.ts specifiers or workspace
package subpaths, so the gateway auth-bypass path threw 'Unable to load
facade activation check runtime' (CI shard failure). Add an async
activated-load API backed by dynamic import (vitest- and dist-native),
warm the shared runtime memo, and make the bypass consumer async - its
single caller already awaits behind the config-snapshot promise cache.

* revert(plugins): drop install-record fallback from public-surface loader

Superseded by the activation-gated facade seam in gateway-auth-bypass;
review found the loader-level fallback broadened every artifact surface
past its trust boundary (see PR #98819 discussion).

* fix(plugin-sdk): drop unused oxlint disable on async facade loader

* test(plugin-sdk): cover facade hardlink policy for installed vs core roots

* test(plugin-sdk): cover facade hardlink policy for installed vs core roots

---------

Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
2026-07-04 10:57:42 +10:00
Dallin Romney
50479c2a66 refactor(text): consolidate cleanup owners (#99718) 2026-07-03 17:56:59 -07:00
/Z.X/
f59310a555 fix(doctor): keep completion repair best-effort (#99540)
Treat wrapped shell-profile permission failures as an optional doctor repair,
while preserving non-permission failures and the actual failing profile path.
Cover install and upgrade flows across EACCES, EPERM, and EROFS.

Fixes #99237

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 17:35:34 -07:00
2loch-ness6
8d3b459792 fix(file-transfer): don't inline zero-byte files as image content blocks (#99370)
* fix(file-transfer): don't inline zero-byte files as image content blocks

file_fetch's remote mime detection falls back to the extension-derived
MIME type when content sniffing finds nothing to sniff (a zero-byte
buffer), so fetching an empty .png/.jpg/.webp/.gif produces
{type: "image", data: "", mimeType: "image/png"}. That payload-less
image block reached the model as an unrecoverable placeholder instead
of the existing "saved at <path>" text fallback used for every other
non-inlined file. Require a non-empty payload before treating a fetch
as an inline image. Refs #98673.

* test(file-transfer): prove empty image fetch fallback

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-03 17:30:33 -07:00
headbouyJB
24dba4b44a fix(build): forward default exports through stable runtime aliases (#99678)
* fix(build): forward default exports through stable runtime aliases

runtime-postbuild writes stable aliases (`X.runtime.js`) for hashed runtime
chunks as bare `export * from "./X-HASH.js"` — but `export * from` never
re-exports `default`. In the shipped 2026.6.10/2026.6.11 artifacts the
compaction runtime alias points at a chunk whose only export is default, so
its lazy consumer destructuring `{ default: reconcile }` gets undefined:
every successful auto-compaction logs "late compaction count reconcile
failed: TypeError: reconcile is not a function" and the persisted
compactionCount never updates. On local-model deployments the resulting
repeat compactions each cost a multi-minute full re-prefill (observed:
3 compactions in 25 minutes). Other stable aliases are latent instances of
the same generator defect for any target that gains a default export.

Fix: when the alias target has a default export, also emit
`export { default } from ...` (applies to both the stable-alias and
legacy-compat writers). Detection is an anchored export-statement pattern,
verified against all 7 shipped runtime chunks (no false positives; naive
text matching would both miss and over-match — an alias claiming a default
its target lacks is a hard SyntaxError at import). Adds a regression test
mirroring the real compaction-reconcile chunk shape.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H6Hz9UEpxQ4W3d8XecvupH

* fix(build): preserve defaults through legacy runtime aliases

---------

Co-authored-by: headbouyJB <23249268+headbouyJB@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-03 17:15:17 -07:00
Wynne668
61564f2d2e fix(ui): copy workspace file paths over plain HTTP (#98764) 2026-07-03 17:10:20 -07:00
Dallin Romney
e6dec69403 refactor: consolidate image data URL formatting (#99715) 2026-07-03 17:09:30 -07:00
github-actions[bot]
52323b67c5 chore(i18n): refresh native sv locale 2026-07-04 00:04:21 +00:00
github-actions[bot]
a82cd35ed5 chore(i18n): refresh native ru locale 2026-07-04 00:03:00 +00:00
github-actions[bot]
3e4febbe68 chore(i18n): refresh native fa locale 2026-07-04 00:02:45 +00:00
github-actions[bot]
f4f63b1870 chore(i18n): refresh native nl locale 2026-07-04 00:01:11 +00:00
github-actions[bot]
da21e4b8dd chore(i18n): refresh native vi locale 2026-07-04 00:01:03 +00:00
github-actions[bot]
8fe917b4f7 chore(i18n): refresh native pl locale 2026-07-03 23:59:24 +00:00
github-actions[bot]
37c45f28fb chore(i18n): refresh native th locale 2026-07-03 23:59:19 +00:00
Dallin Romney
7a92eb7a37 fix(build): generate plugin sdk declarations for docker package (#99710) 2026-07-03 16:59:04 -07:00
github-actions[bot]
1c93e509a3 chore(i18n): refresh native id locale 2026-07-03 23:57:47 +00:00
github-actions[bot]
703e1adade chore(i18n): refresh native uk locale 2026-07-03 23:57:37 +00:00
Vincent Koc
f53fdb688d fix(qa): restore package docker gates 2026-07-04 01:56:21 +02:00
github-actions[bot]
1e0dd95e5d chore(i18n): refresh native tr locale 2026-07-03 23:56:05 +00:00
github-actions[bot]
851d0ad735 chore(i18n): refresh native it locale 2026-07-03 23:55:56 +00:00
github-actions[bot]
0400be7118 chore(i18n): refresh native ar locale 2026-07-03 23:54:25 +00:00