1. 06 Jul, 2025 6 commits
    • 🔧 **fix(model, controller): robust serialization for `ChannelInfo` & correct… · d757125f
      🔧 **fix(model, controller): robust serialization for `ChannelInfo` & correct Vertex-AI key storage**
      
      Summary
      1. **model/channel.go**
         • Replaced the pointer-only `Value()` with a value-receiver implementation
         • GORM can now marshal both `ChannelInfo` and `*ChannelInfo`, eliminating
           `unsupported type model.ChannelInfo` runtime error.
      
      2. **controller/channel.go**
         • Refactored `getVertexArrayKeys()` – every element is now
           - passed through `json.Marshal` when not already a string
           - trimmed & validated before insertion
         • Guarantees each service-account key is persisted as a **pure JSON string**
           instead of the previous `map[...]` dump.
      
      Result
      • Channel creation / update succeeds without SQL driver errors.
      • Vertex-AI batch & multi-key uploads are stored in canonical JSON, ready for
        downstream SDKs to consume.
      t0ng7u committed
    • feat(channel): Robust Vertex AI batch-key upload & stable multi-key settings · f48ef010
      Summary
      -------
      1. Vertex AI JSON key upload
         • Accept multiple `.json` files (drag & drop / click).
         • Parse each `fileInstance`; build valid key array.
         • Malformed files are skipped and collected into **one** toast message.
         • Upload list now仅displays valid files; form state (`vertex_files`) 同步保持.
         • On *Submit* keys are re-parsed to prevent async timing loss.
      
      2. Multi-key mode stability
         • Added `multi_key_mode: "random"` to initial form values.
         • `Form.Select` becomes fully controlled (`value`/`onChange`).
         • Toggling the “multi-key mode” checkbox writes default / removes field, so
           `setValues(inputs)` no longer clears the user’s choice.
      
      3. UX / compatibility tweaks
         • Preserve uploaded files when editing any other field.
         • Use `fileInstance` only – compatible with legacy Semi Upload API.
         • Removed redundant `limit` prop on `Form.Upload`.
         • Aggregated error handling avoids toast spam.
      
      Result
      ------
      Channel creation/update now supports:
      • Reliable batch import of Vertex AI service-account keys.
      • Consistent retention of multi-key strategy (`random` / `polling`).
      • Cleaner, user-friendly error feedback.
      t0ng7u committed
    • Merge branch 'alpha' into mutil_key_channel · 7ddee5ea
      # Conflicts:
      #	controller/channel.go
      #	docker-compose.yml
      #	web/src/components/table/ChannelsTable.js
      #	web/src/pages/Channel/EditChannel.js
      CaIon committed
  2. 05 Jul, 2025 4 commits
  3. 04 Jul, 2025 5 commits
  4. 03 Jul, 2025 9 commits
    • 🎨 refactor(EditTagModal): tidy imports & enhance state-sync on open · f45caf29
      Motivation
      • Remove unused UI components to keep the bundle lean and silence linter warnings.
      • Ensure every time the side-sheet opens it reflects the latest tag data, avoiding stale form values (e.g., model / group mismatches).
      
      Key Changes
      1. UI Imports
         – Dropped `Input`, `Select`, `TextArea` from `@douyinfe/semi-ui` (unused in Form-based version).
      2. State Reset & Form Sync
         – On `visible` or `tag` change:
           • Refresh model & group options.
           • Reset `inputs` to clean defaults (`originInputs`) carrying the current `tag`.
           • Pre-fill Form through `formApiRef` to keep controlled fields aligned.
      3. Minor Cleanup
         – Added inline comment clarifying local state reset purpose.
      
      Result
      Opening the “Edit Tag” side-sheet now always displays accurate data without residual selections, and build output is cleaner due to removed dead imports.
      t0ng7u committed
    • refactor(EditChannel&EditToken): refactor Channel & Token edit pages with Semi… · 56dce5a7
       refactor(EditChannel&EditToken): refactor Channel & Token edit pages with Semi Form and UX enhancements
      
      Overview
      • Migrated both `EditChannel.js` and `EditToken.js` to fully leverage Semi UI `Form.*` components, removing legacy `Input/Select/TextArea` + manual labels.
      • Unified data-loading strategy: when the drawer becomes visible we load (or reset) data via `props.visible + id` effect and `formApi.setValues()`, guaranteeing fields are always populated; form resets on close.
      • Fixed blank-form bug when opening the same record twice.
      
      Key improvements
      1. Validation
         • `type`, `models` always required.
         • `key` required only while creating (not on edit).
      2. Batch key creation
         • Checkbox moved into `extraText`; hidden when editing or when channel type = 41.
      3. Layout & UI
         • `Row / Col` (12 + 12) for “Priority” and “Weight”.
         • Placeholders revised; model selector now shows creation hint; removed obsolete banner.
         • Help / extraText used for long hints, template buttons (`model_mapping`, `status_code_mapping`, `param_override`, etc.), and API address notice.
         • Added `showClear`, `min`, rounded card class names for consistency.
      4. Reusable helpers
         • `batchAllowed`, `batchExtra` utilities.
         • `getInitValues()` + centralized `inputs`→form synchronization.
      5. Token editor aligned to the same pattern (`props.visiable` watcher).
      
      Result
      Cleaner code, consistent UX, instant field population on every open, and clearer validation/error feedback across both editors.
      t0ng7u committed
    • 🔌 feat(api): extend endpoint type support & expose in pricing UI · dd9a1534
      * backend
        - constant/endpoint_type.go
          • Add EndpointTypeMidjourney, EndpointTypeSuno, EndpointTypeKling, EndpointTypeJimeng.
        - common/endpoint_type.go
          • Map Midjourney / MidjourneyPlus, SunoAPI, Kling, Jimeng channel types to the new endpoint types.
      
      * frontend
        - ModelPricing.js
          • Add “Supported Endpoint Type” column.
          • Implement renderSupportedEndpoints with `stringToColor` for consistent tag colors.
      
      These changes allow `/api/pricing` and model lists to return accurate
      `supported_endpoint_types` covering all non-OpenAI providers and display
      them clearly in the UI.
      
      No breaking changes.
      t0ng7u committed
    • Merge pull request #1314 from vickyyd/main · 5cb4c4e6
      修复使用gemini-balance作为上游时,测试gemini2.5pro模型时出现的错误问题
      Calcium-Ion committed
    • Merge pull request #1325 from feitianbubu/pr/fix-ali-embedding-lost-prompt-token · 62e82256
      fix: ali embedding lose prompt_tokens
      Calcium-Ion committed
    • Merge pull request #1326 from QuantumNous/refactor_constant · bb00bd0f
       feat: refactor environment variable initialization
      Calcium-Ion committed
    • feat: refactor environment variable initialization and introduce new constant… · f14f4eaf
       feat: refactor environment variable initialization and introduce new constant types for API and context keys
      CaIon committed
  5. 02 Jul, 2025 3 commits
  6. 01 Jul, 2025 7 commits
  7. 30 Jun, 2025 1 commit
  8. 29 Jun, 2025 1 commit
  9. 28 Jun, 2025 3 commits
  10. 27 Jun, 2025 1 commit
    • 🐛 fix: refactor JSON unmarshalling across multiple handlers to use UnmarshalJson… · e2c34bde
      🐛 fix: refactor JSON unmarshalling across multiple handlers to use UnmarshalJson and UnmarshalJsonStr for consistency
      
      This update replaces instances of DecodeJson and DecodeJsonStr with UnmarshalJson and UnmarshalJsonStr in various relay handlers, enhancing code consistency and clarity in JSON processing. The changes improve maintainability and align with recent refactoring efforts in the codebase.
      CaIon committed