Skip to content

Releases: ejv2/podbit

v3.1: Bug Fixes

21 Jul 14:26
792f579
Compare
Choose a tag to compare

Podbit v3.1

Podbit v3.1 is a maintenance release which fixes several irritating bugs, including a couple of crashes and lockups. Major user-facing changes include downloads now showing their titles in the download menu, and major improvements made to download performance. Additionally, the queue file is now periodically saved (after reloading any changes), as well as when SIGINT or SIGTERM are received.

Changelog

  1. Fixed a rare deadlock when cancelling a slow download
  2. Fixed UI freezing while waiting for slow downloads to cancel
  3. Improved performance of player UI (reduced number of redraws)
  4. Fixed status messages lingering until user input is processed
  5. Episode titles are now shown in the download menu, if available
  6. Download percentage completion will now only update periodically, rather than on every single data chunk processed, reducing thread contention and boosting download performance significantly
  7. The queue file will now be saved when SIGTERM or SIGINT are received. You will now not lose data by killing podbit from the terminal
  8. The queue file will also be periodically saved, or manually when "R" is pressed in the interface
  9. Fix "all your base"-level grammar in directory creation error message
  10. Fix a crash when multiple downloads fail in series or when attempting to cancel downloads which failed due to IO errors

At some point I will get working toward fixing my own issue with how episodes are loaded, stored and traversed, which should make the program a lot more deterministic and fast when working with loads of episodes.

Enjoy!

v3.0: UTF-8 and Performance

30 Jul 09:27
a934ef1
Compare
Choose a tag to compare

Podbit v3.0

Podbit v3 comes shipped with full Unicode support (UTF-8 encoded), with no hacky escape requirements or random failures. Some UIs (tables in particular) have been redesigned to fit the new UTF-8 model a little better.

This release also features a completely redesigned events system, which has caused a 600% reduction in CPU load on my machine (load avg from 12.5 to merely 2.1 - 3 at worst). This new system has allowed for the fixing of a few irritating bugs that were almost impossible to patch with the old system. Users can expect more stable playback handling and lower battery usage on this new version. And, finally, some nice visual improvements have been sprinkled throughout the program.

Changelog

  1. Swap out "libncurses" for "libncursesw", which supports UTF-8 encoding (or, really, whatever encoding you specified via your LC_* environment variables)
  2. Change all our UI code to use Unicode characters (runes) for length limits, splits and previews etc. This means that text will no longer distort at the edge of the terminal, especially when resized
  3. Fixed tables overspilling onto adjacent rows when UTF-8 characters are used
  4. Fixed a rare crash in rendering menus when UTF-8 is involved
  5. YoutubeDL downloads will no longer behave strangely on failure, instead correctly reporting that they failed
  6. Reduced redundant channels and channel copying, which should cause slightly lower memory footprint and CPU load
  7. Reduced sound system update timer from 200ms to 1s
  8. Reduced queue reload frequency from every 25s to every 60s
  9. Tables will now show text in column colors, rather than black and white with background highlights
  10. Prevent redundant screen redraws when idle and paused
  11. Ensure that the screen redraws when a download completes or changes status
  12. Ensure that tray messages do not linger longer than max message time when last in the queue

It should be noted that this release technically has a new dependency, as plain ncurses is no longer sufficient to run the program; it must now be built with wide character support (-lncursesw).

Enjoy!

v2.1: Unicode and performance

03 Jul 16:53
73e2470
Compare
Choose a tag to compare

Because podbit uses a portable version of ncurses, supporting unicode is, despite all the help from Go, very difficult. To "fix" most issues, podbit will now escape all displayed titles, replacing common unneeded unicode with safe, ASCII equivalents. You will not even likely notice the difference, but will still see the visual bugs fixed. This will not affect users of languages which use extended ASCII (european accents, etc).

From further research, I have determined that BSD support for ncursesw is good enough to justify swapping over to using UTF-8 natively, along with some more work on proper string slicing. In a future update, I may remove this band-aid fix and actually support unicode properly. For now, it will simply be escape from any text shown.

Changelog

  1. Fixed a rare crash/deadlock at startup when welcome message races with UI startup
  2. Performance improvements to player starting
  3. Cursor will now move down one row when playing/starting a download in most menus
  4. If an episode queued to play fails to download, it will no longer infinitely re-try to download itself
  5. Tables will no longer reset cursor to 0th position on resize
  6. Fixed a crash in very small terminal windows
  7. Fixed cursor becoming stuck at last entry when scrolling menus
  8. Performance improvement when playing an ongoing download
  9. Added "escaper", which will escape unwanted unicode text
  10. Removed support for patching with unicode support

v2.0.2: Bug fixes

22 Apr 22:56
7e7f741
Compare
Choose a tag to compare

Numerous small stability, security and quality-of-life fixes.

Changelog

  1. Fix several deadlocks as a result of erroneous download lock copying
  2. Greatly improve download performance using r/w mutexes
  3. Fix screen redraw bind. Previously had no effect. Now orders complete clear and redraw
  4. Show custom message when waiting for YouTube to re-encode video, rather than just "In progress" at 100%
  5. Remove several redundant usage of goroutines from legacy code. Improves performance
  6. Bunp Go version go 1.18 (mainly to use generics)
  7. Refactor out list calls to central embedded struct
  8. As a result of the above, fixed several small visual bugs involving scroll handling
  9. Fix incorrect underscroll calculation, causing visual mismatch and occasional crashes
  10. Fix crash when dequeueing waited download when queue has more than one download ongoing
  11. Outright prevent most cases of crashes with dequeueing (for some reason these bugs keep cropping up - hopefully not any more)
  12. Fix screen flickering when scrolling through table component

