1. 20 Jun, 2025 26 commits
  2. 19 Jun, 2025 14 commits
    • feat: enhance error handling in GeminiHelper and streamline response processing · 2b2e0a47
      - Added status code mapping handling in GeminiHelper to reset status codes based on response.
      - Removed redundant candidate check in GeminiTextGenerationHandler to simplify response processing.
      CaIon committed
    • Merge branch 'main' into alpha · f9a72212
      CaIon committed
    • 💄 style(TopUp): Optimize payment method buttons layout based on quantity · cfeb0c28
      Enhance the UI of payment method selection area with responsive layouts:
      - Use 2-column grid when exactly 2 payment methods are present
      - Use 3-column grid for 3 payment methods
      - Use compact card layout for more than 3 payment methods
      - Full-width button for single payment method
      
      This improves the visual balance across different device sizes and payment provider configurations, ensuring buttons fill their grid cells appropriately with the w-full class.
      Apple\Apple committed
    • fix gizmo completion ratio · 97e51e44
      RedwindA committed
    • 🚀 chore(controller, dto): elevate ratio-sync feature to production readiness · cd4fc7a1
      WHAT’S NEW
      • controller/ratio_sync.go
        – Deleted unused local structs (TestResult, DifferenceItem, SyncableChannel).
        – Centralised config with constants: defaultTimeoutSeconds, defaultEndpoint, maxConcurrentFetches, ratioTypes.
        – Replaced magic numbers; added semaphore-based concurrency limit and shared http.Client (with TLS & Expect-Continue timeouts).
        – Added comprehensive error handling and context-aware logging via common.Log* helpers.
        – Checked DB errors from GetChannelsByIds; early-return on failures or empty upstream list.
        – Removed custom-channel support; logic now relies solely on ChannelIDs.
        – Minor clean-ups: import grouping, string trimming, endpoint normalisation.
      
      • dto/ratio_sync.go
        – Simplified UpstreamRequest: dropped unused CustomChannels field.
      
      WHY
      These improvements harden the ratio-sync endpoint for production use by preventing silent failures, controlling resource usage, and making behaviour configurable and observable.
      
      HOW
      No business logic change—only structural refactor, logging, and safeguards—so existing API contracts (aside from removed custom_channels) remain intact.
      Apple\Apple committed
    • 🔍 feat(ratio-sync): add fuzzy model search & enhance empty-state UX · 9d7a5714
      Summary
      1. Add model name search box
         • Introduce Semi UI `Input` with `IconSearch` prefix next to the “Apply Sync” button.
         • Support case-insensitive fuzzy matching of model names.
         • Real-time filtering, pagination and bulk-select logic now work on filtered data.
      
      2. Improve empty state handling
         • Add `hasSynced` flag to distinguish “not synced yet” from “synced with no differences”.
         • Display messages:
           – “Please select sync channels” when no sync has been performed.
           – “No differences found” when a sync completed with zero discrepancies.
           – “No matching model found” when search yields no results.
      
      3. UI tweaks
         • Replace lucide-react `Search` icon with Semi UI `IconSearch` for visual consistency.
         • Keep responsive width and clearable input for better usability.
      
      Why
      These changes allow admins to quickly locate specific models and provide accurate feedback on the sync status, greatly improving the usability of the Upstream Ratio Sync page.
      Apple\Apple committed
    • 🛠️ chore(ratio-sync): improve upstream ratio comparison & output cleanliness · 53e8aa05
      Summary
      1. Consider “both unset” as identical
         • When both localValue and upstreamValue are nil, mark upstreamValue as "same" to avoid showing “Not set”.
      
      2. Exclude fully-synced upstream channels from result
         • Scan `differences` to detect channels that contain at least one divergent value.
         • Remove channels whose every ratio is either `"same"` or `nil`, so the frontend only receives actionable discrepancies.
      
      Why
      These changes reduce visual noise in the Upstream Ratio Sync table, making it easier for admins to focus on models requiring attention. No functional regressions or breaking API changes are introduced.
      Apple\Apple committed
    • Merge branch 'alpha' · 05aaf633
      CaIon committed
    • chore(ui): enhance channel selector with status avatars and UI improvements · 73cfa589
      Add visual status indicators and improve user experience for the upstream ratio sync channel selector modal.
      
      Features:
      - Add status-based avatar indicators for channels (enabled/disabled/auto-disabled)
      - Implement search functionality with text highlighting
      - Add endpoint configuration input for each channel
      - Optimize component structure with reusable ChannelInfo component
      
      UI Improvements:
      - Custom styling for transfer component items
      - Hide scrollbars for cleaner appearance in transfer lists
      - Responsive layout adjustments for channel information display
      - Color-coded avatars: green (enabled), red (disabled), amber (auto-disabled), grey (unknown)
      
      Code Quality:
      - Extract channel status configuration to constants
      - Create reusable ChannelInfo component to reduce code duplication
      - Implement proper search filtering for both channel names and URLs
      - Add consistent styling classes for transfer demo components
      
      Files modified:
      - web/src/components/settings/ChannelSelectorModal.js
      - web/src/pages/Setting/Ratio/UpstreamRatioSync.js
      - web/src/index.css
      
      This enhancement provides better visual feedback for channel status and improves the overall user experience when selecting channels for ratio synchronization.
      Apple\Apple committed