Commit Graph
899 Commits
Author SHA1 Message Date
musistudio 37ae4f51e4 fix(claude-app): preserve preferences on restore (#1768) 2026-09-09 20:04:49 +08:00
musistudio b0d59afe08 Refactor routing configuration and improve provider support 2026-09-09 19:43:16 +08:00
musistudio 2b57c6078f Merge branch 'feat/ai-gateway' into dev/3.1
# Conflicts:
#	packages/core/src/gateway/core-runtime/upstream-header-sanitizer.ts
2026-09-02 20:24:42 +08:00
musistudio 61f8d8a60a Merge branch 'main' into dev/3.1 2026-09-02 20:21:32 +08:00
musistudio 923c742103 Add overview statistics reset with persistent reset tracking 2026-09-02 19:40:54 +08:00
musistudio 4bf550824d Disable streaming replies for Weixin iLink 2026-09-02 19:29:25 +08:00
musistudio 4afd350eef Implement comprehensive application updates 2026-09-02 18:37:11 +08:00
musi 5ad5083b4e Merge pull request #1742 from Pgooone/fix/overview-account-bento-row-clip
fix(ui): 修复账户余额网格行数超限导致的卡片裁切
2026-09-01 22:36:00 +08:00
musi 474dccb0e0 Merge pull request #1736 from BetterAndBetterII/fix/preserve-cowork-egress-hosts
fix: preserve coworkEgressAllowedHosts when rewriting Claude App config
2026-09-01 22:35:15 +08:00
PgoooneandClaude Code ca99139285 fix(ui): 修复账户余额网格行数超限导致的卡片裁切
供应商账户较多时,双行卡片会把 dense 排布撑出超出组件高度档位的
行数,auto-rows-fr 将组件高度均分给每一行后行高被压到单行卡片
最小内容高度以下,卡片文字被裁切、网格出现空洞。

## 根因
- providerAccountBentoRowCount 把 height=2 的组件映射为最多 3 行,
  而每档组件高度只够容纳一行 ~120px 的卡片
- providerAccountBentoLayout 只按格子数(列数 x 行数上限)做预算,
  格子预算无法约束实际 dense 排布占用的行数

## 修复
- 行数上限改为跟随组件高度档位(height 即行数)
- 布局新增行数收敛阶段:模拟 CSS dense 排布计算真实占用行数,
  超限时先从尾部降级双行卡片(跳过手动设定尺寸),仍超限再隐藏
  进 "+N" 溢出块;溢出块同样参与占位模拟,不撑出新行

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-08-31 05:22:25 +08:00
musi c3231f84d7 Merge pull request #1723 from gtapps/fix/1722-responses-tool-strictness
fix(gateway): opt OpenAI Responses tools out of implicit strict mode
2026-08-30 10:46:26 +08:00
musi 51ab4ecafa Merge pull request #1718 from diogomcd/feat/codex-explicit-context-window
feat: allow explicit context window overrides for local Codex providers
2026-08-30 10:45:50 +08:00
Gabriel Tavares 197a8a604f fix(gateway): stamp Responses tool strictness only for Anthropic conversions
Native /v1/responses clients omit strict as API semantics; forcing false opted them out of strict tool schemas.
2026-08-30 01:19:28 +01:00
Yuzhong Zhang dc82dc9e47 fix: preserve coworkEgressAllowedHosts when rewriting Claude App config
Merge existing configLibrary JSON before writing gateway fields so CCR
restarts no longer wipe sandbox egress allowlists.

Fixes #1735
2026-08-29 13:28:08 +00:00
Diogo Macedo d5638fb4f3 fix: honor pinned context windows in Claude App routes with a shared percent helper 2026-08-27 19:20:43 -03:00
Diogo Macedo 49a8b5bd78 fix: remove the hardcoded imported Codex context-window cap 2026-08-27 19:19:34 -03:00
musi aec22a00cc Merge pull request #1682 from songkuan-zheng/feat/ui-provider-advanced-json
feat(ui): edit extraBody and extraHeaders from Advanced settings
2026-08-27 22:41:36 +08:00
musi 46e3232913 Merge pull request #1699 from krajcik/fix/gateway-preload-undici-major-mismatch
fix(gateway): pair dispatchers with bundled undici fetch on undici major mismatch (Node >= 25)
2026-08-27 22:35:35 +08:00
musi 44e3a52990 Merge pull request #1715 from diogomcd/fix/responses-unsupported-metadata
fix: skip session affinity body fields for Codex Responses upstreams
2026-08-27 22:25:18 +08:00
musi e7ff249367 Merge pull request #1711 from diogomcd/fix/invalidate-claude-gateway-model-cache
fix: invalidate Claude gateway model discovery cache when the profile allowlist changes
2026-08-27 22:19:55 +08:00
musi 1798335254 Merge pull request #1720 from diogomcd/feat/claude-app-sync-entry-mode
feat: respect profile Entry mode when syncing the Claude App config
2026-08-27 22:03:08 +08:00
krajcik 98b30c2510 refactor(gateway): defer dispatcher pairing to ai-gateway 1.0.18 2026-08-26 15:35:41 +03:00
Gabriel Tavares 54f57a35d5 fix(gateway): opt OpenAI Responses tools out of implicit strict mode
Claude Code omits tool.strict, so Responses promotes optional fields to required and models emit both Monitor command and ws.
2026-08-25 23:30:35 +01:00
Diogo Macedo 7c1c0d49b4 feat: respeita Entry mode dos perfis no sync da config do app Claude 2026-08-25 16:17:27 -03:00
Diogo Macedo 92d771feb6 fix: honor pinned context windows through metadata merges and effective percent 2026-08-25 15:20:36 -03:00
Diogo Macedo 7a2b4c3a75 feat: respect explicit user context windows over imported Codex caps 2026-08-25 13:03:59 -03:00
musi 99f24806c6 update sponsor 2026-08-25 22:03:48 +08:00
musistudio a8d7038778 Add account filtering and range-aware tray activity widgets 2026-08-25 19:06:24 +08:00
songkuan-zheng 7f2500980d fix(ui): document the raw ai-gateway extraBody shape instead of byModel
Review follow-up: byModel is ai-gateway's normalized internal form
(parseModelScopedBody treats only `default` and actual model names as
scope keys); the raw config saved to disk is `default` plus top-level
model-name keys. The help text, i18n rows and the round-trip test now
use that raw shape.
2026-08-25 06:08:44 +00:00
songkuan-zheng e4ad5db099 feat(ui): edit extraBody and extraHeaders from Advanced settings
The provider dialog had no field for either, so both were config-file
only: invisible in the UI and only editable by hand-writing the config
or writing to the config database directly.

Adds two JSON boxes to the Advanced settings section, next to the usage
connector body that already uses this pattern. They open pre-filled with
whatever the provider carries, and a malformed or non-object value blocks
the save with an inline error instead of writing something the gateway
would ignore.

extraBody and extraHeaders leave providerManualFieldsForSave now that the
draft round-trips them; billing, provider and transformer stay there.
2026-08-25 06:08:22 +00:00
songkuan-zheng a5a5481307 test(e2e): pin the provider-edit spec to the en-US locale
Review follow-up: the spec hard-codes English UI strings ("Providers"
nav, the "Edit <name>" provider aria-label), but the web UI defaults to
the system language, so the suite failed on zh-locale hosts. The
Playwright context locale is now pinned per suite, which keeps the
selectors deterministic without dual-language lookups everywhere.
2026-08-25 06:08:13 +00:00
songkuan-zheng bb6c256b06 test(e2e): cover provider fields the setup dialog cannot edit
Drives the real management UI: seeds a provider carrying extraBody,
extraHeaders and a transformer, opens the edit dialog, saves, and asserts
the three fields are still there afterwards.

The spec fails on the unpatched build and passes with the fix, so it
guards the regression rather than the helper alone.

The CLI web server bootstrap moves out of cli-web.spec.ts into
cli-web-runtime.ts so both specs can start their own instance.
2026-08-25 06:08:13 +00:00
songkuan-zheng 1e696434c8 fix(ui): keep hand-written provider fields when saving from the dialog
Saving a provider from the setup dialog replaced the stored entry with an
object rebuilt from the dialog draft, so every field the form does not
expose was dropped: extraBody, extraHeaders, transformer, billing and the
legacy provider protocol alias.

These only ever come from a hand-written config, and the loss is silent —
the provider keeps working, just without the upstream parameters it was
configured with. Re-typing a base URL on a provider carrying
`extraBody: { default: { reasoning_effort: "high" } }` is enough to turn
reasoning off with no error and no visible change in the UI.

Carry those fields over from the existing provider on edit. The legacy
apiKey/apikey/baseUrl/baseurl aliases are deliberately not carried over:
the form writes the canonical api_key/api_base_url, and a stale alias
would shadow the value the user just typed.
2026-08-25 06:08:13 +00:00
Diogo Macedo 23592a893b fix: contain Claude model discovery cache invalidation failures in the claude-code profile status 2026-08-24 12:06:31 -03:00
Diogo Macedo 6040d66f37 fix: hash generated Claude discovery and bootstrap payloads in the model cache fingerprint 2026-08-24 11:51:46 -03:00
Diogo Macedo c15b668910 fix: skip session affinity body fields for codex responses upstreams 2026-08-24 10:41:34 -03:00
musistudio 829298cf8b Update model catalog for 3.0.22 v3.0.22 2026-08-24 20:19:33 +08:00
musistudio 19e5d4909e Release 3.0.22 2026-08-24 20:16:17 +08:00
musistudio f2360ac046 Merge branch 'main' into dev/3.1 2026-08-24 20:02:57 +08:00
musi 17c8744de9 Merge pull request #1695 from songkuan-zheng/fix/fusion-vision-validate-image-inputs
fix(fusion-vision): validate and repair image inputs before forwarding
2026-08-24 20:02:20 +08:00
musi 3e979650fd Merge pull request #1713 from pacocartones/fix/media-download-release-response-body
fix(media): release artifact response body on early download failures
2026-08-24 19:44:06 +08:00
musistudio 70e7fd1a80 Secure gateway preload file permissions 2026-08-24 19:29:15 +08:00
musistudio 9e7d4f782c Implement router enhancements 2026-08-24 19:02:41 +08:00
pacocartones 6c98ea2adf fix(media): release artifact response body on early download failures
GatewayMediaExecutor.download() left the fetch Response body un-read and un-cancelled on several early-exit paths: a terminal non-ok HTTP status, an oversized declared content-length (declaredLength > maxApiArtifactBytes), and a mid-stream writeSync failure in the download loop. In each case the underlying undici connection/socket is leaked, so repeated failed downloads accumulate open connections and exhaust the pool.

Cancel the response body before throwing on those paths, and cancel the reader in the write-error handler, matching the cancellation already done on the retry branch and the in-loop size-limit branch.
2026-08-24 04:28:06 +00:00
Diogo Macedo b931866671 fix: invalidate gateway model discovery cache when profile allowlist changes 2026-08-23 15:26:17 -03:00
musi 1347c868b4 Merge pull request #1691 from dylanpulver/fix/responses-session-affinity
Forward session id as prompt_cache_key on openai_responses
2026-08-22 18:34:25 +08:00
musi 5475a12a23 Merge pull request #1700 from diogomcd/fix/provider-account-meters-flattening
fix: preserve provider account meters during local agent import
2026-08-22 18:16:27 +08:00
musi e2eb944f5a Merge pull request #1705 from kskadart/fix/claude-code-auth-hook-regression
fix(core): cover Claude Code path in local agent auth provider hook
2026-08-22 17:30:17 +08:00
musistudio ccd00632ac Update project files 2026-08-22 16:12:46 +08:00
musistudio d515556574 Fix profile-specific model routing and gateway shutdown 2026-08-22 10:18:18 +08:00