Skip to content

Releases: kazimics/podara

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 27 Jul 16:53

v1.0.2 - 2026-07-28

Changed

  • Release builds now verify that the Git tag matches packageVersion, run the complete test suite, and smoke-test the packaged application before producing installers
  • CI now runs the complete desktop test suite instead of maintaining an explicit test allowlist

Fixed

  • OPML import now rejects oversized documents, DOCTYPE declarations, external entities, external DTDs, and entity-expansion payloads
  • Podcast feed fetching now falls back to a conditional GET when HEAD is rejected or fails, and limits response bodies to 10 MiB
  • Download paths now use stable feed and episode hashes, preventing same-title overwrites, directory traversal, invalid Windows device names, and title changes breaking paused downloads
  • Podcast creation, subscription refresh, cache metadata updates, and queue replacement now use database transactions so partial failures roll back cleanly
  • JDBC statements and result sets are now closed deterministically across all database DAOs
  • System window close requests now respect saved close behavior and persist the playback session before quitting
  • Queue removal, paused-download resume, safe audio extensions, subscription metadata refresh, and RSS cache handling received additional correctness fixes

Tests

  • Added regression coverage for malicious and oversized OPML, HEAD fallback, feed-size limits, download path safety, same-title downloads, and transactional rollback
  • Replaced external MP3 dependencies in download tests with deterministic local HTTP servers

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 13 Jul 07:48

v1.0.1 — 2026-07-13

Fixed

  • Queue episode cards now fall back to the podcast artwork when an episode has no cover image, consistent with the
    episode list behavior (applies to playback initiated from PodcastDetail, History, Favorites, and Downloads)
  • Add Podcast dialog now shows a centered loading spinner with "Adding…" while the RSS feed is being fetched, and only
    closes on success

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 09:47

Podara 1.0.0

We’re excited to announce the first stable release of Podara, a desktop podcast player for Windows.

Highlights

Refined desktop experience

  • Introduced a cohesive metallic visual system with improved hover, pressed, border, and accent states across
    controls.
  • Redesigned Subscriptions, History, Favorites, and Downloads with consistent episode cards, spacing, empty states,
    selection toolbars, and actions.
  • Improved playback queue and full-player controls with clearer hierarchy and consistent pill-style actions.
  • Standardized dropdown menus, toolbar actions, Settings controls, and in-app dialogs.
  • Added a persistent Add Podcast action on the Subscriptions page, so RSS feeds can be added even when
    subscriptions already exist.

Playback and library

  • Episode favorites are available throughout the app, with a dedicated Favorites page.
  • Playback is context-aware: playing from History, Favorites, Podcast Details, or Downloads continues through that
    screen’s episode list.
  • Queue actions include visual feedback when episodes are added.
  • Playback position, queue, speed, and volume are persisted between sessions.
  • System tray controls and configurable close behavior let audio continue while the main window is hidden.

Fixes

  • Fixed the currently playing item highlight in History.
  • Fixed paused and active download transitions to keep task state, progress, and actions consistent.
  • Fixed Recent Update subscription sorting to use each podcast’s latest episode date.
  • Fixed episodes played from Favorites not being recorded in listening history.
  • Improved download-resume handling when a server ignores range requests.
  • Preserved queue metadata when removing the currently playing item.
  • Improved podcast metadata refresh while preserving local user state.
  • Ensured system window-close requests follow the configured close behavior and save the playback session before
    quitting.

Installation

Download the installer asset for your system:

  • MSI — suitable for managed or enterprise installations.
  • EXE — standard Windows installer.

Thank you for using Podara.

v1.0.0-alpha5

v1.0.0-alpha5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Jul 03:43

v1.0.0-alpha5

🎯 Episode Favorites

Save episodes you love with the new Favorites feature — your personal collection, always at your fingertips.

  • Favorites sidebar page — a dedicated Favorites page matching the History layout, with search, date grouping, and clear all
  • Favorite buttons everywhere — heart-shaped toggle buttons on PodcastDetailScreen, History, Downloads, FullPlayer (current episode & recommendations), and QueueDrawer
  • Persistent storage — favorites survive app restarts via a new podcastFavorite table with snapshot metadata, so episodes stay visible even if the source feed is gone
  • Shared UI component — EpisodeActionIconButton and FavoriteEpisodeButton for consistent 36dp circular hover interaction across all screens

🔄 Context-Aware Playback Queue

The queue now follows your context, just like modern music players:

  • History → tap play → the entire history list becomes your queue
  • Favorites → tap play → the entire favorites list becomes your queue
  • Podcast Detail → tap play → the full episode list becomes your queue
  • Downloads → tap a completed download → all downloaded episodes become your queue
  • Add to Queue still works — manually added items appear after the context items
  • Discover "Play Latest" adds to the current queue without replacing it

✨ Visual Feedback

  • Fly-away animation on the Add to Queue button — a translucent playlist icon flies downward-right with fade-out, confirming the episode was added

🖼️ Cover Art Fix

  • Downloads completed row playback now loads episode artwork from the database, fixing missing cover art in MiniPlayer and FullPlayer

