- 21 Mar, 2026 1 commit
-
-
Eilen6316 authored
-
- 20 Mar, 2026 16 commits
-
-
Wesley Liddick authored
feat(openai): 增加 gpt-5.4-mini/nano 模型支持与定价配置
-
Wesley Liddick authored
fix: quota display shows stale cumulative usage after daily/weekly reset
-
Wesley Liddick authored
fix: 修复 OpenAI 转发路径未应用分组默认模型映射
-
Wesley Liddick authored
fix(apicompat): 修正 Anthropic→OpenAI 推理级别映射
-
Jiahao Luo authored
-
alfadb authored
旧映射错误地将所有级别上移一档(medium→high, high→xhigh), 导致 effort=max 被原样透传到 OpenAI 上游并返回 400 错误。 根据两边官方 API 定义对齐: - Anthropic: low, medium, high(默认), max - OpenAI: low, medium, high(默认), xhigh 新的 1:1 映射:low→low, medium→medium, high→high, max→xhigh
-
Remx authored
-
wucm667 authored
The quota reset mechanism is lazy — quota_daily_used/quota_weekly_used in the database are only reset on the next IncrementQuotaUsed call. The scheduling layer (IsQuotaExceeded) correctly checks period expiry before enforcing limits, so the account remains usable. However, the API response mapper reads the raw DB value without checking expiry, causing the frontend to display cumulative usage (e.g. 110%) even after the reset period has passed. Add IsDailyQuotaPeriodExpired/IsWeeklyQuotaPeriodExpired methods and use them in the mapper to return used=0 when the period has expired.
-
github-actions[bot] authored
-
shaw authored
-
Wesley Liddick authored
fix: allow clearing model restriction in bulk edit when whitelist is empty
-
Wesley Liddick authored
fix(antigravity): correctly mark credits exhausted on "Resource has been exhausted" 429
-
Wesley Liddick authored
fix(antigravity): fast-fail on proxy unavailable, temp-unschedule account
-
Wesley Liddick authored
docs: update docker-compose commands to Docker Compose V2 syntax
-
Wesley Liddick authored
feat(admin): 用户管理新增分组列、分组筛选与专属分组一键替换
-
shaw authored
Add maximum Claude Code version limit to complement the existing minimum version check. Refactor the version cache from single-value to unified bounds struct (min+max) with a single atomic.Value and singleflight group. - Backend: new constant, struct field, cache refactor, validation (semver format + cross-validation max >= min), gateway enforcement, audit diff - Frontend: settings UI input, TypeScript types, zh/en i18n - Add CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 to all Claude Code tutorials on /keys page (unix/cmd/powershell/vscode settings.json)
-
- 19 Mar, 2026 23 commits
-
-
erio authored
shouldMarkCreditsExhausted was blocked by isURLLevelRateLimit check when credit overages retry returned "Resource has been exhausted (e.g. check quota).", causing credits to never be marked as exhausted. This led to an infinite loop where each request injected credits, bypassed model rate limits, and failed again. - Remove isURLLevelRateLimit guard from shouldMarkCreditsExhausted (only called for credit retry responses — if credits retry fails, mark exhausted) - Add "resource has been exhausted" to creditsExhaustedKeywords - Update tests to match corrected behavior
-
erio authored
## Problem When a proxy is unreachable, token refresh retries up to 4 times with 30s timeout each, causing requests to hang for ~2 minutes before failing with a generic 502 error. The failed account is not marked, so subsequent requests keep hitting it. ## Changes ### Proxy connection fast-fail - Set TCP dial timeout to 5s and TLS handshake timeout to 5s on antigravity client, so proxy connectivity issues fail within 5s instead of 30s - Reduce overall HTTP client timeout from 30s to 10s - Export `IsConnectionError` for service-layer use - Detect proxy connection errors in `RefreshToken` and return immediately with "proxy unavailable" error (no retries) ### Token refresh temp-unschedulable - Add 8s context timeout for token refresh on request path - Mark account as temp-unschedulable for 10min when refresh fails (both background `TokenRefreshService` and request-path `GetAccessToken`) - Sync temp-unschedulable state to Redis cache for immediate scheduler effect - Inject `TempUnschedCache` into `AntigravityTokenProvider` ### Account failover - Return `UpstreamFailoverError` on `GetAccessToken` failure in `Forward`/`ForwardGemini` to trigger handler-level account switch instead of returning 502 directly ### Proxy probe alignment - Apply same 5s dial/TLS timeout to shared `httpclient` pool - Reduce proxy probe timeout from 30s to 10s
-
QTom authored
- 新增分组列:展示用户的专属/公开分组,支持 hover 查看详情 - 新增分组筛选:下拉选择或模糊搜索分组名过滤用户 - 专属分组替换:点击专属分组弹出操作菜单,选择目标分组后 自动授予新分组权限、迁移绑定的 Key、移除旧分组权限 - 后端新增 POST /admin/users/:id/replace-group 端点,事务内 完成分组替换并失效认证缓存
-
Wesley Liddick authored
fix(openai): add fallback prompt_cache_key for compat codex OAuth requests
-
Wesley Liddick authored
fix: record original upstream status code when failover exhausted (#1128)
-
Wesley Liddick authored
feat: add ungrouped filter to account
-
Wesley Liddick authored
feat(frontend): 分页 pageSize 持久化到 localStorage,刷新后自动恢复
-
Wesley Liddick authored
ci: sync VERSION file back to default branch after release
-
Wesley Liddick authored
perf(frontend): add virtual scrolling to DataTable
-
Wesley Liddick authored
fix(test): 测试连接收到 403 时将账号标记为 error 状态
-
Wesley Liddick authored
fix: Anthropic tool schema 转换时补充缺失的 properties 字段
-
Rose Ding authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Rose Ding authored
当 Claude Code 发来的 MCP tool 的 input_schema 为 {"type":"object"} 且缺少 properties 字段时,OpenAI Codex 后端会拒绝并报错: Invalid schema for function '...': object schema missing properties. 新增 normalizeToolParameters 函数,在 convertAnthropicToolsToResponses 中 对每个 tool 的 InputSchema 做规范化处理后再赋给 Parameters。 Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Remx authored
- 接入 gpt-5.4-mini/nano 模型识别与规范化,补充默认模型列表 - 增加 gpt-5.4-mini/nano 输入/缓存命中/输出价格与计费兜底逻辑 - 同步前端模型白名单与 OpenCode 配置 - 补充 service tier(priority/flex) 计费回归测试
-
Jerry Fan authored
The project prerequisites already require Docker Compose v2+, but command examples still used the legacy `docker-compose` (hyphenated) form. Replace all command invocations with `docker compose` (space-separated) while keeping file name references (docker-compose.yml, etc.) unchanged. Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
shaw authored
从上游 /v1/messages 响应头被动采集 5h/7d utilization 并存储到 Account.Extra,页面加载时直接读取本地数据而非调用外部 Usage API。 用户可点击"查询"按钮主动拉取最新数据,主动查询结果自动回写被动缓存。 后端: - UpdateSessionWindow 合并采集 5h + 7d headers 为单次 DB 写入 - 新增 GetPassiveUsage 从 Extra 构建 UsageInfo (复用 estimateSetupTokenUsage) - GetUsage 主动查询后 syncActiveToPassive 回写被动缓存 - passive_usage_ 前缀注册为 scheduler-neutral 前端: - Anthropic 账号 mount/refresh 默认 source=passive - 新增"被动采样"标签和"查询"按钮 (带 loading 动画)
-
shaw authored
-
Wang Lvyuan authored
-
Wang Lvyuan authored
-
Hg authored
-
weak-fox authored
-
QTom authored
Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
QTom authored
Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-