- 09 Sep, 2025 2 commits
-
-
creamlike1024 committed
-
# Conflicts: # README.md
CaIon committed
-
- 08 Sep, 2025 1 commit
-
-
修改claude system参数为数组,增加通用性
Calcium-Ion committed
-
- 07 Sep, 2025 4 commits
-
-
feat: 改进Claude响应转OpenAI响应
IcedTangerine committed -
- convert claude stop reason "max_tokens" to openai "length" - send content_block_start content text delta
creamlike1024 committed -
feat: gemini-2.5-flash-image-preview 文本和图片输出计费
Seefs committed -
fix: ensure the BuiltInTools entry exists before incrementing CallCount
Seefs committed
-
- 06 Sep, 2025 2 commits
-
-
HynoR committed
-
🐛 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
-
- 05 Sep, 2025 1 commit
-
-
HynoR committed
-
- 04 Sep, 2025 2 commits
- 03 Sep, 2025 5 commits
-
-
CaIon committed
-
Updated the features list to include request format conversion functionality and adjusted the order of items.
Calcium-Ion committed -
CaIon committed
-
CaIon committed
-
CaIon committed
-
- 02 Sep, 2025 12 commits
-
-
🐛 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 -
🐛 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 -
t0ng7u committed
-
✨ ✨ 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 -
fix: adjust column spans in JSONEditor for better layout #1719
Seefs committed -
Seefs committed
-
openai v1/models 完全兼容 解决接入trae时候的字段校验
Seefs committed -
Seefs committed
-
🎨 - 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 -
xuebin committed
-
creamlike1024 committed
-
feitianbubu committed
-
- 01 Sep, 2025 11 commits
-
-
t0ng7u committed
-
🤖 t0ng7u committed -
🐛 The Linux/Vite build failed with: “Could not resolve "./headerbar" from "src/components/layout/PageLayout.jsx"” On Linux and with stricter ESM/rollup resolution, directory index files (index.jsx) may not be auto-resolved reliably. Explicitly importing the index file ensures cross-platform stability. Changes: - Update PageLayout import from "./headerbar" to "./headerbar/index.jsx" Impact: - Fixes build on Linux - No runtime behavior changes Verification: - Linter passes for web/src/components/layout/PageLayout.jsx Notes: - Prefer explicit index file imports (and extensions) to avoid platform differences.
t0ng7u committed -
🌏 t0ng7u committed -
✨ Add comprehensive skeleton screen implementation for sidebar to improve loading UX, matching the existing headerbar skeleton pattern. ## Features Added - **Sidebar skeleton screens**: Complete 1:1 recreation of sidebar structure during loading - **Responsive skeleton layouts**: Different layouts for expanded (164×30px) and collapsed (44×44px) states - **Skeleton component enhancements**: Extended SkeletonWrapper with new skeleton types (sidebar, button, sidebarNavItem, sidebarGroupTitle) - **Minimum loading time**: Integrated useMinimumLoadingTime hook with 500ms duration for smooth UX ## Layout Specifications - **Expanded nav items**: 164×30px with 8px horizontal margins and 3px vertical margins - **Collapsed nav items**: 44×44px with 4px bottom margin and 8px horizontal margins - **Collapse button**: 156×24px (expanded) / 36×24px (collapsed) with rounded corners - **Container padding**: 12px top padding, 8px horizontal margins - **Group labels**: 4px 15px 8px padding matching real sidebar-group-label styles ## Code Improvements - **Refactored skeleton rendering**: Eliminated code duplication using reusable components (NavRow, CollapsedRow) - **Configuration-driven sections**: Sections defined as config objects with title widths and item widths - **Fixed width calculations**: Removed random width generation, using precise fixed widths per menu item - **Proper CSS class alignment**: Uses real sidebar CSS classes (sidebar-section, sidebar-group-label, sidebar-divider) ## UI/UX Enhancements - **Bottom-aligned collapse button**: Fixed positioning using margin-top: auto to stay at viewport bottom - **Accurate spacing**: Matches real sidebar margins, padding, and spacing exactly - **Skeleton stability**: Fixed width values prevent layout shifts during loading - **Clean file structure**: Removed redundant HeaderBar.js export file ## Technical Details - Extended SkeletonWrapper component with sidebar-specific skeleton types - Integrated skeleton loading state management in SiderBar component - Added support for collapsed state awareness in skeleton rendering - Implemented precise dimension matching for pixel-perfect loading states Closes: Sidebar skeleton loading implementation
t0ng7u committed -
- Delete dropIndexIfExists helper from `model/main.go` - Remove all calls to dropIndexIfExists in `migrateDB` and `migrateDBFast` - Drop related comments and MySQL-only DROP INDEX code paths - Keep GORM AutoMigrate as the sole migration path for `Model` and `Vendor` Why: - Simplifies migrations and avoids destructive index drops at startup - Prevents noisy MySQL 1091 errors and vendor-specific branches - Aligns with composite unique indexes (uk_model_name_delete_at, uk_vendor_name_delete_at) Impact: - No expected runtime behavior change; schema remains managed by GORM - Legacy single-column unique indexes (if any) will no longer be auto-dropped - Safe across MySQL/PostgreSQL/SQLite; MySQL Chinese charset checks remain intact Verification: - Lint passed for `model/main.go` - Confirmed no remaining `DROP INDEX` or `dropIndexIfExists` references
t0ng7u committed -
✨ ✨ feat(models-sync): official upstream sync with conflict resolution UI, opt‑out flag, and backend resiliency Backend - Add endpoints: - GET /api/models/sync_upstream/preview — diff preview (filters out models with sync_official = 0) - POST /api/models/sync_upstream — apply sync (create missing; optionally overwrite selected fields) - Respect opt‑out: skip models with sync_official = 0 in both preview and apply - Return detailed stats: created_models, created_vendors, updated_models, skipped_models, plus created_list / updated_list - Add model.Model.SyncOfficial (default 1); auto‑migrated by GORM - Make HTTP fetching robust: - Shared http.Client (connection reuse) with 3x exponential backoff retry - 10MB response cap; keep existing IPv4‑first for *.github.io - Vendor handling: - New ensureVendorID helper (cache lookup → DB lookup → create), reduces round‑trips - Transactional overwrite to avoid partial updates - Small cleanups and clearer helpers (containsField, coalesce, chooseStatus) Frontend - ModelsActions: add “Sync official” button with Popover (p‑2) explaining community contribution; loading = syncing || previewing; preview → conflict modal → apply flow - New UpstreamConflictModal: - Per‑field columns (description/icon/tags/vendor/name_rule/status) with column‑level checkbox to select all - Cell with Checkbox + Tag (“Click to view differences”) and Popover (p‑2) showing Local vs Official values - Auto‑hide columns with no conflicts; responsive width; use native Semi Modal footer - Full i18n coverage - useModelsData: add syncing/previewing states; new methods previewUpstreamDiff, applyUpstreamOverwrite, syncUpstream; refresh vendors/models after apply - EditModelModal: add “Participate in official sync” switch; persisted as sync_official - ModelsColumnDefs: add “Participate in official sync” column i18n - Add missing English keys for the new UI and messages; fix quoting issues Refs - Upstream metadata: https://github.com/basellm/llm-metadatat0ng7u committed -
✨ Backend (controller/ratio_sync.go): - Add built‑in official upstream to GetSyncableChannels (ID: -100, BaseURL: https://basellm.github.io) - Support absolute endpoint URLs; otherwise join BaseURL + endpoint (defaults to /api/ratio_config) - Harden HTTP client: - IPv4‑first with IPv6 fallback for github.io - Add ResponseHeaderTimeout - 3 attempts with exponential backoff (200/400/800ms) - Validate Content-Type and limit response body to 10MB (safe decode via io.LimitReader) - Robust parsing: support type1 ratio_config map and type2 pricing list - Use net.SplitHostPort for host parsing - Use float tolerance in differences comparison to avoid false mismatches - Remove unused code (tryDirect) and improve warnings Frontend: - UpstreamRatioSync.jsx: auto-assign official endpoint to /llm-metadata/api/newapi/ratio_config-v1-base.json - ChannelSelectorModal.jsx: - Pin the official source at the top of the list - Show a green “官方” tag next to the status - Refactor status renderer to accept the full record Notes: - Backward compatible; no API surface changes - Official ratio_config reference: https://basellm.github.io/llm-metadata/api/newapi/ratio_config-v1-base.json
t0ng7u committed -
fix: update model name filtering to be case-sensitive
Seefs committed -
feat: bark notification #1699
Seefs committed -
feat: add channel remark #1710
Seefs committed
-