Commit Graph
124 Commits
Author SHA1 Message Date
erio abe8162292 chore: bump version to 0.1.93.20 2026-03-08 04:01:34 +08:00
erio 0d179a794d chore: bump version to 0.1.93.19 2026-03-08 03:51:41 +08:00
erio 7f5e7372d3 chore: bump version to 0.1.93.18 2026-03-08 03:43:45 +08:00
erio 87631e753b chore: bump version to 0.1.93.17 2026-03-08 03:33:11 +08:00
erioandClaude Opus 4.6 dc46a49c6c fix: make table scrollbar clearly visible and prevent text selection during drag
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>
2026-03-08 03:17:58 +08:00
erioandClaude Opus 4.6 93cd0fd4b9 fix: make table scrollbar always visible instead of hover-only
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>
2026-03-08 02:56:34 +08:00
erioandClaude Opus 4.6 259b9d2dbb fix: optimize swipe-select with binary search, short-circuit, and scrollbar detection
- 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>
2026-03-08 02:46:15 +08:00
erioandClaude Opus 4.6 b693e46bee chore: bump version to 0.1.93.13
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 02:28:56 +08:00
erioandClaude Opus 4.6 254ded1b8f chore: bump version to 0.1.93.12
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 02:18:14 +08:00
erioandClaude Opus 4.6 eb4dbeb2bd chore: bump version to 0.1.93.11
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:53:31 +08:00
erioandClaude Opus 4.6 1747bf820f chore: bump version to 0.1.93.10
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:37:56 +08:00
erioandClaude Opus 4.6 d79b1c56fa chore: bump version to 0.1.93.9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:29:27 +08:00
erioandClaude Opus 4.6 f9695ca83f chore: bump version to 0.1.93.8
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 00:18:01 +08:00
erioandClaude Opus 4.6 07082650bb chore: bump version to 0.1.93.7
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 23:43:21 +08:00
erioandClaude Opus 4.6 9e50163b80 chore: bump version to 0.1.93.6
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 22:46:08 +08:00
erioandClaude Opus 4.6 4e14409d04 chore: bump version to 0.1.93.5
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 21:06:15 +08:00
erioandClaude Opus 4.6 e951651ee8 chore: bump version to 0.1.93.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 20:14:14 +08:00
erioandClaude Opus 4.6 7f3bf571da chore: bump version to 0.1.93.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:59:51 +08:00
erioandClaude Opus 4.6 2b510b6aed chore: bump version to 0.1.93.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 19:19:23 +08:00
erioandClaude Opus 4.6 4fb58c66c4 chore: bump version to 0.1.93.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 18:36:25 +08:00
erioandClaude Opus 4.6 146f0baebc chore: bump version to 0.1.92.19
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 17:31:01 +08:00
erioandClaude Opus 4.6 3998e58b53 chore: bump version to 0.1.92.18
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 17:20:55 +08:00
erioandClaude Opus 4.6 56c2799293 chore: bump version to 0.1.92.17
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 16:56:40 +08:00
erio 1d4e1feb93 chore: bump version to 0.1.92.16 2026-03-07 14:34:08 +08:00
erio 5f5c41cef6 chore: bump version to 0.1.92.15 2026-03-07 12:53:29 +08:00
erio fcdd34ddb0 chore: bump version to 0.1.92.14 2026-03-07 12:34:48 +08:00
erio 98abcb30e4 chore: bump version to 0.1.92.13 2026-03-07 12:12:11 +08:00
erio ca5b3e6f7a chore: bump version to 0.1.92.12 2026-03-07 05:41:32 +08:00
erio fbdba40f59 chore: bump version to 0.1.92.11 2026-03-07 03:16:02 +08:00
erioandClaude Opus 4.6 d7a3c7f8a8 chore: bump version to 0.1.92.10
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:07:02 +08:00
erioandClaude Opus 4.6 9430776393 chore: bump version to 0.1.92.9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:03:29 +08:00
erioandClaude Opus 4.6 a4ee71d796 chore: bump version to 0.1.92.8
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 19:51:52 +08:00
erioandClaude Opus 4.6 da99de82e9 chore: bump version to 0.1.92.7
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:55:38 +08:00
erioandClaude Opus 4.6 6315dea094 fix: prevent reverse affinity index from premature expiration
The reverse index account_affinity:{accountID} was using the same 1h
EXPIRE as the forward index. But the forward key EXPIRE refreshes on
every client request, while the reverse key only refreshes when a
request is routed to that specific account. This caused reverse keys
to expire prematurely.

