v0.1.7 hum: local library, podcasts, tag reader - #8
Merged
Conversation
ytcli is now hum. It plays local files, so the name stopped making sense. Same project, same repo, new name. Existing setups keep working: hum reads the old ytcli/ config and data directories when the new hum/ ones do not exist. Nothing is moved or copied. Local library - music_dir roots (colon-separated); Ctrl+L browses artists, albums, tracks - in-process tag reader: ID3v2.3/2.4, Vorbis comments, Ogg/Opus, MP4. No taglib, no ffprobe; libmpv is still the only linked C library - untagged files fall back to path layout, then to an "unknown" bucket - on-demand scan with progress, abortable, never cached when incomplete - rescans reuse cached rows when mtime and size are unchanged - the folders themselves are never touched Sources, search, queue - hum <file|url> plays a local file or streams a URL - Ctrl+E chooses what Enter searches: both, youtube, library. Library scope makes no network calls, autocomplete included - library names feed the ghost completion - Ctrl+T applies to local files too: all, songs, albums, artists - Ctrl+Q queue view: K/J reorder, d remove, s shuffle, a/A enqueue - playlists mix local and youtube rows; four-column files still load Podcasts - hum feeds add <url> subscribes; Ctrl+F browses shows and episodes - narrow RSS/Atom scanner: no DTDs, entity definitions, namespaces, recursion or external references, so expansion bombs are inert. Enclosure URLs are validated http(s)-only before reaching mpv Fixes - search rows showed a duration where the artist belongs; this shipped in v0.1.6 - the hint bar and mode line could exceed the terminal width, wrapping the frame and scrolling the title off the top - a Ctrl+L rescan while browsing could segfault: library rows borrow their text from the index, and the rescan freed it mid-draw - changing music_dir kept serving the old library from a stale cache - piping into head printed a stack trace instead of exiting quietly Other - hum doctor prints paths, settings, library state and dependency status - startup splash (splash=off to skip), duration column in result rows - zig build check type-checks every release target, Debug and ReleaseSafe - ci workflow runs tests and that check on every push - freebsd release leg no longer times out: duplicate test compile removed, toolchain fetched on the host
Owner
Author
|
massive updates including the ability to play local files and RSS feeds |
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.
v0.1.7 - ytcli is now hum
ytcli plays local files now, so the name stopped making sense. Same project, same
repo, new name: hum.
Your stuff keeps working. hum reads the old
ytcli/config and data directorieswhen the new
hum/ones don't exist — history, playlists, theme, volume, all ofit. Nothing was moved or copied. If you want it in the new locations, move it
yourself; if you don't care, don't.
local library
hum library dir ~/Music(colon-separate several roots), thenCtrl+Lbrowsesartists → albums → tracks
No taglib, no ffprobe - the only linked C library is still libmpv
Artist/Album/01 Title.flaclayout, and fileswith nothing to go on land under
unknowninstead of vanishingscan is never cached as if it were complete
what actually changed gets re-read
sources, search, queue
hum ~/Music/album/01.flacplays a file; anyhttp(s)://URL streamsCtrl+Eswitches what Enter searches: both · youtube · library. In libraryscope nothing goes to the network, autocomplete included
bohcompletes to an artistyou actually own
Ctrl+Tnow means something for local files too: all · songs · albums · artistsCtrl+Qopens the queue -K/Jreorder,dremove,sshuffle,a/Aqueue from any list
versions still load
podcasts
hum feeds add <url>subscribes to an RSS or Atom feed;Ctrl+Fbrowses yourshows in the TUI and lists episodes with their length
hum feeds <name>prints a show's episodes for pipingpodcast feed must have and ignores everything else. No DTDs, no entity
definitions, no namespaces, no external references, so expansion bombs have
nothing to expand. Enclosure URLs are http(s)-only before they reach the player
fixes
card shelf that carries the artist in its header, and the row fell through to
the wrong run. This shipped in v0.1.6
a row, and the screen scrolled the title away
Ctrl+Lrescan while browsing could segfault: library rows borrow their textfrom the index, and the rescan freed it while the progress callback was drawing
music_dirkept serving the old library, because the cache didn'trecord which roots built it
other
headno longer prints a stack trace when the pipe closeshum doctorprints paths, settings, library state and whether curl and yt-dlpare on PATH (paste it into a bug report)
splash=offin the config skips itthe toolchain is fetched on the host instead of inside the VM