v2.0.1: Fix crash on download

08 Apr 21:30
be8b4a8
Compare
Choose a tag to compare

Fix a crash/deadlock on attempting to crash downloads using the new system.

Version 2.0: YouTube and generic podcasts support

04 Apr 22:15
aadb747
Compare
Choose a tag to compare

I have drafted a major release of podbit, as this release introduces both new major features, a complete feature rewrite and improvements of existing capabilities

Changelog

  1. Added support for downloading YouTube podcasts using youtube-dl or yt-dlp. Queue entries prefaced with a '+' will be downloaded using a youtube downloader tool. This means that these tools are now a soft dependency, not checked at compile time but required at runtime to download YouTube streams. Failure to install will simply result in YouTube downloads failing
  2. Completely refactored download system to utilise threads more effectively, decrease CPU usage and allow for more parallel downloads
  3. Downloads are now completely independent of each other and do not preempt each other when updating statistics in the central database of download entries

Final notes

This update may seem small to warrant a bump from 1.0 to 2.0, but an enormous amount of work has gone in under the hood to get this working. For me, this means that a lot of streams from many websites now have titles and metadata embedded correctly. This is a major advantage of using yt-dlp/youtube-dl.

It must be noted that these downloads will intentionally be ignored by podboat, as it cannot handle special characters at the beginning of a line. It will, however, throw out these entries, which may be mildly inconvenient.

Expect many more patch releases in the near future. This is likely to have introduced quite a few regressions.

Closes #3

Version 1.4: Visual spruce up and fix up

03 Apr 15:51
2e03397
Compare
Choose a tag to compare

Fix a couple of crashes and some weird UI behaviour. Some known issues are still present, such as scrolling on small-ish terminal surfaces (smaller than half the number of podcasts in cells). I will work on patches for these for v1.4.1

Changelog

  1. Properly format version number on startup
  2. Changed tray progress character to '-'
  3. Player will now unpause when a track is added and played to prevent unintuitive behaviour when track stops paused and a new one is added
  4. Made tray messages contrast with other text better
  5. Added a welcome message showing basic information (version, number of episodes, number of podcasts, time to startup)
  6. Added a message shown when attempting to pause a completed/failed download
  7. Fixed a regression in list scrolling calculations which assumes that scrolling only happens one line at a time (as used to be the case)
  8. Menu lists will no longer reset back to zero when resized. Instead, selection will scroll upward with width and height
  9. Fixed a crash when dequeueing a podcast which is waiting to be downloaded. Now, podcast will still be downloaded but download completion is ignored
  10. Increase robustness of queue system in a few small ways, fixing a couple of crashes/deadlocks in the process

Version 1.3.1: Directories bug fix

16 Jan 12:32
c856eff
Compare
Choose a tag to compare

Fix a small yet breaking issue which prevents loading if certain environment variables are unset or empty.

Changelog

  1. Fix detection of XDG_DATA_HOME
  2. Fix database location detection
  3. If XDG_DATA_HOME is empty or unset, fallback to the XDG suggested defaults

Fixes #1

Version 1.3: Automatic cache maintenance

15 Jan 20:43
230e02d
Compare
Choose a tag to compare

This release adds automatic management and deleting of old episodes from the cache to avoid a build up in disk usage for your podcasts. Episodes which have not been listened to for over three days (by default) will be deleted.

Changelog

  1. Add (optional) field to queue denoting the last play time of a podcast episode
  2. Add cleanup routine for cache to delete episodes older than the configured timeout (default: 3 days)
  3. Added a summary message in the console to show which episodes have been deleted

Despite the small changelog, this release does have quite a bit going on behind the scenes, so expect patch releases soon enough.

Version 1.2.3: Performance improvements + misc

15 Jan 10:34
ade9a1c
Compare
Choose a tag to compare

Improved redraw algorithm to not repaint unneeded parts of the screen. Reduces CPU usage significantly on some machines. Other miscellaneous improvements also documented below.

Changelog

  1. Increased redraw interval from 100ms to 1s unless a realtime UI component (downloads, player) is visible
  2. Fix some code branches failing to sleep their thread, resulting in high CPU usage
  3. Improve/add some messages for queue reloading and episode enqueueing
  4. Fix table scrolling. There is still a known issue when jumping with more than one element at a time
  5. Add message for empty queue instead of just a blank UI
  6. Fix height bound checking for components, hence eliminating overdraw and gaining some performance
  7. Add vim-like jump bindings using "g" and "G"
  8. Make long menu text get clipped from the end backward rather than from the start forward. This makes it easier to spot the difference between similar episode names ("S01-E01 - Whateverpodcastname" will show the last part of the name instead of the repetetive parts)
  9. Create the downloads directory if it does not exist instead of throwing an error and exiting
  10. Minor performance improvement to download startup
  11. Improve error message for invalid media files