Fix: set reverse key EXPIRE to 24h as safety net, rely on
ZREMRANGEBYSCORE for member-level expiration. Also clean up empty
keys after member cleanup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 18:04:52 +08:00
erio 5f4561306f chore: bump version to 0.1.92.5
Made-with: Cursor
2026-03-06 17:31:27 +08:00
erioandClaude Opus 4.6 af5d5dbcbc chore: bump version to 0.1.92.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:01:10 +08:00
erio c616284890 chore: bump version to 0.1.92.3 2026-03-06 15:49:11 +08:00
erio 69abdff732 chore: bump version to 0.1.92.2 2026-03-06 14:24:58 +08:00
erio 75f1faea14 chore: bump version to 0.1.92.1 2026-03-06 13:08:32 +08:00
erio e74270f8eb chore: bump version to 0.1.91.4 2026-03-06 05:29:07 +08:00
erio ee7d6bc19f fix: address load_factor code review findings
- Fix bulk edit: send 0 instead of null/NaN to clear load_factor
- Fix edit modal: explicit NaN check instead of implicit falsy
- Fix create modal: use ?? instead of || for load_factor
- Add load_factor upper limit validation (max 10000)
- Add //go:build unit tag and self-contained intPtrHelper in test
- Add design intent comments on WaitPlan.MaxConcurrency
2026-03-06 04:27:41 +08:00
erio 3d93a29b35 fix: validate account status before update and update load factor hint
- Normalize non-standard status (e.g. "error") to "active" on edit load
- Add pre-submit validation for status field to prevent 400 errors
- Update load factor hint: "提高负载因子可以提高对账号的调度频率"
2026-03-06 04:16:47 +08:00
erio a9ecd7bcc6 chore: bump version to 0.1.91.1 2026-03-06 04:08:37 +08:00
erio 440c3f46a7 feat: add independent load_factor field for scheduling load calculation
- Separate load factor from concurrency: concurrency controls actual
  slot acquisition, load_factor controls load rate calculation
- Add EffectiveLoadFactor() method: LoadFactor > Concurrency > 1
- Add load_factor field to Create/Edit/BulkEdit account forms
- Fix RPM default value: auto-fill 15 when RPM enabled but not set
- Fix stale test compilation errors in server and handler packages
2026-03-06 03:42:24 +08:00
erio c746964936 chore: bump version to 0.1.90.8 2026-03-06 01:16:40 +08:00
erio ce4095904e chore: bump version to 0.1.90.7 2026-03-05 22:56:20 +08:00
erio 02dca78dbe refactor: extract QuotaLimitCard component for reuse in create and edit modals
- Extract quota limit card/toggle UI into QuotaLimitCard.vue component
- Use v-model pattern for clean parent-child data flow
- Integrate into both EditAccountModal and CreateAccountModal
- All apikey accounts (all platforms) now support quota limit on creation
- Bump version to 0.1.90.6
2026-03-05 22:13:56 +08:00
erio 8df299b767 feat: restyle API Key quota limit UI to card/toggle format
- Redesign quota limit section with card layout and toggle switch
- Add watch to clear quota value when toggle is disabled
- Add i18n keys for toggle labels and hints (zh/en)
- Bump version to 0.1.90.5
2026-03-05 22:01:40 +08:00
erio 99331a5285 fix: throttle Anthropic usage queries and pass through upstream HTTP errors
- Frontend: queue Anthropic OAuth/setup-token usage requests by proxy
  with random 1-1.5s interval to prevent upstream 429
- Backend: return ApplicationError with actual upstream status code
  instead of wrapping all errors as 500
- Handle component unmount to skip stale updates on page navigation
2026-03-05 19:12:49 +08:00
erio 9245e197a8 chore: bump version to 0.1.90.3 2026-03-04 21:50:33 +08:00