1. 07 May, 2026 2 commits
    • fix: qualify column names in PerfMetric upsert to avoid ambiguity · faa0f142
      PostgreSQL raises 'column reference is ambiguous' (SQLSTATE 42702) on
      ON CONFLICT DO UPDATE because unqualified column names match both the
      target row and EXCLUDED. Prefix with the table name so the existing
      value is referenced unambiguously. Compatible with MySQL and SQLite.
      
      Closes #4683
      
      Signed-off-by: SAY-5 <SAY-5@users.noreply.github.com>
      SAY-5 committed
    • 🎨 fix(web): align UI and charts with theme tokens and presets · a7475a1e
      Improve theme switching fidelity (including system preference), extend design tokens so color presets tint real surfaces—not only primary/chrome—and refactor shared badges, tables, and dashboard visuals to semantic colors. Wire VChart series colors to `--chart-*` with safe fallbacks.
      
      **Changes**
      
      - **Theme runtime** (`theme-provider.tsx`): Validate stored theme cookie; keep `resolvedTheme` in sync with DOM + `(prefers-color-scheme)`; `resetTheme` respects `defaultTheme`; memoized context value.
      - **Tokens** (`theme.css`): Add `--success|warning|info|neutral` (+ foregrounds) and map them under `@theme inline` for Tailwind utilities.
      - **Presets** (`theme-presets.css`): For non-`default` presets, derive `card`, `popover`, `muted`, `accent`, `border`, `input`, and sidebar tokens from `--primary`/`--background`; map semantic status colors to preset chart variables.
      - **Components**: `status-badge`, `colors` (avatars, announcements), `copy-button`, `group-badge`, `data-table` row styles, `sidebar` outline shadow (fix `var(--sidebar-border)` usage), ai-elements tool/web-preview status colors.
      - **Dashboard**: Latency/API helpers and overview fragments use semantic tokens; `charts.ts` reads `--chart-1`…`--chart-5` from computed styles with fallbacks; `processChartData` / `processUserChartData` accept optional `themeKey` for preset churn; chart components pass `customization.preset` and bump `VChart` keys.
      
      **Verification**
      
      - `bun run typecheck`
      t0ng7u committed
  2. 06 May, 2026 15 commits
    • ️ refactor(layout): rename workspace switcher to system brand · 415d21d0
      Rename the layout branding component to reflect that it displays the system identity rather than switching workspaces. Update header usage and layout exports, and remove the now-unused workspace data dependency.
      t0ng7u committed
    • fix(default): keep SectionPageLayout description slot hidden · abc255dd
      Keep SectionPageLayout.Description as a non-rendering composition slot so callers stay compatible while page subtitles remain hidden across the app.
      t0ng7u committed
    • feat(default): redesign dashboard overview · a7d019e3
      Refresh the overview page with an actionable Get Started guide, live API request details, real usage sparklines, and OpenAI-inspired dashboard panels. Add collapsible setup state, role-aware quick actions, and localized copy so returning users can focus on platform health.
      t0ng7u committed
    • feat(default): add model performance badges · e8cfb546
      Add a batched performance summary API for model square cards and show compact latency, throughput, and status metrics without increasing card size. Also fix OTP verification form submission.
      CaIon committed
    • fix: preserve OpenAI image edit reference fields (#4646) · 38a3314b
      * fix: preserve OpenAI image edit reference fields
      
      * feat: support json image edit requests
      Seefs committed
    • refactor: move top_up_link from status API to topup info API · 5c793d79
      Move top_up_link out of the public GetStatus endpoint into the
      authenticated GetTopUpInfo endpoint. Update classic frontend to
      read topup_link from the topup info response instead of status.
      Also add mailto links in SECURITY.md.
      
      close #4582
      CaIon committed
    • docs(security): add bulk reporting policy with block warning · ee190b60
      Uncoordinated bulk vulnerability submissions have caused significant
      disruption. Added a prominent notice requiring prior coordination for
      bulk reports, with clear consequences: closure without review and
      potential blocking of repeated offenders.
      CaIon committed
    • feat(default): reorganize system settings pricing UI · 0f9f094a
      Refine the default system settings structure and model pricing editor so pricing configuration is easier to scan and edit.
      CaIon committed
    • feat(web/default): unified UI overhaul — Base UI migration, theme presets,… · 8b2b03d2
      feat(web/default): unified UI overhaul — Base UI migration, theme presets, rankings dashboard, and table toolbar refactor (#4633)
      
      * 🎨 feat(web/default): add shadcn-style theme presets, radius prefs, and fix selection badges
      
      Integrate the qn-platform–style OKLCH color system into the default frontend while keeping the existing blue-tinted dark tokens for the default theme. Add [data-theme-preset] palettes for seven named presets plus the default zinc-like scale, define [data-theme-radius] overrides so user radius beats preset --radius, and align the Tailwind @custom-variant dark helper with .dark usage.
      
      Introduce ThemeCustomizationProvider to own preset and radius state, persist choices in cookies (theme-preset, theme-radius), and sync data-theme-preset / data-theme-radius on <html>. Wrap the tree in main.tsx.
      
      Extend ConfigDrawer with theme preset swatches (scoped data-theme-preset) and radius previews wired to context; refactor swatch/card markup so selected CircleCheck badges sit outside clipped rows (remove outer overflow-hidden that hid the centered checkmark).
      
      Add i18n keys for preset names, radius, and accessibility labels across en, zh, fr, ja, ru, vi.
      
      * 🎨 fix(web): align segmented controls with theme radius tokens
      
      - Replace hard-coded inner pill radii (rounded-[5px]) on dashboard chart
        toolbars with radius-md so the active state follows --radius when users
        change Radius in Theme Settings.
      - Use nested radii consistent with TabsList/TabsTrigger: outer
        rounded-lg (var(--radius)) and inner rounded-md (calc(var(--radius) - 2px))
        so the track and active thumb stay concentric at small scales (e.g.
        0.3rem) instead of a squared “focus” block inside a rounded shell.
      - Apply the same pattern to pricing SegmentedControl and the segmented
        groups in consumption-distribution-chart, model-charts, and user-charts.
      
      Verified: bun run typecheck (web/default)
      
      *  feat(pricing): enrich model details with uptime sparkline and API documentation
      
      Add a compact 30-day uptime sparkline (OpenRouter-style bars + aggregate %) with
      per-day tooltips, surface it in a status row under quick stats and in the
      per-group performance table, and extend mock data so uptime series are stable
      and optionally scoped by group.
      
      Introduce an API tab with Shiki-highlighted code samples (cURL, Python,
      TypeScript, JavaScript), endpoint-type switching, authentication guidance, a
      supported-parameters table, and mock per-group RPM/TPM/RPD limits. Infer
      vendor, tokenizer, license, and data-retention hints for a provider & data
      privacy card on the Overview tab (capabilities/modalities stay with model
      identity; rate limits stay with the API tab).
      
      Update i18n for all new user-facing strings across en, zh, fr, ja, ru, and vi.
      
      * 🏆 feat(rankings): add comprehensive rankings dashboard
      
      Add a mock-data powered rankings experience with period tabs, model, app, and vendor leaderboards, market share and history charts, movers, new releases, and per-category sections while backend analytics are pending.
      
      Link ranked models to pricing details and ranked vendors to filtered pricing results, and include localized copy for all supported frontend locales.
      
      * fix(theme): correct theme preset selection state
      
      - update Base UI Radio selectors to use data-checked/data-unchecked states.
      - fix unchecked theme options still showing selected indicators.
      - isolate the default theme preview tokens to prevent preset changes from leaking into it.
      
      * fix(setup): correct usage mode radio state
      
      - use Base UI data-checked/data-unchecked states for RadioGroup styling.
      - hide radio indicators when options are unchecked to avoid setup page display issues.
      - drive usage mode card and icon selection styles from Base UI state.
      
      * fix(auth): submit sign-in and sign-up forms
      
      * 🎨 refactor: Align default theme with shadcn Base Nova and prune legacy customization
      
      Migrate shadcn UI to Base UI primitives via CLI (`base-nova` / `components.json`)
      and reinstall full component registry with `--overwrite`, including Hugeicons-backed
      widgets and newly added registry components.
      
      - Remove custom multi-preset/theme-radius system (`ThemeCustomizationProvider`, cookies,
        preset UI from config drawer); rely on official semantic CSS tokens + light/dark only.
      - Replace `theme.css` with shadcn’s documented neutral `:root`/`.dark` palette and
        `@theme inline` mappings (plus skeleton token vars for existing shimmer usage).
      - Update global styles for Base UI: collapsible animation uses `--collapsible-panel-height`;
        clarify scroll-lock override comment.
      
      Application compatibility:
      - Keep minimal shims where app code diverged from official APIs (popover collision props,
        combobox legacy `options` callers, Spinner prop typing).
      - Switch interactive styling from Radix-era `data-state` / `--radix-*` selectors to Base UI
        semantics (`data-open`, `data-popup-open`, `data-panel-open`, `--anchor-width`, etc.)
      
      Tooling / docs / build:
      - Rename Rsbuild vendor chunk grouping to `@base-ui` + transitive `@radix-ui`.
      - Refresh AGENTS.md / CLAUDE.md / classic→default sync skill for Base UI stack.
      - Bump `package.json` / lockfile for shadcn-postinstall deps (Hugeicons, chart stack, themes, etc.)
      
      Verified: `bun run typecheck` passes.
      
      Note: `bun run lint` still reports pre-existing hooks rule violations elsewhere;
      not addressed in this change.
      
      * 🎨 chore(web/default): unify table toolbar, relocate usage stats, refine filters
      
      - Refactor DataTableToolbar to a single wrapping flex row with a
        right-aligned action cluster (Reset / Search / View / Expand) for a
        cleaner Ant Design Pro–style filter bar; remove the dedicated stats row
        and the toolbar `stats` prop.
      - Move Common Logs summary badges (Usage / RPM / TPM) and the sensitive-
        data visibility toggle into the page header via CommonLogsHeaderActions
        and SectionPageLayout.Actions so the toolbar stays focused on filters.
      - Slim CommonLogsFilterBar props (no stats / preActions eye control).
      - Improve CompactDateTimeRangePicker: show minute-precision labels on the
        trigger (seconds omitted; aligns with datetime-local inputs); widen the
        trigger on sm+ breakpoints so the full range is visible without truncation;
        apply the same width in task logs filters.
      - Simplify DataTableViewOptions: text-only “View” trigger, no sliders icon.
      - Earlier layout tweak: extra top padding on SectionPageLayout scroll
        content so control focus rings are not clipped by overflow.
      
      * feat(web/default): Base UI migration and component foundation
      
      Migrate from Radix UI to Base UI, rewrite core UI primitives,
      update dependencies (recharts, date-fns, next-themes), add
      shadcn agent skill documentation, and refresh AI element components.
      
      This is the foundational work from the v2/localmain lineage that
      was not covered by the individual feature commits above.
      
      ---------
      
      Co-authored-by: t0ng7u <dev@aiass.cc>
      Co-authored-by: QuentinHsu <xuquentinyang@gmail.com>
      Calcium-Ion committed
  3. 30 Apr, 2026 13 commits
  4. 29 Apr, 2026 10 commits