Releases: madeofpendletonwool/PinePods
Version 0.8.0rc1: Complete Rust API Rebuild and Native Mobile App
Version 0.8.0rc1: Complete Rust API Rebuild
Introducing PinePods 0.8.0-rc1 – The largest Pinepods upgrade ever. Featuring a complete rebuild of the API in Rust, elimination of Python dependencies, and an official Native Mobile app built with Flutter.
🦀 Complete Rust API Transformation
- Python Elimination – All Python dependencies have been completely removed from the container, resulting in a dramatically smaller and more efficient deployment
- Horust Process Management – Switched from supervisor to Horust for robust, lightweight process supervision and startup management. This is part of removing the python dependency and also utilizes more great rust based dependancies
- Internal Task Scheduler – Background processes now run directly within the Rust API service using
tokio-cron-scheduler
, eliminating the Celery dependency entirely - Enhanced Reliability – Background tasks are more reliable with better error handling, automatic retries, and integrated logging
- Streamlined Container – Significantly reduced container size and complexity with the removal of Python runtime and associated dependencies
📱 Official Native Mobile App
- Flutter-Based App – Brand new official mobile app built with Flutter for iOS and Android
- Cross-Platform Synchronization – Seamless sync between mobile, web, and other Pinepods clients (More to come on other very soon)
- Offline Support – Download episodes for offline listening with intelligent storage management
- Native Mobile Features – Background playback, lock screen controls, notification management, and mobile-optimized UI
- Professional Distribution – Will be available on both iOS App Store and Google Play Store
🔧 Infrastructure & Reliability Improvements
- Horust Service Management – All services now managed by Horust with proper process supervision, automatic restarts, and clean shutdown handling
- Integrated Background Processing – Podcast refresh, nightly maintenance, and cleanup tasks now run as scheduled jobs within the main Rust API service
- Database Operation Reliability – Improved server backup and restore operations with better error handling and validation
- Timezone Configuration – Runtime timezone configuration without container rebuilds, properly affecting all time-sensitive operations
- Simplified Deployment – Reduced container complexity and startup time with streamlined process management
🏗️ Development & Performance
- Pure Rust API – Complete rewrite of the Python API in Rust for improved performance, memory efficiency, and type safety
- Eliminated Dependencies – Removed Python runtime, Celery worker system, and associated packages from the container
- Better Resource Usage – Significantly reduced memory footprint and CPU usage with native Rust performance
- Improved Error Handling – Better error messages, logging, and debugging capabilities throughout the system
- Type Safety – Enhanced reliability through Rust's type system and memory safety guarantees
This release represents a fundamental transformation of PinePods architecture, moving from a mixed Python/Rust codebase to a pure Rust implementation with a professional mobile application, resulting in better performance, reliability, and user experience across all platforms.
Intitial Android Release - 0.7.10
This release is in preparation for 0.8.0
Version 0.7.9: Visual Polish, Playback Tweaks, and Stability Upgrades
Version 0.7.9rc1: Visual Polish, Playback Tweaks, and Stability Upgrades
Introducing PinePods 0.7.9 – a release focused on cleaning up loose ends, improving UI across devices, and delivering key backend improvements. From polished playback speed settings to major reliability boosts in how we handle migrations and feed generation.
🧠 Smarter Backend, Cleaner Sync
- New GPodder Info Display – The
get_stats
endpoint now includes detailed GPodder sync information. This also now shows up on the User Stats page, giving better insight into sync state. - Custom Server Timezone Support – You can now configure the container's timezone directly from the UI. This affects logs, feed generation times, and GPodder sync behavior. Docs on setting this are in the readme
- Lots of Bug Fixes and improvments to Gpodder Sync – This update improves some issues found in the previous one regarding the new internal gpodder sync process
- Unique RSS Feed Keys – Every generated feed now includes a unique key to make external syncs more robust and secure. There are some minor issues to clean up with rss deployment but at this point is should really extremely consistent to share rss feeds from Pinepods to external apps
🖼️ UI & Experience Upgrades
- Lots of frontend visual improvments - Issues with the searching and filtering and have been fixed up to look nicer and work way better with mobile and desktop layouts.
- Filtering Options added to Downloads - It's much easier to navigate and find episodes when you have many downloaded episodes now!
- Long Press Works on iOS – Long finger press interactions are now properly implemented and functional on iOS devices.
- Tiny Screen Improvements – Devices with ultra-small displays (old phones, embedded screens) now render significantly better with proper scaling and spacing.
- YouTube Search Page Redesign – The YouTube search results page has been updated to match the new podcast search interface for a unified look and feel.
- Improved Search Dropdown – Enhanced styling and better device compatibility across the board.
- Downloads Layout Overhaul – The downloads screen has been cleaned up and fixed for alignment issues and inconsistent rendering.
🔊 Playback Polish
- Playback Speed Settings – Speed settings can now be set on a per podcast basis in that specific podcast settings area. Additionally global playback speed settings have been added to the user settings page. This will effect ALL podcasts. If a podcast has custom playback settings the podcast specific setting will take priority.
🛠️ Under-the-Hood Fixes
- OPML Import Fixes – Addressed several bugs affecting bulk OPML import reliability.
- Helm Chart Fixes – Resolved key issues in the Kubernetes Helm chart for better stability in managed deployments. - Thanks MaienM!
- Migration System Rebuild – The database migration system has been entirely rewritten to improve startup reliability and prevent corruption in edge cases.
Thanks again to the amazing PinePods community. This one’s a solid step toward stability and polish. As always, please test and report anything you catch. If you notice anything strange without layouts after the update to and update your browser cache.
New Contributors
Version 0.7.9rc1: Visual Polish, Playback Tweaks, and Stability Upgrades
Version 0.7.9rc1: Visual Polish, Playback Tweaks, and Stability Upgrades
Introducing PinePods 0.7.9rc1 – a release focused on cleaning up loose ends, improving UI across devices, and delivering key backend improvements. From polished playback speed settings to major reliability boosts in how we handle migrations and feed generation.
As with all release candidates, please note that there may be bugs, and the container is still x86-only for now. Expect a stable 0.7.9 release once testing wraps up.
Pull this release with:
docker pull madeofpendletonwool/pinepods:0.7.9rc1
or
docker pull madeofpendletonwool/pinepods:nightly
🧠 Smarter Backend, Cleaner Sync
- New GPodder Info Display – The
get_stats
endpoint now includes detailed GPodder sync information. This also now shows up on the User Stats page, giving better insight into sync state. - Custom Server Timezone Support – You can now configure the container's timezone directly from the UI. This affects logs, feed generation times, and GPodder sync behavior. Docs on setting this are in the readme
- Unique RSS Feed Keys – Every generated feed now includes a unique key to make external syncs more robust and secure. Feel free to share them now. There's no security hole.
🖼️ UI & Experience Upgrades
- Long Press Works on iOS – Long finger press interactions are now properly implemented and functional on iOS devices.
- Tiny Screen Improvements – Devices with ultra-small displays (old phones, embedded screens) now render significantly better with proper scaling and spacing.
- YouTube Search Page Redesign – The YouTube search results page has been updated to match the new podcast search interface for a unified look and feel.
- Improved Search Dropdown – Enhanced styling and better device compatibility across the board.
- Downloads Layout Overhaul – The downloads screen has been cleaned up and fixed for alignment issues and inconsistent rendering.
🔊 Playback Polish
- Playback Speed Settings – Speed settings can now be set on a per podcast basis in that specific podcast settings area. Additionally global playback speed settings have been added to the user settings page. This will effect ALL podcasts. If a podcast has custom playback settings the podcast specific setting will take priority.
🛠️ Under-the-Hood Fixes
- OPML Import Fixes – Addressed several bugs affecting bulk OPML import reliability.
- Helm Chart Fixes – Resolved key issues in the Kubernetes Helm chart for better stability in managed deployments.
- Migration System Rebuild – The database migration system has been entirely rewritten to improve startup reliability and prevent corruption in edge cases.
🐞 Known Issues Being Investigated Before 0.7.9 Final:
- Some small screen UI elements need further tuning (particularly buttons overlapping on 320px width screens).
Thanks again to the amazing PinePods community. This one’s a solid step toward stability and polish. As always, please test and report anything you catch. The full 0.7.9 will release in just a couple days.
Version 0.7.8: GPodder Sync Overhaul, Duration Detection, Description Timestamps
Version 0.7.8: GPodder Sync Overhaul, Duration Detection, Description Timestamps
I'm excited to announce PinePods 0.7.8, a major update with core backend improvements, UI polish, and long-awaited quality-of-life features. Most notably, this release includes a full rebuild of the GPodder sync system, a new backend setting to control YouTube episode retention, and smarter episode duration handling for a smoother playback experience.
🔄 GPodder Sync Reimagined
- Full GPodder Sync Rebuild – The entire GPodder sync process has been rebuilt from scratch. You now get device management, manual sync options, and session-based authentication working cleanly.
- Built-in GPodder API Server – No more separate GPodder server needed! PinePods can act as its own GPodder sync server. Just enable it from the podcast sync area in settings and connect apps (like AntennaPod) directly to PinePods. This server is built in Golang for speed and reliability. It can handle thousands of podcasts and will automatically use the Pinepods database you configure from the start.
Example: Usehttps://my-pinepods-server.com
and your PinePods credentials for user and password when connecting via external apps.
Documentation around gpodder and how the different options work can be found here
🛠️ Backend & Core Features
- Description Timestamps – Podcasts with timestamps in their descriptions will now appear as links. As long as that episode is playing you'll be able to jump between the times.
- YouTube Feed Retention Settings – You can now control how many days of YouTube podcast episodes are retained. Defaults to 30. Accessible per channel in the YouTube settings panel.
- Improved Image Caching – Episode and podcast images now load faster and persist better when scrolling, with smarter caching logic.
- Accurate MP3 Duration Detection – Episode durations are now parsed before playback, even if the feed doesn’t specify them—no more 0-minute placeholders.
- Refresh Status Display – Refreshing podcasts using the refresh button on home now shows a proper status in the Notification Center, giving you better insight into background tasks.
- YouTube Episode Count Fix – Adding a new YouTube channel now correctly increments the podcast's episode count.
🧹 Bug Fixes & Enhancements
- Episode Queue Removal Fixed – Episodes can now reliably be removed from the queue without issues.
- Chapters Modal UX – Tapping outside the chapters modal now properly dismisses it.
- Play Button Spacing Fix – The play button on the shared episodes page now has proper spacing across devices.
- Episode Count Bubbles – The podcast grid now shows a small badge with the number of available episodes for each podcast.
- Improved Podcast Deletion – Deleting podcasts no longer shows a false error message. The operation now runs cleanly on all databases.
📱 Android & UI Improvements
- Mobile UI Scaling – Layouts and touch targets have been adjusted for better usability on phones and smaller screens.
- Visual Polish – Numerous subtle interface tweaks and consistency fixes throughout the app.
📄 Documentation & Community
- Helm Repo URL Fixed – The Helm chart link in the README has been corrected for easier installation.
- Special thanks to @bbirney – For their excellent work helping implement backend support for YouTube episode feed cutoff, which is now a fully supported and configurable feature in PinePods.
As always, thank you for using PinePods! Your feedback and support are what drive this project forward. If you encounter any new issues or have feature suggestions, don’t hesitate to open an issue or drop a note.
Enjoy the update and happy listening 🎧🚀
Version 0.7.8rc1: GPodder Sync Overhaul, Queue Fixes, Description Timestamps
Version 0.7.8rc1: GPodder Sync Overhaul, Queue Fixes, and New Features
I'm excited to announce PinePods 0.7.8rc1, a release candidate packed with foundational improvements and big new features—most notably a complete rebuild of the GPodder sync system with an internal Gpodder sync process now embeded right into Pinepods. We’re also introducing quality-of-life enhancements across the board, from episode handling to UI scaling on mobile, alongside fixes to some long-standing issues.
Please note that since this is a release candidate, the Docker container for 0.7.8rc1 is currently x86-only. There ARE known bugs in this version. It's almost there but there are a few issues to sort out yet. Update at your own risk.
Pull this release with:
docker pull madeofpendletonwool/pinepods:0.7.8rc1
🔄 GPodder Sync Reimagined
- Full GPodder Sync Rebuild – The entire GPodder sync process has been rebuilt from scratch. You now get device management, manual sync options, and session-based authentication working cleanly.
- Built-in GPodder API Server – No more separate GPodder server needed! PinePods can act as its own GPodder sync server. Just enable it from the podcast sync area in settings and connect apps (like AntennaPod) directly to PinePods. This server is built in Golang for speed and reliability. It can handle thousands of podcasts and will automatically use the Pinepods database you configure from the start.
Example: Usehttps://my-pinepods-server.com
and your PinePods credentials for user and password when connecting via external apps.
🛠️ Core Fixes and Features
- Description Timestamps – Podcasts with timestamps in their descriptions will now appear as links. As long as that episode is playing you'll be able to jump between the times.
- Episode Queue Removal Fixed – You can now properly remove episodes from your queue again.
- Improved Episode Duration Handling – For podcasts missing episode times in their feeds, we now approximate duration based on MP3 file size (instead of showing 0).
- Episode Count Bubble – The grid podcast page now displays the episode count in a small badge on each podcast.
- YouTube Download Retention Setting – You can now adjust how many days to keep YouTube audio downloads—there's a new setting for this in each Youtube channel settings area. It defaults to 30.
- Chapters Modal Usability – Clicking outside the chapters modal now properly closes it.
📱 Android & UI Improvements
- Better Android Scaling – General improvements to item scaling and usability on phone screens.
- Various Styling Fixes – Numerous small visual polish items across the interface.
- Improved Podcast Removal Handling – Removing a podcast no longer incorrectly throws an error (it always worked behind the scenes, but now no error shows).
📄 Documentation & Miscellaneous
- Helm Repo URL Fixed – The Helm repo URL in the README has been corrected.
- Special thanks to @bbirney – Huge thanks to @bbirney for their work on the Feed Cutoff assistance on the backend! Their contribution makes it possible to control how many days of YouTube podcast episodes are retained. This feature is now integrated into the app with an easy-to-use frontend option.
🚧 Bugs I am currently aware of that will be fixed prior to 0.7.8 proper:
- PostgreSQL Podcast Removals – Podcast removal fails with internal pod sync enabled (works fine on MySQL).
- Image Caching Issue – Images always reload when scrolling past them; caching isn’t working properly.
- Crash on MP3 Duration Mismatch – If the actual MP3 time exceeds the expected feed episode time (often due to injected ads), a hard crash occurs.
Thank you to all PinePods users and testers! Your feedback has made these improvements possible. As always, feel free to reach out or create an issue if you spot anything new. Happy podcasting! Look forward to the full 0.7.8 release coming in the next couple days after a bit of testing 🎧🚀
Version 0.7.7: Quick Fix to a table casing on startup
This is a quick fix to take care of a table casing issue that could happen on startup when the table didn't already exist.
Version 0.7.6: Revamped Notification System, Download Status, and Stability Improvements
Version 0.7.6: Revamped Notification System, Download Status, and Stability Improvements
I'm excited to announce PinePods 0.7.6, fully showing the power of the new notification system, things like episode downloads will now display percentages as they download in a brand new alert component that's been added. A worker system for background tasks that can be easily monitored on a per user basis so we can now get status of tasks as they execute was added back in version 0.7.4. Now we're starting to see what can be done with it. At this point I am confident Pinepods is the ultimate podcast archival tool. In the near future I will continue to migrate tasks over to this new system which will allow for even greater visibility into exactly what the server is doing. Think monitoring status of Nextcloud sync tasks etc.
In addition this update further improves some findings after the previous 0.7.4 update as it was a big one!
📣 Brand New Alert System
- Comprehensive Alert System - This update introduces a brand new Alert System Component that can be opened to monitor status of background tasks. Downloads are the primary use-case at the moment
- Enhanced Notification Settings - This update makes much needed adjustments to info messages and improves the look, and makes them less intrusive. They now show up on a timer as a small toast pop up. All tied into the new alert system.
🎵 Playlist Enhancements
- Playlist Deletion - Easily remove playlists you no longer need
- Improved Playlist Creation - Fixed specific issues with playlist creation flow
🔄 NextCloud Integration
- NextCloud Removal Feature - Added ability to delete NextCloud connections when no longer needed
🔒 Authentication Refinements
- Finalized OIDC Error Handling - More informative error messages and better recovery
- Smoother Authentication Flow - Addressed edge cases in the authentication process
- Login Issues - Took care of an issue where logging in a second time could sometimes cause an account not to be recognized
🎬 YouTube Support Improvements
- Enhanced YouTube Download Task - Implemented better download handling for YouTube videos
- Improved Video Processing - More reliable download and playback of YouTube content (and standard podcast content too for that matter)
💻 Technical Improvements
- Migration Fixes - Resolved DB upgrade issues when upgrading from version 0.7.3 to 0.7.5 or 0.7.4 to 0.7.5
- Package Updates - Updated a few dependencies
- Date Types with Downloads - Fixed an issue where a date type with a / would break downloads
🖌️ UI Refinements
- Download Page Context Menu - Fixed context menu functionality on the downloads page
- Adjusted Login Screen - Improved placement and consistency of login screen components
- General UI Polish - Various small improvements throughout the interface
Thank you to all users and contributors for your continued support and feedback! Please feel free to reach out or create an issue if you have ideas for improving PinePods. Happy podcasting! 🎧🚀
🚧 Pending Tasks
- OIDC Documentation is almost done. I needed to address this login issue with it before I could finish it up. Coming very soon.
Version 0.7.5: Quick Postgres Fix
Merge pull request #453 from madeofpendletonwool/bug-fix-7.4 pushing minor postgres fixes
Version 0.7.4: Smart Playlists, Homepage, OIDC Logins, and Notifications
I'm excited to announce Pinepods 0.7.4, a significant update focused on adding user requested features! Auto Generating and endlessly customizable smart playlists, options for OIDC logins, a brand new homepage, and notifications when your favorite shows release!
🎵 Smart Playlists
- Smart Playlists - Create dynamic playlists based on custom criteria
- Specific Podcast Selection - Choose exactly which podcasts to include in your playlists
- Intelligent Playlist Refresh - Automatically keeps your playlists updated when you add or remove podcasts
🏠 Improved Homepage Experience
- New Homepage Component - Fresh, intuitive interface for better navigation
- Configurable Start Page - Choose which view greets you when opening Pinepods
- Experimental Finger-Hold Context Button - Quick access to additional options
- Enhanced Episode States - Clearly see saved, in-progress, and completed episodes
🔒 Authentication Enhancements
- OIDC login functionality
- Confirmed GitHub and Google login compatibility
- New component on the settings page to setup your OIDC compatible server
📣 Notification Support
- New Notification Setup Component in Settings
- Notifications can be sent to either a (ntfy server)[https://docs.ntfy.sh/] or (gotify server)[https://gotify.net/]. This allows you to send notifications directly to your phone about new episodes when they are released.
- Setup Notifications for specific shows on each podcast page settings area.
🛠️ Technical Improvements
- Added image caching throughout the app (should improve load times when jumping between pages significantly)
- Added fallback options for failed image loads to proxy via the server if your browser fails to load them
- Introduced a worker system for background tasks using Celery. More tasks throughout Pinepods will be pushed off to this in the near future to improve performance overall but for now this fixes an issue where downloading episodes could prevent the server from responding.
🐛 Bug Fixes
- Fixed issue where chapters sometimes didn't load due to incorrect headers
- Fixed filter button size consistency on Podcast Page
- Corrected user addition functionality in MySQL environments
📱 UI Refinements
- Better podcast tile adaptation for large screens
- Adjusted Downloads page for more efficient use of space and overall look is more polished
- Added filtering options for incomplete/complete episodes on Podcast page
Thank you to all users and contributors for your continued support! Please feel free to reach out or create an issue if you have ideas for improving Pinepods! We're nearing what I'm considering a feature-complete v1 at this point.
Happy podcasting! 🎧🚀
🚧 Pending Tasks
- The flatpak isn't updated quite yet. That will be coming in the next few hours. Their servers take a bit to update
- I'm currently building out some documentation that goes along with this release primarily around setting up different options for OIDC logins. Coming soon!