- Normalize file paths to lowercase for consistent, case-insensitive comparison
- Update library path checks to use normalized paths to avoid duplicates
- Ensure already added libraries are visually greyed out regardless of path casing
- Improve cross-platform compatibility by handling path case differences on Linux, macOS, and Windows
- Add new test script to verify case sensitivity fixes for IntelliSense feature
- Update documentation and feature status to reflect library IntelliSense improvements
- Bump Docker image version from 1.5 to 1.6 in deployment instructions
- Introduce `showNavigation` prop to control the visibility of the navigation header and breadcrumbs in the ClusterFolderView component.
- Update ClusterPage to set `showNavigation` to false, disabling navigation for specific use cases.
- Implement body and HTML overflow management to prevent scrolling when the cluster page is active
- Update rating handling to support deletion of existing ratings when rating is set to zero
- Add file size formatting utility for improved display of media sizes
- Refactor UI components for better layout and responsiveness, including adjustments to card and tab styles
- Ensure consistent styling and spacing across various elements for a polished look
- 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
- Add four new docs covering requirements, architecture, implementation plan, and summary
- Update FEATURE_STATUS.md with detailed library scan enhancement feature list and planning status
- Include new section in README.md outlining enhanced scan features and documentation links
- Update library cluster docs count from 12 to 16 to reflect new documents
- Mark library scan enhancement as critical priority and planning complete in status files
- Delete legacy HLS diagnostic script to clean up old testing utilities
- Remove deprecated folder bookmarks migration shell script
- Remove deprecated ArtPlayer integration HTML test file
- Remove legacy HLS streaming test HTML interface
- Remove obsolete progress bar test script for transcoded videos
- Update documentation to reflect removal and archive testing suite as complete
- Consolidate test files under organized testing suite directories and guides
- 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
- Remove obsolete standalone feature docs and integrate their summaries into docs organization
- Add media streaming features including external player auto-launch and .ts file handling fixes
- Document FFmpeg process management and progress bar fixes in media streaming-root section
- Introduce comprehensive 5-phase performance optimization plan with API pagination and virtual scrolling
- Update feature status to reflect completion and planning states of media streaming and performance features
- Enhance README with additional streaming capabilities and forthcoming performance improvements
- Reorganize active documentation categories for clearer navigation and categorization
- Rewrite README to present NextAV as a production-ready media library system
- Add comprehensive feature list covering core and advanced features
- Include architecture details: frontend, database, media processing, deployment
- Document database schema with table descriptions
- Describe API endpoints with coverage and counts
- Detail UI/UX features: sidebar, video cards, player, folder viewer
- Explain deployment setup: Docker multi-stage builds and private registry
- List performance optimizations: virtual scrolling, caching, Turbopack
- Provide build status and compilation details
- Outline documentation structure and development workflow rules
- Define current and future development priorities with sprint plans
- Summarize validation status and readiness for production use
- 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
- Introduce "Surprise Me" as a new video recommendation system for personal video discovery
- Add detailed quick links including guides, summaries, design, architecture, and implementation examples
- Reorganize documentation overview to include Surprise Me above Library Cluster feature
- Update documentation statistics reflecting increased total documents and size
- Update current project focus including Surprise Me as top priority
- Add new documentation entry for Surprise Me on recent changes list
- Bump documentation version to 1.1 and update last modified date accordingly
docs(archive): update Docker image tag for build and push commands
- Change Docker image tag from version 1.3 to 1.4 in deployment instructions
- Introduce `showLibraries` state to control libraries visibility
- Replace library header div with a toggle button
- Add rotate animation to the ChevronRight icon when expanded
- Conditionally render libraries list based on toggle state
- Maintain consistent styling for collapsed and expanded views
- Preserve link and button structure for each library item
- Enable display of bookmarks and ratings in the player UI
- Add handlers for bookmarking and unbookmarking actions
- Implement rating functionality with corresponding event handler
- Enhance user interaction by integrating these new controls
- Improve state management related to video selection and player display
- Add bookmark_count, avg_rating, and star_count fields to photo, video, and text queries
- Join bookmarks and stars tables to aggregate counts and average ratings
- Use COALESCE to ensure default values for missing metadata are zero
- Update folder contents handler to use actual thumbnail path from database instead of conditional URLs
- Implement `/api/clusters/[id]/folders` endpoint for folder navigation with pagination and error handling
- Create ClusterFolderView component for folder tab UI with breadcrumb and cluster theming
- Enhance VirtualizedFolderGrid to support cluster API mode and handle cluster folder responses
- Integrate folder view as default tab on cluster page with navigation and state management
- Add comprehensive testing documentation and handle loading, empty, and error states in UI
- Add "Clusters" collapsible section in sidebar with color-coded icons
- Implement client cluster fetching and navigation links in sidebar
- Create cluster view page with header, stats cards, and tabbed media interface
- Integrate media player modals for video, photo, and text viewing
- Enhance InfiniteVirtualGrid to support custom API endpoints and response formats
- Refactor cluster API routes query params variable naming for consistency
- Add search and loading/error handling within cluster media pages
- Implement bookmark and rating functionality within cluster media grid
- Ensure responsive design and active state highlighting in sidebar and cluster pages
- Update library cluster progress documentation to reflect Phase 3 completion status
- 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
- Define TypeScript interfaces for Cluster, ClusterWithStats, and LibraryClusterMapping
- Create clusters table with fields for name, description, color, icon, and timestamps
- Create library_cluster_mapping table to link libraries and clusters with foreign keys and unique constraint
- Add indexes on library_cluster_mapping and clusters tables for improved query performance
- Changed Docker build and push commands to use tag 1.3 instead of latest
- Updated private registry image reference accordingly
- Improved version specificity in documentation for deployment process
- 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 player preferences management with localStorage and events
- Enable auto-launch and confirmation dialogs in LocalPlayerLauncher component
- Learn user preferences from manual player selections dynamically
- Integrate settings UI for video player configuration and real-time updates
- Support platform-aware player listing and reset to default preferences
- Provide clear current configuration display and toggle switches in settings
- Enhance user experience with smart defaults and customizable workflow
- Maintain backward compatibility with manual player selection option
- Add custom event system for cross-component synchronization of preferences
- Optimize player detection and launching logic to respect user settings
- Disabled .ts from TS_STREAM_FORMATS to prevent HLS resegmentation issues
- Added explicit handling to send .ts files to external local video players
- Enhanced user messaging explaining the temporary workaround
- Ensured seamless playback via existing external streaming API with range support
- Minimized code changes for easy reversal once HLS streaming is fixed
- Documented the temporary fix, user experience, and reverting steps
- Add temporary fix to send .ts files to local player due to HLS resegmentation issues
- Disable .ts format in MPEG Transport Stream (TS_STREAM_FORMATS) for HLS streaming
- Log handling of .ts files in format detection for clarity
- Update local player format creation with specific warning message for .ts files
- Extend LIMITED_SUPPORT_FORMATS check to include .ts as a temporary measure
- Add TODO notes to revert changes once .ts HLS implementation is fixed
- Add support for releasing HLS session references via API cleanup route
- Extend HLS cleanup API to handle 'release_reference' and 'force_cleanup' actions
- Refactor WebDAV API to handle PROPFIND method via POST with x-webdav-method header
- Replace PROPFIND handler with GET and POST handlers for better WebDAV compatibility
- Add comprehensive cleanup of HLS instances, players, and error handlers on unmount and modal close
- Implement immediate stop and destroy of HLS instance when modal closes
- Automatically release backend HLS session reference on modal close via cleanup API call
- Improve logging throughout cleanup and error handling processes
- Add tsSegmentationService to detect and re-segment merged .ts files using FFmpeg
- Create HLSSessionManager to manage segmentation sessions with heartbeat and TTL
- Enhance HLS playlist route to serve either virtual or FFmpeg-segmented playlists
- Update segment route to serve FFmpeg-generated segments with proper caching headers
- Add manual cleanup API for forced session cleanup and status inspection
- Implement global HLS status endpoint with session and segmentation metrics
- Introduce session lifecycle management with auto cleanup and error handling
- Provide detailed logging for session creation, heartbeat, cleanup, and errors
- Configure segment duration, temp directory, concurrency limits, and cleanup intervals
- Ensure fallback to virtual segmentation on errors or unsupported cases
- Document MPEG-TS protocol issues with naive merging and correct segmentation approach
- Plan phased migration for scalable production readiness and monitoring 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
- Disable video transcoding endpoints with HTTP 410 Gone responses
- Add detailed messages recommending local media players for unsupported formats
- Modify direct stream API to return 415 status with local player usage instructions
- Implement enhanced external streaming API with CORS, range requests, and metadata headers
- Add universal media access API providing multiple streaming URLs and playback recommendations
- Improve MIME type detection and headers for better compatibility with external players
- Remove all transcoding logic and related process management code while preserving references
- Ensure fallback to direct streaming and local player usage instructions on unsupported formats
- Delete obsolete markdown documentation on transcoding process management
- Remove detailed explanation of reliable termination strategies in Go and Next.js
- Eliminate legacy progress bar accuracy anti-jitter mechanisms content
- Remove Next.js adaptation guide covering process pools and graceful shutdown
- Clean up all related implementation code snippets and architecture comparisons
- Streamline documentation to avoid confusion with newer implementations
- Add custom scrollbar styles for sidebar with hover transitions
- Set fixed height and overflow hidden on sidebar container for consistent layout
- Add overflow-hidden to main content wrapper for better scroll handling
- Update navigation and library sections to use flex layout with proper overflow control
- Add scrollbar with custom style to libraries list for better UX during scrolling
- Ensure sidebar and its elements adapt properly when collapsed or expanded
- 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
- Remove custom bookmark and rating control layers from player UI
- Refactor bookmark toggle logic to update state functionally
- Simplify rating click handler to use functional state update
- Adjust effect dependencies to exclude local bookmark and rating states
- Improve code clarity and maintainability for bookmark and rating features
- Extend media database query to include bookmark count with LEFT JOINs
- Add bookmark_count property to media file types and UI components
- Implement bookmark add and remove handlers with API calls
- Enhance video player overlay to show bookmark button and rating stars
- Update ArtPlayerWrapper for interactive 5-star rating and bookmark toggling
- Modify folder viewer and virtualized media grid to display bookmark counts
- Simplify video player debug to always use ArtPlayer and show static support info
- Add effect to disable body scroll by setting overflow to hidden when player is open
- Restore original body overflow styles on player close
- Add overflow-hidden and scrollbar hiding styles to player container
- Apply CSS rules to hide scrollbars on artplayer container and all child elements
- Set inline styles to suppress scrollbars in player elements on different browsers
- Remove fallback to other players in UnifiedVideoPlayer component
- Eliminate legacy InlineVideoPlayer and VideoViewer components
- Update API to always use ArtPlayer as player type and remove alternatives
- Simplify feature detection flags to assume full ArtPlayer support
- Remove ArtPlayer error fallback chain; log errors without switching player
- Rename and adjust styles in ArtPlayerWrapper for consistency
- Refactor VideoPlayerDebug to always report ArtPlayer active
- Adjust diagnostics and logging to indicate ArtPlayer-only mode
- Clean up unused imports and feature flags related to multiple players
- Inject custom global styles to remove shadows and filters from all ArtPlayer elements
- Adjust ArtPlayer controls to have transparent backgrounds and no drop shadows
- Style play button and state controls with subtle hover effects and centered background
- Update bookmark and rating controls layout and appearance with conditional rendering
- Modify position and z-index of custom controls for better UI alignment
- Add format info display that adapts visibility when loading
- Fix error indicator position to avoid overlapping with custom controls
- Clean up injected styles on component unmount to prevent residue
- Add autoplay prop to ArtPlayerWrapper, UnifiedVideoPlayer, and related components
- Implement autoplay logic with graceful handling of browser restrictions in ArtPlayerWrapper
- Set default autoplay to true in artplayer configuration and expose helper functions to create configs
- Enhance video and stream API to parse codec info with codec and container details
- Implement H.264 codec detection to prioritize direct streaming over transcoding
- Update video-viewer and stream route to override transcoding flag for H.264 codec videos
- Add MIME type to ArtPlayer to select appropriate player type (mpegts, webm, ogg, mp4)
- Extend video format detector to serve MPEG Transport Stream (.ts) files directly without transcoding
- Improve logging with detailed codec, container, and transcoding decision information
- 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
- Add HEAD request handler to serve video metadata without body
- Replace fluent-ffmpeg with direct spawn for FFmpeg process execution
- Implement active request tracking to prevent duplicate transcoding streams
- Enhance process management by avoiding killing similar seek processes (within 2s)
- Preserve original metadata and apply duration overrides for accurate streaming
- Return full duration metadata and seek time in custom response headers
- Add DELETE endpoint to clean up all transcoding processes for a video
- Update client video player to detect transcoding need and switch source accordingly
- Implement retry logic with capped attempts for both direct and transcoding streams
- Add user-visible transcoding error display with retry button in video viewer
- Optimize transcoding seek requests to avoid duplicate or unnecessary restarts
- Enhance useStableProgress hook to support seek offset from streaming URL
- Adjust progress updates to consider seek time offset for smooth playback progress
- Initialize progress state at seek offset instead of zero on reset to prevent jitter
- 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 folder path handling in the FolderViewerPage, SidebarContent, and VirtualizedFolderGrid components to use encodeURIComponent for URL encoding.
- This change improves the handling of special characters in folder paths, ensuring correct navigation and link generation.