-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Comparing changes
Open a pull request
base repository: QuantumNous/new-api
base: v0.8.6.2
head repository: QuantumNous/new-api
compare: v0.8.6.3
- 20 commits
- 13 files changed
- 4 contributors
Commits on May 19, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 69420f7 - Browse repository at this point
Copy the full SHA 69420f7View commit details
Commits on Jun 22, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 75c71c3 - Browse repository at this point
Copy the full SHA 75c71c3View commit details
Commits on Jun 23, 2025
-
🎛️ feat(web): add “Conflict Rates” filter & highlight in Model Settin…
…gs Visual Editor (#1286) Introduce the ability to quickly locate models with conflicting billing configurations. Key points • Added `hasConflict` flag to detect models that define both a fixed price (`ModelPrice`) and any ratio (`ModelRatio` or `CompletionRatio`). • Added “Show Only Conflict Rates” `Checkbox` to toolbar; filtering logic now supports keyword + conflict filtering. • Display a red `Tag` beside the model name when a conflict is detected for immediate visual feedback. • Kept `hasConflict` state in sync during add, update and delete operations. • Imported `Checkbox` and `Tag` from **@douyinfe/semi-ui**. • Minor UI tweaks (circle tag style, margin) for consistency. This enhancement helps administrators swiftly identify and resolve incompatible pricing rules, addressing the need discussed in issue #1286.
Configuration menu - View commit details
-
Copy full SHA for 5367015 - Browse repository at this point
Copy the full SHA 5367015View commit details -
Configuration menu - View commit details
-
Copy full SHA for ffc22b8 - Browse repository at this point
Copy the full SHA ffc22b8View commit details -
🐛 fix(ratio-sync): reset pagination when filter/search changes
Add a `useEffect` hook in `UpstreamRatioSync.js` to automatically set `currentPage` to `1` whenever `ratioTypeFilter` or `searchKeyword` updates. This prevents the table from appearing empty when users switch to the “model_price” (fixed price) filter or perform a new search while on a later page. Additional changes: - Import `useEffect` from React. This enhancement delivers a smoother UX by ensuring the first page of results is always shown after any filtering action.
Configuration menu - View commit details
-
Copy full SHA for c281903 - Browse repository at this point
Copy the full SHA c281903View commit details -
🚀 chore(ui): Refactor UpstreamRatioSync with conflict-modal component…
…, performance hooks & cleanup (#1286) WHAT’S NEW • Extracted reusable ConflictConfirmModal for clearer JSX hierarchy • Added detailed conflict detection & confirmation flow before syncing options • Refactored state-heavy callbacks (`selectValue`, `performSync`) with `useCallback` to avoid unnecessary renders • Introduced build-time constants (later removed unused export) and unified helper utilities • Ensured final ratios are rebuilt accurately before API `PUT`, fixing “value not updated” bug • Enhanced UI hints: warning icon on conflict, multiline billing info, mobile-friendly modal size • General code cleanup: removed dead variables, adopted early returns, improved comments WHY Improves maintainability, user clarity when billing-type collisions occur, and guarantees data consistency after synchronisation.
Configuration menu - View commit details
-
Copy full SHA for 2591ca3 - Browse repository at this point
Copy the full SHA 2591ca3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7c72545 - Browse repository at this point
Copy the full SHA 7c72545View commit details -
🚀 feat: add enabled/disabled channel filtering & optimize type-based …
…pagination (#1289) WHAT’S NEW • Backend – Introduced `parseStatusFilter` helper to normalize `status` query across handlers. – `GET /api/channel` & `GET /api/channel/search` now accept `status=enabled|disabled` to return only enabled or disabled channels. – Tag-mode branch respects both `statusFilter` and `typeFilter`; SQL paths trimmed to one query + one lightweight `GROUP BY` for `type_counts`. • Frontend (`ChannelsTable.js`) – Added “Status Filter” `<Select>` (All / Enabled / Disabled) with localStorage persistence. – All data-loading and search requests now always append `type` (when not “all”) and `status` params, so filtering & pagination are handled entirely server-side. – Removed client-side post-filtering for type, preventing short pages and reducing CPU work. – Tabs’ type counts stay in sync via backend-provided `type_counts`. IMPROVEMENTS • Eliminated duplicated status-parsing logic; single source of truth eases future extension. • Reduced redundant queries, improved consistency of counts in UI. • Secured key leakage with `Omit("key")` unchanged; no perf regressions observed. Closes #1289
Configuration menu - View commit details
-
Copy full SHA for bc37177 - Browse repository at this point
Copy the full SHA bc37177View commit details -
🧬merge: Add a button to copy the selected model in the channel (#1290)
Merge pull request #1290 from JoeyLearnsToCode/feat-copy-models
Configuration menu - View commit details
-
Copy full SHA for 75e3959 - Browse repository at this point
Copy the full SHA 75e3959View commit details -
🎨 feat(EditChannel): improve model selection UX, clipboard feedback &…
… rounded styling (#1290) * Added a dedicated effect to merge origin and selected models, ensuring selected items always remain in the dropdown list. * Enhanced “Copy all models” button: * Shows info message when list is empty. * Displays success / error notification based on copy result. * Unified UI look-and-feel by applying `!rounded-lg` class to inputs, selects, banners and buttons. * i18n: added English translations for new prompts - "No models to copy" - "Model list copied to clipboard" - "Copy failed"
Configuration menu - View commit details
-
Copy full SHA for 1ab75b8 - Browse repository at this point
Copy the full SHA 1ab75b8View commit details -
🐛 fix(channel): remove duplicate model names in “Edit Channel” model …
…dropdown (#1292) • Unify the Select option structure as `{ key, label, value }`; add missing `key` to prevent duplicated rendering by Semi-UI. • Trim and deduplicate the `models` array via `Set` inside `handleInputChange`, ensuring state always contains unique values. • In the options-merging `useEffect`, use a `Map` keyed by `value` (after `trim`) to guarantee a unique `optionList` when combining backend data with currently selected models. • Apply the same structure and de-duplication when: – Fetching models from `/api/channel/models` – Adding custom models (`addCustomModels`) – Fetching upstream model lists (`fetchUpstreamModelList`) • Replace obsolete `text` field with `label` in custom option objects for consistency. No backend changes are required; the fix is entirely front-end. Closes #1292
Configuration menu - View commit details
-
Copy full SHA for c974b10 - Browse repository at this point
Copy the full SHA c974b10View commit details -
🐛 fix: preserve group filter when switching channel type/status
Ensure that the selected "group" filter (and other form search values) persist across type tab changes, status filter updates, pagination, and page-size changes. Changes include: • loadChannels: added `searchParams` argument and now appends keyword, group and model query strings to API calls. • refresh / page handlers / type tabs / status Select: now pass current form values to loadChannels, keeping filters intact. • searchChannels: maintains active type and status filters when issuing search requests. • Form.Select (searchGroup): triggers loadChannels when only group filter is active, preventing parameter loss. • Minor cleanup and comment adjustments.
Configuration menu - View commit details
-
Copy full SHA for a8ba2eb - Browse repository at this point
Copy the full SHA a8ba2ebView commit details -
💄 i18n: shorten channel search placeholder and update i18n
Replaced the verbose placeholder “Search channel ID, name, key and API address ...” with a concise version “Channel ID, name, key, API address” in `ChannelsTable.js` and synchronized the corresponding i18n entries. This improves readability and keeps UI text consistent across languages.
Configuration menu - View commit details
-
Copy full SHA for 6c31151 - Browse repository at this point
Copy the full SHA 6c31151View commit details -
Revert "🐛 fix: preserve group filter when switching channel type/status"
This reverts commit a8ba2eb.
Configuration menu - View commit details
-
Copy full SHA for 5a5e8ce - Browse repository at this point
Copy the full SHA 5a5e8ceView commit details -
✨ fix(channels-table): preserve group filter when switching type or s…
…tatus tabs Refactors `ChannelsTable.js` to ensure that the selected group filter is **never lost** when: 1. Cycling between channel-type tabs. 2. Changing the status dropdown (all / enabled / disabled). Key points: • `loadChannels` now detects active search filters (keyword / group / model) and transparently delegates to `searchChannels`, guaranteeing all parameters are sent in every request. • `searchChannels` accepts optional `typeKey` and `statusF` arguments, enabling reuse without code duplication. • Loading state handling is unified; no extra renders or side effects were introduced, keeping UI performance intact. • Duplicate logic removed and responsibilities clearly separated for easier future maintenance.
Configuration menu - View commit details
-
Copy full SHA for db1b11d - Browse repository at this point
Copy the full SHA db1b11dView commit details -
🚀 feat: Align search API with channel listing & fix sorting toggle
1. Backend • `controller/channel.go` – Added pagination (`p`, `page_size`) support to `SearchChannels`. – Added independent `type` filter (keeps `type_counts` unaffected). – Returned `total`, `type_counts` to match `/api/channel/` response. 2. Frontend • `ChannelsTable.js` – `loadChannels` / `searchChannels` now pass `p`, `page_size`, `id_sort`, `type`, `status` correctly. – Pagination, page-size selector and type tabs work for both normal list and search mode. – Switch for “ID sort” calls proper API and keeps UI state in sync. – Removed unnecessary `normalize` helper; `getFormValues` back to concise form. Result • Search mode and normal listing now share identical pagination and filtering behavior. • Type tabs show correct counts even after searching. • “ID Sort” toggle no longer inverses actual behaviour.
Configuration menu - View commit details
-
Copy full SHA for aeb393e - Browse repository at this point
Copy the full SHA aeb393eView commit details -
✨ fix: ensure table shows correct loading state on first render & dur…
…ing search Frontend (`ChannelsTable.js`) 1. Initialize `loading` state to `true` so the spinner is visible while the first data request is in-flight. 2. Set `<Table>` prop `loading={loading || searching}` — the spinner now appears for both the initial load and any subsequent search requests. Result Users immediately see a loading indicator on page entry and whenever a search is running, improving perceived responsiveness.
Configuration menu - View commit details
-
Copy full SHA for de6e551 - Browse repository at this point
Copy the full SHA de6e551View commit details
Commits on Jun 24, 2025
-
🚀 feat: enhance model testing UI with bulk selection, copy & success-…
…filter buttons (#1288) * ChannelsTable - Added row-level checkboxes to the model-testing table for multi-selection - Implemented cross-page “Select All / Deselect All” via rowSelection.onSelectAll - Introduced allSelectingRef to ignore redundant onChange after onSelectAll - Added “Copy Selected” button to copy chosen model names (comma-separated) using helpers.copy - Added “Select Successful” button to auto-tick all models that passed testing - Moved search bar and new action buttons into the modal title for better UX - Centralised page size constant MODEL_TABLE_PAGE_SIZE in channel.constants.js - Fixed pagination slicing and auto-page-switch logic during batch testing * channel.constants - Exported MODEL_TABLE_PAGE_SIZE (default 10) for unified pagination control This commit enables users to conveniently copy or filter successful models, fully supports cross-page bulk operations, and resolves previous selection inconsistencies. Refs: #1288
Configuration menu - View commit details
-
Copy full SHA for 44495b1 - Browse repository at this point
Copy the full SHA 44495b1View commit details
6D40
-
🎨 style(channels-table): standardize operation component size to
small
All operation-related UI controls in `ChannelsTable` (buttons, dropdowns, switches, inputs, tags, etc.) now explicitly use `size="small"`. Reasons & benefits: - Creates a more compact and consistent look across the table and modals. - Improves visual coherence between desktop and mobile views. - Purely presentational; no functional logic is affected. No database changes or API interactions are involved.
Configuration menu - View commit details
-
Copy full SHA for 0c5d4ca - Browse repository at this point
Copy the full SHA 0c5d4caView commit details -
🔧 fix(model_ratio): adjust return values for gemini-2.5-pro and gemin…
…i-2.5-flash models
Configuration menu - View commit details
-
Copy full SHA for 3f53e4f - Browse repository at this point
Copy the full SHA 3f53e4fView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.8.6.2...v0.8.6.3