Repository navigation
Conversation
The existing "playlist" was a single, unnamed list that could only be built
by filtering the gallery. This adds any number of named playlists, managed
from a sidebar panel (Settings > "Show playlists"):
- Create, rename, duplicate, reorder (drag) and delete playlists.
- Add videos from the right-click menu ("Add to playlist..."), from the
thumbnail's playlist icon (adds to the last used playlist), or by dragging
thumbnails onto a playlist; "Add N selected" adds a whole selection.
- Open a playlist to see its entries in order: drag to reorder, Delete to
remove, Ctrl+A to select, move or copy entries to another playlist, open
the containing folder. "Play" / "Shuffle play" hand the list to the
preferred external player as an .m3u8.
- A "compilation" is a playlist whose entries can carry a start/end time
(a highlight). This commit stores and plays those ranges externally
(#EXTVLCOPT start/stop times); marking them comes with the built-in player.
Storage: playlists live in a sidecar file next to the hub
(`<hub>.playlists.json`, versioned, written atomically with a .bak), so the
.vha2 format is untouched and a hub without the sidecar behaves exactly as
before. Entries reference videos by hash and re-link by path when a file
was moved and rescanned. The legacy "playlist" timestamp field is migrated
into a playlist named "Playlist" the first time the hub is opened.
An open playlist overlays the gallery; "All videos", the gallery button and
Esc always lead back, so a new or empty playlist can never trap the view.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Branch:
pr/4-playlists→main· 1 commit · 24 files, +2816 / −9Adds any number of named playlists, managed from a sidebar panel (Settings → "Show playlists"):
by dragging thumbnails onto a playlist, or "Add N selected";
another playlist, open the containing folder; Play / Shuffle play hand the list to the preferred external
player as
.m3u8;plays those ranges externally (
#EXTVLCOPTstart/stop); marking them comes with the built-in player (PR 5/6).Storage: a sidecar
<hub>.playlists.jsonnext to the hub (versioned, atomic write +.bak), so the.vha2format is untouched and a hub without the sidecar behaves exactly as before. Entries reference videos by hash and
re-link by path after a move + rescan. The legacy "playlist" timestamp field is migrated into a playlist named
"Playlist" the first time a hub is opened. An open playlist overlays the gallery; "All videos", the gallery
button and Esc always lead back.
New English strings only (other languages fall back to English).
Testing: used daily on a ~4,000-video hub; create/add/reorder/move/delete, legacy migration, sidecar recovery
from
.bak, and an isolated run against an existing sidecar.🤖 Generated with Claude Code