1. 20 Jun, 2025 2 commits
  2. 19 Jun, 2025 25 commits
  3. 18 Jun, 2025 8 commits
  4. 17 Jun, 2025 5 commits
    • 🐛 fix(detail): explicitly set `preventScroll={true}` on Tabs to stop page jump · ee793087
      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
    • 🛠️ fix(detail): disable automatic page scroll caused by Tabs focus · 1d16d328
      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
    • 🏷️ chore(ui): Hide Type Tabs in Tag-Aggregation Mode & Refine Query Logic · cd94cc20
      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
    • 🎨 style(EditChannel): replace fixed-height TextArea with autosize to eliminate unwanted scrollbar · 1800cfd1
      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(Channels): Enhance Channel Filtering & Performance · 44688fe6
      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