* extract remaining nfo xml serializers
* add artist nfo tests
* add music video nfo tests
* add tv show nfo reader tests
* custom artist nfo reader
* custom music video nfo reader
* custom tv show nfo reader
* local metadata parsing cleanup
* update changelog
* catch health check cancellation
* local library scanner cleanup
* emby and jf library scanner cleanup
* rework emby movie library scanner
* refactor emby movie library scanner
* refactor jellyfin movie library scanner
* clear etag until after new media has been processed
* refactor plex movie library scanner
* update changelog
* support external subtitles in local movie libraries
* code cleanup
* simplify subtitle updating
* skip external subtitles from media servers
* fix plex subtitles
* flag local movies as file not found
* show warning icon on cards
* unflag movie that is found during scan
* skip missing files when building playouts
* add state to search index
* add file not found health check
* link to search from file not found health check
* support flagging other media kinds as file not found
* continue to schedule missing items
* support episode files not found
* wip trash page
* fix trash url
* trash page is functional
* update changelog
* fix changelog merge
* use etags to optimize local movie scanner
* use etags to optimize local television scanner
* use etags to optimize local music video scanner
* code cleanup
* wip
* start to add jellyfin tables to db
* code cleanup
* finish adding jellyfin media source
* sync jellyfin libraries
* display list of jellyfin libraries
* toggle jellyfin library sync
* edit jellyfin path replacements
* noop jellyfin scanners
* get jellyfin admin user id on startup
* implement jellyfin disconnect
* add jellyfin libraries to list; start to query jellyfin library items
* code cleanup
* start to project jellyfin movies
* save new jellyfin movies to db
* basic jellyfin movie update
* load jellyfin actor artwork
* load jellyfin movie poster and fan art
* more jellyfin artwork fixes, sync audio streams
* jellyfin playback sort of works
* skip jellyfin movies that are inaccessible
* use ffprobe for jellyfin movie statistics
* code cleanup
* store jellyfin operating system
* more jellyfin movie updates
* update jellyfin movie poster and fan art
* add jellyfin tv types
* sync jellyfin shows
* sync jellyfin seasons
* sync jellyfin episodes
* remove missing jellyfin television items
* delete empty jellyfin seasons and shows
* fix jellyfin updates
* fix indexing jellyfin movie and show languages
* clean up genre, tag, studio orphans
* enforce foreign keys at connection level
* wip
* fix fragment scroll offset
* fix see all link for music videos
* add fake artist metadata
* not null artist id
* add artist scanning
* remove improperly named music videos
* code cleanup
* add artists to search results and collections
* clean up music video metadata / artist
* add artist view
* show music videos on artist page
* add music video artwork placeholder
* add music videos library
* add music video tables
* first pass at music video library scan
* support music videos in playouts
* display music videos in search results and collections
* fix music video thumbnails
* remove some obsolete fields
* add letter bar with no links
* use lucene for search, add paged search results
* add search index version
* index library_name; rebuild index when folder is missing
* maintain index as local movies change
* fix tests
* maintain index as local shows change
* maintain index as plex movies change
* maintain index as plex shows change
* code cleanup
* add duplicate filter to search
* add links to letter bar
* code cleanup
* starting database redesign
* set season and episode numbers
* use datetimes in db (utc); update movie metadata
* get movie cards from new table
* copy show/episode metadata
* remove old movie metadata type
* rename new movie metadata type
* code cleanup
* start to remove old television classes
* remove old television tables from database
* fix playout building
* fix collection views
* fix show/season views
* clean up movie metadata table
* fix scanner tests
* add libraries ui
* code cleanup
* fix movie scanning/metadata
* add library scan button to ui
* delete library path from ui
* temp disable movie scanning
* remove orphan media items and prevent duplicate paths
* attach artwork to metadata
* fix split show/season display
* fix television artwork
* store year distinct from release date
* fix collections ui
* code cleanup
* add library paths from ui
* fix adding to collections from ui
* fix schedule items loading
* schedule editing works again
* remove some todos
* more cleanup
* fix unit tests
* fix episode sorting
* fix deleting show library paths
* remove unused class
* fix playout list in ui
* fix log viewer
* start to use version/file instead of statistics
* clean up old columns
* fix playout display (time zone)
* fix playback
* fix channel guide time zone
* cascade more deletes
* fix compiler warnings
* fix adding new seasons
* use artwork for channel logo
* clean cache folder on startup (move channel logos, delete everything else)
* log database migration
* update homepage docs for libraries
* fix adding new channel with logo
* fix episode numbers in epg
* rework television media
* refactor poster saving
* television and movie views are working again
* remove dead code
* use paper styling for all cards
* add show poster, plot to seasons page
* remove missing shows; cleanup interfaces
* fix split show display (same show in different folders/sources)
* add placeholder "add to schedule" button
* no more duplicate television shows, even with the same show split across sources
* stop releasing CLI for now
* use season number as season placeholder
* add television shows to collections
* add television seasons to collections
* add television episodes to collections
* add movies to collections
* remove movies, shows, seasons, episodes from collections
* fix page width and menus
* fix buffer size defaults
* fix chronological episode ordering
* allow deleting media collections
* don't get stuck building a playout with an empty collection
* schedule editing and playouts work again
* minor cleanup
* remove dead code
* fix bugs with viewing movies as they are loading
* add scanner tests; support nested movie folders
* update collections docs
* rearrange order of schedule items
* add show and season to schedule
* delete schedules that use legacy collections, reset all posters
* move cleanup to new migration
* load fallback metadata when nfo fails; don't require metadata in ui
* update readme and screenshots
* spike new scanner
* add existing items to new scanner
* add collection refresh actions
* add tv show metadata and posters
* update metadata and posters when nfo/poster files are updated
* add "remove" action, test for all supported file extensions
* update statistics when primary video file is updated
* reflect that collections are "sourced" from nfo
* implement most scanning actions
* cleanup
* fix startup
* cross-platform scanner tests
* first pass at refresh-all-metadata by source
* add version to startup logs
* lock media source during refresh
* fix local media source "name" in collection editor
* optimize scanning so playouts only rebuild when necessary
* support more poster file types
* more scanning improvements; check for missing posters during scans
* replace media items tables with card grids
* style cleanup
* add basic paging
* sort and page in the db
* optimize sql for movies
* support movie posters
* resize movie posters and store in cache with channel logos
* fix bug preventing folders with more than 50 chars as local media sources
* support tv posters