📋 Queue Drawer Consolidation

  • FullPlayer's queue button now opens the same QueueDrawer as MiniPlayer (slides from right with scrim overlay), instead of a separate internal drawer that couldn't close via scrim click

🧪 Tests

  • FavoriteDaoTest — insert, replace, delete, toggle, clear, snapshot fallback, persistence across database reopen
  • FavoritesScreenTest — empty state, title/search, hidden clear action when empty, saved episode rendering
  • Updated History, Downloads, and App GUI tests for the new signatures

v1.0.0-alpha4

v1.0.0-alpha4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Jul 10:48

[1.0.0-alpha4] - 2026-07-08

Added

  • Real-time seek preview — dragging the progress slider in MiniPlayer and FullPlayer now shows the scrub position
    live in the time display, instead of only revealing the position after releasing the drag
  • Playback progress persistence — app now saves playback position every 30 seconds and on quit; reopening resumes
    from where you left off. Queue and playback state (speed, volume) are also persisted across sessions

Fixed

  • FullPlayer episode details missing after queue switch — collapsing the FullPlayer, selecting a different episode
    from the playback queue (MiniPlayer's Queue button → QueueDrawer), then re-expanding the FullPlayer would show no
    description, publish date, or duration metadata. Three-part fix:
    • MediaPlayerState.play() now stores episodeId on QueueItem when adding to the queue, so playFromQueue()
      retrieves it later
    • When play() finds an existing URL in the queue, it updates the stale QueueItem.episodeId (handles
      cross-session DB restore where pre-fix items had null ids)
    • restoreSession() falls back to session.currentEpisodeId when the queue item's episodeId is null
  • Auto-play-next not firing after track completion — three-part fix:
    • keep-open=yes mpv option prevents mpv from unloading the file at EOF, ensuring eof-reached=yes is detectable
      on the next poll tick
    • Replaced pendingPlay flag with a timestamp-based guard (3s window) that reliably distinguishes false start-up
      transitions from real EOF, while also preventing the pause handler on the same poll tick from overriding the state
      just set by playNext()
    • Added PAUSED→PLAYING resume detection in the pause handler so that isPlaying is restored after the brief
      pause=yes during initial file loading, ensuring the EOF handler can fire later
  • Play/Pause button icon stuck after track ends — caused by the same root issue: EOF was never detected so
    isPlaying never transitioned to false; fixed by the three-part fix above

Changed

  • lastPlayStartMs timestamp recorded in MediaPlayerState.play() for discriminating stale vs real state transitions

v1.0.0-alpha3

v1.0.0-alpha3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Jul 09:58

rename project to Podara

v1.0.0-alpha2

v1.0.0-alpha2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Jul 05:11

v1.0.0-alpha2 — System Tray & Close Behavior

Added

  • System tray icon — persistent tray icon with app logo while the app is running
  • Tray context menu — Show/Hide Podium, Play/Pause, Previous, Next, Quit (dark themed, CJK supported)
  • Close behavior dialog — on first close, asks whether to quit or minimize to tray; "Remember my choice" checkbox
    persists the selection
  • Close behavior setting — change anytime in Settings → Close Behavior: "Ask me every time" / "Quit the app" /
    "Minimize to tray"

Changed

  • Close button no longer exits immediately — checks remembered action or shows the dialog
  • Window can be hidden to tray while playback continues

Technical

  • Uses Swing JDialog for the tray menu (JPopupMenu and AWT PopupMenu have multi-monitor and CJK rendering issues on
    Windows)
  • Multi-monitor aware — menu appears on the correct display
  • 15 new i18n keys (EN/ZH) for tray and close behavior

v1.0.0-alpha

v1.0.0-alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Jul 12:31

podium-windows — First public alpha release.

A modern, open-source Podcast app for Windows, built with Kotlin + Compose Multiplatform.


Installation

Download the installer below:

Format Description
podium-1.0.0.msi Windows Installer — registers in Add/Remove Programs
podium-1.0.0.exe Portable executable — run directly, no installation needed

Features

  • 🎨 Custom UI — Immersive undecorated window, custom title bar, sidebar navigation, gold gradient buttons
  • 📥 Download & offline management — pause/resume downloads, storage stats, single/batch delete, per-task speed
    limit
  • 🔍 Discover podcasts — browse featured cards and trending charts (powered by Apple Podcasts)
  • ▶️ Playback controls — play/pause, seek, speed adjustment, 10s skip, libmpv audio engine
  • ⏰ Sleep timer — auto-pause after a set duration
  • 📋 Queue management — cover art, drag-to-reorder with real-time animation
  • 📤 OPML import/export — transfer subscriptions between apps
  • 📜 Listening history — track what you've played
  • 📂 Subscription management — unsubscribe individually or in batch, sort by name / update / listen time
  • 🌐 Multi-language — English / Simplified Chinese

Tech Stack

Layer Technology
UI Compose Multiplatform + Material 3
Audio libmpv (via JNA)
Image Loading Coil 3
Database JDBC SQLite
Networking Ktor
RSS Parser rssparser

Known Issues

  • Some non-standard RSS feeds may fail to parse
  • Apple Podcasts discovery may be restricted in certain regions
  • This is an alpha release — you may encounter edge-case bugs

Feedback

Please report issues on GitHub Issues.