1. 17 Jun, 2026 11 commits
  2. 16 Jun, 2026 3 commits
  3. 15 Jun, 2026 14 commits
  4. 13 Jun, 2026 1 commit
  5. 12 Jun, 2026 5 commits
    • chore: update Codex channel (#5461) · 1292b8b2
      Seefs committed
    • perf(data-table): improve data table layout and badge display (#5460) · 27b2b2c4
      * perf(table): use percentage-based column widths
      
      - compute each column's width as a percentage of total column size instead of a fixed pixel value, letting the colgroup scale fluidly with the table container.
      
      * perf(data-table): reduce unnecessary re-renders across table components
      
      - stabilize commitSearchValue in toolbar by reading table/searchKey via refs, eliminating recreation on every parent render
      - store onColumnFiltersChange in a ref so debounce effect is not reset when the caller passes a new function reference each render
      - wrap DataTableRow in React.memo with a custom comparator that ignores getColumnClassName reference churn
      - memoize selectedValues Set in DataTableFacetedFilter and wrap with React.memo to prevent rerenders on unrelated state changes
      - cache cell meta reads in CompactRow and FallbackRow to a single pass per row; memoize hasCompactMeta in MobileCardList
      - memoize hideable columns list in DataTableViewOptions and colSpan in DataTableView
      - remove tableClassName and colgroup from scroll-sync effect deps; cache toolbar button NodeList via useLayoutEffect to avoid per-keydown DOM queries
      
      * perf(data-table): replace scroll-sync split header with CSS sticky
      
      - remove JS scroll-sync effect and event listener between split header and body containers.
      - merge separate header/body tables into a single scrollable table element, reducing DOM complexity.
      - apply CSS sticky positioning to the header for a simpler, hardware-accelerated freeze effect.
      
      * fix(data-table): replace opacity muted colors with color-mix
      
      - switch from bg-muted/50 and bg-muted/30 to color-mix(in oklch) to produce opaque blended backgrounds that prevent scroll content from showing through pinned cells.
      - expose --table-header-bg CSS variable so pinned header cells inherit the exact same computed color as the thead background.
      - add group class to TableRow to enable group-hover selectors on pinned cell styles.
      
      * feat(data-table): support column pinning via meta.pinned
      
      - add pinned?: 'left' | 'right' to ColumnMeta so pinning is declared once in the column definition and applies to both header and body automatically
      - DataTableView derives pinnedColumns from meta.pinned at runtime, merged with any explicit pinnedColumns prop; explicit entries take precedence
      - add header and meta.pinned: 'right' to all actions columns across channels, users, api-keys, redemption-codes, models, deployments, and subscriptions tables
      
      * style(row-actions): align action buttons to leading edge of column
      
      * refactor(data-table): extract BadgeListCell and centralize badge alignment
      
      - add BadgeListCell component to data-table for badge lists with overflow tooltip, replacing duplicated renderLimitedItems helpers in channels, models, and pricing columns
      - move StatusBadge -ml-1.5 alignment into the component itself via a table-cell context selector, so callers no longer need manual offset wrappers
      - remove the table-cell-level -ml-1.5 selector from TableCell now that alignment is handled by StatusBadge directly
      
      * style(row-actions): offset action buttons to align with column header text
      
      * refactor(data-table): consolidate mobile meta into ColumnMeta declaration
      
      - move mobileTitle, mobileBadge, mobileHidden into the global ColumnMeta augmentation so the type is shared across the project
      - remove the local MobileColumnMeta interface and getCellMeta helper from mobile-card-list.tsx
      - direct col.columnDef.meta access is now type-safe without explicit casting
      
      * refactor(data-table): simplify column header and meta config
      
      - auto-render string `header` values via DataTableColumnHeader so sortable/non-sortable columns work without boilerplate function wrappers
      - promote mobile layout hints (mobileTitle, mobileBadge, mobileHidden) into the global ColumnMeta type, removing the local MobileColumnMeta cast in mobile-card-list
      - migrate all column files from `meta: { label }` to top-level `header: t('...')`, cutting ~180 lines of repetitive template code
      - ViewOptions and MobileCardList label resolution now reads string header first, then meta.label as fallback
      
      * feat(status-badge): add text and underline display types
      
      - introduce StatusBadgeType ('badge' | 'text' | 'underline') and StatusBadgeTypeContext so ancestors can override rendering without touching call sites
      - mobile card field rows now use the text type via context, showing badges as plain colored text instead of pills
      - ProviderBadge gains data-slot='provider-badge' to enable targeted CSS resets in compact layouts
      - replace the implicit [[data-slot=table-cell]>&]:-ml-1.5 rule with explicit -ml-1.5 at each column call site
      
      * refactor(data-table): simplify table filtering internals
      
      - derive toolbar search state from the active table filter to avoid render-time ref writes.
      - extract faceted filter selection updates into a pure helper for clearer single and multi-select behavior.
      - split pinned column resolution into focused helpers so explicit and meta pins merge predictably.
      
      Co-authored-by: t0ng7u <dev@aiass.cc>
      QuentinHsu committed
  6. 10 Jun, 2026 4 commits
    • perf(web): improve frontend table rendering and pinned columns/UI table (#5405) · 6f415428
      * refactor(web): centralize data table implementation
      
      - route all TanStack table setup through a shared data-table hook to remove repeated state and row model wiring.
      - move table rendering, static table wrappers, empty states, and primitive exports behind the data-table module.
      - update feature tables and configuration editors to share the same table UX while preserving their existing workflows.
      
      * refactor(web): trim data table public API
      
      - remove unused data-table exports and dead static table helper types.
      - keep internal table header, skeleton, empty state, and faceted filter helpers private to the data-table module.
      - route feature imports through the data-table barrel to avoid subpath coupling.
      
      * refactor(web): unify table rendering components
      
      - centralize static table headers, bodies, empty states, and shared class names behind the data-table package.
      - migrate settings, pricing, channel, key, subscription, and model tables to the shared table APIs.
      - remove data-table exports for low-level table primitives so feature code uses one supported abstraction.
      
      * perf(web): keep list tables fixed within page content
      
      - make shared data table pages fill available height and scroll row data inside the table body.
      - add a fixed content layout mode so selected list pages avoid page-level scrolling.
      - apply the fixed table behavior to keys, logs, channels, models, users, redemptions, and subscriptions.
      
      * perf(web): refine table pagination controls
      
      - show total row counts instead of redundant page range text.
      - tighten visible page buttons so pagination fits constrained table widths.
      - align pagination controls and tune text hierarchy for clearer scanning.
      
      * perf(web): stabilize model pricing table columns
      
      - keep model pricing columns at fixed widths so headers do not collapse in narrow layouts.
      - truncate long model names and pricing summaries within their cells instead of squeezing adjacent columns.
      
      * refactor(web): simplify data table rendering internals
      
      - split table body rendering into focused helpers for loading, empty, and row states.
      - extract static table row and cell class resolution to reduce branching in the main component.
      - reuse a single pagination page-size option list to avoid duplicated constants.
      
      * perf(pricing): reduce dynamic pricing table render work
      
      - reuse dynamic pricing field metadata instead of rebuilding it inside table columns.
      - precompute formatted dynamic prices per tier and group to avoid repeated entry mapping for each cell.
      - simplify select option construction in related dialogs while preserving the same choices.
      
      * refactor(web): streamline pricing table rendering
      
      - reuse translated endpoint select options between trigger data and menu items.
      - precompute dynamic pricing maps per group so table cells only resolve formatted values.
      - add local dynamic pricing type aliases to keep helper signatures readable.
      
      * refactor(web): merge pricing table imports
      
      * refactor(web): merge upstream ratio table imports
      
      * refactor(web): merge channel selector table imports
      
      * refactor(web): simplify tiered pricing select items
      
      * refactor(web): reuse model ratio row state
      
      * refactor(web): rely on table view row defaults
      
      * refactor(web): reuse pagination state values
      
      * refactor(web): hoist pagination size select items
      
      * refactor(web): clarify static table body rows
      
      * refactor(web): extract table page pagination rendering
      
      * fix(web): remove direct hast type dependency
      
      - rely on Shiki transformer contextual typing for line nodes.
      - allow frontend typecheck to pass without an undeclared hast package.
      
      * refactor(web): trim data table hook return API
      
      - return only the TanStack table instance from useDataTable.
      - keep internal state handling private because callers do not consume it directly.
      
      * refactor(web): keep static table empty row private
      
      - stop exporting the internal StaticDataTableEmptyRow helper.
      - keep the public static table API focused on the table component and column type.
      
      * refactor(web): hide data table view props from barrel
      
      * refactor(web): remove stale long text lint override
      
      * fix(web): keep pinned table columns opaque
      
      - apply pinned column background classes after custom column classes.
      - use an opaque hover background so scrolled content cannot show through fixed cells.
      
      * refactor(data-table): organize shared table components
      
      - group table primitives, page composition, toolbar controls, static tables, and hooks by responsibility.
      - split shared view types, row rendering, header rendering, and pinned-column styling out of the main table view.
      - keep the public data-table barrel stable while documenting the new ownership boundaries.
      
      * fix(web): stabilize split table column sizing
      
      - derive default colgroup widths from visible columns when split headers or header sizing are enabled.
      - apply a fixed table layout with computed minimum width so header and body columns stay aligned.
      - keep split-header containers from leaking horizontal overflow and avoid extra pinned-column borders.
      
      * fix(web): set stable table utility column widths
      
      - assign fixed widths to selection columns so shared colgroup sizing keeps checkbox cells compact.
      - size id columns in redemption and user tables to keep split headers aligned with body rows.
      
      * fix(web): align model metadata icon cells
      
      - render compact provider avatars in the metadata icon column instead of wide wordmarks.
      - position icons in a fixed-size wrapper so they line up with the existing icon header alignment.
      
      * fix(status-badge): hide status dot by default
      
      * fix(web): prevent user invite info overlap
      
      - give the invite info and created-at columns explicit widths so table sizing reserves enough space.
      - allow invite badges to wrap within the cell instead of spilling into adjacent columns.
      
      * perf(data-table): cache pinned column class resolution
      
      - reuse the pinned column lookup while table props stay stable to reduce repeated per-render work.
      - share the resolved column class handler across unified and split-header table layouts.
      - localize page-number screen reader labels so pagination remains accessible in every locale.
      
      * refactor(data-table): tighten static table modes
      
      - make StaticDataTable distinguish data-driven and children-only usage through explicit prop shapes.
      - remove unsupported columns-without-data fallback after confirming no repository callers rely on it.
      - default manual table modes away from unused local row models to reduce repeated table work.
      
      * fix(data-table): make pinned edit column opaque
      
      - use an opaque muted background for the active action column so sticky cells do not reveal scrolled content underneath.
      
      * fix(data-table): prevent narrow column overlap
      
      - apply stable header sizing to remaining desktop data table pages so constrained layouts scroll instead of compressing cells.
      - add explicit widths for key, quota, badge, and timestamp columns that contain fixed-format content.
      - constrain masked values and timestamp cells with truncation to keep content inside its assigned column.
      
      * fix(table): align table cell content with headers
      
      - remove extra inline padding from masked table text buttons so values start at the cell edge.
      - tag status badges and offset leading badges inside table cells to match header text alignment.
      
      * fix(table): prevent admin list column overflow
      
      - widen redemption and subscription table columns so masked codes, timestamps, and localized headers fit.
      - localize subscription ID headers and add Received amount translations across supported locales.
      
      * fix(provider-badge): unify provider icon spacing
      
      - add a shared provider badge component for icon and status label layout.
      - reuse it in channel type and model vendor columns so OpenAI icons align consistently.
      QuentinHsu committed
    • fix(openai): align image streaming relay governance · 59a93cf5
      Route OpenAI image streaming through shared stream handling, split image/realtime/usage helpers for maintainability, and include the related image request and rate limit updates.
      CaIon committed
  7. 09 Jun, 2026 1 commit
  8. 08 Jun, 2026 1 commit
    • fix(openai): support streaming image relay and image edit for images API (#4608) · d2576ddc
      * fix(openai): support streaming image relay
      
      * fix(openai): keep image edit multipart body reusable
      
      * test(openai): cover image stream usage details
      
      * test(openai): cover image edit fallback stream field
      
      * fix(openai): wrap image json fallback as stream
      
      * fix(relay): support OpenAI image streaming
      
      * fix(openai): record image stream upstream error events
      
      * fix(openai): harden image stream relay
      
      * fix(openai): return image JSON errors
      
      * fix(relay): reset stream status per scanner run
      
      * fix(relay): drop upstream credit passthrough
      
      * fix(openai): keep image errors minimal
      
      * fix(openai): keep image error status from response
      
      ---------
      
      Co-authored-by: CaIon <i@caion.me>
      gaoren002 committed