• 1.0.61 3a16712f0d

    nanohits released this 2026-02-02 15:37:44 +08:00 | 0 commits to main since this release

    Changelog

    All notable changes to RoxyIPT will be documented in this file.

    [1.0.61] - 2026-01-24

    New Features

    Playlist Refresh Status Display

    • Transparency Dashboard: Added a new "Playlist Refresh Status" card in Settings → General that shows:
      • Last Refresh: Human-readable time ("2 hours ago") plus exact timestamp
      • Next Refresh: Calculated next refresh time or "Pending (on next app launch)" if overdue
      • Color-Coded Status: Green for recent refreshes, yellow for never/overdue, blue for scheduled
    • Active Playlist Only: Only displays when an active playlist is selected, showing relevant information for the current playlist.

    Favorites Drag-and-Drop Reordering

    • Interactive Reordering: Restored drag-and-drop functionality in Favorites page allowing users to reorder favorite channels, movies, and series.
    • Grip Handle: Visual grip icon appears on hover in the top-left corner of each card, indicating draggable items.
    • Smooth Animations: Drag animations with opacity change during drag operations for better visual feedback.
    • Persistent Order: Reordered favorites are immediately saved to Zustand store and persisted across app restarts.

    🐛 Bug Fixes

    Playlist Auto-Refresh System Overhaul

    • Persistent Timestamp Tracking: Fixed playlist auto-refresh that only worked if the app stayed open continuously (e.g., 24 hours). The app now stores a lastRefreshed timestamp for each playlist and checks it on app launch, automatically refreshing if the interval has passed.
    • Launch-Time Validation: Auto-refresh now triggers immediately on app launch if the playlist is overdue for refresh, instead of relying solely on setInterval timers that reset when the app closes.
    • Smart Logging: Added diagnostic logging showing when playlists were last refreshed and when the next refresh will occur.

    Dashboard Content Type Status Display

    • Accurate Disabled State: Fixed Dashboard tiles (Live TV, Movies, Series) showing "Loading..." when content types were disabled in playlist settings. Now correctly displays "Disabled" with a red indicator when includeLive, includeVOD, or includeSeries is set to false.
    • Visual Consistency: All three main tiles now follow the same pattern for showing enabled/disabled states.

    Theater Mode Aspect Ratio Fix

    • Maintain Aspect Ratio: Fixed theater mode stretching video content to fill the screen. Theater mode now uses objectFit: 'contain' to maintain proper aspect ratio with letterboxing when needed.
    • No Distortion: Videos display in their original aspect ratio without stretching or distortion in theater mode.

    🚀 Performance Improvements

    EPG Loading Optimization

    • Removed Channel Limit: Eliminated the 150-channel safety limit that was blocking EPG loads for larger categories.
    • Category-by-Category Loading: EPG data loads only for the currently selected category, not all channels at once. Switching categories loads EPG on-demand.
    • Indexed SQLite Queries: EPG cache queries use indexed lookups on playlist_id and channel_id for fast retrieval (< 100ms for 100+ channels).
    • Fuzzy Matching Safeguard: Fuzzy channel name matching only runs if fewer than 50 channels are unmatched, preventing large-scale scanning.
    Downloads