1. 18 Jul, 2026 3 commits
    • feat: support upstream model fetch for advanced custom channels (#5971) · a6cf42c0
      * feat: support upstream model fetch for advanced custom channels
      
      * fix: add advanced custom routes as separate groups
      
      * fix: select advanced custom route entry before adding
      
      ---------
      
      Co-authored-by: CaIon <i@caion.me>
      Seefs committed
    • feat(channel): support Codex upstream model discovery (#6184) · 57746fc9
      * fix(i18n): clarify Go regex and field passthrough copy
      
      * feat(channel): support Codex upstream model discovery
      
      * Revert "fix(i18n): clarify Go regex and field passthrough copy"
      
      This reverts commit d63d7975db3e34ff44e189112d3c15ad8c24ad88.
      Seefs committed
    • fix: prevent duplicate tool calls in Responses-to-Chat streaming (#6225) · 1086038f
      When a function call was already registered under its output_index key
      via response.output_item.added, the synthetic events built from the
      terminal response.completed output carry no output_index and resolve to
      a different item-based key. ensureToolForEvent then created a second
      tool index and resent the full arguments, so Chat Completions clients
      received the same tool call twice.
      
      Reuse the tool registered under itemIDToKey/callIDToKey before creating
      a new one, and alias the new key to the existing tool.
      
      Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
      Niku committed
  2. 17 Jul, 2026 3 commits
    • fix(data-table): update table body immediately when toggling columns (#6253) · dc9aeab9
      DataTableRow's React.memo did not depend on columnVisibility.
      TanStack row references stay stable when visible columns change, so the
      table body did not refresh after View -> Toggle columns until another
      action rebuilt the column definitions.
      
      Capture a visible column id signature (visibleColumnIds) outside the
      memo and compare it, matching the existing isSelected snapshot pattern.
      All tables that use DataTableRow pick up the fix.
      DawnMoon1542 committed
    • fix: add server-side sorting to user list, prevent client-side sort on paged data (#6194) · 506e41c1
      * fix: add server-side sorting to user list, prevent client-side sort on paged data
      
      The user management table applied client-side sorting to the current
      page slice while pagination was handled server-side, causing ID-asc
      views to show pages out of order (e.g. 23-42, 3-22, 1-2).
      
      Backend: add sort_by/sort_order query params to GetAllUsers and
      SearchUsers with a column whitelist for safe ORDER BY generation.
      Frontend: pass sorting state to the API and reset to page 1 on sort
      change. Generic useDataTable hook now disables client-side sorted row
      model and sort UI for tables with manual pagination but no server-side
      sort handler.
      
      * fix: add id tie-breaker to non-unique sort columns, remove side effect from state updater
      
      Append secondary ORDER BY id DESC when sorting by non-unique columns
      (quota, created_at, etc.) to prevent row duplication/skipping across
      OFFSET pages.
      
      Move onPaginationChange out of setSorting updater to avoid side effects
      inside a pure function (React Strict Mode double-invocation safety).
      DawnMoon1542 committed
  3. 14 Jul, 2026 3 commits
  4. 11 Jul, 2026 23 commits
  5. 10 Jul, 2026 8 commits
    • ️ refactor(web): refine data-table cards and pricing page layout · 9d1ca545
      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.
      t0ng7u committed
    • style(web): unify design system across default frontend · 262ab931
      🔤 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
      t0ng7u committed
    • perf(model-pricing): optimize upstream price sync tables (#6092) · 0cb741d8
      Merge pull request #6092 from QuantumNous/perf/model-pricing-sync-table
      同語 committed
    • perf(web): align table badge spacing · 6869cd94
      - 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.
      QuentinHsu committed
    • fix(model-pricing): polish sync channel dialog layout · 43783286
      - 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.
      QuentinHsu committed
    • perf(model-pricing): optimize upstream price sync table · 489c0458
      - 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.
      QuentinHsu committed
    • fix: remove sample special usable groups leaking into pricing page (#5906) · f2c7cd33
      Merge pull request #5906 from feitianbubu/fix/pricing-sample-special-usable-group
      同語 committed