Commit Graph

63549 Commits

Author SHA1 Message Date
github-actions[bot]
1dd52307fc chore(i18n): refresh native ja-JP locale 2026-07-03 11:25:56 +00:00
github-actions[bot]
4fa4c9e06e chore(i18n): refresh native es locale 2026-07-03 11:25:47 +00:00
github-actions[bot]
1b076209c4 chore(i18n): refresh native de locale 2026-07-03 11:24:06 +00:00
github-actions[bot]
ad74b322ba chore(i18n): refresh native pt-BR locale 2026-07-03 11:23:55 +00:00
github-actions[bot]
3d438588c5 chore(i18n): refresh native zh-TW locale 2026-07-03 11:22:09 +00:00
github-actions[bot]
28062c868c chore(i18n): refresh native zh-CN locale 2026-07-03 11:22:03 +00:00
Jesse Merhi
64318d7624 Rework Android gateway onboarding setup (#98752)
* feat(android): rework gateway onboarding setup

* fix(android): restore protocol mismatch onboarding guidance

* fix(android): sync onboarding native i18n

* fix(android): preserve LAN manual setup prefill

* fix(android): refine onboarding node approval step

* fix(android): polish onboarding recovery actions

* test(android): cover onboarding protocol mismatch copy

* fix(android): separate onboarding node approval

* fix(android): guard onboarding node approval transitions

* fix(android): keep onboarding approval states reachable

* fix(android): wait for node access before onboarding continue

* fix(android): refresh node approval after operator handoff

* fix(android): refresh onboarding approval states

* fix(android): require approval after onboarding permission changes

* fix(android): keep onboarding approval gates active

* fix(android): preserve permission reapproval state

* fix(android): skip node approval on legacy gateways

* fix(android): wait for node approval refresh

* fix(android): preserve camera setting on upgrade

* fix(android): avoid stuck approval check spinner

* fix(android): request talk secrets on operator connects

* fix(android): avoid missed node approval completion

* fix(android): keep nearby LAN setup local

* fix(android): complete onboarding after node approval

* fix(android): reconcile onboarding with gateway auth plans

* chore(android): refresh native i18n inventory after rebase

* Fix Android onboarding review edge cases

* Fix native i18n onboarding sentinels
2026-07-03 21:20:12 +10:00
Jesse Merhi
776b34a4e6 fix: chat.send no reply when thinking metadata is set (#98855)
* fix(gateway): preserve chat thinking metadata

* test: harden chat thinking metadata coverage

* test: harden chat thinking metadata coverage
2026-07-03 21:03:41 +10:00
qingminlong
3e2d373d43 fix(cli): reject unsafe sessions tail counts (#99398)
* fix(cli): reject unsafe sessions tail counts

* fix(cli): reuse strict tail count parser
2026-07-03 03:53:35 -07:00
ooiuuii
05de72c4cd fix: strip conda env marker from host tool runs (#99425)
* fix: strip conda env marker from host exec env

* fix(infra): block Conda default environment selector

Co-authored-by: 丁宇婷0668001435 <ding.yuting@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: 丁宇婷0668001435 <ding.yuting@xydigit.com>
2026-07-03 03:40:51 -07:00
wangmiao0668000666
f84bcdb4d7 fix(anthropic): wire buildGuardedModelFetch into the Cloudflare createClient branch (#98003)
* fix(anthropic): guard Cloudflare Anthropic fetches

Wire the Cloudflare AI Gateway Anthropic SDK client through buildGuardedModelFetch so this path gets the same SSRF and transport policy as sibling providers.

Keep the behavior proof focused on the regression: a Cloudflare Anthropic request pointed at a link-local address must fail before the SDK reaches global fetch.

* fix(anthropic): add loopback proof test to cloudflare fetch wiring

* test(anthropic-cloudflare): trim proof to SSRF-block only, remove synthetic loopback server
2026-07-03 13:17:28 +03:00
Abdullah Taş
6b869a6188 fix(ios): contacts.add crashes the app via unfetched CNContactFormatter keys (#99475)
* fix(ios): prevent contacts.add crash from unfetched CNContactFormatter keys

ContactsService.payload(from:) formats contacts with CNContactFormatter, but
payloadKeys did not include the formatter's required-key descriptor. The
formatter then reads name components (e.g. middleName) that were not fetched,
so CNContact raises CNPropertyNotFetchedException — an Objective-C exception
that is not caught by Swift error handling and terminates the app.

Add CNContactFormatter.descriptorForRequiredKeys(for: .fullName) to payloadKeys
so every key the formatter touches is fetched.

* fix(ios): clarify contact formatter contract

---------

Co-authored-by: abdullahtas0 <“dev.abdullahtas@gmail.com”>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 03:08:15 -07:00
chenyangjun-xy
36dd9ee3c3 Fix/issue 98958 gateway lock fd leak (#99291)
* fix(infra): close fd and remove lock file on writeFile failure (#98958)

When fs.open(lockPath, "wx") succeeds but handle.writeFile() fails
(e.g. disk full / ENOSPC), close the file handle and remove the
partially-written lock file before re-throwing to avoid a file
descriptor leak and stale lock artifact.

Changes:
- src/infra/gateway-lock.ts: nested try-catch around writeFile
- src/infra/gateway-lock.test.ts: test for fd close + lock cleanup
- scripts/verify-gateway-lock-fd-leak*.mjs: fault-injection proof

Co-Authored-By: Claude <noreply@anthropic.com>

* test(infra): strengthen gateway lock cleanup proof

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 02:23:41 -07:00
sunlit-deng
a9051b45cf fix(daemon): avoid loading full gateway logs during diagnostics (#99407)
* fix(daemon): bound gateway diagnostic log reads

* fix(daemon): share bounded gateway log tails

* fix(daemon): complete bounded tail reads

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 02:22:42 -07:00
LZY3538
413acc2e63 fix(compaction): count nested tool result content (#99391)
* fix(compaction): count nested tool result content

* fix(agent-core): unify compaction block extraction

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 02:21:34 -07:00
lwy-2
33c1e6224c fix(feishu): catch unhandled promise rejection in streaming card flush timer (#99301)
* fix(feishu): catch unhandled promise rejection in streaming card flush timer

## What Problem This Solves

The scheduled flush update in FeishuStreamingSession called
`this.update(pending)` without catching potential rejections, which
could cause unhandled promise rejections when card content updates
fail due to transient network errors.

## Why This Change Was Made

Add a `.catch()` with diagnostic logging to the scheduled flush
timer's `update()` call so transient card update failures are visible
without causing unhandled promise rejections.

## User Impact

Scheduled streaming-card updates that fail transiently will log a
diagnostic instead of producing an unhandled promise rejection.

## Evidence

node scripts/run-vitest.mjs extensions/feishu/src/media.test.ts

  Test Files  1 passed (1)
  Tests       44 passed (44)

pnpm exec oxfmt --check ...

  All matched files use the correct format.

node scripts/run-oxlint.mjs ...

  oxlint_exit=0

git diff --check

  exit=0

Co-Authored-By: Claude <noreply@anthropic.com>

* test(feishu): cover rejected scheduled card flush

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 02:20:43 -07:00
SunnyShu
68e06b9ea1 fix(gateway): include session label in deriveSessionTitle fallback chain (#98841)
* fix(gateway): include session label in deriveSessionTitle fallback chain

When a session is renamed with /name, the user-provided label is persisted
in sessions.json but was ignored by deriveSessionTitle. This caused the
TUI session picker and other derived-title consumers to show auto-generated
or UUID-based names instead of the user's label.

Add entry.label to the deriveSessionTitle fallback chain after
displayName and subject, before the auto-derived firstUserMessage and
sessionId fallbacks. This aligns with the existing ACP translator
precedence (derivedTitle ?? displayName ?? label ?? key).

Related to #98742

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test(gateway): tighten session label precedence coverage

* fix(gateway): prioritize explicit session labels

* fix(commands): preserve named-session suggestions

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 02:09:31 -07:00
Yzx
76cf1b01af fix: memory_search honors generic embedding providers (#97095)
* fix(agents): resolve generic memory embedding providers

* test(agents): restore generic embedding registry state

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-03 02:07:43 -07:00
Peter Steinberger
1fef99962e feat(nodes): add auto-discovered Ollama inference (#99234)
* feat(nodes): add local Ollama inference

* fix(gateway): preserve plugin node runtime for agent turns

* feat(ollama): add node inference opt-out

* test(security): preserve plugin runtime exports

* test(security): preserve plugin runtime exports

* test(security): preserve plugin runtime exports

* fix(ci): raise artifact build heap
2026-07-03 01:14:30 -07:00
github-actions[bot]
5e61da3deb chore(i18n): refresh native sv locale 2026-07-03 08:01:07 +00:00
github-actions[bot]
d331a36250 chore(i18n): refresh native ru locale 2026-07-03 08:00:02 +00:00
github-actions[bot]
a6040c3560 chore(i18n): refresh native fa locale 2026-07-03 07:59:17 +00:00
github-actions[bot]
9b30570a93 chore(i18n): refresh native vi locale 2026-07-03 07:58:05 +00:00
github-actions[bot]
7cb41ccc63 chore(i18n): refresh native nl locale 2026-07-03 07:56:42 +00:00
github-actions[bot]
24e6b9fbe1 chore(i18n): refresh native pl locale 2026-07-03 07:53:10 +00:00
github-actions[bot]
5b5fadbf0d chore(i18n): refresh native th locale 2026-07-03 07:47:05 +00:00
github-actions[bot]
adafb56b2e chore(i18n): refresh native id locale 2026-07-03 07:43:18 +00:00
github-actions[bot]
d702f5c6e6 chore(i18n): refresh native uk locale 2026-07-03 07:42:52 +00:00
github-actions[bot]
aa0f36cb06 chore(ui): refresh fa control ui locale 2026-07-03 07:41:36 +00:00
github-actions[bot]
e2ecbc85b7 chore(ui): refresh nl control ui locale 2026-07-03 07:41:31 +00:00
github-actions[bot]
7fb70b235d chore(i18n): refresh native tr locale 2026-07-03 07:41:19 +00:00
github-actions[bot]
e2e0312724 chore(i18n): refresh native it locale 2026-07-03 07:40:56 +00:00
github-actions[bot]
620f2e3112 chore(ui): refresh vi control ui locale 2026-07-03 07:40:46 +00:00
github-actions[bot]
64dd68899e chore(ui): refresh th control ui locale 2026-07-03 07:40:33 +00:00
github-actions[bot]
e3d2878af4 chore(ui): refresh pl control ui locale 2026-07-03 07:40:11 +00:00
github-actions[bot]
7c30ff8a60 chore(ui): refresh id control ui locale 2026-07-03 07:40:05 +00:00
github-actions[bot]
5ef6fb4d7c chore(i18n): refresh native ar locale 2026-07-03 07:39:39 +00:00
github-actions[bot]
f1c4476277 chore(i18n): refresh native hi locale 2026-07-03 07:39:17 +00:00
github-actions[bot]
a8035892b1 chore(ui): refresh it control ui locale 2026-07-03 07:39:08 +00:00
github-actions[bot]
0a9648ba47 chore(ui): refresh uk control ui locale 2026-07-03 07:39:04 +00:00
github-actions[bot]
5e9a62cc19 chore(ui): refresh tr control ui locale 2026-07-03 07:38:52 +00:00
github-actions[bot]
452351cc71 chore(ui): refresh ar control ui locale 2026-07-03 07:38:41 +00:00
github-actions[bot]
96e361558e chore(ui): refresh fr control ui locale 2026-07-03 07:37:45 +00:00
github-actions[bot]
17a1e3bbb2 chore(i18n): refresh native fr locale 2026-07-03 07:37:41 +00:00
github-actions[bot]
6b91507220 chore(i18n): refresh native ko locale 2026-07-03 07:37:36 +00:00
github-actions[bot]
22552d6e66 chore(ui): refresh es control ui locale 2026-07-03 07:37:31 +00:00
github-actions[bot]
89092893fe chore(ui): refresh ja-JP control ui locale 2026-07-03 07:37:28 +00:00
github-actions[bot]
c336256309 chore(ui): refresh ko control ui locale 2026-07-03 07:37:27 +00:00
github-actions[bot]
bbabad4031 chore(ui): refresh zh-CN control ui locale 2026-07-03 07:36:13 +00:00
github-actions[bot]
a2674b6aa4 chore(ui): refresh pt-BR control ui locale 2026-07-03 07:36:05 +00:00