Long time no release!
The biggest release yet is here. These are some exciting times for rmpc, it has gotten quite a bit more popular thanks to BreadOnPenguins youtube video, go check her channel out! Many new contributors joined, reported issues, and some even contributed directly, many thanks to all of you.
What's new and what changed
As always, you can check CHANGELOG for a more refined list of changes.
The highlights
- The first of two fanciest new features is config hot reload. Rmpc will now automatically reload your config when it changes.
- The second spot definitely belongs to cava integration. You can now use everybody's favorite music visualizer directly in rmpc.
- There are now better error messages when your config file gets goofed up while tinkering with rmpc. You should now get a modal popup stating what is wrong and roughly lead you to where the error is.
- Support for more sites via
addyt
command, rmpc now supports soundcloud and nicovideo - New config properties, new keybinds, cli and much more, go check it out!
Unfortunately, again, there are a few, hopefully minor and/or cosmetic breaking changes:
- Songs are no longer sorted by their browser_song_format. The new browser_song_sort is used instead
- Some tags can now be arrays of values instead of a single value if multiple values are in the given id3 tag when listing song metadata via cli.
- For CLI which return song info: last-modified and added are no longer in songs' metadata, they are at the top level object instead now
- ShowInfo queue action has been moved to navigation. It is now more general and works in playlists as well.
Small note for package maintainers
- Cava is now an optional runtime dependency of rmpc
- There is a test that is failing on 32bit architectures, it is already fixed in master and is safe to ignore
Full list of commits
Added
- feat(ui): add backdrop support for modals by @soifou in #257
- feat: config hot reload by @mierak in #262
- feat: set theme via ipc by @mierak in #266
- feat: on_resize hook by @mierak in #267
- feat: theme cli arg by @mierak in #268
- feat(lyrics): don't highlight until the first lyrics have been reached by @Kladki in #271
- feat: allow switching tracks while paused by @Kladki in #274
- feat: new browser pane with configurable root tag by @mierak in #273
- feat: cycling/scrolling property pane by @mierak in #286
- feat: configurable song sorting by @mierak in #291
- feat: add FileExtension property by @mierak in #296
- feat: better errors when reading config by @mierak in #299
- feat: support multiple tag values by @mierak in #304
- feat: better directories sorting by @mierak in #314
- feat: addrandom command by @mierak in #316
- feat(lyrics): Implement word wrapping for lyrics pane. by @xTayEx in #317
- feat: configurable song preview labels by @mierak in #321
- feat: soundcloud support by @mierak in #323
- feat: add and replace songs to queue by @mierak in #326
- feat: shuffle queue by @mierak in #343
- feat: queue length property by @mierak in #344
- feat: add queue time total/remaining by @mierak in #345
- feat: Add Insert and InsertAll commands by @tarneaux in #329
- feat: add center_current_song_on_change by @mierak in #346
- feat: toggle random/single/repeat/consume CLI by @mierak in #347
- feat: toggle consume/single with skipping oneshot by @mierak in #348
- feat: active tab property by @mierak in #352
- feat: allow disabling scrollbars by @mierak in #353
- feat: togglepause can play from stopped state by @mierak in #354
- feat: adding a --rewind-to-start for the cli previous action by @osamaaj03 in #363
- Feat: sort keybinds in the help modal by @osamaaj03 in #373
- feat: include song metadata in externalcommand by @mierak in #376
- feat: add block album_art support by @Sang-it in #377
- feat: sort keybinds by enum order by @mierak in #379
- feat: add level_styles to config statusbar styles by @mierak in #386
- feat: playlist info modal by @mierak in #388
- feat: initial partition support by @mierak in #389
- Feat/add progress bar boundaries by @Thunder-Blaze in #395
- feat: make lyrics matching more lenient by @mierak in #396
- feat: component system by @mierak in #399
- feat: rewind to start for tui by @mierak in #401
- feat: reflect changes to playlist by @mierak in #402
- feat: multiple tag resolution strategy by @mierak in #403
- feat: style for browser symbols by @mierak in #409
- feat: partial tui partitions impl by @mierak in #410
- feat: support cava visualiser by @mierak in #415
- feat: suport niconico by @mierak in #435
- feat: Improve cava visualization by @polluxcodes in #436
- feat: cava improvements by @mierak in #444
- feat: remote status timeout by @mierak in #446
- feat: support playlists in directories pane by @mierak in #449
- feat: ratio size constraint by @mierak in #452
- feat: typos checking in GitHub actions by @Alexdelia in #455
- feat: position property by @mierak in #471
- feat: cava orientation config by @mierak in #474
- Add youtu.be url support for addyt by @doomed-neko in #464
- Added 3 Symbol Progress Bar Test by @Thunder-Blaze in #405
- Added Clear Error Modal Feature by @Thunder-Blaze in #406
- New widget: Scan/indexing status by @mnpqraven in #307
- Add lyrics config option to show line timestamps by @khalil-cheddadi in #416
- feat: clear marked with close action by @mierak in #478
Fixed
- fix: album art not updating when not active in tmux by @mierak in #256
- fix(lyrics): parse lyric timestamps with frations of seconds which aren't to 2s.f. by @Kladki in #272
- fix: inconsistent default config path in cli/man by @mierak in #295
- fix: handle invalid utf8 characters by @mierak in #302
- fix: improve reconnect behavior by @mierak in #318
- fix: tilde not being expanded in default album art by @mierak in #351
- fix: queue table issues and center on song change by @mierak in #357
- fix: queue sizing issues by @mierak in #358
- fix: filter overlapping queue table without header by @mierak in #375
- Fix: Lyrics files with ']' in the metadata fields not getting indexed and title not getting matched by @Lxtharia in #392
- Changed logging path and fixed multiple user using rmpc issue by @Thunder-Blaze in #417
- add plugin to outputs (finish #460) by @doomed-neko in #465
- correct ordering in Insert and InsertAll on multiple items (complete #428) by @doomed-neko in #468
- Handle new value lastloadedplaylist from mpd by @Xithrius in #294
- perf: skip calculating rows that are not visible in queue by @mierak in #349
- fix: quick cava fixes and a bit of refactor by @mierak in #421
- fix: Actually insert and not add playlists when using Insert by @tarneaux in #422
- fix: attempt to fix connection getting stuck by @mierak in #424
- fix: Actually insert and not add with Insert in search pane by @tarneaux in #426
- fix: group styles not working in queue table by @mierak in #427
- fix: refactor client to be more robust by @mierak in #432
- Add existence check of config_path on config watcher by @el-yawd in #419
- fix: allow playlists with no preview by @mierak in #442
- fix: typos by @Alexdelia in #451
- fix: remove unneeded clone in lyrics by @mierak in #459
- fix: incorrect warning when using addyt from cli by @mierak in #461
- fix: possible panic/overflow in progress bar by @mierak in #470
- fix: fix scrollbar panic on empty area, further progress bar fix by @mierak in #472
- fix: attempt to fix garbage in output by @mierak in #477
- fix: cava bg color and add inverted symbols by @mierak in #483
- change cava default noise reduction to reflect cava by @mierak in #441
Docs
- docs: add dev and contributing section by @mierak in #322
- docs: fix catpuccin theme not being up to date by @mierak in #284
- Update documentation to mention
Alt
key` by @neio4 in #277 - update nord theme by @v-Nyo in #341
- Add nord-theme to docs by @v-Nyo in #282
- docs: fix typos by @danielwerg in #364
- docs: add faq section by @mierak in #429
- docs: fix cava symbols by @mierak in #439
Misc
- chore: up dependencies by @mierak in #258
- test by @mierak in #259
- refactor: do not use static refs for config values by @mierak in #261
- chore: drop unneeded test cases by @mierak in #269
- Switching to a matrix in the CI by @Xithrius in #292
- chore: appease clippy by @mierak in #300
- chore: migrate to rust 2024 edition by @mierak in #305
- chore: update astro by @mierak in #306
- refactor: move DirOrSong to a separate file by @mierak in #315
- chore: appease clippy gods by @mierak in #411
- chore: removing trailing whitespace in
markdown
files by @Alexdelia in #457 - chore: drop unneeded stuff from ci by @mierak in #458
New Contributors
- @Kladki made their first contribution in #271
- @neio4 made their first contribution in #277
- @v-Nyo made their first contribution in #282
- @Xithrius made their first contribution in #294
- @mnpqraven made their first contribution in #307
- @xTayEx made their first contribution in #317
- @tarneaux made their first contribution in #329
- @danielwerg made their first contribution in #364
- @osamaaj03 made their first contribution in #363
- @Sang-it made their first contribution in #377
- @Lxtharia made their first contribution in #392
- @Thunder-Blaze made their first contribution in #395
- @khalil-cheddadi made their first contribution in #416
- @el-yawd made their first contribution in #419
- @polluxcodes made their first contribution in #436
- @Alexdelia made their first contribution in #451
- @doomed-neko made their first contribution in #464
Full Changelog: v0.8.0...v0.9.0