- 14 Mar, 2026 27 commits
-
-
InCerry authored
-
Wesley Liddick authored
feat: add Backend Mode toggle to disable user self-service
-
Wesley Liddick authored
feat: 账号配额支持固定时间重置模式
-
Wesley Liddick authored
refactor: merge bedrock-apikey into unified bedrock channel with auth_mode
-
wucm667 authored
-
SsageParuders authored
-
Wesley Liddick authored
feat(antigravity): add 403 forbidden status detection and display
-
Wesley Liddick authored
feat(ops): make OpenAI token stats optional
-
SsageParuders authored
Consolidate two separate channel types (bedrock + bedrock-apikey) into a single "AWS Bedrock" channel. Authentication mode is now distinguished by credentials.auth_mode ("sigv4" | "apikey") instead of separate types. Backend: - Remove AccountTypeBedrockAPIKey constant - IsBedrock() simplified; IsBedrockAPIKey() checks auth_mode - Add IsAPIKeyOrBedrock() helper to eliminate repeated type checks - Extend pool mode, quota scheduling, and billing to bedrock - Add RetryableOnSameAccount to handleBedrockUpstreamErrors - Add "bedrock" scope to Beta Policy for independent control Frontend: - Merge two buttons into one "AWS Bedrock" with auth mode radio - Badge displays "Anthropic | AWS" - Pool mode and quota limit UI available for bedrock - Quota display in account list (usage bars, capacity badges, reset) - Remove all bedrock-apikey type references -
Wesley Liddick authored
fix: 止血 Codex/Responses 原生 input id 被误改成 fc_*
-
ius authored
-
Wesley Liddick authored
fix: chat compatibility model fallback and reasoning_content output
-
Wesley Liddick authored
fix: respect OpenAI OAuth model mapping in admin available models
-
Wesley Liddick authored
fix: honor account model mapping before group fallback
-
Ethan0x0000 authored
-
InCerry authored
# Conflicts: # backend/internal/service/openai_gateway_service.go
-
Wang Lvyuan authored
-
Wang Lvyuan authored
-
Wesley Liddick authored
fix: sync scheduler snapshot on account updates
-
shaw authored
-
Wesley Liddick authored
docs: add iframe integration feature and ecosystem projects section
-
Wang Lvyuan authored
-
Wang Lvyuan authored
-
Ethan0x0000 authored
- apply default mapped model only when scheduling fallback is actually used - preserve reasoning in OpenAI-compatible output via reasoning_content and avoid invalid input function_call ids
-
InCerry authored
-
Wesley Liddick authored
sub2api: add bedrock support
-
Wang Lvyuan authored
-
- 13 Mar, 2026 13 commits
-
-
erio authored
-
erio authored
The 403 detection PR changed the 401 handler condition from `account.Type == AccountTypeOAuth` to `account.Type == AccountTypeOAuth && account.Platform == PlatformOpenAI`, which accidentally excluded Gemini OAuth from the temp-unschedulable path. Fix: use `!= PlatformAntigravity` instead, preserving Gemini behavior while correctly excluding Antigravity (whose 401 is handled by applyErrorPolicy's temp_unschedulable_rules). Update tests to reflect Antigravity's new 401 semantics: - HandleUpstreamError: Antigravity OAuth 401 now uses SetError - CheckErrorPolicy: Antigravity 401 second hit stays TempUnscheduled - DB fallback: split into Gemini (escalates) and Antigravity (stays temp)
-
Wesley Liddick authored
feat(admin): add user spending ranking dashboard view
-
Wesley Liddick authored
fix: remove SSE termination marker from DefaultStopSequences
-
Wesley Liddick authored
fix(dashboard): prefer username over email prefix in recent usage chart
-
Wesley Liddick authored
fix(admin): default dashboard date range to today
-
shaw authored
-
Wesley Liddick authored
feat: 解耦计费正确性与 usage_logs 批量写压
-
Wesley Liddick authored
chore: codex transform fixes and feature compatibility
-
Wesley Liddick authored
feat(redeem): support subscription type in create-and-redeem API
-
erio authored
Add group_id and validity_days fields to CreateAndRedeemCodeRequest, enabling subscription-type redemption codes to be created and redeemed in a single API call. - Type defaults to "balance" when omitted for backward compatibility - Subscription type requires group_id (non-nil) and validity_days (>0) - Existing balance/concurrency callers are unaffected
-
Ylarod authored
-
erio authored
Backend: - Detect and classify 403 responses into three types: validation (account needs Google verification), violation (terms of service / banned), forbidden (generic 403) - Extract verification/appeal URLs from 403 response body (structured JSON parsing with regex fallback) - Add needs_verify, is_banned, needs_reauth, error_code fields to UsageInfo (omitempty for zero impact on other platforms) - Handle 403 in request path: classify and permanently set account error - Save validation_url in error_message for degraded path recovery - Enrich usage with account error on both success and degraded paths - Add singleflight dedup for usage requests with independent context - Differentiate cache TTL: success/403 → 3min, errors → 1min - Return degraded UsageInfo instead of HTTP 500 on quota fetch errors Frontend: - Display forbidden status badges with color coding (red for banned, amber for needs verification, gray for generic) - Show clickable verification/appeal URL links - Display needs_reauth and degraded error states in usage cell - Add Antigravity tier label badge next to platform type Tests: - Comprehensive unit tests for classifyForbiddenType (7 cases) - Unit tests for extractValidationURL (8 cases including unicode escapes) - Integration test for FetchQuota forbidden path
-