- Display the video file path in smaller, gray text below the title
- Apply drop shadow and truncate long paths for better readability
- Ensure consistent UI spacing with margin top on the path display
- Create API endpoint to list directories under /mnt with navigation support
- Detect and indicate already added libraries to prevent duplicates
- Add "Browse" button to library path input for opening modal folder selector
- Implement modal UI with directory navigation, current path display, and selection buttons
- Integrate modal selection with existing library adding workflow
- Show visual feedback by disabling selection of existing libraries
- Update documentation and feature status to include the new IntelliSense feature
- Add test scripts covering IntelliSense navigation and library conflict detection
- Implement cleanupDeletedFiles to remove orphaned database records for files no longer on disk
- Add verifyAndRegenerateThumbnail to detect and regenerate missing thumbnails for existing media
- Integrate new cleanup and verification steps into main scanLibrary async function
- Update scan stats to track files removed and thumbnails regenerated
- Enhance error handling to log but not block overall scan progress
- Maintain existing file discovery and processing workflows with new verification layers
- Provide detailed scanning process flow and statistics tracking for improved observability
- Include the media.db binary file in the project
- Set up initial database schema and structure for media storage
- Prepare groundwork for media data management functionality
- Change docker image tag from 1.4 to 1.5 in deployment guide
- Update corresponding docker push command with new tag
style(surprise-me): adjust page container height and overflow
- Replace min-h-screen with fixed h-screen for full viewport height
- Add overflow-y-auto to enable vertical scrolling within the page container
- Maintain existing background color and header styles unchanged
- Implement POST /api/media-access/[id]/route to track media access events: view, play, bookmark, rate
- Validate media ID and access type input with appropriate error responses
- Persist media access records in new media_access table with associated media ID and timestamp
- Add indexes on media_access for efficient querying by media ID, access type, and timestamp
- Export helper functions to track and query media access counts and recent accesses
- Add "Surprise Me" navigation link with icon in sidebar component for new discovery feature
- Add database tables for clusters and library-cluster mappings with indexes
- Create REST API endpoints for cluster CRUD and library assignments
- Develop ClusterManagement component for create/edit/delete clusters with color/icon picker
- Implement multi-select library assignment and real-time statistics display
- Add LibraryClusterBadges component to show color-coded cluster badges on library cards
- Integrate cluster management UI into settings page with loading states and validation
- Enhance API input validation and error handling for cluster operations
- Document design decisions, performance considerations, and next steps for navigation features
- Add bookmark toggle button with loading state and server API integration
- Implement star rating component with interactive rating updates
- Fetch and display current bookmark and rating status on component mount
- Improve player launch logic to track which player was launched
- Add auto-launch confirmation dialog handling and prevent repeated auto-launch
- Enhance UI to display bookmark, rating controls, and video info with styling
- Remove Elmedia Player from recommended players list
- Refactor player detection and launch functions with useCallback for optimization
- Update UnifiedVideoPlayer to pass bookmark and rating handlers and flags to local player launcher component
- Introduce new folder_bookmarks table with unique folder_path and timestamp fields
- Implement API endpoints for folder bookmarks CRUD operations
- Enhance bookmarks API to combine and paginate media and folder bookmarks
- Update bookmarks page UI to handle and display folder bookmarks
- Add folder viewer support for bookmarking current folder with toggle functionality
- Create automated migration script with backup, schema verification, and rollback instructions
- Provide detailed migration guides for manual and Docker deployments
- Add comprehensive testing and verification steps for migration and new feature integration
- Implement virtual HLS playlist generation for .ts files as multi-segment streams
- Serve .ts files in virtual 2MB segments with proper byte-range handling
- Enhance existing HLS playlist route to support .ts files as single or multi-segment streams
- Improve segment route to serve .ts segments using stream slicing and abort handling
- Add comprehensive API endpoint for converting .ts files to .mp4 containers
- Implement fast container remuxing using FFmpeg without re-encoding
- Provide analysis of .ts files for conversion suitability based on codec compatibility
- Return detailed error messages and alternatives when HLS streaming unsupported for non-.ts formats
- Update HLS playlist URLs to absolute paths with protocol and host for external access
- Add caching and CORS headers for HLS segments and playlists
- Include thorough logging for debugging HLS segment requests and conversion processes
- Implement DELETE /api/stars to remove star ratings by mediaId
- Update media's star count and average rating on deletion
- Modify frontend rating handlers to support unstarring by sending DELETE requests
- Update multiple pages to handle rating removal when rating is zero
- Adjust photo viewer to toggle rating off if same rating clicked
- Improve error handling and success responses for star rating API interactions
- Implement GET /api/bookmarks/[id] to check bookmark existence and return bookmark ID
- Implement GET /api/stars/[id] to check star rating existence and return rating value
- Validate media ID as integer and handle invalid ID with 400 status
- Handle server errors with 500 status and error messages
refactor(api): change rating POST request to include mediaId in body
- Update /api/stars POST request to send mediaId and rating in JSON body
- Adjust client fetch call accordingly from /api/stars/[id] to /api/stars
feat(player): integrate bookmark and rating status checks in video player
- Add state and loading indicators for bookmark and rating status in UnifiedVideoPlayer
- Fetch current bookmark and rating status on video open using new GET API endpoints
- Update local bookmark and rating state on user actions for bookmark add/remove and rating update
- Show loading state until both bookmark and rating statuses are fetched
fix(ui): improve bookmark button tooltip and state handling in ArtPlayerWrapper
- Change bookmark button title dynamically based on bookmark state ('Add bookmark' or 'Remove bookmark')
- Remove redundant bookmark count element in button for cleaner UI
- Modify handleStarClick to cancel rating when clicking the current rating again
- Update local average rating based on toggle logic
- Add localAvgRating as dependency to useCallback hook to keep updated state
- Add hls.js plugin to ArtPlayer wrapper for HLS streaming support
- Implement adaptive bitrate streaming and quality level switching
- Create comprehensive HLS error handling with recovery and fallback
- Detect and handle HLS-compatible formats (.ts, MP4, M4V, TS, M2TS, MTS)
- Support native HLS playback fallback for Safari browsers
- Enhance fallback chain: Native → HLS → Direct → Transcoding streaming
- Update unified video player to handle ArtPlayer errors with fallback logic
- Provide user-friendly error messages and retry options on HLS failure
- Add cleanup for HLS error handlers on component unmount
- Complete Phase 2 of gradual migration tracker with HLS integration and tests
- Implement GET /api/ffmpeg/status to return current FFmpeg process status
- Support filtering by videoId and response formatting (JSON or text table)
- Include optional statistics in status response
- Implement DELETE /api/ffmpeg/status for process cleanup operations
- Allow killing processes by videoId, stale status, or all at once
- Add cache-control and CORS headers for API responses
- Add error handling with 500 response on failure
- Updated file reading and database querying logic to decode URL-encoded paths, ensuring proper handling of special characters.
- Refactored path usage in the GET requests for both media file listing and content retrieval, enhancing compatibility with various file names.
- Added support for video codec analysis and transcoding based on codec information.
- Implemented new API routes for transcoding videos, allowing for dynamic quality adjustments.
- Updated video player components to handle errors and fallback to transcoded versions if direct streaming fails.
- Enhanced database schema to store codec information for media files.
- Introduced a VideoAnalyzer utility for extracting codec details from video files during scanning.
- Improved CORS handling in API responses for better compatibility with various clients.
- Deleted the thumbnail API route to streamline the application structure.
- Integrated ThumbnailManager for improved thumbnail path generation and directory management.
- Updated media scanning logic to utilize hashed thumbnail paths and ensure directory existence.
- Enhanced error handling for thumbnail generation with fallback options based on media type.
- Introduced a text viewer for displaying various text file formats, including .txt, .md, and more.
- Implemented API routes for fetching text file content with encoding options and error handling.
- Enhanced folder viewer to support text file selection and integrated the new text viewer component.
- Updated global styles to include custom scrollbar styles for the text viewer.
- Added support for hashed folder structure to store thumbnails for better organization.
- Included new dependencies for text encoding handling and updated package configurations.
- Implemented a new API route for serving thumbnails, allowing dynamic retrieval of image files.
- Updated Dockerfile to install FFmpeg for media processing.
- Enhanced docker-compose.yml to mount the thumbnails directory for easier access.
- Added public/thumbnails to .dockerignore and .gitignore to prevent unnecessary file inclusion.
- Created a new media database file for managing media assets.