Commit Graph
2359 Commits
Author SHA1 Message Date
Seefs dad57a6bb8 fix: sync codex field (#6018) 2026-07-11 11:04:15 +08:00
ca971413e9 fix(web): allow user-activated top navigation for custom home iframe (#5955)
The custom home page URL iframe only allows allow-forms/allow-popups/
allow-popups-to-escape-sandbox/allow-scripts, without allow-top-navigation*.
As a result, target="_top" nav/menu links inside the (admin-configured,
trusted) embedded page cannot navigate the top-level window on desktop
browsers, while some mobile browsers still allow it via allow-popups —
causing inconsistent behavior rather than an intended restriction.

Add allow-top-navigation-by-user-activation so user-clicked top-level
links work consistently across devices. This token only permits
user-activated top navigation and does NOT grant same-origin access,
so it avoids the security concern of allow-same-origin.

Co-authored-by: 贺. <kuang@M1.local>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-11 10:52:17 +08:00
t0ng7u 9d1ca545e2 ♻️ refactor(web): refine data-table cards and pricing page layout
Replace collapsible card details with always-visible label/value rows, add badge-list full display for cards, and polish pricing/channel toolbars and mobile cards.
2026-07-11 06:02:16 +08:00
t0ng7u 0918bdb49a ♻️ refactor(web): consolidate design-system primitives and responsive data views 2026-07-11 05:13:16 +08:00
t0ng7u 262ab93123 style(web): unify design system across default frontend
🔤 Typography
- Fix --font-sans stack: 'Public Sans Variable' was never applied (wrong family name), add CJK fallbacks (PingFang SC / Microsoft YaHei UI / Noto Sans SC)
- Sync <html lang> with i18n language for correct CJK glyph selection
- Remove dead fake font system (font-provider.tsx, config/fonts.ts, --font-inter/--font-manrope)
- Typography contract: 3-tier headings, arbitrary text-[10px]/[11px] → text-xs (46 files), no uppercase table headers, font-bold → font-semibold
- Numbers use tabular-nums only; font-mono reserved for keys/IDs/code (29 files)

🎨 Color discipline
- Retire StatusBadge string-hash rainbow (autoColor → neutral); all variants resolve to 5 semantic voices
- Add tintedBadgeClassMap as the single tinted-pill recipe
- Replace hardcoded emerald/amber/rose/sky classes with semantic tokens across ~30 files (timing badges, progress bars, system panels, pricing, rankings, log row tints)
- Drop all !important text overrides and [font-family:var(--font-body)] hacks

🧘 Motion restraint
- Remove admin entrance animations: table row stagger, card hover lift/shadow, button press scale, dashboard shimmer line
- Neuter page-transition stagger components into plain wrappers; page transitions reduced to pure opacity fade
- Decorative motion stays landing-only

📐 Shape
- Single radius source: --radius 1rem → 0.625rem
- Sparklines use solid chart tokens instead of decorative gradients
- PanelWrapper: border-only (no shadow), align radius with Card

📏 Guardrails
- Add "Design System Discipline" section (3.10.1) to web/default/AGENTS.md

 Verified: tsgo typecheck clean, rsbuild production build passes
2026-07-11 02:02:11 +08:00
同語 0cb741d8da perf(model-pricing): optimize upstream price sync tables (#6092)
Merge pull request #6092 from QuantumNous/perf/model-pricing-sync-table
2026-07-11 00:49:03 +08:00
QuentinHsu 6869cd94b2 perf(web): align table badge spacing
- remove built-in horizontal padding from status badges so table columns align with headers.
- drop legacy negative-margin compensation from badge cells and affected table renderers.
- clean touched table components to satisfy lint rules around type imports, keys, and JSX flow.
2026-07-11 00:28:21 +08:00
QuentinHsu 43783286e5 fix(model-pricing): polish sync channel dialog layout
- keep input focus and invalid rings inside the shared Input component to avoid clipping in constrained containers.
- make the sync channel selector table use a fixed header, internal body scrolling, and fixed pagination inside the dialog.
- align status cells with their header and translate channel status labels through existing i18n keys.
2026-07-10 23:56:18 +08:00
QuentinHsu 489c045842 perf(model-pricing): optimize upstream price sync table
- batch select and unselect operations into single state updates to reduce lag with large model lists.
- align current price and upstream preset rows by rendering the same ordered field set.
- switch the table to a fixed header, internal body scrolling, and fixed pagination layout with compact upstream header counts.
- hide synthesized preset internal IDs and count only effective selectable resolutions.
2026-07-10 23:37:11 +08:00
同語 d3b01b483d fix: allow adding model names that differ only by case in multi-select (#6061)
Merge pull request #6061 from feitianbubu/pr/c33b40b70
2026-07-10 23:30:15 +08:00
feitianbubu e8596cab7e fix: allow adding custom model names that differ only by case 2026-07-10 10:55:15 +08:00
QuentinHsu 928b475075 feat(playground): add chat parameter settings panel
- expose playground controls for sampling, penalty, token, and seed parameters.
- reuse the existing persisted config and parameter-enabled state so requests only send enabled values.
- add localized parameter copy and keep the panel scrollable on short screens.
2026-07-09 22:10:03 +08:00
QuentinHsu 4645ad9df5 fix(playground): keep model selector lists in sync
- constrain the desktop selector panel so long group and model lists scroll within a shared height.
- make the selected model stand out with stronger row and label styling.
- scroll both lists to the active selections after the popover opens.
2026-07-09 21:47:43 +08:00
CaIon a79f96919e fix(affiliate): update referral message 2026-07-09 16:49:53 +08:00
zuiho df01273b94 fix(web): let resized tables fill available width (#6031)
Signed-off-by: zuiho <2324465096@qq.com>
2026-07-09 16:26:56 +08:00
zuiho 8739c05c0e feat(web): 支持渠道列表手动调整列宽 (#5948)
* 支持渠道表格列宽拖拽

* fix(web): address column resize review feedback

* feat(web): auto-fit resized table columns

* fix(web): reduce column resize persistence work

---------

Signed-off-by: zuiho <2324465096@qq.com>
2026-07-08 16:15:49 +08:00
CaIon 97bbb7c8cd feat(pricing): enhance dynamic pricing calculations with group selection support 2026-07-08 15:11:32 +08:00
Rāna(Bass Ver.) 28e0115a08 fix(web): prevent browser translation from mutating React roots (#5963) 2026-07-08 12:57:31 +08:00
CaIon 6a437a337d feat(oauth): add OAuth callback URL display and copy functionality 2026-07-08 12:50:57 +08:00
CaIon 57865fc1f8 fix: restore default channel connection paste 2026-07-08 12:39:23 +08:00
A_Words 90fa6fe6b6 fix(wallet): honor configured quota units for reward transfers (#5808)
* fix(wallet): honor configured quota units for reward transfers

* fix(i18n): localize quota preview descriptions

* fix(settings): normalize invalid quota input
2026-07-07 21:40:58 +08:00
Seefs a72e5082e9 feat(system-info): add stale instance cleanup actions (#5953) 2026-07-07 21:22:49 +08:00
feitianbubu 394b023dbf fix: keep group ratio input as string draft to allow decimal typing (#5995)
The ratio column normalized input to number on every keystroke, so
typing 0.05 got stuck at 0.0 which Number() collapses to 0. Keep the
value as a string draft like the top-up ratio column and only convert
to number when serializing.

Fixes #5986
2026-07-07 21:12:54 +08:00
CaIon becc18e300 fix(i18n): add language detection mapping for Chinese locales 2026-07-07 14:02:09 +08:00
CaIon 8f31b30598 fix(i18n): standardize locale formatting for Intl APIs 2026-07-07 13:40:06 +08:00
Seefs 9b93d61b7f feat(subscription): add admin quota reset actions (#5952)
* feat(subscription): add admin quota reset actions

* fix(subscription): keep quota reset in plan row actions

* refactor(subscription): move user subscription actions into menu
2026-07-07 12:47:41 +08:00
Meow Tech Open Source by NovaMeow d1abf78ec0 Localized new ui to zh-TW (#5942)
* Create zh-TW.json

* Update _sync-report.json

* Update languages.ts

* Update config.ts

* fix(i18n): update language codes and improve translations for zh-CN and zh-TW
2026-07-07 12:46:02 +08:00
CaIon bae799ccb1 fix(billing): surface quota saturation events for admin auditing
Thread int32 saturation clamps from tiered settlement and video task
recompute into the consume/task logs under admin_info, so oversized or
malformed billing inputs stay auditable. Clamp negative audio duration
before token conversion and gate the saturation UI markers on admin.
2026-07-07 12:20:07 +08:00
Seefs 45f0484dc1 Fix/build date dns error (#5945)
* Revert "fix(classic): fix classic web build failures"

This reverts commit 997926bbe1.

* fix(classic): use available Slack icon export
2026-07-06 22:32:26 +08:00
CaIon fc26b88fd1 feat(group): enhance group ratio editor with improved visibility rules and JSON parsing 2026-07-06 16:22:18 +08:00
Gravirei 1e80ce03e8 feat: optimize legacy top-up warning banner copy (#5851) (#5855)
* feat: optimize legacy top-up warning banner copy (#5851)

* fix(i18n): use standard Latin period at the end of Vietnamese translations
2026-07-06 15:03:54 +08:00
乾Land贺. 3a876d6f31 fix(web): redirect authenticated users away from sign-up page (#5910)
The sign-in route already redirects logged-in users to /dashboard in its
beforeLoad guard, but the sign-up route (and its /register alias) had no
such guard, leaving authenticated users on the registration form. This
mirrors the classic theme's AuthRedirect behavior. Add an equivalent
beforeLoad guard using the same useAuthStore, redirecting to /dashboard
for consistency with the sign-in route.

Closes #5908

Co-authored-by: 贺. <kuang@M1.local>
2026-07-06 14:57:36 +08:00
olwater 17465b855f fix(html): 修复 Shadow DOM 隔离渲染下深浅色模式无法自动切换的问题 (#5890)
Shadow DOM 的样式隔离特性导致外部 html 元素上的 dark class 无法被
Shadow DOM 内部的 Tailwind dark: 选择器匹配到。通过 MutationObserver
监听 document.documentElement 的 class 变化,将 dark class 同步到
Shadow DOM 内的包装容器上,使深色模式样式正常生效。
2026-07-06 14:00:31 +08:00
G.RQ 2f91d8ccb3 fix(web): sync home iframe theme and language (#5917) 2026-07-06 13:57:20 +08:00
CaIon 2281c9e3d8 fix(web): refine mobile user cards 2026-07-05 15:02:08 +08:00
feitianbubu f52b52b167 fix: align dynamic pricing style with log details dialog sections 2026-07-04 23:18:25 +08:00
Seefs 4ae341756e fix(channels): show field passthrough controls for Codex (#5902) 2026-07-04 19:50:15 +08:00
CaIon 12603a7765 fix(redemption): add status filtering and cleanup action 2026-07-04 16:15:47 +08:00
CaIon 86021d8ed2 Refine default web UI and backend sync handling 2026-07-04 14:57:53 +08:00
QuentinHsu 997926bbe1 fix(classic): fix classic web build failures
- replace the Slack OAuth icon with FaSlack from react-icons/fa to avoid the missing SiSlack export.
- add a classic Rsbuild alias for date-fns so Semi resolves its compatible date-fns v2 dependency.
2026-07-04 08:25:39 +08:00
同語 b6e8ff9dd5 perf(web): refine channel test dialog interactions
Merge pull request #5886 from QuantumNous/perf/channel-test-dialog-layout
2026-07-04 00:13:17 +08:00
QuentinHsu c5600f9b11 perf(channels): compact model test row actions
- replace per-model test text buttons with icon-only actions matching the channel list.
- let the action column shrink to its icon content to reduce table width.
2026-07-03 23:40:11 +08:00
QuentinHsu b35dfa32ef perf(channels): streamline channel test dialog layout
- split model test status from result details so failures and latency no longer crowd one column.
- move batch progress into toast updates to keep the dialog height stable during tests.
- consolidate the channel title and model actions to reduce vertical churn.
2026-07-03 23:13:37 +08:00
QuentinHsu 70c0b37eec chore(deps): remove unused date-fns dependency 2026-07-03 16:53:37 +08:00
QuentinHsu aa334c0850 fix(ai-elements): read nested usage token details
- use ai v7 usage detail fields for reasoning and cache token counts.
- keep context usage cost rendering compatible with the updated SDK types.
2026-07-03 16:35:18 +08:00
QuentinHsu a6c0201257 chore(deps): update web default dependencies
- bump frontend runtime and tooling packages to latest available versions, including React, Rsbuild, TanStack, VisActor, and AI SDK.
- refresh workspace catalog versions and regenerate Bun lockfile to keep default package resolution aligned.
2026-07-03 16:20:22 +08:00
feitianbubu c1903607d5 fix: persist channel status filter across page navigation (#5863) 2026-07-03 14:43:27 +08:00
feitianbubu 0565e62679 fix: only treat 401 as session expiry in auth guard (#5872) 2026-07-03 14:43:12 +08:00
feitianbubu 759ab6bbca fix: keep page state when switching tabs within the same route (#5796)
AnimatedOutlet keyed its motion container by the full pathname, so
navigating between params of the same route (e.g. the dashboard tabs
under /dashboard/$section) changed the key and remounted the route
component, discarding its in-memory state. The most visible symptom:
the dashboard time range resets to the default every time you switch
sub-tabs (Model Analytics / Flow / User Analytics).

Key the transition by the matched route id instead, so param-only
navigation re-renders in place while real page-to-page navigation
still plays the enter animation. This also preserves state across the
other $section tab pages (usage logs, models, system settings).
2026-07-02 21:36:23 +08:00
QuentinHsu 1f4d8d2b26 fix(web): inject app styles into isolated HTML (#5860)
- clone loaded application style nodes into the Shadow DOM for custom HTML rendering.
- keep HTML rendering isolated while restoring layout and typography that depend on app CSS.
2026-07-02 21:35:27 +08:00