- 02 Sep, 2025 6 commits
-
-
Seefs committed
-
openai v1/models 完全兼容 解决接入trae时候的字段校验
Seefs committed -
Seefs committed
-
xuebin committed
-
creamlike1024 committed
-
feitianbubu committed
-
- 01 Sep, 2025 13 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 -
Seefs committed
-
Seefs committed
-
- 31 Aug, 2025 8 commits
-
-
fix: prevent loop auto-migrate with bool default false
IcedTangerine committed -
creamlike1024 committed
-
creamlike1024 committed
-
creamlike1024 committed
-
creamlike1024 committed
-
creamlike1024 committed
-
🎨 - Apply canonical Go formatting to all .go files - No functional changes; whitespace/import/struct layout only - Improves consistency, reduces diff noise, and aligns with standard tooling
t0ng7u committed -
🐛 - Model: rename `uk_model_name` -> `uk_model_name_delete_at` (composite on `model_name` + `deleted_at`) - Vendor: rename `uk_vendor_name` -> `uk_vendor_name_delete_at` (composite on `name` + `deleted_at`) - Keep legacy cleanup in `model/main.go` to drop old index names (`uk_model_name`, `model_name`, `uk_vendor_name`, `name`) for compatibility. Result: idempotent GORM migrations and no unnecessary index churn on MySQL restarts. Files: - `model/model_meta.go` - `model/vendor_meta.go`
t0ng7u committed
-
- 30 Aug, 2025 2 commits
-
-
增加用户体验
F。 committed -
🎨 - Ran: bun run eslint:fix && bun run lint:fix - Inserted AGPL license header via eslint-plugin-header - Enforced no-multiple-empty-lines and other lint rules - Formatted code using Prettier v3 (@so1ve/prettier-config) - No functional changes; formatting-only baseline across JS/JSX files
t0ng7u committed
-
- 29 Aug, 2025 11 commits
-
-
🤓 t0ng7u committed -
✨ - Add defaultVendorIcons mapping for major AI vendors - Update getOrCreateVendor to automatically set vendor icons - Add getDefaultVendorIcon helper function - Support LobeHub icons Color variants (e.g., Claude.Color, Gemini.Color) - Fix issue where default vendors were created without icons This ensures that when new models are encountered, their vendors will be created with appropriate colored icons for better UI display. Affected vendors include: - OpenAI, Anthropic, Google, Moonshot, 智谱, 阿里巴巴 - DeepSeek, MiniMax, 百度, 讯飞, 腾讯, Cohere - Cloudflare, 360, 零一万物, Jina, Mistral, xAI - Meta, 字节跳动, 快手, 即梦, Vidu, Microsoft/Azure
t0ng7u committed -
creamlike1024 committed
-
Merge branch 'pr/fix-kling-text2image' of github.com:feitianbubu/new-api into feitianbubu-pr/fix-kling-text2image
creamlike1024 committed -
creamlike1024 committed
-
Merge branch 'pr/kling-new-params' of github.com:feitianbubu/new-api into feitianbubu-pr/kling-new-params
creamlike1024 committed -
t0ng7u committed
-
🎨 - Replace copy button icon from semi-ui IconCopy to lucide-react Copy in PricingCardView - Add conditional tooltip functionality to SelectableButtonGroup that only shows when text overflows - Implement responsive table column behavior in PricingTableColumns with mobile-aware fixed positioning - Use DOM-based overflow detection (scrollWidth vs clientWidth) for better performance - Apply useIsMobile hook to conditionally set fixed: 'right' only on desktop devices These changes improve user experience across different screen sizes and provide more consistent iconography throughout the pricing interface.
t0ng7u committed -
feat: init default vendor
IcedTangerine committed -
⚡ This commit updates the default pagination settings across the model pricing components to improve user experience by reducing the need for frequent page navigation when browsing large model catalogs. Changes made: - Update initial pageSize state from 10 to 100 in useModelPricingData hook - Set defaultPageSize to 100 in PricingTable pagination configuration - Increase default skeletonCount from 10 to 100 in PricingCardSkeleton Files modified: - web/src/hooks/model-pricing/useModelPricingData.jsx - web/src/components/table/model-pricing/view/table/PricingTable.jsx - web/src/components/table/model-pricing/view/card/PricingCardSkeleton.jsx This change affects both card and table view modes of the model pricing page, ensuring consistent pagination behavior across different display formats.
t0ng7u committed -
📱 - Mobile (isMobile=true): render SearchActions (search, copy, filter) only; hide vendor intro card - Keep PricingFilterModal available on mobile for filtering - Desktop/Non-mobile: unchanged behavior (vendor intro remains visible) - Improves small-screen UX by reducing visual clutter and prioritizing primary actions Files: - web/src/components/table/model-pricing/layout/header/PricingTopSection.jsx Notes: - Added `SearchActions` import and conditional rendering - No breaking changes; no styling changes required
t0ng7u committed
-