- 17 Jun, 2025 25 commits
-
-
🐛 Problem Semi UI’s Tabs calls `focus()` on the active tab during mount, causing the browser to scroll the page to that element. Using the bare `preventScroll` shorthand was not picked up reliably, so the page still jumped to the Tabs’ position on first render. Changes • Updated both Tabs instances in `web/src/pages/Detail/index.js` to `preventScroll={true}` instead of the shorthand prop. • Ensures the prop is explicitly interpreted as boolean `true`, converting the internal call to `focus({ preventScroll: true })`. Result The `Detail` page now stays at its original scroll position after load, eliminating the unexpected auto-scroll behavior.Apple\Apple committed -
🛠 The initial render of the `Detail` page was jumping to the first `Tabs` component because Semi UI calls `focus()` on the active tab, which triggers the browser’s default scroll-into-view behavior. Changes made • Added `preventScroll` to the chart-selector `Tabs` (type="button"). • Added `preventScroll` to the uptime-monitor `Tabs` (type="card"). These flags convert the internal `focus()` call to `focus({ preventScroll: true })`, allowing the page to stay at its current position after load. No functional logic is changed other than disabling the unwanted scroll; UI and user interactions remain the same.Apple\Apple committed -
🏷 frontend(ChannelsTable): • Do not render type-filter Tabs when `enableTagMode` is true, preventing UI/logic conflicts in tag aggregation view. • Adjust API query construction: – Append `type=` param only when NOT in tag mode and selected tab ≠ 'all'. – Applies to both `loadChannels` and `searchChannels`. • Result: UI stays clean in tag view, and backend receives correct parameters across modes. No other functionality affected.
Apple\Apple committed -
🎨 The “Batch Create” secret-key input in Channel Edit previously used a TextArea with a hard-coded `minHeight`, which caused an extra scrollbar and blank space on the right side of the field. This change: • Removes the fixed `minHeight` in favour of `autosize={{ minRows: 6, maxRows: 6 }}` • Keeps the field’s rounded appearance while letting it grow/shrink with content, improving usability on both desktop and mobile No other components or global styles are affected.Apple\Apple committed -
🚀 feat(api): • Add optional `type` query param to `/api/channel` endpoint for type-specific pagination • Return `type_counts` map with counts for each channel type • Implement `GetChannelsByType`, `CountChannelsByType`, `CountChannelsGroupByType` in `model/channel.go` feat(frontend): • Introduce type Tabs in `ChannelsTable` to switch between channel types • Tabs show dynamic counts using backend `type_counts`; “All” is computed from sum • Persist active type, reload data on tab change (with proper query params) perf(frontend): • Use a request counter (`useRef`) to discard stale responses when tabs switch quickly • Move all `useMemo` hooks to top level to satisfy React Hook rules • Remove redundant local type counting fallback when backend data present ui: • Remove icons from response-time tags for cleaner look • Use Semi-UI native arrow controls for Tabs; custom arrow code deleted chore: • Minor refactor & comments for clarity • Ensure ESLint Hook rules pass Result: Channel list now supports fast, accurate type filtering with correct counts, improved concurrency safety, and cleaner UI.
Apple\Apple committed -
Apple\Apple committed
-
🚀 🚀 feat(ui): isolate ratio configurations into dedicated “Ratio” tab and refactor settings components Summary • Added new Ratio tab in Settings for managing all ratio-related configurations (group & model multipliers). • Created `RatioSetting` component to host GroupRatio, ModelRatio, Visual Editor and Unset-Models panels. • Moved ratio components to `web/src/pages/Setting/Ratio/` directory: – `GroupRatioSettings.js` – `ModelRatioSettings.js` – `ModelSettingsVisualEditor.js` – `ModelRationNotSetEditor.js` • Updated imports in `RatioSetting.js` to use the new path. • Updated main Settings router (`web/src/pages/Setting/index.js`) to include the new “Ratio Settings” tab. • Pruned `OperationSetting.js`: – Removed ratio-specific cards, tabs and unused imports. – Reduced state to only the keys required by its child components. – Deleted obsolete fields (`StreamCacheQueueLength`, `CheckSensitiveOnCompletionEnabled`, `StopOnSensitiveEnabled`). • Added boolean handling simplification in `OperationSetting.js`. • Adjusted helper import list and removed unused translation hook. Why Separating ratio-related settings improves UX clarity, reduces cognitive load in the Operation Settings panel and keeps the codebase modular and easier to maintain. BREAKING CHANGE The file paths for ratio components have changed. Any external imports referencing the old `Operation` directory must update to the new `Ratio` path.Apple\Apple committed -
feat: improve gemini thinking budget adaption
Calcium-Ion committed -
RedwindA committed
-
CaIon committed
-
fix(relay): refine error message for unsupported MIME types and enhance error handling in OpenAI wrapper
CaIon committed -
CaIon committed
-
CaIon committed
-
feat(file_decoder): add debug logging for MIME type detection when handling application/octet-stream
CaIon committed -
CaIon committed
-
feat: auto分组
Calcium-Ion committed -
✨ CaIon committed -
✨ CaIon committed -
CaIon committed
-
CaIon committed
-
CaIon committed
-
fix(audio): :bugs: fix webm audio strconv.ParseFloat: parsing "N/A"
Calcium-Ion committed -
Fix: optimize Redis expiration handling and refactor cache duration retrieval
Calcium-Ion committed -
chenjm committed
-
chenjm committed
-
- 16 Jun, 2025 14 commits
-
-
🔧 🔧 refactor(redis): replace direct constant usage with RedisKeyCacheSeconds function for cache durationRedwindA committed -
🔧 RedwindA committed -
CaIon committed
-
CaIon committed
-
feat(Gemini): implement thinking budget control in model name
Calcium-Ion committed -
fix: enabled hot reload SyncOptions
Calcium-Ion committed -
creamlike1024 committed
-
🔧 CaIon committed -
Apple\Apple committed
-
🐛 Summary • Added stable, descending sort to `GetAnnouncements()` so that the API always returns the latest announcements first. • Introduced helper `getPublishTime()` to safely parse `publishDate` (RFC 3339) and fall back to zero value on failure. • Switched to `sort.SliceStable` for deterministic ordering when timestamps are identical. • Imported the standard `sort` package and removed redundant, duplicate date parsing. Impact Front-end no longer needs to perform client-side sorting; the latest announcement is guaranteed to appear at the top on all platforms and clients.
Apple\Apple committed -
RedwindA committed
-
修复Azure渠道对responses API的兼容性支持 - 为Azure渠道添加对responses API的特殊处理 - 兼容微软新…
Calcium-Ion committed -
fix: include group in payload for playground
Calcium-Ion committed -
🔧 CaIon committed
-
- 15 Jun, 2025 1 commit
-
-
✨ * backend - model: add `Remark` field (varchar 255, `json:"remark,omitempty"`); AutoMigrate handles schema change automatically - controller: * accept `remark` on user create/update endpoints * hide remark from regular users (`GetSelf`) by zero-ing the field before JSON marshalling * clarify inline comment explaining the omitempty behaviour * frontend (React / Semi UI) - AddUser.js & EditUser.js: add “Remark” input for admins - UsersTable.js: * remove standalone “Remark” column * show remark as a truncated Tag next to username with Tooltip for full text * import Tooltip component - i18n: reuse existing translations where applicable This commit enables administrators to label users with private notes while ensuring those notes are never exposed to the users themselves.Apple\Apple committed
-