- 08 Aug, 2025 16 commits
-
-
HynoR committed
-
feat: 完善格式转换,修复gemini渠道和openai渠道在claude code中使用的问题
Calcium-Ion committed -
CaIon committed
-
t0ng7u committed
-
🔧 Changes 1. ModelPricingTable.jsx • Compute `autoChain` as the intersection of `autoGroups` and the model’s `enable_groups` (order preserved). • Display the chain banner only when `autoChain.length > 0`; banner shows the reduced path (e.g. `a → c → e`). • Dropped obsolete `selectedGroup` prop; all callers updated. 2. ModelDetailSideSheet.jsx / PricingPage.jsx • Removed forwarding of deleted `selectedGroup` prop. Outcome – “Auto group routing” appears only for models that actually participate in the chain, avoiding empty or irrelevant banners. – Codebase simplified by eliminating an unused prop.
t0ng7u committed -
fix: ensure last message is sent successfully
Calcium-Ion committed -
t0ng7u committed
-
🚀 Detailed changes Backend • `controller/pricing.go` now includes `auto_groups` in `/api/pricing` response, sourced from `setting.AutoGroups`. Frontend • `useModelPricingData.js` – Parses `auto_groups` and exposes `autoGroups` state. • `PricingPage.jsx` → `ModelDetailSideSheet.jsx` → `ModelPricingTable.jsx` – Thread `autoGroups` through component tree. • `ModelPricingTable.jsx` – Removes deprecated `getGroupDescription` / `Tooltip`. – Filters out `auto` when building price table rows. – Renders a descriptive banner: “auto 分组调用链路 → auto → group1 → …”, clarifying fallback order without showing prices. • Minor i18n tweak: adds `auto分组调用链路` key for the banner text. Why Users were confused by the “auto” tag appearing alongside regular groups with no price. This change: 1. Makes the routing chain explicit. 2. Keeps the pricing table focused on billable groups. No breaking API changes; existing clients can ignore the new `auto_groups` field.
t0ng7u committed -
CaIon committed
-
CaIon committed
-
CaIon committed
-
- Updated the model list to include various gpt-5 variants. - Enhanced the ConvertOpenAIRequest function to handle gpt-5 model temperature settings based on specific model prefixes. - Adjusted default cache and model ratios for new gpt-5 models.
CaIon committed -
feat: sync gpt-5 model ratio and support new reasoning effort
Calcium-Ion committed -
fix: 修复通配符处理对判断可用渠道的破坏
Calcium-Ion committed -
HynoR committed
-
feitianbubu committed
-
- 07 Aug, 2025 24 commits
-
-
✨ - Added support to fetch and render “model prefill groups” in `EditChannelModal.jsx` - Users can now click a group button to instantly merge that group’s models into the models Select - Mirrors the prefill-group UX used for tags/endpoints in `EditModelModal.jsx` Details - UI/UX: - Renders one button per model group inside the models field’s extra actions - Clicking a button merges its items into the selected models (trimmed, deduplicated), updating immediately - Non-destructive and works alongside existing actions (fill related/all models, fetch upstream, clear, copy) - API: - GET `/api/prefill_group?type=model` - Handles `items` as either an array or a JSON string array for robustness - If request fails or returns no groups, buttons are simply not shown - i18n: - Reuses existing i18n; group names come from backend and are displayed as-is - Performance: - Simple set merge; negligible overhead - Backward compatibility: - No changes required on the backend or elsewhere; feature is additive - Testing (manual): 1) Open channel modal (new or edit) and navigate to the Models section 2) Confirm model group buttons render when groups are configured 3) Click a group button → models Select updates with merged models (no duplicates) 4) Verify other actions (fill related/all, fetch upstream, clear, copy) still work 5) Close/reopen modal → state resets as expected Implementation - `web/src/components/table/channels/modals/EditChannelModal.jsx` - Added `modelGroups` state and `fetchModelGroups()` (GET `/api/prefill_group?type=model`) - Invoked `fetchModelGroups()` when the modal opens - Rendered group buttons in the models Select `extraText`, merging group items into current selection Chore - Verified no new linter errors were introduced.
t0ng7u committed -
💄 - Move model price column to fixed right position - Convert endpoint types column from fixed to regular column - Reorder columns: endpoint types now appears before ratio column - Improve table layout and user experience for pricing data viewing Changes made to web/src/components/table/model-pricing/view/table/PricingTableColumns.js: * Removed `fixed: 'right'` from endpointColumn * Added `fixed: 'right'` to priceColumn * Updated column order in the columns array
t0ng7u committed -
-
🐛 - Why: - Eliminate `gorm.io/datatypes` for a single field and fix scan errors when drivers return JSON as string. - Prevent JSONEditor manual mode from locking on invalid JSON and from appending stray characters after “Fill Template”. - What: - Backend (`model/prefill_group.go`): - Replaced `datatypes.JSON` with `JSONValue` (based on `json.RawMessage`) for `PrefillGroup.Items`. - Implemented `sql.Scanner` and `driver.Valuer` to accept both `[]byte` and `string`. - Implemented `MarshalJSON`/`UnmarshalJSON` to preserve raw JSON in API without base64. - Converted comments to Chinese. - Frontend (`web/src/components/common/ui/JSONEditor.js`): - Added `manualText` buffer for manual mode to avoid input being overridden by external value. - Only propagate `onChange` when manual text is valid JSON; otherwise show error but do not block typing. - Safe manual-mode rendering: derive rows from `manualText` and avoid calling `split` on non-strings. - Improved mode toggle: populate `manualText` from visual data; validate before switching back to visual. - Fixed “Fill Template” to sync `manualText`, `jsonData`, and `onChange` to avoid stray trailing characters. - Impact: - Resolves: “unsupported Scan, storing driver.Value type string into type *json.RawMessage”. - Resolves: `value.split is not a function` in manual mode. - Resolves: extra `s` appended after inserting template. - API shape and DB column type remain the same (`gorm:"type:json"`); no `go.mod` changes. - Lints pass for modified files. Files changed: - model/prefill_group.go - web/src/components/common/ui/JSONEditor.jst0ng7u committed -
♻ ♻ ️ refactor(model): replace gorm.io/datatypes with JSONValue for PrefillGroup.Items; fix JSON scan across drivers - Why: - Avoid introducing `gorm.io/datatypes` for a single field. - Align with existing pattern (`ChannelInfo`, `Properties`) using `Scanner`/`Valuer`. - Fix runtime error when drivers return JSON as string. - What: - Introduced `JSONValue` (based on `json.RawMessage`) implementing `sql.Scanner` and `driver.Valuer`, with `MarshalJSON`/`UnmarshalJSON` to preserve raw JSON in API. - Updated `PrefillGroup.Items` to use `JSONValue` with `gorm:"type:json"`. - Localized comments in `model/prefill_group.go` to Chinese. - Impact: - Resolves “unsupported Scan, storing driver.Value type string into type *json.RawMessage”. - Works with MySQL/Postgres/SQLite whether JSON is returned as `[]byte` or `string`. - API and DB schema remain unchanged; no `go.mod` changes; lints pass. Files changed: - model/prefill_group.got0ng7u committed -
♻ - Why: Avoid adding `gorm.io/datatypes` for a single field; the rest of the codebase does not use it, and using the standard library keeps dependencies lean. - What: - Switched `PrefillGroup.Items` from `datatypes.JSON` to `json.RawMessage`. - Updated imports in `model/prefill_group.go` to use `encoding/json` and removed the unused `gorm.io/datatypes`. - Preserved `gorm:"type:json"` so DB column behavior remains the same. - Impact: - API response/request shape for `items` remains unchanged (still JSON). - DB schema behavior is unchanged; GORM migration continues to handle the field as JSON. - No other references to `datatypes` exist; no `go.mod` changes needed. - Lints pass for the modified file. Files changed: - model/prefill_group.go No breaking changes.
t0ng7u committed -
🤔 t0ng7u committed -
🤔 t0ng7u committed -
🎨 🎨 refactor(ui): merge “Content Configuration” into “Basic Information” card in EditPrefillGroupModal - Move `items` field (`JSONEditor` for endpoint type, `Form.TagInput` otherwise) into the first “Basic Information” card - Remove the second “Content Configuration” card and its header; consolidate to a single-card layout - Preserve form initialization, validation, and submit logic; API payload structure remains unchanged - Improves clarity and reduces visual clutter without altering behavior - Lint passes Affected file: - `web/src/components/table/models/modals/EditPrefillGroupModal.jsx` No breaking changes.t0ng7u committed -
✨ ✨ feat: Improve models UX and robustness: add JSONEditor extraFooter, fix endpoints rendering, and clean up deps - Why - Needed to separate help text from action buttons in JSONEditor for better layout and UX. - Models table should robustly render both new object-based endpoint mappings and legacy arrays. - Columns should re-render when vendor map changes. - Minor import cleanups for consistency. - What - JSONEditor.js - Added optional prop extraFooter to render content below the extraText divider. - Kept extraText rendered via Divider; extraFooter appears on the next line for clear separation. - EditModelModal.jsx - Moved endpoint group buttons from extraText into extraFooter to display under the helper text. - Kept merge-logic: group items are merged into current endpoints JSON with key override semantics. - Consolidated lucide-react imports into a single line. - ModelsColumnDefs.js - Made endpoint renderer resilient: - Supports object-based JSON (keys as endpoint types) and legacy array format. - Displays keys/items as tags and limits the number shown; uses stringToColor for visual consistency. - Consolidated Semi UI imports into a single line. - ModelsTable.jsx - Fixed columns memoization dependency to include vendorMap, ensuring re-render when vendor data changes. - Notes - Backward-compatible: extraFooter is additive; existing JSONEditor usage remains unchanged. - No API changes to backend. - No linter errors introduced. - Files touched - web/src/components/common/ui/JSONEditor.js - web/src/components/table/models/modals/EditModelModal.jsx - web/src/components/table/models/ModelsColumnDefs.js - web/src/components/table/models/ModelsTable.jsx - Impact - Clearer UI for endpoint editing (buttons now below helper text). - Correct endpoints display for object-based mappings in models list. - More reliable reactivity when vendor data updates.t0ng7u committed -
t0ng7u committed
-
✨ ✨ feat(pricing+endpoints+ui): wire custom endpoint mapping end‑to‑end and overhaul visual JSON editor Backend (Go) - Include custom endpoints in each model’s SupportedEndpointTypes by parsing Model.Endpoints (JSON) and appending keys alongside native endpoint types. - Build a global supportedEndpointMap map[string]EndpointInfo{path, method} by: - Seeding with native defaults. - Overriding/adding from models.endpoints (accepts string path → default POST, or {path, method}). - Expose supported_endpoint at the top level of /api/pricing (vendors-like), removing per-model duplication. - Fix default path for EndpointTypeOpenAIResponse to /v1/responses. - Keep concurrency/caching for pricing retrieval intact. Frontend (React) - Fetch supported_endpoint in useModelPricingData and propagate to PricingPage → ModelDetailSideSheet → ModelEndpoints. - ModelEndpoints - Resolve path+method via endpointMap; replace {model} with actual model name. - Fix mobile visibility; always show path and HTTP method. - JSONEditor - Wrap with Form.Slot to inherit form layout; simplify visual styles. - Use Tabs for “Visual” / “Manual” modes. - Unify editors: key-value editor now supports nested JSON: - “+” to convert a primitive into an object and add nested fields. - Add “Convert to value” for two‑way toggle back from object. - Stable key rename without reordering rows; new rows append at bottom. - Use Row/Col grid for clean alignment; region editor uses Form.Slot + grid. - Editing flows - EditModelModal / EditPrefillGroupModal use JSONEditor (editorType='object') for endpoint mappings. - PrefillGroupManagement renders endpoint group items by JSON keys. Data expectations / compatibility - models.endpoints should be a JSON object mapping endpoint type → string path or {path, method}. Strings default to POST. - No schema changes; existing TEXT field continues to store JSON. QA - /api/pricing now returns custom endpoint types and global supported_endpoint. - UI shows both native and custom endpoints; paths/methods render on mobile; nested editing works and preserves order.t0ng7u committed -
RedwindA committed
-
RedwindA committed
-
RedwindA committed
-
Fix/gemini-fetch-models
Calcium-Ion committed -
Fix/disable-gemini-ping
Calcium-Ion committed -
CaIon committed
-
CaIon committed
-
feat: support deepseek claude format (convert)
Calcium-Ion committed -
feat: support qwen claude format
Calcium-Ion committed -
CaIon committed
-
CaIon committed
-
feat: enable thinking mode on ali thinking model
IcedTangerine committed
-