Skip to content

Refactor/UI#6118

Open
t0ng7u wants to merge 27 commits into
mainfrom
refactor/ui
Open

Refactor/UI#6118
t0ng7u wants to merge 27 commits into
mainfrom
refactor/ui

Conversation

@t0ng7u

@t0ng7u t0ng7u commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator

⚠️ 提交说明 / PR Notice

Important

  • 请提供人工撰写的简洁摘要,避免直接粘贴未经整理的 AI 输出。

📝 变更描述 / Description

(简述:做了什么?为什么这样改能生效?请基于你对代码逻辑的理解来写,避免粘贴未经整理的内容)

🚀 变更类型 / Type of change

  • 🐛 Bug 修复 (Bug fix) - 请关联对应 Issue,避免将设计取舍、理解偏差或预期不一致直接归类为 bug
  • ✨ 新功能 (New feature) - 重大特性建议先通过 Issue 沟通
  • ⚡ 性能优化 / 重构 (Refactor)
  • 📝 文档更新 (Documentation)

🔗 关联任务 / Related Issue

  • Closes # (如有)

✅ 提交前检查项 / Checklist

  • 人工确认: 我已亲自整理并撰写此描述,没有直接粘贴未经处理的 AI 输出。
  • 非重复提交: 我已搜索现有的 IssuesPRs,确认不是重复提交。
  • Bug fix 说明: 若此 PR 标记为 Bug fix,我已提交或关联对应 Issue,且不会将设计取舍、预期不一致或理解偏差直接归类为 bug。
  • 变更理解: 我已理解这些更改的工作原理及可能影响。
  • 范围聚焦: 本 PR 未包含任何与当前任务无关的代码改动。
  • 本地验证: 已在本地运行并通过测试或手动验证,维护者可以据此复核结果。
  • 安全合规: 代码中无敏感凭据,且符合项目代码规范。

📸 运行证明 / Proof of Work

(请在此粘贴截图、关键日志或测试报告,以证明变更生效)

t0ng7u and others added 7 commits July 11, 2026 18:21
…ntity-colored UI

Switch the default theme typography to JetBrains Mono, wire identity colors through pricing/data views, and polish related layout/i18n.
- Replace self-hosted @font-face declarations (font-display: optional) with
  direct Fontsource imports (swap), so the UI always settles on bundled
  fonts instead of staying on system fonts after first paint
- Add JetBrains Mono (@fontsource-variable/jetbrains-mono) as the built-in
  monospace face: it backs --font-mono, .font-mono utilities, and code/pre
- Add a "mono" option to the theme font axis (CSS token, ThemeFont type,
  resolver, and config drawer with live preview); default body font stays
  Public Sans, Anthropic preset keeps Lora serif
- Lighten --subtle-foreground/--faint-foreground in light mode to 60%/40%
  translucent mixes of muted-foreground so secondary metadata (log
  sub-labels, placeholders) reads properly grey; declare once since the
  var() reference resolves per light/dark mode on <html>
Keep truncated cells single-line across data tables, compact oversized quota figures, and replace loud avatar gradients with identity-tint styling that matches badges.

Co-authored-by: Cursor <cursoragent@cursor.com>
Records 337169e (revert of the design-system refactor) and 1b1b23d
(revert of StatusBadge padding) as merged while keeping the refactor/ui
tree unchanged. This branch is the source of truth for UI/UX design;
functional additions from main are merged separately.
Merge origin/main while keeping this branch as the source of truth for
UI/UX. The design-system revert (337169e) and StatusBadge padding
revert (1b1b23d) from main were absorbed without applying them; only
functional additions were ported and re-styled with our primitives:

- usage-logs: Stream/Timing column split with new TimingMetricsCell and
  StreamTpsCell (first-token latency + duration readout, t/s line),
  admin All/Only Mine view scope (useLogsViewScope), and a mobile
  filter-panel collapse toggle in DataTableFilterPanel
- keys: relative timestamps with absolute-time tooltip and stale-access
  highlight via ApiKeyTimestampCell (auto-refreshing now ticker), and
  copy button that resolves the real key on demand
- pricing: ModelBillingModeBadge distinguishing dynamic pricing from
  token/per-request billing in the Type column
- i18n: First token translations for all locales

Rejected from main: icon-badge tones, overview accent theme colors,
bespoke mobile lists (redemptions/keys), and all other styling that
conflicts with the refactor/ui design language.
Amends the merge resolution: drop the duplicated copy icon/tooltip block
that main reintroduced in ApiKeyCell (ours already declares it with the
text-success token), and port the functional change from main e400619
that hides the Delete all stale button entirely when no stale instances
exist instead of rendering it disabled.
1250fb2 adds -ml-1.5 padding compensation to the old-design logs Time
badge; our plain StatusBadge has no horizontal padding so the offset
does not apply. Style follows refactor/ui.
@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 542 files, which is 392 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e714b5ef-94ee-4333-bab1-cb39a4d66efc

📥 Commits

Reviewing files that changed from the base of the PR and between 7c28993 and 8b25539.

