1284 Commits
Author SHA1 Message Date
Supra4E8C 13f94b47f3 feat(quota): update .quotaAmount styles and add tests for size consistency with quota metadata v1.26.4 2026-10-15 01:10:29 +08:00
Supra4E8C e4e9c54112 refactor(quota): simplify plan display logic and update tests to hide subscription status when no plan is present 2026-10-15 00:58:31 +08:00
Supra4E8C 080970ccfc feat(quota): add support for hour-based window duration and update translations for multiple locales 2026-10-15 00:56:32 +08:00
Supra4E8C eaf7201195 feat(quota): update XaiQuotaBody to display disabled pay-as-you-go option and adjust rendering logic 2026-10-15 00:52:36 +08:00
Supra4E8C 27f0965ac3 refactor(quota): simplify refresh action rendering and update related tests 2026-10-15 00:49:02 +08:00
Supra4E8C 1d45bef307 feat(quota): implement reset grant reading logic with rate limit handling and add tests 2026-10-14 18:41:01 +08:00
Supra4E8C e5c7694b09 fix(i18n): update session affinity terminology in zh-CN and zh-TW locales v1.26.3 2026-10-14 17:27:36 +08:00
Supra4E8C 862d2b247a feat(quota): add quotaPluginId to AuthFileItem and normalizeAuthFileEntry for backend compatibility 2026-10-12 19:48:51 +08:00
Supra4E8C baa2b6298b feat(quota): enhance quota refresh logic to include resetting state and improve test coverage 2026-10-12 19:28:22 +08:00
Supra4E8C 625bf4f7de feat: Refactor OAuth provider UI to consolidate sponsor functionality into a new SponsorCard component
- Removed sponsor-related styles and logic from ProviderTile component.
- Introduced SponsorCard component to handle multiple site entries for sponsors.
- Updated styles for SponsorCard to include unique animations and visual effects.
- Modified the OAuth provider data structure to support multiple sites under a single sponsor.
- Enhanced internationalization support for new sponsor-related strings in multiple languages.
- Added tests to ensure proper rendering and functionality of the new SponsorCard component.
2026-10-12 19:23:16 +08:00
Adeeb Ahmad b41c23890c feat(quota): show Claude extra usage and independent dollar balances (#489)
* feat(quota): display read-only Claude extra usage and dollar balances

* fix(quota): keep Claude usage checks frontend-only

* fix(quota): preserve Claude balance recovery and isolate test i18n
2026-10-12 05:51:58 +08:00
Supra4E8C 390718ecfe fix(quota): fetch plugin quotas through v8 plugin routes
The generic plugin quota card posted to /quota/fetch, which v8 backends
no longer serve, so every plugin quota failed with 404. Resolve the
quota plugin from GET /plugins (shared per connection) and call
POST /plugins/:id/quota instead. Declarative quota_probe credentials
have no v8 route yet and now show an explicit unsupported message.

Refs #491
v1.26.2 v1.26.1
2026-10-11 01:37:12 +08:00
Supra4E8C ec9fc97458 fix(quota): keep built-in quota cards ahead of plugin quotas
Credentials for providers with a built-in quota card (e.g. Codex) were
routed to the generic plugin quota card whenever a plugin advertised
quota support for the same provider, which then failed with 404 on v8
backends. Built-in cards now take precedence; the plugin card is only
used for providers without one.

Refs #491
2026-10-11 01:34:16 +08:00
Supra4E8C fdea9765d2 feat(quota): update client version to 1.0.46 and add tests for quota headers 2026-10-11 01:19:55 +08:00
Supra4E8C 622b011de3 refactor: remove quota section and migrate antigravity credits to advanced section
- Deleted the SectionQuota component and its associated tests, fields, and constants.
- Moved the quotaAntigravityCredits field to the SectionAdvanced component.
- Updated related constants and translations to reflect the removal of the quota section.
- Adjusted tests to ensure consistency with the new configuration structure.
- Ensured that deprecated quota switches are no longer present in the visual config and YAML parsing logic.
2026-10-10 21:29:42 +08:00
Supra4E8C c9e2f7cb0b feat(oauth): add Kimi tile icons and update OAuth provider configuration v1.26.0 2026-10-10 00:25:43 +08:00
Supra4E8C 6e77824628 feat(sponsor): implement sponsor feature with dedicated UI and styling 2026-10-09 20:21:04 +08:00
Supra4E8C 1f5fd846cb feat(oauth): redesign login page as a provider gallery with a focused flow dialog
- Replace the full-width card list with a compact tile grid; tiles show live
  login status (waiting / added / failed) while the dialog is closed
- Clicking a tile starts the login and opens a step-based dialog: auth link
  with highlighted host and inline copy feedback, device code, optional
  manual callback with inline validation, and a live status bar
- Keep success visible until the dialog closes; skip duplicate toasts while
  the provider's dialog already shows the result
- Move Vertex JSON import into the same tile + dialog pattern with drag-and-drop
- Move the page into src/features/oauth and extract the flow state machine
  into useOAuthFlows without changing attempt/cancellation semantics
- Fix xAI callback parsing treating "code: xyz" as an absolute URL
- Add the new keys to all six locales, fill missing zh-TW keys, and drop
  keys orphaned by the redesign
2026-10-09 19:52:23 +08:00
Supra4E8C 350d808cdf style(quota): adjust layout and spacing for codexResetCreditRow 2026-10-09 18:13:05 +08:00
Angello Picasso e70b37a974 feat(quota): render generic plugin quota summaries (#432)
* feat(quota): render generic plugin quota summaries

* fix(quota): support declarative plugin probes

* fix(quota): honor backend capabilities and render meaningful data
2026-10-09 17:02:45 +08:00
Supra4E8C 0c54719159 style(config): start-align add actions under list editors
In a block row an empty list showed its lone Add button at the far
right, away from the label above it. Add actions in string lists,
payload rules and plugin store auth now sit at the start, where the new
item will appear, matching the ICE server editor.
2026-10-09 16:58:24 +08:00
Supra4E8C b1f708d5cc feat(config): show client API keys as compact hairline rows
Each key was a ~150px card with the index pill on its own line and a
solid red delete button. Keys are now single rows (mono index, name,
masked key, actions) under a header that matches the setting rows, with
the add button on the right. Row actions use the secondary text color in
both themes, and delete only shows the danger color on hover or focus.
On mobile the actions wrap below the name.

The item-row and pill overrides in the fields root, and the block
header row class, had no remaining users and are removed.
2026-10-09 16:57:52 +08:00
Supra4E8C 16f1962e69 refactor(ui): drop Input topExtra and labelExtra
They existed only to align fields beside the config page proxy URL
sponsor line, which now renders as the row hint.
2026-10-09 16:57:15 +08:00
Supra4E8C 8ba200df02 refactor(config): render toggles and inputs as one setting-row layout
Toggles were 74px bordered cards while inputs stacked label, field and
hint, and both shared one auto-fit grid, so rows had uneven heights and
up to four nested borders. Every setting is now a row with the title,
hint and error on the left and the control on the right. Only the
control differs: ToggleSetting, TextSetting (sm/md/lg widths, optional
adornment), SelectSetting, and BlockSetting for list editors.

Rows sit in a SettingList, a rounded container with hairline dividers.
A list two columns wide or wider (container query at 880px) pairs its rows; at
520px or less, inputs stack under their labels while switches stay on the right.
A row that would be left alone in its row spans the full width
automatically, so `wide` only marks long URLs and master switches and
must be passed at the call site. The sponsor alignment spacer is gone
because the sponsor link now fills the proxy URL hint slot.

Groups, field order and search anchors are unchanged. New tests cover
row accessibility wiring and render every section to assert that no
list leaves a half-empty row.
2026-10-09 16:56:44 +08:00
Supra4E8C c332bc900e feat(ui): let ToggleSwitch take an external label and show keyboard focus
Accept an id and aria-describedby so a separate <label htmlFor> can name
the switch and a hint can describe it. The hidden checkbox now draws a
focus-visible ring on the track, disabled switches are dimmed, and the
transitions use the shared motion tokens with a reduced-motion fallback.
2026-10-09 16:55:57 +08:00
Bob 00bb5a3b22 fix(oauth): resume status polling after an accepted callback (#486)
A failed status request (a proxy 502, a network drop or a timeout) stops
polling and marks the card failed, but keeps the callback field. If the
user then submits the callback URL, the backend accepts it, since the
login is still pending, and saves the credential. Nothing polls again,
so the card keeps showing the old error.

The backend accepts callbacks only for pending logins, so resume polling
after an accepted callback when it is not already running. Attempts
track whether their poll loop is active.

Signed-off-by: bob <cx742296960@gmail.com>
2026-10-08 21:34:54 +08:00
Supra4E8C 5aa1ad64a6 feat(i18n): add usage breakdown label for shared quota in Korean locale v1.25.6 2026-10-08 16:55:25 +08:00
Supra4E8C 346eaa2367 feat(i18n): add cloud session credits label to Vietnamese locale 2026-10-08 16:54:38 +08:00
☁️dungsil f03160ef43 feat(i18n): add Korean locale (#484) 2026-10-08 16:52:37 +08:00
Supra4E8C 77f10d5949 feat(quota): update xAI quota rendering to show shared usage breakdown and adjust related tests 2026-10-08 16:43:33 +08:00
Supra4E8C ebb4289bc6 feat(github): add GitHub token configuration with localization and tests v1.25.5 2026-10-08 00:56:25 +08:00
Supra4E8C 2ce627defa feat(claude): add ClaudeResetGrantDetails component and related tests; update styles and translations 2026-10-07 23:49:59 +08:00
whale 715cab426f fix(claude): label the dollar-denominated legacy window as cloud session credits (#466)
* fix(claude): label the dollar-denominated legacy window as cloud session credits

* fix(claude): treat remaining_dollars as a credit pool marker
2026-10-07 23:40:51 +08:00
Supra4E8C 18ca877f83 feat(codex): implement cooldown reset logic and add related tests 2026-10-07 23:28:48 +08:00
Supra4E8C 66cafd727c feat(i18n): integrate i18next for localization in provider model options tests 2026-10-07 20:13:34 +08:00
Supra4E8C efe96bff0f refactor: remove testModel field from models and update related logic 2026-10-07 20:05:48 +08:00
Supra4E8C 6abace9ffb Implement feature X to enhance user experience and fix bug Y in module Z v1.25.4 2026-10-07 01:34:06 +08:00
Supra4E8C 936b5eba74 Add Vietnamese locale tests and update existing tests for localization
- Introduced a new test suite for the Vietnamese locale to ensure all English keys are covered with matching interpolation tokens.
- Updated the ApiKeyStrengthMeter and configUiState tests to utilize the LANGUAGE_ORDER constant for locale management.
- Enhanced test descriptions for clarity regarding supported locales.
2026-10-07 01:14:28 +08:00
Supra4E8C bb324614ff fix(config): point migrated OAuth settings at upstream.* paths
Backend config_v8.go relocated shared provider behavior out of
oauth.providers.* to upstream.* (v8SharedPaths): Codex cloaking,
model-level cooling, stream bootstrap, orphan delegation and response
steering; Claude model-level cooling, cloak mode, cloaking model list
and header-defaults; and xAI inject-x-search. Read and write the
canonical paths so the panel reflects the values the runtime actually
applies; the backend still accepts and migrates legacy spellings.

OAuth-only fields (Codex live-media-relay and header-defaults,
Antigravity, aistudio, devin) keep their oauth.providers.* paths.
2026-10-07 01:11:24 +08:00
Supra4E8C 3a71fcf8d5 fix(config): read/write optimize-multi-agent-v2 at canonical client path
The backend migrated oauth.providers.codex.optimize-multi-agent-v2 to
client.codex.optimize-multi-agent-v2 (v8ClientPaths in config_v8.go).
The visual editor still read the historical path, so toggling
"Optimize multi-agent v2" saved but reverted to off after refresh —
and when client.codex already held false, writes to the stale alias
could never enable the feature.

Point the addition field and its search yamlKeys at the canonical
client.codex path; the backend normalizes any remaining legacy keys on
save.

Fixes router-for-me/Cli-Proxy-API-Management-Center#472
2026-10-07 01:10:23 +08:00
fc9b8e2d40 feat(i18n): add Vietnamese (vi) locale (#382)
Add a complete Vietnamese translation for the Management Center UI:

- src/i18n/locales/vi.json: full translation of all 1540 keys from
  en.json, with all interpolation placeholders preserved
- src/i18n/index.ts: register the vi resource bundle
- src/types/common.ts: extend the Language type with 'vi'
- src/utils/constants.ts: add 'vi' to LANGUAGE_ORDER and
  LANGUAGE_LABEL_KEYS
- src/utils/language.ts: auto-detect vi-* browser languages
- locales/{en,zh-CN,zh-TW,ru}.json: add the Tiếng Việt label so the
  new language appears in every language switcher

Tested by building with vite and deploying the bundle against a live
CLIProxyAPI v7.2.133 server; vi-* browsers resolve to the Vietnamese
UI and all strings render with correct placeholders.

Co-authored-by: nguyenha935 <nguyenha935@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-05 03:01:41 +08:00
whale dfc1b1cfaa fix(i18n): keep Claude and Antigravity plan names untranslated in Chinese locales (#464)
* fix(i18n): show the Claude Pro plan as Pro in Chinese locales

* fix(i18n): keep Free and Team plan names untranslated in Chinese locales
2026-10-05 02:39:34 +08:00
Supra4E8C ee79a79452 feat: update plan names to Pro 200 and Pro 100 across locales and tests v1.25.3 2026-10-03 15:57:46 +08:00
Supra4E8C 673b8ee9f6 feat: add getPluginLogo utility and corresponding tests for plugin logo resolution 2026-10-02 00:09:08 +08:00
Supra4E8C 752e0ee772 chore: remove demo files and related test cases for Claude reset functionality v1.25.2 2026-10-01 22:17:34 +08:00
Supra4E8C e5fb14c876 feat: implement Claude reset grants functionality with demo and tests 2026-10-01 22:16:26 +08:00
Supra4E8C d554bb0983 feat: add Claude reset grants functionality
- Implemented ClaudeResetGrants component to manage reset grants for Claude usage.
- Integrated reset grant operations with session management and eligibility checks.
- Added API service for reading and claiming reset grants from the Anthropic API.
- Enhanced UI with localized messages for reset grant actions.
- Created tests for grant parsing, claiming, and session handling to ensure reliability.
2026-10-01 21:58:20 +08:00
Supra4E8C a7ec312fbb fix(docs): update README and README_CN for clarity and consistency v1.25.1 2026-10-01 02:33:22 +08:00
Supra4E8C f1ee52cfe5 fix(config): preserve untouched duration fallback values 2026-10-01 02:23:59 +08:00
Supra4E8C 82711432b3 fix(config): match backend YAML boolean semantics 2026-10-01 02:22:42 +08:00