1. 11 Sep, 2025 3 commits
  2. 10 Sep, 2025 4 commits
  3. 09 Sep, 2025 4 commits
  4. 08 Sep, 2025 1 commit
  5. 07 Sep, 2025 4 commits
  6. 06 Sep, 2025 2 commits
    • 🐛 fix(models): export setActivePage to prevent tab-change TypeError · baf134cd
      Context:
      Clicking a vendor tab triggered “setActivePage is not a function” from ModelsTabs.jsx:43.
      
      Root cause:
      ModelsTabs expects `setActivePage` via props (spread from `useModelsData`), but the hook did not expose it in its return object, so the prop resolved to `undefined`.
      
      Fix:
      Export `setActivePage` from `useModelsData`’s return object so `ModelsTabs` receives a valid function.
      
      Result:
      Tab switching now correctly resets pagination to page 1 and reloads models without runtime errors.
      
      Files:
      - web/src/hooks/models/useModelsData.jsx
      
      Test plan:
      - Open the Models page
      - Click different vendor tabs
      - Verify no crash occurs and the list reloads with page reset to 1
      
      Refs: web/src/components/table/models/ModelsTabs.jsx:43
      t0ng7u committed
  7. 05 Sep, 2025 1 commit
  8. 04 Sep, 2025 2 commits
  9. 03 Sep, 2025 5 commits
  10. 02 Sep, 2025 12 commits
    • 🐛 fix(models-sync): allow sync when no conflicts selected · 22b724ca
      When syncing official models, clicking "Apply overwrite" with zero selected
      conflict fields resulted in no request being sent and the modal simply closing.
      This blocked creation of missing models/vendors even though the backend
      supports an empty `overwrite` array and will still create missing items.
      
      Changes:
      - Remove the early-return guard in `UpstreamConflictModal.handleOk`
      - Always call `onSubmit(payload)` even when `payload` is empty
      - Keep closing behavior when the request succeeds
      
      Behavior:
      - Users can now proceed with upstream sync without selecting any conflict fields
      - Missing models/vendors are created as expected
      - Existing models are not overwritten unless fields are explicitly selected
      
      Affected:
      - web/src/components/table/models/modals/UpstreamConflictModal.jsx
      
      Quality:
      - Lint passes
      - No breaking changes
      - No visual/UI changes beyond the intended behavior
      
      Test plan:
      1) Open official models sync and trigger a conflicts preview
      2) Click "Apply overwrite" without selecting any fields
      3) Expect the sync to proceed and a success toast indicating created models
      4) Re-try with some fields selected to confirm overwrites still work
      t0ng7u committed
    • 🐛 fix(models sync): send correct overwrite payload and drop fallback · 25dbd39d
      Ensure UpstreamConflictModal submits { overwrite: payload, locale } instead of spreading an array into an object
      Remove numeric-key fallback from applyUpstreamOverwrite for simpler and explicit logic
      Effect: selected fields are now actually updated; success message shows updated model count
      Refs: backend SyncUpstreamModels expects overwrite: overwriteField[]
      t0ng7u committed
    • feat(sync): multi-language sync wizard, backend locale support, and conflict… · 14af0875
       feat(sync): multi-language sync wizard, backend locale support, and conflict modal UX improvements
      
      Frontend (web)
      - ModelsActions.jsx
        - Replace “Sync Official” with “Sync” and open a new two-step SyncWizard.
        - Pass selected locale through to preview, sync, and overwrite flows.
        - Keep conflict resolution flow; inject locale into overwrite submission.
      
      - New: models/modals/SyncWizardModal.jsx
        - Two-step wizard: (1) method selection (config-sync disabled for now), (2) language selection (en/zh/ja).
        - Horizontal, centered Radio cards; returns { option, locale } via onConfirm.
      
      - UpstreamConflictModal.jsx
        - Add search input (model fuzzy search) and native pagination.
        - Column header checkbox now only applies to rows in the current filtered result.
        - Fix “Cannot access ‘filteredDataSource’ before initialization”.
        - Refactor with useMemo/useCallback; extract helpers to remove duplicated logic:
          - getPresentRowsForField, getHeaderState, applyHeaderChange
        - Minor code cleanups and stability improvements.
      
      - i18n (en.json)
        - Add strings for the sync wizard and related actions (Sync, Sync Wizard, Select method/source/language, etc.).
        - Adjust minor translations.
      
      Hooks
      - useModelsData.jsx
        - Extend previewUpstreamDiff, syncUpstream, applyUpstreamOverwrite to accept options with locale.
        - Send locale via query/body accordingly.
      
      Backend (Go)
      - controller/model_sync.go
        - Accept locale from query/body and resolve i18n upstream URLs.
        - Add SYNC_UPSTREAM_BASE for upstream base override (default: https://basellm.github.io/llm-metadata).
        - Make HTTP timeouts/retries/limits configurable:
          - SYNC_HTTP_TIMEOUT_SECONDS, SYNC_HTTP_RETRY, SYNC_HTTP_MAX_MB
        - Add ETag-based caching and support both envelope and pure array JSON formats.
        - Concurrently fetch vendors and models; improve error responses with locale and source URLs.
        - Include source meta (locale, models_url, vendors_url) in success payloads.
      
      Notes
      - No breaking changes expected.
      - Lint passes for touched files.
      t0ng7u committed
    • Merge pull request #1733 from seefs001/fix/jsoneditor · 40831267
      fix: adjust column spans in JSONEditor for better layout  #1719
      Seefs committed
    • Merge pull request #1724 from momomobinx/base · ada7b968
      openai v1/models 完全兼容 解决接入trae时候的字段校验
      Seefs committed
    • Merge branch 'alpha' into base · 785d0c42
      Seefs committed
    • 🎨 fix: sidebar skeleton background and icon spacing consistency · 42e5794d
      - Set sidebar skeleton background to use theme variable (--semi-color-bg-0) instead of hardcoded white for better dark mode compatibility
      - Apply consistent background to both collapsed and expanded skeleton states
      - Ensure sidebar container uses theme background when skeleton is loading
      - Remove duplicate margin-right classes from skeleton wrapper components that conflicted with CSS definitions
      - Simplify navigation text structure by removing unnecessary div wrappers to improve text truncation
      - Add proper text layout styles for better truncation handling when menu items have long names
      - Standardize icon-to-text spacing across all sidebar navigation items
      t0ng7u committed
  11. 01 Sep, 2025 2 commits