Add IsOpenAIPassthroughEnabled() bypass in two places:
- SelectAccountWithLoadAwareness Layer 2 candidate filtering (line 1285)
- resolveFreshSchedulableOpenAIAccount model check (line 1446)
Without these checks, passthrough accounts are filtered out for models
like gpt-5.4 that aren't in the account's model_mapping, causing 503.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The isModelSupportedByAccount function lost the OpenAI passthrough
check during the upstream merge, causing GPT-5.4 and other models
to be rejected for passthrough accounts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4K image base64 data can exceed 40MB limit, causing "bufio.Scanner:
token too long" errors. Scanner is adaptive (starts at 64KB, grows
as needed), so increasing the cap has no impact on normal responses.
4K image base64 data can exceed 40MB limit, causing "bufio.Scanner:
token too long" errors. Scanner is adaptive (starts at 64KB, grows
as needed), so increasing the cap has no impact on normal responses.
Move daily/weekly/total quota progress bars for API Key accounts from
the capacity column (QuotaBadge) to the usage window column
(UsageProgressBar), providing a consistent visual experience with
other usage displays.
The local go.mod replace directive for go-sora2api pointed to a Windows
path which breaks CI on Linux. Revert sora.NewWebClient back to sora.New
since the remote module doesn't have this method yet.
- Backend: detect and classify 403 responses (validation/violation/forbidden)
- Backend: extract verification/appeal URLs from 403 response body
- Frontend: display forbidden status badges with color coding
- Frontend: show clickable/copyable verification links
- Also includes: sora SDK client rename, table header style fix, tier badge in accounts list
chore: bump version to 0.1.93.23
Scrollbar:
- Override scrollbar-width to 'auto' (was 'thin' ~6px, nearly invisible)
- Increase scrollbar-color opacity to 0.7 (was 0.5)
- Add explicit ::-webkit-scrollbar width 10px for older Chrome
Text selection:
- Block selectstart in Phase 1 (onMouseDown) instead of Phase 2
- Clear existing text selection with removeAllRanges() on drag start
Stability:
- Add window blur handler to cleanup drag on tab switch / window leave
- Guard onWheel RAF callback against stale drag state
- Defensive removeMarquee() before createMarquee()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The global CSS makes all scrollbars transparent by default (only visible
on hover). For table containers, scrollbars should always be visible so
users know the content is scrollable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Binary search in findRowIndexAtY (O(n) → O(log n))
- Short-circuit applyRange when row index unchanged
- Cache scrollParent in beginDrag instead of per-frame lookup
- Skip autoScroll recomputation when scrollTop unchanged
- Detect scrollbar clicks on inner containers, not just document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>