Releases: madeofpendletonwool/PinePods
Release list
Version 0.9.0 - Video, CarPlay, Android Auto, and a Whole New Look
Introducing PinePods 0.9.0 – one of the largest releases in the project's history, spanning over 220 commits across the entire stack. This one is packed: video podcast playback, a brand new native iOS audio engine with CarPlay, Android Auto support, a completely reworked web frontend, host following, and performance improvements you'll feel everywhere. There's a lot here, so grab a coffee.
⚠️ Important upgrade note (existing PostgreSQL users): New installs now default to PostgreSQL 18. If you're already running PinePods on Postgres 17, you cannot simply bump the image tag — a major Postgres version uses an incompatible on-disk format andpostgres:18will refuse to start against an older data directory. Your data is safe; it just needs a one-time upgrade. Use the new helper scriptdeployment/docker/upgrade-postgres.sh(it takes a backup first, then upgrades in place), or follow the PostgreSQL upgrade guide. Always back up first — the upgrade is one-way.
🎬 Video Podcast Support
- Full video playback – Video podcast feeds are now detected and played in a proper video player in the web app, with a polished, correctly-sized layout.
- Smart media detection – The backend now detects whether an episode is audio or video and handles each appropriately throughout the app.
🍏 Brand New iOS Audio Engine + CarPlay
- Native Swift audio player – iOS playback has been rebuilt from scratch as a true native audio layer. This means much better background audio, lock screen controls, and overall OS integration.
- Lock screen & Control Center – Now Playing metadata and artwork show on the lock screen and Control Center, with proper play/pause/skip from headphones and the lock screen.
- CarPlay – PinePods now registers as a CarPlay audio app with full Now Playing support, so you can browse and control playback right from your car's display.
- Lock screen duration fix – Fixed a bug where the lock screen could show a wildly inflated episode length.
🤖 Android Auto & Better Media Controls
- Android Auto support – Added media browser support so PinePods works in Android Auto and integrates cleanly with the system media controls.
- Media3 / ExoPlayer rewrite – The Android player was rewritten to handle both audio and video streams reliably, fixing a number of playback edge cases.
- Sleep timer – A new sleep selector widget was added alongside video playback on mobile.
⚡ Performance: Infinite Scroll & Pagination Everywhere
- Infinite scroll feed – Your main feed now loads episodes progressively as you scroll instead of all at once, dramatically reducing load time and memory use for large libraries.
- Pagination across the app – History, Queue, Saved, Playlists, Search, and Subscribed People all now load in pages rather than fetching everything up front — a huge win for big libraries on both web and mobile.
- Faster everything – The web app's internal state was decomposed so the UI re-renders far less, making context menus, notifications, and list scrolling noticeably snappier.
🎧 Queue, Auto-Play & Serial Podcasts
- Persistent queue panel – The queue is now a side panel visible from any page in the web app, with easier reorder/remove/clear controls.
- Serial podcasts – Mark a podcast as "serial" and episodes auto-advance in order — perfect for narrative shows.
- Auto-play next – Mobile now auto-plays the next episode when the current one finishes, and playlists continue playing through their episodes automatically.
- Multi-select – Episode checkboxes were added for bulk queue management.
⬇️ Auto-Downloads
- Per-podcast auto-download – Turn it on for a podcast and new episodes are automatically queued for download on refresh.
- Available everywhere – Configurable from both the web Download Settings and the mobile podcast detail screen.
⭐ Favorites & 🔗 Shared Links
- Podcast favorites – Mark any podcast as a favorite to surface it quickly, plus a favorite-categories section to spotlight the categories you care about. Favorites appear in the sidebar, podcast pages, and your stats.
- Shared episode links – Generate shareable links to individual episodes, then manage them all from a new Shared Links settings page — list active links, delete them, or extend their expiration.
🔍 Search Overhaul
- Rebuilt search – The search page was completely rebuilt with a modern, paginated interface and instant results (the old connection test that slowed things down is gone).
- Episode search – You can now search within your subscribed library for specific episodes, not just podcasts. The mobile episode search screen was rebuilt to match.
🎨 Custom Themes & a Fresh New Look
- Custom theme creator – A new settings page lets you build your own color themes from scratch.
- Complete visual redesign – Settings pages, the sidebar, episode lists, podcast and episode pages, and the audio player all got a thorough visual refresh, with new layout options for how episodes are displayed.
- Lighter & faster assets – Background images converted to WebP and the icon font slimmed down for quicker loads.
👤 Host Following & Discovery
- Live host feed – Follow a podcast host and get a single chronological feed that aggregates every show they appear in.
- Discover Hosts – A new discovery page surfaces top hosts, recently added hosts, and popular podcasts.
- Faster and more reliable – Host feeds are now cached intelligently so visiting a prolific host's feed is quick and survives a cache restart. Hosts also now appear right on the mobile home screen.
🔑 OIDC / Single Sign-On Improvements
- Proper mobile OIDC – Mobile login now uses a proper deep-link callback flow (
pinepods://) instead of the old in-app browser workaround, with correct PKCE handling. - Expanded web settings – The OIDC settings page was significantly expanded with more configuration options.
📁 Local Podcasts & Media
- Local podcast support – Add podcasts directly from a local directory on your server. PinePods browses the folder, detects audio files and cover art, and pulls metadata from tags.
- Mounted libraries – A local media directory (
/opt/pinepods/local-media) is now available for user-mounted podcast libraries, with a rescan option to pick up new files.
📴 Offline Action Queue (Mobile)
- Work offline, sync later – Actions you take while offline (play, download, queue, etc.) are now queued and automatically synced when your connection returns, with a screen to view and manage pending actions.
💾 Backup & Restore Overhaul
- Smoother restores – The server backup and restore flow was reworked, with a new restore overlay that shows live progress while a restore runs and a number of restore-path fixes under the hood.
- Scheduled backups – Backups can run automatically on a schedule.
🔒 Security
- SSRF protection – Server-side fetches of podcast artwork and episode media are now validated against a strict allowlist that blocks loopback, private, link-local, and cloud-metadata addresses — and re-checks on every redirect — so a malicious feed can't trick the server into reaching internal resources. (Thanks to @tonghuaroot for the contribution!)
- Hardened auth – Rate limiting was wired into sensitive auth endpoints, and several smaller logging/auth hardening fixes landed across the backend and GPodder API.
🔄 GPodder Sync
- More robust syncing – GPodder episode-action and subscription syncing were substantially reworked to be far more reliable, with better tracking of what's been added, removed, and played.
🌍 Internationalization
- 36 languages – PinePods now ships potential translations for 36 languages, with several brought close to complete this cycle. Anything untranslated falls back to English, so the UI is always usable.
- Want to help? – Please head over to Weblate and fill in any translations you can — it makes a real accessibility difference.
🐞 Fixes, Polish & Under the Hood
- Episode artwork preference – Episode artwork now correctly respects your "use podcast cover" setting instead of always falling back to per-episode art.
- Fully documented API – The entire backend API is now documented via OpenAPI, with interactive docs available at
/api/docs. - Cleaner, leaner backend – Significant dead-code cleanup across the Rust API.
- Smoother Docker – The container startup was rewritten for proper non-root execution (no more recursive permission fixes on every boot) and is friendlier to NFS/read-only mounts.
- Countless smaller fixes to playback, downloads, navigation, and layout across both web and mobile.
Thank you, as always, to the incredible PinePods community. 0.9.0 is a genuinely massive step forward — video, CarPlay, Android Auto, host following, a faster and better-looking app, and a more secure, better-documented backend. With a release this big, expect a few rough edges here and there; please test, report anything you find, and share your feedback. It directly shapes where PinePods goes next.
As always, full release notes and downloads can be found on the releases page.
Thanks to our Contributors
- @holysoles – Helm chart external database secret support + Bitnami image deprecation workaround
- @deanrock – Horust upgrade fixing a memory leak
- @dmfrey – KV store reconnection fix
- @rudism – Accept/User-Agent headers for episode downloads
- @DarthGibblet – F...
Version 0.8.2 - Internationalization and Your Requests, Answered
Introducing PinePods 0.8.2 – This relatively large update implements and fixes up quite a few user requested features. My goal throughout this has been to clear up as many open issues as possible.
🌍 Web App Improvements
- Translations Added – The PinePods web app now supports translations! The UI dynamically adjusts based on language settings, paving the way for full multilingual support in future releases. If you choose a language other than English currently you'll likely find it's still English or mostly English. This is due to the translation work that's now needed to actually implement. Please head here if you're multi-lingual and willing to help out the project. Thanks in advance!
- Account Settings Enhancements – Dropdown menus now pre-populate with current values in the account settings menu, making it much clearer when updating settings.
- Podcast Page Sorting – Sorting preferences are now stored on a per-podcast basis. Each podcast remembers your preferred episode sort order, improving navigation and consistency across sessions.
- Individual Episode Downloads – Episodes can now be downloaded individually from the
/episodepage for more control. There's a download button next to the share button. - Optional Podcast Covers – Users can now toggle the use of podcast cover art across the app for a more personalized layout experience. This setting always uses the podcast art rather than episode specific artwork when episodes are shown in a list.
- Episode Time Inconsistencies could result it playbar UI Issues – Thanks to @kestrel-x86 for fixing a UI bug where episodes could potentially be more than 100% complete if the actual run time was longer than what the feed displayed. @kestrel-x86 went above and beyond and ensured that the Pinepods DB would be updated upon playback if a time inconsistency was found during playback.
🔐 OIDC & Authentication Updates
- OIDC Setup on Startup – You can now configure OIDC right from the start, simplifying first-time setup and integration with external identity providers. This also allows you to skip the process of having a user that can login with a password for added security. Variable names can be found here
- New OIDC Endpoints – Added endpoints to edit and delete OIDC configurations directly from the interface.
- Redis/Valkey Authentication – Optional Password support authentication added for Redis and Valkey backends for optional improved security and external valkey/redis servers. The password variable can be found here
- Better Error Handling – More descriptive and actionable errors if required environment variables or configuration values are missing.
⚙️ Backend & Performance Enhancements
- Episode Addition Moved to Background – Adding new podcasts now offloads episode processing to a background task. This makes podcast subscriptions much faster while episodes populate asynchronously.
- HTTP Request Notifications – Added support for external HTTP-based notifications, compatible with Telegram, and other webhooks or custom HTTP integrations.
- Podcast Merge Options – You can now merge podcasts manually when premium feeds for a given podcast exist, keeping your library clean and organized. When merged, a podcast will no longer show up in the podcast page and will instead appear in the feed of the parent podcast. This merge option can be found in the Edit Podcast page in a podcast's settings.
- Podcast Edit Options – You can now manually edit podcast details. Helpful if you want to manually override a podcast's name, feed url etc. Can be found in a particular podcast's settings page.
- Podcast Index Matching – Added the ability to manually search for or enter a Podcast Index ID to correctly associate your podcast with its global metadata entry. Helpful in case the auto search doesn't find the result.
- Fixed Release Dates for Un-Added Podcasts – Non-added podcasts will now properly show their original release dates instead of defaulting to the current time.
- yt-dlp Fixes – Fixed issues with yt-dlp so that youtube episodes will again download.
🧠 Smarter Playback & Completion Logic
- GPodder Completion Fix – Fixed an issue where episodes that were played exactly to their length wouldn’t be marked complete.
- Auto-Complete Threshold Improvements – The historical completion logic now correctly works and will apply retroactively, marking older episodes as complete when appropriate based on your selected setting
🧩 Playlist & Data Handling
- Fully Dynamic Playlists – The playlist system has been completely rebuilt for real-time updates. Episodes will now show up in playlists immediately rather than waiting for a sync cycle when they become relevant for a given playlist.
- Duplicate Episode Fix – Fixed an issue that occasionally created duplicate episodes when metadata changed.
- RSS Feed Validation – Verified and corrected handling of downloaded URLs for RSS feeds to ensure episodes return correct download links consistently.
✅ Stability and Polish
This release is all about refinement — fixing inconsistencies, improving speed, and making the experience more reliable. Many background systems have been streamlined for better responsiveness and fault tolerance, especially around episode addition and completion tracking.
Reminder: Making a call out to the community to please help if you can with translations. If you can help out please head over to weblate and fill out any translations that you can! This is certainly a big accessibility step for the app. More of the Pinepods clients will soon follow, but for now only the web app supports translations. Stay tuned for the mobile apps too!
Thanks as always to the PinePods community! 0.8.2 is another big step forward toward a rock-solid, fully featured podcast ecosystem. Keep testing, reporting, and sharing your feedback — it directly shapes what PinePods becomes next.
Version 0.8.1 Squaring away a couple bugs
Introducing PinePods 0.8.1 – Naturally, after releasing the largest update yet a few kind users were quick to point out a couple bugs. This release is small but mighty and takes care of a couple of those annoyances
📱 Bug fixes
- Partial Data Issues – Takes care of an annoying bug where sometimes really large queries would get split and send only partial data.
- Gpodder Improvments – An issue was found when thoussands of episode actions exist antennapod would eventually just time out and fail to sync. I have massively improved DB indexing and fixed this. Additionally, a couple minor bugs around device creation have been fixed when using external gpodder servers.
- Smart Playlist Fixes – There was an endpoint missed with the API was re-written to delete playlists. This should now be included that playlist deletion should be back to working great. Addtionally, podcast filtering wasn't working. This has also been fixed.
- Podcast Page Play Issues – An issue was found on the web side where episodes wouldn't play on the episode layout/podcast page. This was due to a previous change to the frontend. Should be fixed up now and episodes should play fine.
Thanks again to the amazing PinePods community. This release is quick but is likely to fix up any issues you may have noticed since the big upgrade. As usual, please message if you notice any remaining issues. There's github issues, the Pinepods Feedback form, or old style email. They will all result in me seeing it.
Version 0.8.0 Mobile apps and massive perfomance bumps!
Introducing PinePods 0.8.0 – The absolute biggest Pinepods release to date. Pinepods mobile clients are officially released! Additionally the backend api has gotten a complete rewrite in rust!
📱 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 along with open stores such as f-droid and izzyondroid
The android apk will be attached to the github release. As well as released to the Google Play Store, f-droid, and izzyondroid Shortly after the 0.8.0 release. I need to get this release out in order to get them on the android stores fully.
Links:
🦀 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
🔧 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
🐞 General App Fixes and Improvments
- Better Youtube Support – The youtube search api is now embeded in the standard Pinepods Search api. This makes searching Youtube much faster and more consistent.
- Multi-Select Episodes – On the page for any given podcast you can now select and take actions on any given number of episodes. This allows you to mark all episodes of a given podcast as complete in one fell swoop. Arrows also appear on the episodes allowing you to mark all episodes newer or older than a particular episode.
- Playlist Limits – System Playlists are now limited to a max of 1000 episodes. This will take the most relevant 1000 for the playlist.
- Playlist Fixes - Also fixed an issue with the Almost Complete playlist where the completed percentage wasn't working correctly.
- Category Fixes - Categories throughout the app have been improved. Sometimes they would previously show as a strange looking vector. This will no longer occur.
- Premium Feeds - Premium feeds should now be fully functional everywhere.
- Backup/Restore Database - The Backup and Restore functionality has been 100% totally rebuilt. This should fix some issues that it previously had with actually restoring. There's also an option to schedule backups now. So that they run on a regular basis. The restore option will automtically see these backups as options to restore from.
- Subscribed People Fixes - The functionality around subscribed people has gotten some major fixes as well. This should fix numerous bugs related to people subscription
- Match Podcast Index IDs - There's a new option in settings to match a podcast to it's podcast index counterpart. Having this ID correct will allow for more consistent host following.
- Auto Complete Options - There's also been an option added to playback settings in the settings area to auto complete an episode if it gets to a certain amount of seconds to the end of it. For example, you can set it to 30 seconds and if an episode is within 30 seconds of the end it will automatically mark it complete.
- Authenciation options added to NTFY Notifications - The NTFY notification settings now support username and passwords or authentication tokens. These can be skipped entirely still if you have no auth.
- Additional OIDC Settings - Experimental name claim settings added to to OIDC setup area. Name, email, user, roles claim options. As well as admin and user roles have all been added.
🕸️ Website Rebuild
- The Pinepods Website has gotten a complete revamp! It's looking much nicer!
- Many more docs have been written as well. There's documentation for just about every option in Pinepods. If you find something missing please let me know!
Thanks again to the amazing PinePods community. This release marks a real turning point for Pinepods. At this point we capable of fitting into just about anyone's daily podcast needs from a feature standpoint. As always, please test and report anything you catch regardless of whether you're using the mobile apps or the web client. Any issue discovered is more then welcome. This is a huge update, and I would expect some issues here and there.
New Contributors
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_statsendpoint 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_statsendpoint 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.comand 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.comand 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 🎧🚀