⛔ Files ignored due to path filters (1)
  • web/bun.lock is excluded by !**/*.lock
📒 Files selected for processing (542)
  • common/constants.go
  • controller/audit.go
  • controller/channel.go
  • web/classic/src/components/settings/ChannelSelectorModal.jsx
  • web/classic/src/components/table/channels/modals/MultiKeyManageModal.jsx
  • web/classic/src/components/table/users/modals/UserSubscriptionsModal.jsx
  • web/classic/src/components/topup/modals/TopupHistoryModal.jsx
  • web/classic/src/constants/channel.constants.js
  • web/classic/src/constants/common.constant.js
  • web/classic/src/constants/dashboard.constants.js
  • web/classic/src/hooks/subscriptions/useSubscriptionsData.jsx
  • web/classic/src/index.css
  • web/classic/src/pages/Setting/Chat/SettingsChats.jsx
  • web/classic/src/pages/Setting/Dashboard/SettingsAPIInfo.jsx
  • web/classic/src/pages/Setting/Dashboard/SettingsAnnouncements.jsx
  • web/classic/src/pages/Setting/Dashboard/SettingsFAQ.jsx
  • web/classic/src/pages/Setting/Dashboard/SettingsUptimeKuma.jsx
  • web/classic/src/pages/Setting/Ratio/UpstreamRatioSync.jsx
  • web/classic/src/pages/Setting/Ratio/hooks/useModelPricingEditorState.js
  • web/default/.oxlintrc.json
  • web/default/AGENTS.md
  • web/default/components.json
  • web/default/package.json
  • web/default/src/components/ai-elements/actions.tsx
  • web/default/src/components/ai-elements/artifact.tsx
  • web/default/src/components/ai-elements/branch.tsx
  • web/default/src/components/ai-elements/code-block.tsx
  • web/default/src/components/ai-elements/confirmation.tsx
  • web/default/src/components/ai-elements/context.tsx
  • web/default/src/components/ai-elements/conversation.tsx
  • web/default/src/components/ai-elements/inline-citation.tsx
  • web/default/src/components/ai-elements/open-in-chat.tsx
  • web/default/src/components/ai-elements/plan.tsx
  • web/default/src/components/ai-elements/prompt-input.tsx
  • web/default/src/components/ai-elements/queue.tsx
  • web/default/src/components/ai-elements/response-renderer-alert.tsx
  • web/default/src/components/ai-elements/suggestion.tsx
  • web/default/src/components/ai-elements/web-preview.tsx
  • web/default/src/components/command-menu.tsx
  • web/default/src/components/config-drawer.tsx
  • web/default/src/components/confirm-dialog.tsx
  • web/default/src/components/copy-button.tsx
  • web/default/src/components/data-table/core/badge-cell.tsx
  • web/default/src/components/data-table/core/badge-list-cell-context.ts
  • web/default/src/components/data-table/core/badge-list-cell.tsx
  • web/default/src/components/data-table/core/column-header.tsx
  • web/default/src/components/data-table/core/column-pinning.ts
  • web/default/src/components/data-table/core/content-sized-columns.ts
  • web/default/src/components/data-table/core/data-table-colgroup.tsx
  • web/default/src/components/data-table/core/data-table-header.tsx
  • web/default/src/components/data-table/core/data-table-row.tsx
  • web/default/src/components/data-table/core/data-table-view.tsx
  • web/default/src/components/data-table/core/pagination.tsx
  • web/default/src/components/data-table/core/row-action-menu.tsx
  • web/default/src/components/data-table/core/table-empty.tsx
  • web/default/src/components/data-table/core/table-sizing.ts
  • web/default/src/components/data-table/core/table-skeleton.tsx
  • web/default/src/components/data-table/core/truncated-cell.tsx
  • web/default/src/components/data-table/core/types.ts
  • web/default/src/components/data-table/index.ts
  • web/default/src/components/data-table/layout/card-cell-utils.ts
  • web/default/src/components/data-table/layout/card-field.tsx
  • web/default/src/components/data-table/layout/card-grid.tsx
  • web/default/src/components/data-table/layout/card-row-content.tsx
  • web/default/src/components/data-table/layout/data-table-page.tsx
  • web/default/src/components/data-table/layout/mobile-card-list.tsx
  • web/default/src/components/data-table/static/static-data-table-classnames.ts
  • web/default/src/components/data-table/static/static-data-table.tsx
  • web/default/src/components/data-table/static/static-row-actions.tsx
  • web/default/src/components/data-table/toolbar/bulk-actions.tsx
  • web/default/src/components/data-table/toolbar/faceted-filter.tsx
  • web/default/src/components/data-table/toolbar/filter-panel.tsx
  • web/default/src/components/data-table/toolbar/toolbar.tsx
  • web/default/src/components/data-table/toolbar/view-mode-toggle.tsx
  • web/default/src/components/data-table/toolbar/view-options.tsx
  • web/default/src/components/date-picker.tsx
  • web/default/src/components/datetime-picker.tsx
  • web/default/src/components/design-system/README.md
  • web/default/src/components/design-system/alert-dialog.tsx
  • web/default/src/components/design-system/button.tsx
  • web/default/src/components/design-system/combobox-input.tsx
  • web/default/src/components/design-system/combobox.tsx
  • web/default/src/components/design-system/command.tsx
  • web/default/src/components/design-system/dialog.tsx
  • web/default/src/components/design-system/input-group.tsx
  • web/default/src/components/design-system/input.tsx
  • web/default/src/components/design-system/pagination.tsx
  • web/default/src/components/design-system/select.tsx
  • web/default/src/components/design-system/sidebar.tsx
  • web/default/src/components/design-system/table.tsx
  • web/default/src/components/design-system/tabs.tsx
  • web/default/src/components/design-system/toggle-group.tsx
  • web/default/src/components/design-system/toggle.tsx
  • web/default/src/components/dialog.tsx
  • web/default/src/components/drawer-layout.ts
  • web/default/src/components/error-state.tsx
  • web/default/src/components/group-badge.tsx
  • web/default/src/components/html-content.tsx
  • web/default/src/components/json-code-editor.tsx
  • web/default/src/components/json-editor.tsx
  • web/default/src/components/language-switcher.tsx
  • web/default/src/components/layout/components/app-header.tsx
  • web/default/src/components/layout/components/app-sidebar.tsx
  • web/default/src/components/layout/components/authenticated-layout.tsx
  • web/default/src/components/layout/components/chat-presets-item.tsx
  • web/default/src/components/layout/components/glow.tsx
  • web/default/src/components/layout/components/header.tsx
  • web/default/src/components/layout/components/mobile-drawer.tsx
  • web/default/src/components/layout/components/nav-group.tsx
  • web/default/src/components/layout/components/public-header.tsx
  • web/default/src/components/layout/components/public-page-header.tsx
  • web/default/src/components/layout/components/section-page-layout.tsx
  • web/default/src/components/layout/components/sidebar-view-header.tsx
  • web/default/src/components/layout/components/system-brand.tsx
  • web/default/src/components/layout/components/top-nav.tsx
  • web/default/src/components/layout/index.ts
  • web/default/src/components/learn-more.tsx
  • web/default/src/components/masked-value-display.tsx
  • web/default/src/components/model-group-selector.tsx
  • web/default/src/components/multi-select.tsx
  • web/default/src/components/navigation-progress.tsx
  • web/default/src/components/notification-popover.tsx
  • web/default/src/components/page-transition.tsx
  • web/default/src/components/password-input.tsx
  • web/default/src/components/profile-dropdown.tsx
  • web/default/src/components/provider-badge.tsx
  • web/default/src/components/rich-content.tsx
  • web/default/src/components/risk-acknowledgement-dialog.tsx
  • web/default/src/components/search.tsx
  • web/default/src/components/status-badge.tsx
  • web/default/src/components/table-id.tsx
  • web/default/src/components/tag-input.tsx
  • web/default/src/components/theme-quick-switcher.tsx
  • web/default/src/components/theme-switch.tsx
  • web/default/src/components/ui/accordion.tsx
  • web/default/src/components/ui/alert-dialog.tsx
  • web/default/src/components/ui/alert.tsx
  • web/default/src/components/ui/avatar.tsx
  • web/default/src/components/ui/breadcrumb.tsx
  • web/default/src/components/ui/button-group.tsx
  • web/default/src/components/ui/button.tsx
  • web/default/src/components/ui/calendar.tsx
  • web/default/src/components/ui/card.tsx
  • web/default/src/components/ui/carousel.tsx
  • web/default/src/components/ui/chart.tsx
  • web/default/src/components/ui/checkbox.tsx
  • web/default/src/components/ui/combobox.tsx
  • web/default/src/components/ui/command.tsx
  • web/default/src/components/ui/context-menu.tsx
  • web/default/src/components/ui/dialog.tsx
  • web/default/src/components/ui/drawer.tsx
  • web/default/src/components/ui/dropdown-menu-events.ts
  • web/default/src/components/ui/dropdown-menu.test.tsx
  • web/default/src/components/ui/dropdown-menu.tsx
  • web/default/src/components/ui/empty.tsx
  • web/default/src/components/ui/field.tsx
  • web/default/src/components/ui/hover-card.tsx
  • web/default/src/components/ui/icon-badge.tsx
  • web/default/src/components/ui/input-group.tsx
  • web/default/src/components/ui/input-otp.tsx
  • web/default/src/components/ui/input.tsx
  • web/default/src/components/ui/item.tsx
  • web/default/src/components/ui/kbd.tsx
  • web/default/src/components/ui/menubar.tsx
  • web/default/src/components/ui/native-select.tsx
  • web/default/src/components/ui/navigation-menu.tsx
  • web/default/src/components/ui/popover.tsx
  • web/default/src/components/ui/progress.tsx
  • web/default/src/components/ui/radio-group.tsx
  • web/default/src/components/ui/resizable.tsx
  • web/default/src/components/ui/select.tsx
  • web/default/src/components/ui/separator.tsx
  • web/default/src/components/ui/sheet.tsx
  • web/default/src/components/ui/sidebar.tsx
  • web/default/src/components/ui/skeleton.tsx
  • web/default/src/components/ui/sonner.tsx
  • web/default/src/components/ui/spinner.tsx
  • web/default/src/components/ui/switch.tsx
  • web/default/src/components/ui/table.tsx
  • web/default/src/components/ui/tabs.tsx
  • web/default/src/components/ui/textarea.tsx
  • web/default/src/components/ui/titled-card.tsx
  • web/default/src/components/ui/toggle-group.tsx
  • web/default/src/components/ui/toggle.tsx
  • web/default/src/components/ui/tooltip.tsx
  • web/default/src/config/fonts.ts
  • web/default/src/context/font-provider.tsx
  • web/default/src/context/theme-customization-provider.tsx
  • web/default/src/context/theme-provider.tsx
  • web/default/src/features/auth/auth-layout.tsx
  • web/default/src/features/auth/components/auth-separator.tsx
  • web/default/src/features/auth/components/legal-consent.tsx
  • web/default/src/features/auth/components/oauth-callback-screen.tsx
  • web/default/src/features/auth/components/oauth-providers.tsx
  • web/default/src/features/auth/components/terms-footer.tsx
  • web/default/src/features/auth/components/wechat-login-dialog.tsx
  • web/default/src/features/auth/forgot-password/components/forgot-password-form.tsx
  • web/default/src/features/auth/forgot-password/index.tsx
  • web/default/src/features/auth/hooks/use-email-verification.ts
  • web/default/src/features/auth/hooks/use-oauth-login.ts
  • web/default/src/features/auth/index.ts
  • web/default/src/features/auth/lib/oauth.ts
  • web/default/src/features/auth/lib/validation.ts
  • web/default/src/features/auth/otp/components/otp-form.tsx
  • web/default/src/features/auth/otp/index.tsx
  • web/default/src/features/auth/reset-password-confirm/index.tsx
  • web/default/src/features/auth/secure-verification/components/secure-verification-dialog.tsx
  • web/default/src/features/auth/sign-in/components/user-auth-form.tsx
  • web/default/src/features/auth/sign-in/index.tsx
  • web/default/src/features/auth/sign-up/components/sign-up-form.tsx
  • web/default/src/features/auth/sign-up/index.tsx
  • web/default/src/features/channels/api.ts
  • web/default/src/features/channels/components/channel-card.tsx
  • web/default/src/features/channels/components/channels-columns.tsx
  • web/default/src/features/channels/components/channels-primary-buttons.tsx
  • web/default/src/features/channels/components/channels-table.tsx
  • web/default/src/features/channels/components/data-table-bulk-actions.tsx
  • web/default/src/features/channels/components/data-table-row-actions.tsx
  • web/default/src/features/channels/components/data-table-tag-row-actions.tsx
  • web/default/src/features/channels/components/dialogs/advanced-custom-editor-dialog.tsx
  • web/default/src/features/channels/components/dialogs/balance-query-dialog.tsx
  • web/default/src/features/channels/components/dialogs/channel-test-dialog.tsx
  • web/default/src/features/channels/components/dialogs/codex-usage-dialog.tsx
  • web/default/src/features/channels/components/dialogs/copy-channel-dialog.tsx
  • web/default/src/features/channels/components/dialogs/edit-tag-dialog.tsx
  • web/default/src/features/channels/components/dialogs/fetch-models-dialog.tsx
  • web/default/src/features/channels/components/dialogs/missing-models-confirmation-dialog.tsx
  • web/default/src/features/channels/components/dialogs/multi-key-manage-dialog.tsx
  • web/default/src/features/channels/components/dialogs/multi-key-table-row-actions.tsx
  • web/default/src/features/channels/components/dialogs/ollama-models-dialog.tsx
  • web/default/src/features/channels/components/dialogs/param-override-editor-dialog.tsx
  • web/default/src/features/channels/components/dialogs/status-code-risk-dialog.tsx
  • web/default/src/features/channels/components/dialogs/tag-batch-edit-dialog.tsx
  • web/default/src/features/channels/components/dialogs/upstream-update-dialog.tsx
  • web/default/src/features/channels/components/drawers/channel-mutate-drawer.tsx
  • web/default/src/features/channels/components/drawers/sections/channel-api-access-section.tsx
  • web/default/src/features/channels/components/drawers/sections/channel-basic-section.tsx
  • web/default/src/features/channels/components/drawers/sections/channel-models-section.tsx
  • web/default/src/features/channels/components/model-mapping-editor.tsx
  • web/default/src/features/channels/components/numeric-spinner-input.tsx
  • web/default/src/features/channels/constants.ts
  • web/default/src/features/channels/lib/channel-utils.ts
  • web/default/src/features/dashboard/components/flow/flow-charts.tsx
  • web/default/src/features/dashboard/components/flow/flow-node-filter.tsx
  • web/default/src/features/dashboard/components/models/consumption-distribution-chart.tsx
  • web/default/src/features/dashboard/components/models/log-stat-cards.tsx
  • web/default/src/features/dashboard/components/models/model-charts.tsx
  • web/default/src/features/dashboard/components/models/models-chart-preferences.tsx
  • web/default/src/features/dashboard/components/models/models-filter-dialog.tsx
  • web/default/src/features/dashboard/components/models/performance-overview.tsx
  • web/default/src/features/dashboard/components/overview/announcements-panel.tsx
  • web/default/src/features/dashboard/components/overview/api-info-item.tsx
  • web/default/src/features/dashboard/components/overview/api-info-panel.tsx
  • web/default/src/features/dashboard/components/overview/faq-panel.tsx
  • web/default/src/features/dashboard/components/overview/overview-dashboard.tsx
  • web/default/src/features/dashboard/components/overview/performance-health-panel.tsx
  • web/default/src/features/dashboard/components/overview/summary-cards.tsx
  • web/default/src/features/dashboard/components/overview/uptime-panel.tsx
  • web/default/src/features/dashboard/components/ui/panel-wrapper.tsx
  • web/default/src/features/dashboard/components/ui/stat-card.tsx
  • web/default/src/features/dashboard/components/users/user-charts.tsx
  • web/default/src/features/dashboard/hooks/use-dashboard-config.tsx
  • web/default/src/features/dashboard/index.tsx
  • web/default/src/features/dashboard/lib/api-info.ts
  • web/default/src/features/dashboard/lib/flow-selection.test.ts
  • web/default/src/features/dashboard/lib/flow-selection.ts
  • web/default/src/features/dashboard/lib/flow.test.ts
  • web/default/src/features/dashboard/lib/flow.ts
  • web/default/src/features/errors/forbidden.tsx
  • web/default/src/features/errors/general-error.tsx
  • web/default/src/features/errors/maintenance-error.tsx
  • web/default/src/features/errors/not-found-error.tsx
  • web/default/src/features/errors/unauthorized-error.tsx
  • web/default/src/features/home/components/hero-buttons.tsx
  • web/default/src/features/home/components/sections/cta.tsx
  • web/default/src/features/home/components/sections/hero.tsx
  • web/default/src/features/keys/api.ts
  • web/default/src/features/keys/components/api-key-card.tsx
  • web/default/src/features/keys/components/api-key-group-combobox.tsx
  • web/default/src/features/keys/components/api-keys-cells.tsx
  • web/default/src/features/keys/components/api-keys-columns.tsx
  • web/default/src/features/keys/components/api-keys-delete-dialog.tsx
  • web/default/src/features/keys/components/api-keys-mutate-drawer.tsx
  • web/default/src/features/keys/components/api-keys-primary-buttons.tsx
  • web/default/src/features/keys/components/api-keys-table.tsx
  • web/default/src/features/keys/components/data-table-bulk-actions.tsx
  • web/default/src/features/keys/components/data-table-row-actions.tsx
  • web/default/src/features/keys/components/dialogs/cc-switch-dialog.tsx
  • web/default/src/features/keys/constants.ts
  • web/default/src/features/legal/legal-document.tsx
  • web/default/src/features/models/components/data-table-bulk-actions.tsx
  • web/default/src/features/models/components/data-table-row-actions.tsx
  • web/default/src/features/models/components/deployment-access-guard.tsx
  • web/default/src/features/models/components/deployments-columns.tsx
  • web/default/src/features/models/components/deployments-table.tsx
  • web/default/src/features/models/components/description-cell.tsx
  • web/default/src/features/models/components/dialogs/create-deployment-drawer.tsx
  • web/default/src/features/models/components/dialogs/description-dialog.tsx
  • web/default/src/features/models/components/dialogs/extend-deployment-dialog.tsx
  • web/default/src/features/models/components/dialogs/missing-models-dialog.tsx
  • web/default/src/features/models/components/dialogs/prefill-group-management-dialog.tsx
  • web/default/src/features/models/components/dialogs/rename-deployment-dialog.tsx
  • web/default/src/features/models/components/dialogs/sync-wizard-dialog.tsx
  • web/default/src/features/models/components/dialogs/update-config-dialog.tsx
  • web/default/src/features/models/components/dialogs/upstream-conflict-dialog.tsx
  • web/default/src/features/models/components/dialogs/vendor-mutate-dialog.tsx
  • web/default/src/features/models/components/dialogs/view-details-dialog.tsx
  • web/default/src/features/models/components/dialogs/view-logs-dialog.tsx
  • web/default/src/features/models/components/drawers/model-mutate-drawer.tsx
  • web/default/src/features/models/components/drawers/prefill-group-form-drawer.tsx
  • web/default/src/features/models/components/models-columns.tsx
  • web/default/src/features/models/components/models-primary-buttons.tsx
  • web/default/src/features/models/components/models-table.tsx
  • web/default/src/features/models/components/prefill-group-shared.ts
  • web/default/src/features/models/constants.ts
  • web/default/src/features/models/index.tsx
  • web/default/src/features/performance-metrics/lib/format.ts
  • web/default/src/features/playground/components/chat/playground-empty-state.tsx
  • web/default/src/features/playground/components/input/playground-parameter-panel.tsx
  • web/default/src/features/playground/components/message/message-action-button.tsx
  • web/default/src/features/playground/components/message/message-actions.tsx
  • web/default/src/features/playground/components/message/message-error.tsx
  • web/default/src/features/playground/components/message/message-metadata.tsx
  • web/default/src/features/playground/components/message/playground-message-editor.tsx
  • web/default/src/features/pricing/components/dynamic-pricing-breakdown.tsx
  • web/default/src/features/pricing/components/empty-state.tsx
  • web/default/src/features/pricing/components/loading-skeleton.tsx
  • web/default/src/features/pricing/components/model-billing-mode-badge.tsx
  • web/default/src/features/pricing/components/model-card-grid.tsx
  • web/default/src/features/pricing/components/model-card.tsx
  • web/default/src/features/pricing/components/model-details-api.tsx
  • web/default/src/features/pricing/components/model-details-apps.tsx
  • web/default/src/features/pricing/components/model-details-performance.tsx
  • web/default/src/features/pricing/components/model-details-uptime-sparkline.tsx
  • web/default/src/features/pricing/components/model-details.tsx
  • web/default/src/features/pricing/components/model-perf-badge.tsx
  • web/default/src/features/pricing/components/pricing-columns.tsx
  • web/default/src/features/pricing/components/pricing-sidebar.tsx
  • web/default/src/features/pricing/components/pricing-table.tsx
  • web/default/src/features/pricing/components/pricing-toolbar.tsx
  • web/default/src/features/pricing/components/search-bar.tsx
  • web/default/src/features/pricing/constants.ts
  • web/default/src/features/pricing/hooks/use-filters.ts
  • web/default/src/features/profile/components/checkin-calendar-card.tsx
  • web/default/src/features/profile/components/connected-accounts-card.tsx
  • web/default/src/features/profile/components/dialogs/access-token-dialog.tsx
  • web/default/src/features/profile/components/dialogs/change-password-dialog.tsx
  • web/default/src/features/profile/components/dialogs/delete-account-dialog.tsx
  • web/default/src/features/profile/components/dialogs/email-bind-dialog.tsx
  • web/default/src/features/profile/components/dialogs/telegram-bind-dialog.tsx
  • web/default/src/features/profile/components/dialogs/two-fa-backup-dialog.tsx
  • web/default/src/features/profile/components/dialogs/two-fa-disable-dialog.tsx
  • web/default/src/features/profile/components/dialogs/two-fa-setup-dialog.tsx
  • web/default/src/features/profile/components/language-preferences-card.tsx
  • web/default/src/features/profile/components/notification-settings-card.tsx
  • web/default/src/features/profile/components/passkey-row.tsx
  • web/default/src/features/profile/components/profile-header.tsx
  • web/default/src/features/profile/components/profile-security-card.tsx
  • web/default/src/features/profile/components/profile-settings-card.tsx
  • web/default/src/features/profile/components/sidebar-modules-card.tsx
  • web/default/src/features/profile/components/two-fa-card.tsx
  • web/default/src/features/profile/components/two-fa-row.tsx
  • web/default/src/features/profile/index.tsx
  • web/default/src/features/rankings/components/growth-text.tsx
  • web/default/src/features/rankings/components/market-share-section.tsx
  • web/default/src/features/rankings/components/model-leaderboard.tsx
  • web/default/src/features/rankings/components/models-section.tsx
  • web/default/src/features/rankings/components/pulse-section.tsx
  • web/default/src/features/rankings/components/rankings-hero.tsx
  • web/default/src/features/rankings/index.tsx
  • web/default/src/features/redemption-codes/api.ts
  • web/default/src/features/redemption-codes/components/data-table-bulk-actions.tsx
  • web/default/src/features/redemption-codes/components/data-table-row-actions.tsx
  • web/default/src/features/redemption-codes/components/redemptions-columns.tsx
  • web/default/src/features/redemption-codes/components/redemptions-delete-dialog.tsx
  • web/default/src/features/redemption-codes/components/redemptions-mobile-list.tsx
  • web/default/src/features/redemption-codes/components/redemptions-mutate-drawer.tsx
  • web/default/src/features/redemption-codes/components/redemptions-primary-buttons.tsx
  • web/default/src/features/redemption-codes/components/redemptions-table.tsx
  • web/default/src/features/redemption-codes/constants.ts
  • web/default/src/features/setup/components/admin-step.tsx
  • web/default/src/features/setup/components/complete-step.tsx
  • web/default/src/features/setup/components/database-step.tsx
  • web/default/src/features/setup/components/step-navigation.tsx
  • web/default/src/features/subscriptions/components/data-table-row-actions.tsx
  • web/default/src/features/subscriptions/components/dialogs/subscription-purchase-dialog.tsx
  • web/default/src/features/subscriptions/components/dialogs/user-subscriptions-dialog.tsx
  • web/default/src/features/subscriptions/components/subscriptions-columns.tsx
  • web/default/src/features/subscriptions/components/subscriptions-mutate-drawer.tsx
  • web/default/src/features/subscriptions/components/subscriptions-primary-buttons.tsx
  • web/default/src/features/subscriptions/components/subscriptions-table.tsx
  • web/default/src/features/system-info/components/system-instances-panel.tsx
  • web/default/src/features/system-info/components/system-tasks-panel.tsx
  • web/default/src/features/system-info/index.tsx
  • web/default/src/features/system-settings/auth/bot-protection-section.tsx
  • web/default/src/features/system-settings/auth/custom-oauth/components/discovery-button.tsx
  • web/default/src/features/system-settings/auth/custom-oauth/components/preset-selector.tsx
  • web/default/src/features/system-settings/auth/custom-oauth/components/provider-form-dialog.tsx
  • web/default/src/features/system-settings/auth/custom-oauth/components/provider-table.tsx
  • web/default/src/features/system-settings/auth/custom-oauth/custom-oauth-section.tsx
  • web/default/src/features/system-settings/auth/oauth-section.tsx
  • web/default/src/features/system-settings/auth/passkey-section.tsx
  • web/default/src/features/system-settings/components/form-dirty-indicator.tsx
  • web/default/src/features/system-settings/components/settings-page-context.tsx
  • web/default/src/features/system-settings/content/announcements-section.tsx
  • web/default/src/features/system-settings/content/api-info-section.tsx
  • web/default/src/features/system-settings/content/chat-dialog.tsx
  • web/default/src/features/system-settings/content/chat-settings-section.tsx
  • web/default/src/features/system-settings/content/chat-settings-visual-editor.tsx
  • web/default/src/features/system-settings/content/dashboard-section.tsx
  • web/default/src/features/system-settings/content/faq-section.tsx
  • web/default/src/features/system-settings/content/uptime-kuma-section.tsx
  • web/default/src/features/system-settings/general/channel-affinity/index.tsx
  • web/default/src/features/system-settings/general/channel-affinity/rule-editor-dialog.tsx
  • web/default/src/features/system-settings/general/checkin-settings-section.tsx
  • web/default/src/features/system-settings/general/pricing-section.tsx
  • web/default/src/features/system-settings/general/quota-settings-section.tsx
  • web/default/src/features/system-settings/general/system-info-section.tsx
  • web/default/src/features/system-settings/integrations/amount-discount-dialog.tsx
  • web/default/src/features/system-settings/integrations/amount-discount-visual-editor.tsx
  • web/default/src/features/system-settings/integrations/amount-options-visual-editor.tsx
  • web/default/src/features/system-settings/integrations/creem-product-dialog.tsx
  • web/default/src/features/system-settings/integrations/creem-products-visual-editor.tsx
  • web/default/src/features/system-settings/integrations/email-settings-section.tsx
  • web/default/src/features/system-settings/integrations/ionet-deployment-settings-section.tsx
  • web/default/src/features/system-settings/integrations/monitoring-settings-section.tsx
  • web/default/src/features/system-settings/integrations/payment-method-dialog.tsx
  • web/default/src/features/system-settings/integrations/payment-methods-visual-editor.tsx
  • web/default/src/features/system-settings/integrations/payment-settings-section.tsx
  • web/default/src/features/system-settings/integrations/waffo-pancake-settings-section.tsx
  • web/default/src/features/system-settings/integrations/waffo-settings-section.tsx
  • web/default/src/features/system-settings/integrations/worker-settings-section.tsx
  • web/default/src/features/system-settings/maintenance/log-settings-section.tsx
  • web/default/src/features/system-settings/maintenance/performance-section.tsx
  • web/default/src/features/system-settings/maintenance/update-checker-section.tsx
  • web/default/src/features/system-settings/models/channel-selector-dialog.tsx
  • web/default/src/features/system-settings/models/claude-settings-card.tsx
  • web/default/src/features/system-settings/models/conflict-confirm-dialog.tsx
  • web/default/src/features/system-settings/models/constants.ts
  • web/default/src/features/system-settings/models/gemini-settings-card.tsx
  • web/default/src/features/system-settings/models/global-settings-card.tsx
  • web/default/src/features/system-settings/models/grok-settings-card.tsx
  • web/default/src/features/system-settings/models/group-ratio-form.tsx
  • web/default/src/features/system-settings/models/group-ratio-visual-editor.tsx
  • web/default/src/features/system-settings/models/group-special-usable-editor.tsx
  • web/default/src/features/system-settings/models/model-pricing-inputs.tsx
  • web/default/src/features/system-settings/models/model-pricing-sheet.tsx
  • web/default/src/features/system-settings/models/model-ratio-form.tsx
  • web/default/src/features/system-settings/models/model-ratio-table-columns.tsx
  • web/default/src/features/system-settings/models/model-ratio-visual-editor.tsx
  • web/default/src/features/system-settings/models/ratio-settings-card.tsx
  • web/default/src/features/system-settings/models/routing-reliability-section.tsx
  • web/default/src/features/system-settings/models/tiered-pricing-editor.tsx
  • web/default/src/features/system-settings/models/tool-price-settings.tsx
  • web/default/src/features/system-settings/models/upstream-ratio-sync-columns.tsx
  • web/default/src/features/system-settings/models/upstream-ratio-sync-table.tsx
  • web/default/src/features/system-settings/models/upstream-ratio-sync.tsx
  • web/default/src/features/system-settings/request-limits/rate-limit-dialog.tsx
  • web/default/src/features/system-settings/request-limits/rate-limit-section.tsx
  • web/default/src/features/system-settings/request-limits/rate-limit-visual-editor.tsx
  • web/default/src/features/system-settings/request-limits/ssrf-section.tsx
  • web/default/src/features/system-settings/request-limits/token-limit-section.tsx
  • web/default/src/features/usage-logs/components/columns/column-helpers.tsx
  • web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx
  • web/default/src/features/usage-logs/components/columns/drawing-logs-columns.tsx
  • web/default/src/features/usage-logs/components/columns/task-logs-columns.tsx
  • web/default/src/features/usage-logs/components/common-logs-filter-bar.tsx
  • web/default/src/features/usage-logs/components/common-logs-header-actions.tsx
  • web/default/src/features/usage-logs/components/common-logs-stats.tsx
  • web/default/src/features/usage-logs/components/compact-date-time-range-picker.tsx
  • web/default/src/features/usage-logs/components/dialogs/audio-preview-dialog.tsx
  • web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
  • web/default/src/features/usage-logs/components/dialogs/fail-reason-dialog.tsx
  • web/default/src/features/usage-logs/components/dialogs/prompt-dialog.tsx
  • web/default/src/features/usage-logs/components/dialogs/task-details-dialog.tsx
  • web/default/src/features/usage-logs/components/logs-filter-toolbar.tsx
  • web/default/src/features/usage-logs/components/model-badge.tsx
  • web/default/src/features/usage-logs/components/timing-metrics-cell.tsx
  • web/default/src/features/usage-logs/components/usage-logs-mobile-card.tsx
  • web/default/src/features/usage-logs/components/usage-logs-table.tsx
  • web/default/src/features/usage-logs/constants.ts
  • web/default/src/features/usage-logs/index.tsx
  • web/default/src/features/usage-logs/lib/format.ts
  • web/default/src/features/usage-logs/lib/mappers.ts
  • web/default/src/features/usage-logs/lib/status.ts
  • web/default/src/features/usage-logs/lib/utils.ts
  • web/default/src/features/usage-logs/types.ts
  • web/default/src/features/users/api.ts
  • web/default/src/features/users/components/data-table-row-actions.tsx
  • web/default/src/features/users/components/dialogs/user-binding-dialog.tsx
  • web/default/src/features/users/components/user-quota-dialog.tsx
  • web/default/src/features/users/components/users-columns.tsx
  • web/default/src/features/users/components/users-mutate-drawer.tsx
  • web/default/src/features/users/components/users-primary-buttons.tsx
  • web/default/src/features/users/components/users-table.tsx
  • web/default/src/features/users/constants.ts
  • web/default/src/features/wallet/components/affiliate-rewards-card.tsx
  • web/default/src/features/wallet/components/creem-products-section.tsx
  • web/default/src/features/wallet/components/dialogs/billing-history-dialog.tsx
  • web/default/src/features/wallet/components/dialogs/creem-confirm-dialog.tsx
  • web/default/src/features/wallet/components/dialogs/payment-confirm-dialog.tsx
  • web/default/src/features/wallet/components/dialogs/transfer-dialog.tsx
  • web/default/src/features/wallet/components/recharge-form-card.tsx
  • web/default/src/features/wallet/components/subscription-plans-card.tsx
  • web/default/src/features/wallet/components/wallet-stats-card.tsx
  • web/default/src/features/wallet/hooks/use-affiliate.ts
  • web/default/src/features/wallet/hooks/use-billing-history.ts
  • web/default/src/features/wallet/hooks/use-creem-payment.ts
  • web/default/src/features/wallet/hooks/use-payment.ts
  • web/default/src/features/wallet/hooks/use-redemption.ts
  • web/default/src/features/wallet/hooks/use-waffo-pancake-payment.ts
  • web/default/src/features/wallet/hooks/use-waffo-payment.ts
  • web/default/src/features/wallet/index.tsx
  • web/default/src/features/wallet/lib/billing.ts
  • web/default/src/features/wallet/lib/payment.ts
  • web/default/src/features/wallet/lib/ui.tsx
  • web/default/src/hooks/use-group-ratios.ts
  • web/default/src/hooks/use-table-url-state.ts
  • web/default/src/i18n/config.ts
  • web/default/src/i18n/languages.ts
  • web/default/src/i18n/locales/en.json
  • web/default/src/i18n/locales/fr.json
  • web/default/src/i18n/locales/ja.json
  • web/default/src/i18n/locales/ru.json
  • web/default/src/i18n/locales/vi.json
  • web/default/src/i18n/locales/zh-TW.json
  • web/default/src/i18n/locales/zh.json
  • web/default/src/i18n/static-keys.ts
  • web/default/src/lib/avatar.ts
  • web/default/src/lib/calendar-locale.ts
  • web/default/src/lib/colors.ts
  • web/default/src/lib/format.ts
  • web/default/src/lib/motion.ts
  • web/default/src/lib/theme-customization.ts
  • web/default/src/main.tsx
  • web/default/src/routes/_authenticated/chat/$chatId.tsx
  • web/default/src/routes/_authenticated/models/$section.tsx
  • web/default/src/routes/_authenticated/redemption-codes/index.tsx
  • web/default/src/styles/index.css
  • web/default/src/styles/theme-presets.css
  • web/default/src/styles/theme.css
  • web/default/src/tanstack-table.d.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/ui

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Merge origin/main (c36418c, text protocol conversion and advanced
custom routing). Backend and most frontend changes merged cleanly;
conflicts resolved with refactor/ui as the design source of truth:

- advanced-custom-editor-dialog: keep main new routing/conversion
  feature body, but use our design-system Button/Input imports and
  plain button styling; add the Badge import the new body needs
- details-dialog: adopt main isUsageBillingPathLocal helper for the
  billing path row, keep our muted icon styling
- i18n: union-merge of the new protocol-conversion keys across all
  locales
t0ng7u added 19 commits July 11, 2026 21:50
Merge origin/main (48068ce). The backend billing feature merged
cleanly; the single frontend conflict was a grid ratio tweak to the
old-design mobile log card, which does not exist in our generic
card layout, so our version is kept.
The task-log and MJ task ID cells used a w-max wrapper, so long IDs
(and the platform/action subtitle) overflowed the column and rendered
under the adjacent Cost column. Constrain the cell to the column width
and let the badge label ellipsize; the copy button still copies the
full ID.
…ternal ID locale key

The design-system consolidation refactor dropped the onSelect-to-onClick
bridge for Base UI menu items, silently breaking menu actions such as
'Delete All Disabled' on the channels page, and removed the 'Internal ID'
translation key still used by the task details dialog.
Rework the earlier dropdown onSelect bridge: keep components/ui pristine
and use Base UI's native closeOnClick={false} + onClick at the nine menu
item call sites instead. Move product policies dropped by the refactor
into the design-system adapters: Button restores nativeButton detection
for render={<Link/>}, Select restores the mobile inline (no portal)
popup and the select-item-text wrapping slot.

Also restore behaviors lost in the refactor: page-size preference falls
back to and mirrors the legacy classic-theme key, background refresh
blocks interaction with stale rows again, pricing table rows are
keyboard accessible, and the pricing card grid resets to page 1 when
filters change.
…efault preset

Derive --color-identity-* tokens from theme palette variables (chart and
status hues) instead of fixed oklch hues, so group names, channel ids and
model badges re-tint automatically when a color preset overrides the
palette. The monochrome simple-large preset collapses identity tints to
the foreground via --identity-color-mix: 0%.

Also port main's blue default palette (light/dark), preview the default
preset as a rainbow swatch, and show the token group as a tinted
GroupBadge on the usage-logs page.
… usage logs

Show the retry chain as compact grey inline text next to the channel
badge (middle-collapsed beyond three hops, full chain in the tooltip)
instead of hiding it behind a popover icon. Move the model-mapping route
marker inside the badge's trailing icon slot, size the mapping popover
to its content, and make both model names copyable. Group ratio now
hides together with the group name when sensitive info is masked.
…ow styling

- Replace native datetime-local inputs with a shadcn Calendar range picker:
  preset rail (today/7d/this~last week/30d/this~last month), dual-month
  desktop view, themed time inputs, fresh-range reselect, no outside days
- Default log time range now covers the whole current day (00:00-23:59:59)
- Fix range highlight invisible inside popovers (muted -> accent) and mark
  today by primary text instead of a fill that mimicked selection
- Extract shared calendar locale map (adds zh-TW) for all date pickers
- Generalize disabled-row treatment into status row palettes (error/info/
  warning) and apply them to usage-logs desktop rows and mobile cards
- Split "Earned this month" from "This month" i18n key to stop the check-in
  card translation leaking into date presets
…skeletons

- New data-theme-badge axis (default/lg/xl, site default lg) with config
  drawer section, cookie persistence, and unlayered CSS overrides; unpin
  h-5! on model badge so the setting takes effect
- Right-align and unify type ramp of compound cells inside mobile log
  card rows via in-data-[slot=data-table-card-value] variants
- Fix skeleton overflow on narrow screens at call sites (min-w-0,
  shrink-0, max-w-full) and mirror real toolbar/stat layouts
- Show theme settings trigger on mobile header
- New data-theme-text axis (sm/default/lg/xl/2xl) that overrides only the
  --text-* type ramp, composing with density and presets; config drawer
  section with per-tier "Aa" previews, cookie persistence, i18n for all
  seven locales
- Add one-line font licensing note under the font picker linking Public
  Sans, Lora, and JetBrains Mono sources and the SIL OFL 1.1 license text
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant