Skip to content

fix: align channel cache with ability status - #6997

Closed
DayFliggy wants to merge 241 commits into
QuantumNous:mainfrom
DayFliggy:codex/routing-ability-cache-consistency
Closed

DayFliggy wants to merge 241 commits into
QuantumNous:mainfrom
DayFliggy:codex/routing-ability-cache-consistency

Conversation

@DayFliggy

Copy link
Copy Markdown

变更描述 / Description

本 PR 修正内存渠道缓存与数据库选择路径的能力状态语义。此前内存缓存按启用渠道的 Channel.Group/Models 建索引,数据库路径按 Ability.enabled 过滤;单独禁用某个分组模型能力时,两条路径可能选择不同渠道。现在内存缓存以启用的 Ability 作为分组/模型候选来源,同时继续使用 Channel 状态作为全局门禁,并新增回归测试覆盖禁用、重新启用两个状态。

变更类型 / Type of change

  • 🐛 Bug 修复 (Bug fix)
  • ✨ 新功能 (New feature)
  • ⚡ 性能优化 / 重构 (Refactor)
  • 📝 文档更新 (Documentation)

关联任务 / Related Issue

  • None

提交前检查项 / Checklist

  • 人工确认:已根据源码调用链整理变更说明。
  • 非重复提交:已检查当前本地分支与目标分支状态。
  • 变更理解:已确认 Ability 状态是分组/模型级可用性,Channel 状态是全局门禁。
  • 范围聚焦:未实现新的 Lab 分组、用户手动路由、市场或分布式并发功能。
  • 本地验证:已运行受影响 Go 包测试并通过。
  • 安全合规:未添加敏感凭据。

运行证明 / Proof of Work

已通过:

  • go test -timeout 60s ./model -run '^TestInitChannelCacheHonorsAbilityEnabled$' -count=1
  • go test -timeout 60s ./model ./service ./middleware ./controller
  • git diff --check

DayFliggy added 30 commits July 16, 2026 22:13
- tokens.css: add sketch border-radius tokens, card-sketch-shadow,
  dec-stamp/gold-line/leaf/grid-line decoration tokens for both themes
- base.css: add .sketch-sm/md/lg, .brush-highlight, .grid-paper,
  .section-heading, .stamp-watermark utility classes
- ConsoleCard: add sketch variant (irregular radius + pencil shadow +
  left accent bar); ink variant gets grid-paper texture
- ConsoleButton: hand-drawn radius + layered shadow on all variants;
  new stamp variant (seal-style, slight rotation)
- StatusChip: left color bar + irregular border-radius for all tones
- ConsoleTabs: tapered brush-stroke active indicator + brush-highlight
  on active label text
- DataTable: serif/wide-tracking column headers, gold-line header
  border, dashed row dividers
- EmptyState: replace generic SVG with hand-drawn line-art box + leaf
  sprout decoration
- ConsoleSidebar: texture-paper bg, serif brand name, bamboo-node
  group dividers, wider accent active bar, warm-tile hover
- ConsoleTopbar: gold-line bottom shadow, serif mobile brand, sketch
  radius on active mobile pill with micro-rotation
- PageHero: text-5xl desktop title, brush-highlight on accent phrase
- BalanceCard: sketch card variant, mono-font balance number, wider
  progress bar with irregular radius
- ConsoleModal: sketch radius + gold-line top decoration + serif title
- TextInput: bottom-line only (hand-written feel), no box border
…gant

Day (Desert Ledger, hand-drawn richer):
- sketch radii skew +40%, marker-pen offset shadows deepened
- AI-generated washi paper tile replaces SVG noise (texture-paper)
- AI dry-brush ink stroke divider (.ink-divider) replaces dashed rules
  in sidebar tools and below tab-less page heroes
- AI carved seal stamp watermark on sketch cards (BalanceCard)
- hand-drawn checkbox (slightly-off circle, thicker tick), toggle thumb
  with ink outline, segmented active tile outlined + sketch radius
- SearchInput / AmountInput join the underline hand-written style
- brush-highlight upgraded to polygon brush shape (clip-path token)
- charts: no smoothing, circle markers, dashed grid (lineMood preset)

Night (One Night, Material x Elegant):
- MD3 elevation ladder (5 levels, umbra+penumbra) replaces offset shadows
- MD3 surface tint: gold-warmed surfaces by altitude (tint-1/2/3)
- MD3 state layer: unified gold 8%/12% hover/press tokens
- uniform radii (8/12/16), stamp + ink dividers extinguished via tokens
- StatusChip converts to tonal chip (no left bar), tabs get glow bar
- display numbers go light-weight (500) via display-number utility
- velvet texture tile (alpha 0.05) as page background material
- charts: smooth glowing lines, solid hairline grid, soft area fades

Charts now consume charts/themePreset.ts (lineMood/areaGradient):
TrendDual, TokenTrend, StatsDualTrend, StatsHourly, FlowChart,
InviteMonthChart, OrderRevenueChart.

Textures generated via gpt-image-2 (multi-candidate, sharp-processed):
paper-day.webp, velvet-night.webp, divider-ink.png, seal-stamp.png
Left panel upgrades from static copy to a living narrative that draws
the slogan itself: one key lighting up all models.

- AuthScene.ts (~430 lines): mini canvas engine, independent of MapScene
  but reusing its vocabulary — arcUp bezier packets, request(gold)/
  response(mint) color semantics, iconLoader bitmap cache, DPR cap 2,
  visibilitychange gate, reduced-motion static frame
- 8 real model logos as a constellation (fixed hand-tuned layout that
  avoids the HTML copy bands), sine float + pointer parallax by depth,
  hover shows name label, packet hits pulse the node halo
- 3D key emblem generated via gpt-image-2 (circuit-chip head), white bg
  matted to alpha via luminance+saturation gate, breathing glow beneath;
  vector fallback key kept for load failure
- AI atmosphere backgrounds (portrait webp, 21KB/8KB): ink-wash gold-rim
  mountains by day, aurora ribbons by night; scrim gradient keeps the
  serif headline ≥4.5:1; canvas masked out near the ticker foot
- mini-ticker replaces the three decorative dots: real store data
  (model count / uptime / version) rotating 4s per item via keyed CSS
  animation (Transition dropped frames left it stuck at opacity 0);
  reduced-motion renders all three statically
- theme.ts: authLight/authDark palettes (ink-green night vs charcoal
  night); i18n adds ticker labels in zh-CN/en
Below lg the aside is display:none; instantiating the engine there would
animate a 0x0 canvas forever. Bail out when the panel has no layout.
Panel picks up the theme-forked tokens: sketch-md radius + paper texture
by day, uniform radius + elevation-3 by night. Chevron gets round caps.
Activity/farm/bigame surfaces stay untouched per scope decision.
Rebuilt from the dark split-panel into a full-page editorial spread on
the site's paper ground, in the style of premium AI-relay landings:

- AuthLayout: single texture-paper page, slim top brand bar (brand /
  theme / locale / back-home), content grid = editorial left + floating
  form card right; the card reads hand-drawn by day (sketch radius +
  pencil shadow) and Material by night (uniform radius + elevation-3)
- AuthEditorialPanel: relay diagram (prompt -> byte-level passthrough ->
  official upstream) drawn as thin ink strokes, poetic two-line serif
  headline (一念之轻 / 接万模之响), trust bullet list (no request bodies
  / full TLS / instant access), live stats footer from the app store
- DotGlobe (~300 lines): orthographic dot-matrix earth reusing the
  landMask continents, fibonacci sampling with dithered coastlines,
  slow rotation, hub-to-hub bezier arcs with packet heads and arrival
  pulses — colors resolved from semantic tokens at runtime so the same
  scene reads olive-ink by day and mist-blue by night
- form cards gain a centered motto + serif title; sign-in/up/reset all
  ride the new layout unchanged in behavior
- removed the previous key-constellation panel (AuthScene, brand panel,
  AI background/emblem assets) and its theme palettes
- i18n: relay/editorial/motto strings in zh-CN and en
Add a .sketch-card utility (uneven radius + marker shadow, hover lift in
CSS) and adopt it on the Models, Marketplace, Invite and Orders cards,
replacing per-component inline styles and $el.style mutation.

Bring Tickets and Users into the same family: thread bubbles move from an
inline-style ternary to token classes on the sketch radius, system notes
use the gold hairline, and titles/IDs/quota figures pick up .display-title
and .display-number. Vendor group headers switch to the gold rule.

Night theme follows automatically through the forked tokens — uniform MD3
radius and elevation, no DOM branching.
Replace the single quota-based plan with a discriminated union of two
sellable shapes, and retire the user/token group concept in favour of
channels only.

Plan model:
- traffic pack grants a fixed quota once, with a custom-unit validity
  (hour/day/week/month) or no expiry at all
- subscription pack meters quota per period, either granting it
  (meter=refill) or capping it (meter=cap), for the length of a term
- kind is immutable after creation; the edit route pins it to the stored
  value and clears the other kind's exclusive fields
- sortable columns stay kind-agnostic: a one-off grant and a per-period
  allowance are not comparable, so quota renders per kind but never sorts

Durations are value+unit pairs. Month periods roll over by calendar month
and clamp at month end (Jan 31 + 1mo lands on Feb 28/29), while unit
conversion normalizes a month to 30 days for pricing maths only.

Accent colour accepts a custom hex alongside the three semantic tokens.
This is a managed exception to the semantic-token rule, documented in
docs/THEMES.md: emphasis marks only, validated and normalized server-side,
with a non-blocking contrast warning against both card surfaces.

Retire groups:
- drop UserInfo.group, TokenItem.group, GROUPS, GROUP_RPM, GROUP_DISCOUNT
- rate ceiling moves to the subscription plan's rate_limit
- billing multiplier moves to the plan's ratio; group_ratio becomes
  plan_ratio and DiscountCard keeps its global x plan = effective shape
- demoStorage stops validating `group` before the field is dropped, so
  sessions persisted with it stay valid instead of being logged out

Each plan may bind one exclusive platform channel. Deleting that channel
does not cascade: the plan keeps the id and the UI surfaces it as removed
rather than silently resetting to none.

Entitlements are now { subscription, traffic[] } because each traffic
grant expires on its own schedule and cannot be folded into one balance.

Also fixed along the way:
- .gitignore: anchor the bare `plans` rule to the repo root, which was
  silently excluding frontend/src/components/console/plans/
- RedemptionView: read the live plan catalogue instead of a hardcoded list
  naming a plan that never existed
- RedemptionView: add the hidden md:block guard the other admin tables
  have, which was rendering table and mobile list together under md
- IconButton: dim the disabled state, previously indistinguishable
- AmountInput: optional prefix/integer props so day and order counts stop
  rendering a currency sign
Land the Vue 3 frontend rewrite alongside the upstream backend. The branch
adds frontend/ as a self-contained project and touches nothing else of
substance: no Go files, no web/ sources.

Scope of the merge:
- frontend/ — Vue 3.5 + TS strict, Vite 8, vue-router 5, Pinia 4, Tailwind
  3.4, ECharts 6, vue-i18n 11; 3 auth + 21 console + 5 lab routes
- .gitignore — anchor `plans` to `/plans`; unanchored it also swallowed
  frontend/src/components/console/plans
- AGENTS.md — frontend working rules
- web/public/favicon.ico — dropped; index.html references /logo.png and
  main.tsx sets the icon from status, so the file was orphaned

Not integrated: frontend/dist is not referenced by any Go code. main.go still
embeds web/dist only, so web/ remains the delivered frontend and this merge
does not change the delivery path.

Console and Lab run against an in-browser mock. VITE_API_MODE=http is not
usable yet: the token lifecycle for Authorization: Bearer is unimplemented
and ten route families the mock serves have no backend counterpart. See
docs/REN2HUB_FRONTEND_ARCHITECTURE.md in the workspace repository.
…audit findings

- Add common ErrorBanner/SectionHeading/SkeletonBlock/StatTileGrid primitives; migrate 24 hand-written skeletons across 15 views and four silent-failure pages to shared error states
- Migrate admin channels/users/orders/redemption/plans to unified PageHero headers; adopt SegmentedToggle on dashboard stats and invite sorting; standardize display-number typography
- Align control height scale (FilterSelect sm=32, SegmentedToggle md=40); define .focus-ring utility; fix stamp variant radius override chain
- Fix night-theme leaks (AccountCenter day-only strokes, 2FA QR fixed white), remove fake max-concurrency stat, split ticket reply/close loading states, surface invoice offline reason fail-closed
- Sync visual-audit test contracts to compressed dashboard scale; document EmptyState/grid conventions in THEMES.md
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 905 files, which is 605 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8c248a0c-686e-434e-95af-040ca6a30ac3

📥 Commits

Reviewing files that changed from the base of the PR and between 2d8e50b and 03fb023.

⛔ Files ignored due to path filters (53)
  • electron/package-lock.json is excluded by !**/package-lock.json
  • frontend/bun.lock is excluded by !**/*.lock
  • frontend/public/integrations/aider.png is excluded by !**/*.png
  • frontend/public/integrations/cc-gui.png is excluded by !**/*.png
  • frontend/public/integrations/cc-switch.png is excluded by !**/*.png
  • frontend/public/integrations/claude-code-router.png is excluded by !**/*.png
  • frontend/public/integrations/claude-code.svg is excluded by !**/*.svg
  • frontend/public/integrations/cline.png is excluded by !**/*.png
  • frontend/public/integrations/codex.svg is excluded by !**/*.svg
  • frontend/public/integrations/continue.png is excluded by !**/*.png
  • frontend/public/integrations/hermes-agent.svg is excluded by !**/*.svg
  • frontend/public/integrations/kilo-code.png is excluded by !**/*.png
  • frontend/public/integrations/roo-code.png is excluded by !**/*.png
  • frontend/public/integrations/trae-color.svg is excluded by !**/*.svg
  • frontend/public/logo.png is excluded by !**/*.png
  • frontend/public/models/claude-color.svg is excluded by !**/*.svg
  • frontend/public/models/deepseek-color.svg is excluded by !**/*.svg
  • frontend/public/models/doubao-color.svg is excluded by !**/*.svg
  • frontend/public/models/gemini-color.svg is excluded by !**/*.svg
  • frontend/public/models/grok.svg is excluded by !**/*.svg
  • frontend/public/models/hunyuan-color.svg is excluded by !**/*.svg
  • frontend/public/models/kimi-color.svg is excluded by !**/*.svg
  • frontend/public/models/minimax-color.svg is excluded by !**/*.svg
  • frontend/public/models/mistral-color.svg is excluded by !**/*.svg
  • frontend/public/models/openai.svg is excluded by !**/*.svg
  • frontend/public/models/qwen-color.svg is excluded by !**/*.svg
  • frontend/public/models/zhipu-color.svg is excluded by !**/*.svg
  • frontend/src/assets/brand/logo.png is excluded by !**/*.png
  • frontend/src/assets/fonts/H4chBXePl9DZ0Xe7gG9cyOj7kqGWbg.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/H4chBXePl9DZ0Xe7gG9cyOj7oqP0dTpxZbB9E9gjjmzKvaeKHUTtJDWv3z-us4bxD8F5og.116.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/H4chBXePl9DZ0Xe7gG9cyOj7oqP0dTpxZbB9E9gjjmzKvaeKHUTtJDWv3z-us4bxD8F5og.117.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/H4chBXePl9DZ0Xe7gG9cyOj7oqP0dTpxZbB9E9gjjmzKvaeKHUTtJDWv3z-us4bxD8F5og.118.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/H4chBXePl9DZ0Xe7gG9cyOj7oqP0dTpxZbB9E9gjjmzKvaeKHUTtJDWv3z-us4bxD8F5og.119.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/auth/huiwen-mingchao.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/home/nishiki-teki.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/home/pingfang-shiguang.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/home/yunfeng-hanchan.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.106.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.108.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.112.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.113.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.115.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.116.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.117.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.118.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.119.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/k3kXo84MPvpLmixcA63oeALhLOCT-xWNm8Hqd37g1OkDRZe7lR4sg1IzSy-MNbE9VH8V.47.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/fonts/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwg.woff2 is excluded by !**/*.woff2
  • frontend/src/assets/textures/divider-ink.png is excluded by !**/*.png
  • frontend/src/assets/textures/seal-stamp.png is excluded by !**/*.png
  • web/bun.lock is excluded by !**/*.lock
  • web/public/favicon.ico is excluded by !**/*.ico
📒 Files selected for processing (905)
  • .dockerignore
  • .env.example
  • .github/workflows/ci.yml
  • .gitignore
  • AGENTS.md
  • Dockerfile
  • common/body_storage.go
  • common/body_storage_test.go
  • common/constants.go
  • common/embed-file-system.go
  • common/embed_file_system_test.go
  • common/endpoint_type.go
  • common/gin.go
  • common/init.go
  • common/network_monitor.go
  • common/network_monitor_test.go
  • common/performance_config.go
  • common/quota_math.go
  • common/request_metrics.go
  • common/request_metrics_test.go
  • common/system_monitor.go
  • common/system_monitor_test.go
  • constant/context_key.go
  • controller/affiliate.go
  • controller/audit.go
  • controller/auth_flow_test.go
  • controller/auto_pricing.go
  • controller/channel-billing.go
  • controller/channel-test.go
  • controller/channel.go
  • controller/channel_authz.go
  • controller/channel_lab_audit.go
  • controller/channel_lab_contract_test.go
  • controller/channel_lab_legacy.go
  • controller/channel_test_internal_test.go
  • controller/checkin.go
  • controller/custom_oauth.go
  • controller/home_metrics.go
  • controller/home_metrics_test.go
  • controller/log.go
  • controller/midjourney.go
  • controller/misc.go
  • controller/misc_capabilities_test.go
  • controller/model.go
  • controller/model_list_test.go
  • controller/next_admin.go
  • controller/next_admin_test.go
  • controller/next_admin_tickets.go
  • controller/next_dashboard.go
  • controller/next_dashboard_test.go
  • controller/next_engagement.go
  • controller/next_facade.go
  • controller/next_facade_test.go
  • controller/next_tickets.go
  • controller/oauth.go
  • controller/operation_log_test.go
  • controller/option.go
  • controller/option_affiliate_test.go
  • controller/option_bulk_test.go
  • controller/pricing.go
  • controller/ratio_sync.go
  • controller/relay.go
  • controller/relay_compact_test.go
  • controller/secure_verification.go
  • controller/setup.go
  • controller/setup_test.go
  • controller/subscription.go
  • controller/subscription_payment_creem.go
  • controller/subscription_payment_epay.go
  • controller/subscription_payment_stripe.go
  • controller/subscription_payment_waffo_pancake.go
  • controller/subscription_test.go
  • controller/theme_compat_test.go
  • controller/token.go
  • controller/topup.go
  • controller/topup_creem.go
  • controller/topup_epay_order_test.go
  • controller/topup_quota_limit_test.go
  • controller/topup_stripe.go
  • controller/topup_waffo.go
  • controller/topup_waffo_pancake.go
  • controller/twofa.go
  • controller/user.go
  • controller/user_self_test.go
  • controller/video_proxy.go
  • controller/video_proxy_gemini.go
  • controller/wechat.go
  • docs/openapi/api.json
  • docs/upstream-sync/NEWAPI_RC24_E2C7AA7B.md
  • electron/package.json
  • frontend/.env.example
  • frontend/.env.local.example
  • frontend/.gitattributes
  • frontend/.gitignore
  • frontend/.prettierignore
  • frontend/.prettierrc.json
  • frontend/README.md
  • frontend/docs/REFACTOR-AUTH-PANEL.md
  • frontend/docs/REFACTOR-HANDDRAWN.md
  • frontend/docs/REFACTOR-RELAY-FLOW.md
  • frontend/docs/REFACTOR-THEME-TUNING.md
  • frontend/docs/THEMES.md
  • frontend/embed-dist/index.html
  • frontend/eslint.config.js
  • frontend/index.html
  • frontend/package.json
  • frontend/playwright.config.ts
  • frontend/postcss.config.js
  • frontend/src/App.vue
  • frontend/src/__tests__/setup.ts
  • frontend/src/api/__tests__/auth.spec.ts
  • frontend/src/api/__tests__/authSession.spec.ts
  • frontend/src/api/__tests__/authSessionSync.spec.ts
  • frontend/src/api/__tests__/createClient.spec.ts
  • frontend/src/api/__tests__/httpTransport.spec.ts
  • frontend/src/api/__tests__/liveContracts.spec.ts
  • frontend/src/api/__tests__/publicBoundary.spec.ts
  • frontend/src/api/auth.ts
  • frontend/src/api/authSession.ts
  • frontend/src/api/authSessionSync.ts
  • frontend/src/api/client.ts
  • frontend/src/api/console/index.ts
  • frontend/src/api/contracts.ts
  • frontend/src/api/createClient.ts
  • frontend/src/api/httpTransport.ts
  • frontend/src/api/lab.ts
  • frontend/src/api/liveContracts.ts
  • frontend/src/api/public.ts
  • frontend/src/api/setup.spec.ts
  • frontend/src/api/setup.ts
  • frontend/src/api/transport.ts
  • frontend/src/api/types.ts
  • frontend/src/assets/activity/activity-banner-day-sketch.webp
  • frontend/src/assets/activity/activity-banner.webp
  • frontend/src/assets/activity/bigame-banner-day-sketch.webp
  • frontend/src/assets/activity/bigame-banner.webp
  • frontend/src/assets/activity/farm-banner-day-sketch.webp
  • frontend/src/assets/activity/farm-banner.webp
  • frontend/src/assets/textures/paper-day.webp
  • frontend/src/assets/textures/velvet-night.webp
  • frontend/src/canvas/CharRain.ts
  • frontend/src/canvas/DotGlobe.ts
  • frontend/src/canvas/Flyline.ts
  • frontend/src/canvas/MapNode.ts
  • frontend/src/canvas/MapScene.ts
  • frontend/src/canvas/UserChannel.ts
  • frontend/src/canvas/WorldMap.ts
  • frontend/src/canvas/__tests__/MapScene.spec.ts
  • frontend/src/canvas/__tests__/theme.spec.ts
  • frontend/src/canvas/arc.ts
  • frontend/src/canvas/iconLoader.ts
  • frontend/src/canvas/landMask.ts
  • frontend/src/canvas/noise.ts
  • frontend/src/canvas/requestGate.ts
  • frontend/src/canvas/sceneParts.ts
  • frontend/src/canvas/theme.ts
  • frontend/src/canvas/worldMask.ts
  • frontend/src/charts/__tests__/themePreset.spec.ts
  • frontend/src/charts/__tests__/useEChart.spec.ts
  • frontend/src/charts/palette.ts
  • frontend/src/charts/themePreset.ts
  • frontend/src/charts/useEChart.ts
  • frontend/src/components/auth/AuthEditorialPanel.vue
  • frontend/src/components/auth/AuthRelayFlow.vue
  • frontend/src/components/auth/PasswordStrengthMeter.vue
  • frontend/src/components/auth/TurnstileWidget.vue
  • frontend/src/components/auth/__tests__/AuthRelayFlow.spec.ts
  • frontend/src/components/auth/__tests__/TurnstileWidget.spec.ts
  • frontend/src/components/common/AmountInput.vue
  • frontend/src/components/common/AppErrorBoundary.vue
  • frontend/src/components/common/CapacityMeter.vue
  • frontend/src/components/common/ChipPicker.vue
  • frontend/src/components/common/ConfirmDialog.vue
  • frontend/src/components/common/ConsoleButton.vue
  • frontend/src/components/common/ConsoleCard.vue
  • frontend/src/components/common/ConsoleModal.vue
  • frontend/src/components/common/ConsoleTabs.vue
  • frontend/src/components/common/ConsoleToggle.vue
  • frontend/src/components/common/DataTable.vue
  • frontend/src/components/common/DateRangePicker.vue
  • frontend/src/components/common/EmptyState.vue
  • frontend/src/components/common/ErrorBanner.vue
  • frontend/src/components/common/FieldVisibilityMenu.vue
  • frontend/src/components/common/FilterSelect.vue
  • frontend/src/components/common/FormField.vue
  • frontend/src/components/common/HealthMeter.vue
  • frontend/src/components/common/IconButton.vue
  • frontend/src/components/common/LanguageSelector.vue
  • frontend/src/components/common/MultiFilterSelect.vue
  • frontend/src/components/common/SearchInput.vue
  • frontend/src/components/common/SectionHeading.vue
  • frontend/src/components/common/SegmentedToggle.vue
  • frontend/src/components/common/SkeletonBlock.vue
  • frontend/src/components/common/StatTileGrid.vue
  • frontend/src/components/common/StatusChip.vue
  • frontend/src/components/common/StatusDot.vue
  • frontend/src/components/common/TablePagination.vue
  • frontend/src/components/common/TextInput.vue
  • frontend/src/components/common/ThemeSwitcher.vue
  • frontend/src/components/common/ToastHost.vue
  • frontend/src/components/common/__tests__/AmountInput.spec.ts
  • frontend/src/components/common/__tests__/AppErrorBoundary.spec.ts
  • frontend/src/components/common/__tests__/ConsoleButton.spec.ts
  • frontend/src/components/common/__tests__/ConsoleCard.spec.ts
  • frontend/src/components/common/__tests__/ConsoleModal.spec.ts
  • frontend/src/components/common/__tests__/ConsoleTabs.spec.ts
  • frontend/src/components/common/__tests__/DataTable.spec.ts
  • frontend/src/components/common/__tests__/DateRangePicker.spec.ts
  • frontend/src/components/common/__tests__/FilterSelect.spec.ts
  • frontend/src/components/common/__tests__/SegmentedToggle.spec.ts
  • frontend/src/components/common/__tests__/TablePagination.spec.ts
  • frontend/src/components/console/AccountSecurityPanel.vue
  • frontend/src/components/console/ActivityEntryCard.vue
  • frontend/src/components/console/BrandMark.vue
  • frontend/src/components/console/Breadcrumb.vue
  • frontend/src/components/console/CommandPaletteModal.vue
  • frontend/src/components/console/ConsoleNavStrip.vue
  • frontend/src/components/console/ConsoleSidebar.vue
  • frontend/src/components/console/ConsoleTopbar.vue
  • frontend/src/components/console/ContactFloatBall.vue
  • frontend/src/components/console/PageBreadcrumb.vue
  • frontend/src/components/console/PageHero.vue
  • frontend/src/components/console/PreferencesNotificationsPanel.vue
  • frontend/src/components/console/SettingsSectionHeading.vue
  • frontend/src/components/console/TopNavMenu.vue
  • frontend/src/components/console/UserMenu.vue
  • frontend/src/components/console/__tests__/BrandMark.spec.ts
  • frontend/src/components/console/__tests__/HanddrawnNavigation.spec.ts
  • frontend/src/components/console/__tests__/PageHero.spec.ts
  • frontend/src/components/console/activity/ActivityCard.vue
  • frontend/src/components/console/activity/ActivityHero.vue
  • frontend/src/components/console/activity/CheckinCard.vue
  • frontend/src/components/console/activity/CountdownPill.vue
  • frontend/src/components/console/activity/NewcomerCard.vue
  • frontend/src/components/console/bigame/BlindBoxCard.vue
  • frontend/src/components/console/bigame/GameHero.vue
  • frontend/src/components/console/bigame/MilestoneTrack.vue
  • frontend/src/components/console/bigame/PrizeInventory.vue
  • frontend/src/components/console/bigame/SpinWheelCard.vue
  • frontend/src/components/console/channels/ChannelFormModal.vue
  • frontend/src/components/console/channels/ChannelInlineNumber.vue
  • frontend/src/components/console/channels/ChannelMobileList.vue
  • frontend/src/components/console/channels/ChannelTestModal.vue
  • frontend/src/components/console/channels/ChannelTestPickerDialog.vue
  • frontend/src/components/console/channels/__tests__/ChannelTestModal.spec.ts
  • frontend/src/components/console/channels/__tests__/ChannelTestPickerDialog.spec.ts
  • frontend/src/components/console/dashboard/BalanceCard.vue
  • frontend/src/components/console/dashboard/DiscountCard.vue
  • frontend/src/components/console/dashboard/MiniRing.vue
  • frontend/src/components/console/dashboard/MiniSparkline.vue
  • frontend/src/components/console/dashboard/ModelDistributionCard.vue
  • frontend/src/components/console/dashboard/OverviewKpiStrip.vue
  • frontend/src/components/console/dashboard/PrecisionTickDial.vue
  • frontend/src/components/console/dashboard/RpmRing.vue
  • frontend/src/components/console/dashboard/SystemStatusCard.vue
  • frontend/src/components/console/dashboard/TokenTrendCard.vue
  • frontend/src/components/console/dashboard/UsageDistributionCard.vue
  • frontend/src/components/console/dashboard/UsageHeatmapGrid.vue
  • frontend/src/components/console/dashboard/UsageSegmentBar.vue
  • frontend/src/components/console/dashboard/__tests__/BalanceCard.spec.ts
  • frontend/src/components/console/dashboard/__tests__/ChannelScoreRow.spec.ts
  • frontend/src/components/console/dashboard/__tests__/DiscountCard.spec.ts
  • frontend/src/components/console/dashboard/__tests__/MiniSparkline.spec.ts
  • frontend/src/components/console/dashboard/__tests__/ModelDistributionCard.spec.ts
  • frontend/src/components/console/dashboard/__tests__/OverviewKpiStrip.spec.ts
  • frontend/src/components/console/dashboard/__tests__/PrecisionTickDial.spec.ts
  • frontend/src/components/console/dashboard/__tests__/StatsDualTrend.spec.ts
  • frontend/src/components/console/dashboard/__tests__/SystemStatusCard.spec.ts
  • frontend/src/components/console/dashboard/__tests__/TokenTrendCard.spec.ts
  • frontend/src/components/console/dashboard/__tests__/UsageDistributionCard.spec.ts
  • frontend/src/components/console/dashboard/__tests__/VendorRouteGroup.spec.ts
  • frontend/src/components/console/dashboard/autoroute/AutoRoutePanel.vue
  • frontend/src/components/console/dashboard/autoroute/ChannelScoreRow.vue
  • frontend/src/components/console/dashboard/autoroute/RouteHealthTimeline.vue
  • frontend/src/components/console/dashboard/autoroute/VendorRouteGroup.vue
  • frontend/src/components/console/dashboard/kpiDividers.ts
  • frontend/src/components/console/dashboard/stats/StatsDualTrend.vue
  • frontend/src/components/console/dashboard/stats/StatsHourlyChart.vue
  • frontend/src/components/console/dashboard/stats/StatsKpiRow.vue
  • frontend/src/components/console/dashboard/stats/StatsModelTable.vue
  • frontend/src/components/console/farm/FarmHero.vue
  • frontend/src/components/console/farm/FishingPanel.vue
  • frontend/src/components/console/farm/LeaderTable.vue
  • frontend/src/components/console/farm/PetDock.vue
  • frontend/src/components/console/farm/PlotGrid.vue
  • frontend/src/components/console/farm/RanchRow.vue
  • frontend/src/components/console/farm/RewardTierCard.vue
  • frontend/src/components/console/invite/InviteAffiliateCard.vue
  • frontend/src/components/console/invite/InviteMonthChart.vue
  • frontend/src/components/console/invite/InviteRewardCard.vue
  • frontend/src/components/console/invite/__tests__/InviteAffiliateCard.spec.ts
  • frontend/src/components/console/keys/KeyEndpointStrip.vue
  • frontend/src/components/console/keys/KeyFormModal.vue
  • frontend/src/components/console/keys/KeyMobileList.vue
  • frontend/src/components/console/keys/KeyRevealModal.vue
  • frontend/src/components/console/keys/__tests__/KeyEndpointStrip.spec.ts
  • frontend/src/components/console/keys/__tests__/KeyFormModal.spec.ts
  • frontend/src/components/console/keys/__tests__/KeyMobileList.spec.ts
  • frontend/src/components/console/keys/endpointProbe.ts
  • frontend/src/components/console/log-ui/LogDetailTrigger.vue
  • frontend/src/components/console/log-ui/LogMobileCard.vue
  • frontend/src/components/console/log-ui/LogPerformanceCell.vue
  • frontend/src/components/console/log-ui/LogReasoningEffort.vue
  • frontend/src/components/console/log-ui/LogUsageCell.vue
  • frontend/src/components/console/log-ui/LogsNavTabs.vue
  • frontend/src/components/console/log-ui/__tests__/LogPerformanceCell.spec.ts
  • frontend/src/components/console/log-ui/__tests__/LogUsageCell.spec.ts
  • frontend/src/components/console/log-ui/__tests__/LogsNavTabs.spec.ts
  • frontend/src/components/console/log-ui/__tests__/logExport.spec.ts
  • frontend/src/components/console/log-ui/__tests__/logMetadata.spec.ts
  • frontend/src/components/console/log-ui/__tests__/operationLog.spec.ts
  • frontend/src/components/console/log-ui/logExport.ts
  • frontend/src/components/console/log-ui/logMetadata.ts
  • frontend/src/components/console/log-ui/logPerformance.ts
  • frontend/src/components/console/log-ui/logUsage.ts
  • frontend/src/components/console/log-ui/operationLog.ts
  • frontend/src/components/console/log-ui/relayTaskStatus.ts
  • frontend/src/components/console/market/ListingDetailModal.vue
  • frontend/src/components/console/market/ListingFormModal.vue
  • frontend/src/components/console/market/ListingRating.vue
  • frontend/src/components/console/market/MarketListingCard.vue
  • frontend/src/components/console/market/MarketSellPanel.vue
  • frontend/src/components/console/market/MerchantCommentsModal.vue
  • frontend/src/components/console/market/MerchantSection.vue
  • frontend/src/components/console/market/MyChannelsPanel.vue
  • frontend/src/components/console/market/ServiceTierBadge.vue
  • frontend/src/components/console/models/ModelCard.vue
  • frontend/src/components/console/models/VendorLogo.vue
  • frontend/src/components/console/models/VendorSection.vue
  • frontend/src/components/console/models/__tests__/ModelCard.spec.ts
  • frontend/src/components/console/models/__tests__/VendorLogo.spec.ts
  • frontend/src/components/console/orders/OrderDetailModal.vue
  • frontend/src/components/console/orders/OrderMobileList.vue
  • frontend/src/components/console/orders/OrderRevenueChart.vue
  • frontend/src/components/console/orders/OrderStatCard.vue
  • frontend/src/components/console/orders/PaymentMethodShare.vue
  • frontend/src/components/console/orders/TopSpenders.vue
  • frontend/src/components/console/orders/__tests__/orderExport.spec.ts
  • frontend/src/components/console/orders/orderExport.ts
  • frontend/src/components/console/plans/AccentPicker.vue
  • frontend/src/components/console/plans/ChannelSelect.vue
  • frontend/src/components/console/plans/CurrentPlanCard.vue
  • frontend/src/components/console/plans/DurationInput.vue
  • frontend/src/components/console/plans/PlanCard.vue
  • frontend/src/components/console/plans/PlanFormModal.vue
  • frontend/src/components/console/plans/TrafficPackList.vue
  • frontend/src/components/console/redemption/RedemptionCodeCell.vue
  • frontend/src/components/console/redemption/RedemptionGenerateModal.vue
  • frontend/src/components/console/redemption/RedemptionSuccessModal.vue
  • frontend/src/components/console/systemSettings/CustomOAuthProvidersPanel.vue
  • frontend/src/components/console/systemSettings/SysInputRow.vue
  • frontend/src/components/console/systemSettings/SysSettingsFormCard.vue
  • frontend/src/components/console/systemSettings/SysToggleRow.vue
  • frontend/src/components/console/systemSettings/SystemSettingsDomainView.vue
  • frontend/src/components/console/systemSettings/SystemSettingsField.vue
  • frontend/src/components/console/systemSettings/SystemSettingsMaintenanceActions.vue
  • frontend/src/components/console/systemSettings/WaffoPancakePanel.vue
  • frontend/src/components/console/tickets/TicketFormModal.vue
  • frontend/src/components/console/tickets/TicketImageLightbox.vue
  • frontend/src/components/console/tickets/TicketImageUploader.vue
  • frontend/src/components/console/tickets/TicketReplyBox.vue
  • frontend/src/components/console/tickets/TicketThreadMessage.vue
  • frontend/src/components/console/tickets/__tests__/TicketReplyBox.spec.ts
  • frontend/src/components/console/tickets/__tests__/TicketThreadMessage.spec.ts
  • frontend/src/components/console/tickets/__tests__/useTicketImages.spec.ts
  • frontend/src/components/console/tickets/useTicketImages.ts
  • frontend/src/components/console/users/UserAffiliateModal.vue
  • frontend/src/components/console/users/UserAvatar.vue
  • frontend/src/components/console/users/UserFormModal.vue
  • frontend/src/components/console/users/UserInviteCell.vue
  • frontend/src/components/console/users/UserMobileList.vue
  • frontend/src/components/console/users/UserQuotaCell.vue
  • frontend/src/components/console/users/UserQuotaModal.vue
  • frontend/src/components/console/wallet/FlowChart.vue
  • frontend/src/components/console/wallet/PaymentMethods.vue
  • frontend/src/components/console/wallet/RedeemPanel.vue
  • frontend/src/components/console/wallet/TopupPanel.vue
  • frontend/src/components/console/wallet/TopupRecords.vue
  • frontend/src/components/console/wallet/__tests__/RedeemPanel.spec.ts
  • frontend/src/components/home/hero/HeroContent.vue
  • frontend/src/components/home/hero/HeroSignalConsole.vue
  • frontend/src/components/home/hero/HeroWorldMap.vue
  • frontend/src/components/home/hero/HomeProgressDots.vue
  • frontend/src/components/home/hero/IntegrationChip.vue
  • frontend/src/components/home/hero/IntegrationMarquee.vue
  • frontend/src/components/home/hero/SignalDotMatrix.vue
  • frontend/src/components/home/hero/SignalLatencyMeter.vue
  • frontend/src/components/home/showcase/HomeShowcase.vue
  • frontend/src/components/home/showcase/RuntimePulseBand.vue
  • frontend/src/components/home/showcase/__tests__/RuntimePulseBand.spec.ts
  • frontend/src/components/lab/ChatComposer.vue
  • frontend/src/components/lab/GalleryMasonry.vue
  • frontend/src/components/lab/LabNavStrip.vue
  • frontend/src/components/lab/LabSidebar.vue
  • frontend/src/components/layout/AppFooter.vue
  • frontend/src/components/layout/AppNavbar.vue
  • frontend/src/components/layout/AuthLayout.vue
  • frontend/src/components/layout/ConsoleLayout.vue
  • frontend/src/components/layout/LabLayout.vue
  • frontend/src/components/layout/MobileNavDrawer.vue
  • frontend/src/components/layout/NotificationBadge.vue
  • frontend/src/composables/__tests__/subscriptionContracts.spec.ts
  • frontend/src/composables/__tests__/useAdminLists.spec.ts
  • frontend/src/composables/__tests__/useAdminOrders.spec.ts
  • frontend/src/composables/__tests__/useAutoRoute.spec.ts
  • frontend/src/composables/__tests__/useDashboard.spec.ts
  • frontend/src/composables/__tests__/useDashboardStats.spec.ts
  • frontend/src/composables/__tests__/useHomeShowcase.spec.ts
  • frontend/src/composables/__tests__/useLatestRequest.spec.ts
  • frontend/src/composables/__tests__/useMarketplace.spec.ts
  • frontend/src/composables/__tests__/useModelMarket.spec.ts
  • frontend/src/composables/__tests__/useThemedAsset.spec.ts
  • frontend/src/composables/__tests__/useUsageDistribution.spec.ts
  • frontend/src/composables/useActivity.ts
  • frontend/src/composables/useAdminChannels.ts
  • frontend/src/composables/useAdminOrders.ts
  • frontend/src/composables/useAdminPlans.ts
  • frontend/src/composables/useAdminRedemption.ts
  • frontend/src/composables/useAdminUsers.ts
  • frontend/src/composables/useAutoRoute.ts
  • frontend/src/composables/useBigame.ts
  • frontend/src/composables/useDashboard.ts
  • frontend/src/composables/useDashboardStats.ts
  • frontend/src/composables/useFarm.ts
  • frontend/src/composables/useFeatureAccess.ts
  • frontend/src/composables/useHeroScrollChrome.ts
  • frontend/src/composables/useHomeShowcase.ts
  • frontend/src/composables/useImmersiveStage.ts
  • frontend/src/composables/useInvite.ts
  • frontend/src/composables/useInvoice.ts
  • frontend/src/composables/useLab.ts
  • frontend/src/composables/useLatestRequest.ts
  • frontend/src/composables/useMarketplace.ts
  • frontend/src/composables/useModelMarket.ts
  • frontend/src/composables/useMyChannels.ts
  • frontend/src/composables/useScrolled.ts
  • frontend/src/composables/useSidebarCollapsed.ts
  • frontend/src/composables/useSubscription.ts
  • frontend/src/composables/useSystemSettings.ts
  • frontend/src/composables/useTheme.ts
  • frontend/src/composables/useThemedAsset.ts
  • frontend/src/composables/useToast.ts
  • frontend/src/composables/useTyped.ts
  • frontend/src/composables/useUsageDistribution.ts
  • frontend/src/constants/__tests__/adminOrders.spec.ts
  • frontend/src/constants/__tests__/adminRedemption.spec.ts
  • frontend/src/constants/__tests__/adminUsers.spec.ts
  • frontend/src/constants/__tests__/systemSettingsCatalog.spec.ts
  • frontend/src/constants/adminChannels.ts
  • frontend/src/constants/adminOrders.ts
  • frontend/src/constants/adminPlans.ts
  • frontend/src/constants/adminRedemption.ts
  • frontend/src/constants/adminUsers.ts
  • frontend/src/constants/branding.ts
  • frontend/src/constants/console.ts
  • frontend/src/constants/home/integrations.ts
  • frontend/src/constants/home/modelGeo.ts
  • frontend/src/constants/home/models.ts
  • frontend/src/constants/home/showcase.ts
  • frontend/src/constants/home/signalConsole.ts
  • frontend/src/constants/navigation/__tests__/consoleNav.spec.ts
  • frontend/src/constants/navigation/consoleNav.ts
  • frontend/src/constants/navigation/labNav.ts
  • frontend/src/constants/systemSettingsCatalog.ts
  • frontend/src/i18n/__tests__/ordersMessages.spec.ts
  • frontend/src/i18n/__tests__/preferences.spec.ts
  • frontend/src/i18n/index.ts
  • frontend/src/i18n/locales/en/auth.ts
  • frontend/src/i18n/locales/en/common.ts
  • frontend/src/i18n/locales/en/console.ts
  • frontend/src/i18n/locales/en/home.ts
  • frontend/src/i18n/locales/en/lab.ts
  • frontend/src/i18n/locales/en/setup.ts
  • frontend/src/i18n/locales/zh-CN/auth.ts
  • frontend/src/i18n/locales/zh-CN/common.ts
  • frontend/src/i18n/locales/zh-CN/console.ts
  • frontend/src/i18n/locales/zh-CN/home.ts
  • frontend/src/i18n/locales/zh-CN/lab.ts
  • frontend/src/i18n/locales/zh-CN/setup.ts
  • frontend/src/main.ts
  • frontend/src/router/__tests__/capabilityGuard.spec.ts
  • frontend/src/router/index.ts
  • frontend/src/stores/__tests__/app.spec.ts
  • frontend/src/stores/__tests__/subscription.spec.ts
  • frontend/src/stores/__tests__/ticketQueue.spec.ts
  • frontend/src/stores/app.ts
  • frontend/src/stores/auth.ts
  • frontend/src/stores/index.ts
  • frontend/src/stores/setup.spec.ts
  • frontend/src/stores/setup.ts
  • frontend/src/stores/subscription.ts
  • frontend/src/stores/ticketQueue.ts
  • frontend/src/styles/base.css
  • frontend/src/styles/console.css
  • frontend/src/styles/fonts.css
  • frontend/src/styles/home.css
  • frontend/src/styles/index.css
  • frontend/src/styles/tokens.css
  • frontend/src/types/auth.ts
  • frontend/src/types/bigame.ts
  • frontend/src/types/console.ts
  • frontend/src/types/farm.ts
  • frontend/src/types/homeShowcase.ts
  • frontend/src/types/lab.ts
  • frontend/src/types/router.d.ts
  • frontend/src/types/settings.ts
  • frontend/src/types/systemSettings.ts
  • frontend/src/types/turnstile.d.ts
  • frontend/src/utils/__tests__/affiliate.spec.ts
  • frontend/src/utils/__tests__/cssColor.spec.ts
  • frontend/src/utils/__tests__/format.spec.ts
  • frontend/src/utils/__tests__/greeting.spec.ts
  • frontend/src/utils/__tests__/html.spec.ts
  • frontend/src/utils/__tests__/routeHealth.spec.ts
  • frontend/src/utils/__tests__/routeScore.spec.ts
  • frontend/src/utils/__tests__/safeUrl.spec.ts
  • frontend/src/utils/__tests__/spreadsheetExport.spec.ts
  • frontend/src/utils/__tests__/themePreference.spec.ts
  • frontend/src/utils/__tests__/usageDistribution.spec.ts
  • frontend/src/utils/affiliate.ts
  • frontend/src/utils/cssColor.ts
  • frontend/src/utils/format.ts
  • frontend/src/utils/greeting.ts
  • frontend/src/utils/html.ts
  • frontend/src/utils/legacyStorage.ts
  • frontend/src/utils/routeHealth.ts
  • frontend/src/utils/routeScore.ts
  • frontend/src/utils/safeUrl.ts
  • frontend/src/utils/spreadsheetExport.ts
  • frontend/src/utils/themePreference.ts
  • frontend/src/utils/usageDistribution.ts
  • frontend/src/views/HomeView.vue
  • frontend/src/views/NotFoundView.vue
  • frontend/src/views/auth/OAuthCallbackView.vue
  • frontend/src/views/auth/ResetPasswordView.vue
  • frontend/src/views/auth/SignInView.vue
  • frontend/src/views/auth/SignUpView.vue
  • frontend/src/views/auth/__tests__/SignUpView.spec.ts
  • frontend/src/views/console/AccountCenterView.vue
  • frontend/src/views/console/AccountSettingsView.vue
  • frontend/src/views/console/ActivityView.vue
  • frontend/src/views/console/AdminTicketsView.vue
  • frontend/src/views/console/BigameView.vue
  • frontend/src/views/console/ChannelsView.vue
  • frontend/src/views/console/DashboardView.vue
  • frontend/src/views/console/DrawingLogsView.vue
  • frontend/src/views/console/FarmView.vue
  • frontend/src/views/console/InviteView.vue
  • frontend/src/views/console/InvoiceView.vue
  • frontend/src/views/console/KeysView.vue
  • frontend/src/views/console/LogsView.vue
  • frontend/src/views/console/MarketplaceView.vue
  • frontend/src/views/console/ModelsView.vue
  • frontend/src/views/console/OperationLogsView.vue
  • frontend/src/views/console/OrdersView.vue
  • frontend/src/views/console/PlanManagementView.vue
  • frontend/src/views/console/RedemptionView.vue
  • frontend/src/views/console/SubscriptionView.vue
  • frontend/src/views/console/SystemSettingsView.vue
  • frontend/src/views/console/TaskLogsView.vue
  • frontend/src/views/console/TicketDetailView.vue
  • frontend/src/views/console/TicketsView.vue
  • frontend/src/views/console/UsersView.vue
  • frontend/src/views/console/WalletView.vue
  • frontend/src/views/console/__tests__/AccountCenterView.spec.ts
  • frontend/src/views/console/__tests__/InvoiceView.spec.ts
  • frontend/src/views/console/__tests__/KeysView.spec.ts
  • frontend/src/views/console/__tests__/LogsView.spec.ts
  • frontend/src/views/console/__tests__/ModelsView.spec.ts
  • frontend/src/views/console/systemSettings/AuthSettingsView.vue
  • frontend/src/views/console/systemSettings/BillingSettingsView.vue
  • frontend/src/views/console/systemSettings/ContentSettingsView.vue
  • frontend/src/views/console/systemSettings/ModelSettingsView.vue
  • frontend/src/views/console/systemSettings/OperationsSettingsView.vue
  • frontend/src/views/console/systemSettings/SecuritySettingsView.vue
  • frontend/src/views/console/systemSettings/SiteSettingsView.vue
  • frontend/src/views/lab/AssetsView.vue
  • frontend/src/views/lab/ChatView.vue
  • frontend/src/views/lab/NotesView.vue
  • frontend/src/views/lab/PluginsView.vue
  • frontend/src/views/lab/StudioView.vue
  • frontend/src/views/setup/SetupErrorView.vue
  • frontend/src/views/setup/SetupView.spec.ts
  • frontend/src/views/setup/SetupView.vue
  • frontend/src/vite-env.d.ts
  • frontend/tailwind.config.js
  • frontend/tests/visual/channel-dialogs.spec.ts
  • frontend/tests/visual/dashboard.spec.ts
  • frontend/tests/visual/fixtures.ts
  • frontend/tests/visual/greeting-hero.spec.ts
  • frontend/tests/visual/hero-accent-regression.spec.ts
  • frontend/tests/visual/home-showcase.spec.ts
  • frontend/tests/visual/model-distribution.spec.ts
  • frontend/tests/visual/models.spec.ts
  • frontend/tests/visual/operation-logs.spec.ts
  • frontend/tests/visual/representative.spec.ts
  • frontend/tests/visual/routes.spec.ts
  • frontend/tests/visual/routes.ts
  • frontend/tests/visual/settings-account-center.spec.ts
  • frontend/tests/visual/setup.spec.ts
  • frontend/tests/visual/system-status.spec.ts
  • frontend/tests/visual/tickets.spec.ts
  • frontend/tests/visual/token-trend.spec.ts
  • frontend/tsconfig.app.json
  • frontend/tsconfig.json
  • frontend/tsconfig.node.json
  • frontend/vite.config.ts
  • frontend/vitest.config.ts
  • go.mod
  • main.go
  • middleware/audit.go
  • middleware/auth.go
  • middleware/distributor.go
  • middleware/distributor_compact_test.go
  • middleware/rate-limit.go
  • middleware/request_metrics.go
  • middleware/request_metrics_test.go
  • middleware/turnstile-check.go
  • middleware/turnstile-check_test.go
  • model/activity_claim.go
  • model/activity_claim_test.go
  • model/affiliate.go
  • model/affiliate_test.go
  • model/channel.go
  • model/channel_cache.go
  • model/channel_cache_ability_test.go
  • model/channel_candidate.go
  • model/channel_key_selection_test.go
  • model/channel_status_test.go
  • model/dashboard.go
  • model/db_time.go
  • model/log.go
  • model/log_format_test.go
  • model/log_stat_test.go
  • model/main.go
  • model/midjourney.go
  • model/operation_log_test.go
  • model/option.go
  • model/payment_method_guard_test.go
  • model/pricing.go
  • model/pricing_contract_test.go
  • model/pricing_default.go
  • model/pricing_default_test.go
  • model/pricing_endpoint_test.go
  • model/quota_reserve.go
  • model/quota_reserve_test.go
  • model/redemption.go
  • model/subscription.go
  • model/task.go
  • model/task_cas_test.go
  • model/task_credentials_test.go
  • model/ticket.go
  • model/ticket_test.go
  • model/token.go
  • model/token_auto_groups_cache_test.go
  • model/token_cache.go
  • model/topup.go
  • model/user.go
  • model/user_cache.go
  • model/user_log_test.go
  • model/user_update_test.go
  • oauth/discord.go
  • oauth/endpoint_security.go
  • oauth/endpoint_security_test.go
  • oauth/generic.go
  • oauth/github.go
  • oauth/linuxdo.go
  • oauth/oidc.go
  • oauth/provider.go
  • pkg/autopricing/autopricing_test.go
  • pkg/autopricing/catalog.go
  • pkg/autopricing/guard_test.go
  • pkg/autopricing/match.go
  • pkg/autopricing/multi_source_test.go
  • pkg/autopricing/parse.go
  • pkg/autopricing/rich.go
  • pkg/autopricing/source.go
  • pkg/billingexpr/billingexpr_test.go
  • pkg/billingexpr/compile.go
  • pkg/billingexpr/expr.md
  • pkg/billingexpr/run.go
  • pkg/billingexpr/settle.go
  • pkg/billingexpr/types.go
  • pkg/modellab/catalog.go
  • pkg/modellab/catalog.json
  • pkg/modellab/resolver.go
  • pkg/modellab/resolver_test.go
  • pkg/modelmapping/compact.go
  • pkg/modelmapping/compact_test.go
  • relay/alpha_search_handler.go
  • relay/channel/ali/adaptor.go
  • relay/channel/ali/adaptor_test.go
  • relay/channel/ali/text.go
  • relay/channel/ali/text_test.go
  • relay/channel/api_request.go
  • relay/channel/api_request_getbody_test.go
  • relay/channel/api_request_redirect_test.go
  • relay/channel/codex/adaptor.go
  • relay/channel/codex/adaptor_test.go
  • relay/channel/codex/constants.go
  • relay/channel/deepseek/adaptor.go
  • relay/channel/jimeng/adaptor.go
  • relay/channel/ollama/dto.go
  • relay/channel/ollama/relay-ollama.go
  • relay/channel/ollama/stream.go
  • relay/channel/ollama/stream_test.go
  • relay/channel/openai/adaptor.go
  • relay/channel/openai/relay_responses_compact.go
  • relay/channel/openai/relay_responses_compact_test.go
  • relay/channel/sub2api/adaptor_test.go
  • relay/channel/task/sora/adaptor.go
  • relay/channel/task/sora/adaptor_test.go
  • relay/channel/xai/adaptor.go
  • relay/chat_completions_via_responses.go
  • relay/claude_handler.go
  • relay/common/outbound_body.go
  • relay/common/outbound_body_test.go
  • relay/common/override.go
  • relay/common/override_test.go
  • relay/common/relay_info.go
  • relay/common/relay_info_compact_test.go
  • relay/common/relay_info_test.go
  • relay/compatible_handler.go
  • relay/embedding_handler.go
  • relay/gemini_handler.go
  • relay/helper/explicit_billing_config_test.go
  • relay/helper/model_mapped.go
  • relay/helper/model_mapped_compact_test.go
  • relay/helper/price.go
  • relay/helper/price_test.go
  • relay/image_handler.go
  • relay/mjproxy_handler.go
  • relay/rerank_handler.go
  • relay/responses_handler.go
  • relay/responses_handler_compact_test.go
  • relaykit/dto/channel_settings.go
  • relaykit/dto/notify.go
  • relaykit/dto/openai_request.go
  • relaykit/dto/openai_request_zero_value_test.go
  • relaykit/dto/openai_responses_compaction_capability_test.go
  • relaykit/relayconvert/claude_default_max_tokens_test.go
  • relaykit/relayconvert/internal/oai_chat/to_claude_messages_req.go
  • relaykit/relayconvert/internal/oai_chat/to_oai_responses_req.go
  • relaykit/relayconvert/internal/oai_chat/to_oai_responses_req_test.go
  • relaykit/relayconvert/internal/oai_responses/remote_compaction_test.go
  • relaykit/relayconvert/internal/oai_responses/to_oai_chat_req.go
  • relaykit/relayconvert/internal/oai_responses/to_oai_chat_req_test.go
  • router/api-router.go
  • router/home_metrics_test.go
  • router/main.go
  • router/relay-router.go
  • router/relay_router_test.go
  • router/web-router.go
  • router/web-router_test.go
  • router/web_router_test.go
  • scripts/sync-models-dev.go
  • scripts/sync-models-dev_test.go
  • service/authz/authz_test.go
  • service/authz/resources_ticket.go
  • service/auto_pricing_dual_test.go
  • service/auto_pricing_sync.go
  • service/auto_pricing_sync_test.go
  • service/billing.go
  • service/billing_session.go
  • service/channel_affinity_usage_cache_test.go
  • service/channel_select.go
  • service/codex_channel_models.go
  • service/compact_model.go
  • service/compact_model_test.go
  • service/funding_source.go
  • service/group.go
  • service/log_info_generate.go
  • service/log_info_generate_compact_test.go
  • service/midjourney.go
  • service/quota.go
  • service/task_billing.go
  • service/task_billing_test.go
  • service/task_polling.go
  • service/text_quota.go
  • service/ticket_notify.go
  • service/ticket_notify_test.go
  • service/user_notify.go
  • setting/console_setting/validation.go
  • setting/operation_setting/monitor_setting.go
  • setting/operation_setting/monitor_setting_test.go
  • setting/pricing_setting/compact.go
  • setting/pricing_setting/compact_test.go
  • setting/ratio_setting/auto_price_lookup.go
  • setting/ratio_setting/auto_price_lookup_test.go
  • setting/ratio_setting/auto_price_setting.go
  • setting/ratio_setting/cache_ratio.go
  • setting/ratio_setting/compact_suffix.go
  • setting/ratio_setting/compact_suffix_test.go
  • setting/ratio_setting/model_ratio.go
  • web/index.html
  • web/package.json
  • web/src/assets/logo.tsx
  • web/src/components/json-code-editor/__tests__/json-code-editor-utils.test.ts
  • web/src/components/json-code-editor/__tests__/json-code-editor.test.tsx
  • web/src/components/layout/components/chat-presets-item.tsx
  • web/src/components/layout/components/footer.tsx
  • web/src/components/layout/components/nav-group.tsx
  • web/src/components/layout/components/sidebar-view-header.tsx
  • web/src/components/layout/components/system-brand.tsx
  • web/src/components/model-group-selector/__tests__/layout.test.ts
  • web/src/components/ui/dropdown-menu.test.tsx
  • web/src/components/ui/sidebar.tsx
  • web/src/features/auth/api.test.ts
  • web/src/features/auth/api.ts
  • web/src/features/auth/hooks/use-auth-redirect.ts
  • web/src/features/auth/lib/__tests__/oauth-callback-mode.test.ts
  • web/src/features/auth/lib/auth-redirect.test.ts
  • web/src/features/auth/lib/oauth-bind-window.test.ts
  • web/src/features/auth/lib/storage.test.ts
  • web/src/features/auth/lib/storage.ts
  • web/src/features/auth/lib/telegram-login.test.ts
  • web/src/features/auth/sign-in/components/user-auth-form.tsx
  • web/src/features/auth/sign-up/components/sign-up-form.tsx
  • web/src/features/auth/types.ts
  • web/src/features/channels/components/dialogs/fetch-models-dialog.tsx
  • web/src/features/channels/components/drawers/channel-mutate-drawer.tsx
  • web/src/features/channels/constants.ts
  • web/src/features/channels/lib/__tests__/channel-field-update.test.ts
  • web/src/features/channels/lib/__tests__/channel-table-row-id.test.ts
  • web/src/features/channels/lib/__tests__/new-api-channel.test.ts
  • web/src/features/channels/lib/channel-form.ts
  • web/src/features/channels/lib/index.ts
  • web/src/features/channels/lib/model-categories.ts
  • web/src/features/channels/types.ts
  • web/src/features/dashboard/lib/flow-selection.test.ts
  • web/src/features/dashboard/lib/flow.test.ts
  • web/src/features/keys/components/__tests__/api-key-group-cell.test.tsx
  • web/src/features/keys/components/__tests__/api-key-group-combobox.test.tsx
  • web/src/features/keys/components/__tests__/api-keys-mutate-drawer.test.tsx
  • web/src/features/keys/components/__tests__/auto-group-order-editor.test.tsx
  • web/src/features/keys/components/api-key-group-cell.tsx
  • web/src/features/keys/components/api-keys-table.tsx
  • web/src/features/keys/lib/__tests__/auto-group-form.test.ts
  • web/src/features/models/components/deployments-table.tsx
  • web/src/features/models/components/dialogs/upstream-conflict-dialog.tsx
  • web/src/features/models/components/models-table.tsx
  • web/src/features/playground/hooks/use-stream-request.test.ts
  • web/src/features/pricing/components/dynamic-pricing-breakdown.tsx
  • web/src/features/pricing/hooks/use-filters.ts
  • web/src/features/pricing/lib/billing-expr.ts
  • web/src/features/profile/api.ts
  • web/src/features/profile/components/__tests__/login-session-utils.test.ts
  • web/src/features/profile/components/dialogs/access-token-dialog.tsx
  • web/src/features/profile/components/tabs/account-bindings-tab.tsx
  • web/src/features/profile/hooks/use-access-token.ts
  • web/src/features/redemption-codes/components/__tests__/redemptions-mutate-drawer.test.tsx
  • web/src/features/redemption-codes/components/redemptions-mutate-drawer.tsx
  • web/src/features/redemption-codes/components/redemptions-table.tsx
  • web/src/features/redemption-codes/lib/redemption-form.ts
  • web/src/features/system-settings/api.ts
  • web/src/features/system-settings/auth/custom-oauth/components/access-policy-templates.ts
  • web/src/features/system-settings/auth/custom-oauth/components/provider-form-dialog.tsx
  • web/src/features/system-settings/billing/index.tsx
  • web/src/features/system-settings/billing/section-registry.tsx
  • web/src/features/system-settings/general/quota-settings-section.tsx
  • web/src/features/system-settings/general/system-info-section.tsx
  • web/src/features/system-settings/models/__tests__/auto-pricing-validation.test.ts
  • web/src/features/system-settings/models/__tests__/group-auto-limit-validation.test.ts
  • web/src/features/system-settings/models/__tests__/tool-price-validation.test.tsx
  • web/src/features/system-settings/models/auto-pricing-form.ts
  • web/src/features/system-settings/models/auto-pricing-section.tsx
  • web/src/features/system-settings/models/channel-selector-dialog.tsx
  • web/src/features/system-settings/models/model-ratio-visual-editor.tsx
  • web/src/features/system-settings/models/routing-reliability-section.tsx
  • web/src/features/system-settings/models/upstream-ratio-sync-table.tsx
  • web/src/features/system-settings/site/index.tsx
  • web/src/features/system-settings/types.ts
  • web/src/features/usage-logs/components/__tests__/cost-display.test.tsx
  • web/src/features/usage-logs/components/dialogs/details-dialog.tsx
  • web/src/features/usage-logs/lib/__tests__/tool-surcharge.test.ts
  • web/src/features/usage-logs/lib/format.ts
  • web/src/features/usage-logs/types.ts
  • web/src/features/users/api.ts
  • web/src/features/users/components/dialogs/user-binding-dialog.tsx
  • web/src/features/wallet/api.ts
  • web/src/features/wallet/components/affiliate-rewards-card.tsx
  • web/src/features/wallet/hooks/use-affiliate.ts
  • web/src/features/wallet/hooks/use-billing-history.ts
  • web/src/features/wallet/hooks/use-payment.test.ts
  • web/src/features/wallet/index.tsx
  • web/src/features/wallet/lib/payment.test.ts
  • web/src/features/wallet/types.ts
  • web/src/i18n/locales/en.json
  • web/src/i18n/locales/fr.json
  • web/src/i18n/locales/ja.json
  • web/src/i18n/locales/ru.json
  • web/src/i18n/locales/vi.json
  • web/src/i18n/locales/zh-TW.json
  • web/src/i18n/locales/zh.json
  • web/src/lib/auth-session.test.ts
  • web/src/lib/constants.ts
  • web/src/lib/currency.ts
  • web/src/lib/format.ts
  • web/src/lib/legacy-route.test.ts
  • web/src/lib/oauth.ts
  • web/src/lib/server-error-message.test.ts
  • web/src/routes/__root.tsx
  • web/src/test-setup.ts
  • web/tsconfig.node.json
  • web/vitest.config.ts

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


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.

@DayFliggy

Copy link
Copy Markdown
Author

误将目标仓库解析为上游仓库,正确的 Ren2Hub PR 将单独创建。

@DayFliggy DayFliggy closed this Aug 24, 2026
@DayFliggy
DayFliggy deleted the codex/routing-ability-cache-consistency branch September 6, 2026 06:08
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.