- 01 Mar, 2026 16 commits
-
-
Wesley Liddick authored
feat: add mixed-channel warning for bulk account edit
-
Wesley Liddick authored
feat(admin): add create-and-redeem endpoint for payment integrations
-
Wesley Liddick authored
Upgrade GitHub Actions for Node 24 compatibility
-
erio authored
- Move ADMIN_PAYMENT_INTEGRATION_API.md → docs/ADMIN_PAYMENT_INTEGRATION_API.md - Update README.md reference path - Add payment integration doc download link in admin settings UI (Purchase section) - Add i18n keys: integrationDoc / integrationDocHint (zh + en)
-
Wesley Liddick authored
feat(gateway): 添加 Claude Code 客户端最低版本检查功能
-
Salman Muin Kayser Chishti authored
Signed-off-by:Salman Muin Kayser Chishti <13schishti@gmail.com>
-
QTom authored
- 修复 errcheck: singleflight 返回值类型断言添加 ok 检查 - 修复 gofmt: 格式化 setting_service.go 和 claude_code_validator_test.go - 修复 TestAPIContracts: 在 GET /admin/settings 期望中添加 min_claude_code_version 字段
-
QTom authored
- 通过 User-Agent 识别 Claude Code 客户端并提取版本号 - 在网关层验证客户端版本是否满足管理员配置的最低要求 - 在管理后台提供版本要求配置选项(英文/中文双语) - 实现原子缓存 + singleflight 防止并发问题和 thundering herd - 使用 context.WithoutCancel 隔离 DB 查询,避免客户端断连影响缓存 - 双 TTL 策略:60s 正常、5s 错误恢复,保证性能与可用性 - 仅检查 Claude Code 客户端,其他客户端不受影响 - 添加完整单元测试覆盖版本提取、比对、上下文操作
-
erio authored
-
erio authored
-
erio authored
-
erio authored
- BulkUpdate handler: add structured details to 409 response - BulkUpdateAccounts: simplify to global pre-check before any DB write; remove per-account snapshot tracking which is no longer needed - MixedChannelError.Error(): restore English message for API compatibility - BulkEditAccountModal: use t() with details for both pre-check and 409 fallback paths instead of displaying raw backend strings - Update test to verify pre-check blocks on existing group conflicts
-
erio authored
-
erio authored
Previously, preCheckMixedChannelRisk() skipped when selectedPlatforms had more than one entry, and the catch block in submitBulkUpdate had no 409 handling — so multi-platform conflicts just showed a generic error. - Rename canPreCheck(): only call pre-check API for single-platform antigravity/anthropic selections (API requires a single platform param) - Pass `built` into preCheckMixedChannelRisk() so pendingUpdatesForConfirm is set before returning false - submitBulkUpdate: add 409 mixed_channel_warning catch as fallback for multi-platform case, saving baseUpdates for retry - Remove needsMixedChannelCheck() gate on confirm_mixed_channel_risk flag; use mixedChannelConfirmed alone so multi-platform retry also works
-
erio authored
The response interceptor in client.ts transforms errors into plain objects {status, code, message}, but catch blocks were checking error.response?.status (AxiosError format) which never matched. - Add error field passthrough in client.ts interceptor - Refactor BulkEditAccountModal to use pre-check API (checkMixedChannelRisk) before submit, matching the single edit flow - Fix EditAccountModal catch blocks to use interceptor error format - Add bulk-update mixed channel unit tests -
erio authored
- Move mixed channel check before any DB writes in BulkUpdateAccounts - Return 409 from BulkUpdate handler for MixedChannelError - Add ConfirmDialog to BulkEditAccountModal for mixed channel warning - Update mixed channel warning message to Chinese
-
- 28 Feb, 2026 24 commits
-
-
erio authored
-
erio authored
-
erio authored
-
erio authored
-
shaw authored
- 移除 README.md / README_CN.md 中的 Codex CLI WebSocket v2 配置示例 - UseKeyModal OpenAI 分组新增 "Codex CLI (WebSocket)" tab,区分普通模式与 WS 模式 - 普通模式 config.toml 不含 WebSocket 字段,WS 模式包含 supports_websockets 和 features 配置 - 所有配置统一使用 sub2api 作为 model_provider 名称
-
shaw authored
standalone gosec 扫描 24 万行 Go 代码在 CI 中持续超时, 将其作为 golangci-lint 的内置 linter 运行,复用 AST 解析和缓存大幅提速。 - 在 .golangci.yml 中启用 gosec 并迁移原有排除规则 - golangci-lint timeout 从 5m 提升到 30m - 从 security-scan.yml 移除 standalone gosec 步骤 - 删除不再需要的 .gosec.json 配置文件
-
Wesley Liddick authored
fix(ops): validate error_type against known whitelist before classification
-
Wesley Liddick authored
feat: 添加账号级别 RPM(每分钟请求数)限流功能
-
shaw authored
为 gosec 添加 -exclude-generated 标志,跳过带有 "// Code generated" 注释的文件(如 wire_gen.go), 防止安全扫描因分析自动生成代码而超时。
-
Wesley Liddick authored
feat(admin): 添加管理员直接修改用户 API Key 分组的功能
-
shaw authored
-
QTom authored
-
QTom authored
feat/admin-apikey-group-update 分支给 UserRepository 接口新增了 AddGroupToAllowedGroups 方法,需要在测试 stub 中补充实现以通过编译。 - sora_client_handler_test.go: stubUserRepoForHandler - sora_generation_service_test.go: stubUserRepoForQuota
-
QTom authored
-
QTom authored
Add missing nil argument for rpmCache to NewAccountHandler (5 sites) and NewGatewayService (2 sites) after RPM feature expanded their signatures.
-
QTom authored
Ensures base_rpm validation (clamp 0-10000) is consistent across all four account mutation paths: Create, Update, BulkUpdate, BatchCreate.
-
QTom authored
- Add sanitizeExtraBaseRPM to BulkUpdate handler (was missing) - Add WindowCost scheduling checks to legacy non-sticky selection paths (4 sites), matching existing sticky + load-aware coverage - Export ParseExtraInt from service package, remove duplicate parseExtraIntForValidation from admin handler
-
QTom authored
- Move IncrementRPM after Forward success to prevent phantom RPM consumption during account switch retries - Add base_rpm input sanitization (clamp to 0-10000) in Create/Update - Add WindowCost scheduling checks to legacy path sticky sessions (4 check sites + 4 prefetch sites), fixing pre-existing gap - Clean up rpm_strategy/rpm_sticky_buffer when disabling RPM in BulkEditModal (JSONB merge cannot delete keys, use empty values) - Add json.Number test cases to TestGetBaseRPM/TestGetRPMStickyBuffer - Document TOCTOU race as accepted soft-limit design trade-off
-
QTom authored
Without this, submitting a bulk edit with only RPM changes would be rejected as "no fields selected".
-
QTom authored
Ensures isAccountSchedulableForRPM calls within the routing segment hit the prefetch cache instead of querying Redis individually.
-
QTom authored
- Use TxPipeline (MULTI/EXEC) instead of Pipeline for atomic INCR+EXPIRE - Filter negative values in GetBaseRPM(), update test expectation - Add RPM batch query (GetRPMBatch) to account List API - Add warn logs for RPM increment failures in gateway handler - Reset enableRpmLimit on BulkEditAccountModal close - Use union type 'tiered' | 'sticky_exempt' for rpmStrategy refs - Add design decision comments for rdb.Time() RTT trade-off
-
QTom authored
-
QTom authored
-
QTom authored
-