Releases
v1.0.0
Compare
Sorry, something went wrong.
No results found
Changelog
69fdf9a Initial commit
3668c40 Merge branch '44-de-duplicate-duration-formatting-and-episode-to-item-mapping' into 'main'
26f378d Merge branch 'feat-app-logo' into 'main'
cc24c78 Merge branch 'feat-github-goreleaser' into 'main'
808e178 Merge branch 'fix-details-minimum-height' into 'main'
3d4bd43 Merge branch 'fix-player-pane' into 'main'
d65758a Merge branch 'fix-queue-player-order' into 'main'
8903396 Merge branch 'immediate-markers-padded-player' into 'main'
74c4290 Merge branch 'issue-10-library' into 'main'
3a5a6a1 Merge branch 'issue-11-player-ui' into 'main'
5bfaa30 Merge branch 'issue-12-discovery' into 'main'
a49e679 Merge branch 'issue-12-discovery-ui' into 'main'
6bf1a2f Merge branch 'issue-13-artwork' into 'main'
05071c9 Merge branch 'issue-13-artwork-ui' into 'main'
7a4af91 Merge branch 'issue-14-visualization' into 'main'
bdeded1 Merge branch 'issue-15-mpris' into 'main'
9f89cca Merge branch 'issue-16-macos-media' into 'main'
dcb9ebe Merge branch 'issue-17-validation' into 'main'
efdb860 Merge branch 'issue-19-next-live' into 'main'
b65e964 Merge branch 'issue-2-ci-gates' into 'main'
b254581 Merge branch 'issue-20-playback-stack' into 'main'
78abc6c Merge branch 'issue-21-unsubscribed-play' into 'main'
2c3e48c Merge branch 'issue-22-latest-queue' into 'main'
e01fa13 Merge branch 'issue-23-discovery-entry' into 'main'
0a493ee Merge branch 'issue-23-discovery-entry' into issue-24-podcast-index
be0a9ea Merge branch 'issue-24-podcast-index' into 'main'
c5fe56a Merge branch 'issue-25-seeking' into 'main'
6b7c9d0 Merge branch 'issue-26-icons' into 'main'
5b64662 Merge branch 'issue-27-details-keys' into 'main'
66bc97a Merge branch 'issue-28-progress' into 'main'
8b2ca76 Merge branch 'issue-29-theming' into 'main'
4b5f1b9 Merge branch 'issue-3-profile' into 'main'
6a7b1a4 Merge branch 'issue-30-settings' into 'main'
ed83c7a Merge branch 'issue-31-headers' into 'main'
0a7ab59 Merge branch 'issue-32-columns' into 'main'
96e8731 Merge branch 'issue-33-player' into 'main'
b1ac195 Merge branch 'issue-34-bottom-hints' into 'main'
9973a27 Merge branch 'issue-35-column-headers' into 'main'
3d75944 Merge branch 'issue-36-navigation-scroll' into 'main'
56eb40f Merge branch 'issue-37-popup-inputs' into 'main'
5ef0a92 Merge branch 'issue-38-player-hud' into 'main'
15a230d Merge branch 'issue-39-library-destinations' into 'main'
b7078c6 Merge branch 'issue-39-library-sections' into 'main'
6193a1a Merge branch 'issue-39-navigation' into 'main'
da1a5cd Merge branch 'issue-39-not-started' into 'main'
0f7b705 Merge branch 'issue-39-predictable-playback' into 'main'
f0982c1 Merge branch 'issue-39-queue-undo' into 'main'
967f286 Merge branch 'issue-39-up-next' into 'main'
5ca286a Merge branch 'issue-4-storage' into 'main'
c1e23de Merge branch 'issue-40-search-url' into 'main'
a1b1ed7 Merge branch 'issue-43-hairline-spectrum' into 'main'
40d606e Merge branch 'issue-45-unify-dialogs' into 'main'
d6fd35f Merge branch 'issue-48-episode-card' into 'main'
d79e366 Merge branch 'issue-49-compact-player' into 'main'
174e24c Merge branch 'issue-5-mpv' into 'main'
8bf5613 Merge branch 'issue-50-details-actions' into 'main'
492b65d Merge branch 'issue-51-obvious-playback' into 'main'
bd4fa4b Merge branch 'issue-6-playback' into 'main'
b25b540 Merge branch 'issue-7-control' into 'main'
85072fd Merge branch 'issue-8-tui' into 'main'
0f9967c Merge branch 'issue-9-feeds' into 'main'
66bc145 Merge branch 'main' of https://gitlab.com/susamn/podmutt into issue-15-mpris
fbf200f Merge branch 'main' of https://gitlab.com/susamn/podmutt into issue-16-macos-media
f458ae3 Merge branch 'readable-player-columns-logo' into 'main'
9c82f73 Merge branch 'sonar-main' into 'main'
4c1e6a1 Merge branch 'tight-player-identity-and-markers' into 'main'
6b9098a Merge branch 'wider-queue-shared-player' into 'main'
e0ad1d3 Merge main and preserve MPRIS warnings alongside queue and progress updates
d06d179 feat(app): calculate percentage remains in stackItem
d92567d feat(app): connect settings theme switching and live config update
6d74703 feat(app): populate structured input dialog fields in search and preview
a9f60dd feat(app): populate structured item metadata and queued indicators
d20de29 feat(app): propagate version to UI shell for top-right header display
d614c01 feat(app): remove inline hints from podcast panel in library and discovery
2fa7869 feat(artwork): embed existing app logo as asynchronous cover fallback
c88cc9e feat(assets): add application logo and packaging assets for Linux and macOS
128dca2 feat(details): bind contextual actions to inspected identity
438d14e feat(details): share a compact episode card across sources
1a86029 feat(discovery): accept feed and website URLs in search
afceeb0 feat(library): distinguish Not started from Continue listening
5dd7060 feat(library): expose explicit episode destinations
c3d6ec3 feat(playback): choose newest pending publication independently of queue order
d56de88 feat(playback): correlate snapshots with monotonic publication revisions
4d90223 feat(player): reserve a compact transport strip below Details
2adadc7 feat(profile): add SetTheme to persist theme selection in config.toml
e3e90e1 feat(queue): remove immediately with actor-owned undo
5f2c42b feat(theme): add palette definition, file parser, presets, and config setting
83591ae feat(ui): add CLIAMP spectrum visualizer engine
0c65035 feat(ui): add Unicode box headers with panel shortcut tags and version
ea846cd feat(ui): add columnar rendering for episodes and queue with channel colors
ede035d feat(ui): add contextual bottom hint bar with highlighted key styling
7a90234 feat(ui): add interactive settings overlay with theme picker and summary
fbb5300 feat(ui): add styled input box rendering with cursor and centered modal overlay
fd1b306 feat(ui): add table column headers and Remains column in Queue
8c82bf1 feat(ui): compact player identity and share exact list column budgets
e8eecfa feat(ui): connect theme to model and handle SIGUSR1 reload
27ef83c feat(ui): dedicate Tab to panel switching, add h/l column scroll and ,/. seek
f874341 feat(ui): prioritize full channel identity and add responsive player padding
dc101a3 feat(ui): quietly separate library views from subscriptions
854aea9 feat(ui): redesign Player pane with modern Cyberpunk HUD layout and full-length slider
e789284 feat(ui): replace heavy visualizer with calm 1px hairline scrolling spectrum
877148d feat(ui): separate Now playing from pending Up next
5d7e9c7 feat(ui): separate library selection, visible queue and current playback
d9d863e feat(ui): share bottom player space and restore queue remaining percentages
754dbc3 feat(ui): update player pane with colored transport glyphs and cyan block bar
bc1389c feat(ui): use open/back navigation and list-only Tab cycling
576bb33 feat: add bounded mpv JSON IPC requests and event delivery
6e394fe feat: add bounded signed Podcast Index search without credential forwarding
c5b324e feat: add cached library views and explicit subscription edits
d021043 feat: add independent coalesced playback state watchers
b73a446 feat: add play pause stop next and JSON status CLI commands
65d3f93 feat: add responsive Bubble Tea panes and centralized Vim navigation
2bc7e84 feat: add reusable Unicode icons with explicit Nerd Font and text modes
0340f58 feat: animate a labelled decorative player pattern with cancelable clock
726c287 feat: attach optional Linux media controls to the foreground session
1cbe085 feat: bound private Unix session-bus authentication
c4dd3f7 feat: cache explicit preview selections without subscribing
fea0da8 feat: compose library panels with stable selections and safe details
3d3d8c7 feat: connect Apple discovery, previews, and subscribed-library search to the TUI
b82552f feat: connect cached podcast tabs and asynchronous feed updates
7d8ea1f feat: connect selected playback, queue editing, and progress to the library UI
e4d4c25 feat: edit live queues by identity and toggle selected playback atomically
fcabfdd feat: export foreground MPRIS actions, properties, and signals
5955ebf feat: expose 15-second Player seeks and native macOS skip commands
a0bf65f feat: expose bounded private running-instance controls
93aad43 feat: expose discovery labels, contextual hints, and mode filter reset
5cc487f feat: expose explicit Index scope with RSS identity reuse and documented access terms
682d8fe feat: expose source-labelled search chart and read-only RSS entry points
d18badd feat: expose stable episode and mpv playlist entry lookups
7231c13 feat: hold exclusive TUI profile ownership with flock
375b0aa feat: initialize private SQLite storage with transactional migrations
ecde20a feat: integrate asynchronous artwork with bounded Kitty and ASCII detail columns
c160e0a feat: isolate bounded no-key podcast show search with quota and cache controls
4465b71 feat: launch the TUI under exclusive foreground profile ownership
2bc8642 feat: load Apple top podcast charts through a bounded batch lookup
6aad73f feat: load TOML defaults and resolve private profile paths
f3d4828 feat: load bounded artwork with episode/show fallback and a byte-capped LRU
1db9b1e feat: map playback snapshots to a limited MPRIS property model
fd9a69b feat: normalize RSS, RDF, and Atom podcast metadata
5890307 feat: own foreground playback services and share keyboard actions
a7e8cc6 feat: own mpv through an inherited private socketpair
28a413f feat: persist atomic latest-episode arrival receipts and queue appends
554213d feat: persist current-first playback stack transitions atomically
377d260 feat: persist feed metadata and stable episode identities
621e209 feat: play and enqueue discovery episodes without subscription
cbcfb63 feat: preserve a moving playback clock across queue-only publications
c8b5ee7 feat: preserve playback selection and confirmation dialogs across UI updates
14bd036 feat: preview feeds read-only and subscribe without refetching
7785919 feat: prototype public macOS MediaPlayer bridge with shared actor lifecycle
7e6d495 feat: reconcile subscribed arrivals on startup subscription and refresh
b0a5fac feat: refresh cached feeds with bounded conditional HTTP requests
def0440 feat: render bounded real-time Player progress with remaining time
c07f5a6 feat: resolve website RSS alternates with shared feed transport bounds
7159a9c feat: save playback checkpoints and ordered queue atomically
41a3795 feat: schedule cancellable foreground feed refresh cycles
c4760e7 feat: scroll focused Details with vim-style navigation
b71e959 feat: search cached subscribed episode titles and descriptions
9e25eeb feat: seek through the actor with pause-safe checkpoints and stale-position guards
d8102a3 feat: serialize playback, resume checkpoints, and explicit queue advancement
2ae3a10 feat: show playable stack rows with show and resume details
1f8507f fix(details): retain pinned title in warning-constrained layouts
b8c41c3 fix(ui): keep current audio visible when history is marked complete
aa05a0d fix(ui): keep player identity adjacent and tighten episode markers
a4fc63d fix(ui): place Queue above Now playing in wide layouts
5c316bf fix(ui): refresh queue markers from current audio and play replies
2794645 fix(ui): separate current transport from episode selection
a3f6437 fix: checkpoint and reap mpv before canceling its process lifetime
70eb9fb fix: clean up macOS handlers automatically on cancellation and framework failure
b333f43 fix: close mpv on playback failures even after request cancellation
68589d6 fix: count coverage blocks once across package test runs
e4d616d fix: discard pinned episode details when returning to list navigation
1e01c13 fix: do not retain a failed player factory result
101f3b5 fix: enumerate first-party packages for coverage instrumentation
f9c571d fix: keep empty refresh status accurate
864d3f8 fix: keep provider-independent preview and navigation labels
26e355c fix: refresh Next capabilities from live queue availability
1d81dc4 fix: reject invalid negative SQLite schema versions
7c4f631 fix: reserve fixed details and player halves with independent transport controls
54e921e fix: retain provider identity in compact loading states
439fa1c fix: show loading empty and failed searches inside compact result panes
21e8f78 fix: use valid observed media duration for runtime progress bounds
93bc849 perf: reuse cached library rows while navigating and typing
b368baf refactor(app): de-duplicate episode item presentation across library and preview
d0043cb refactor(ui): consolidate duration formatting and fix details hour bug
334b885 refactor(ui): extract two-column table row formatting helper
a017a66 refactor(ui): unify modal dialog rendering and consolidate text input editing
3858512 refactor: place shared search icon on filter help without coupling discovery entries
b0d0dab refactor: share HTTP feed URL validation and relative resolution
fdb9e60 refactor: share bounded feed fetching with add and preview workflows
e73d7fc refactor: share stored episode identity with preview selection resolution
d0a93d8 test(app): cover browse-pause and offline restart lifecycle
e2bbe39 test(details): protect action targeting and preview lifecycle
bfc38a0 test(details): verify consistent sources and stable inspection
17f476c test(library): cover destination scope and offline continuation
36de07a test(playback): cover newest priority and atomic two-release arrivals
1f0a724 test(player): cover compact layout and inspection lifecycle
1dccf2b test(queue): exercise delete and undo through offline lifecycle
c982c49 test(queue): protect undo across live edits and advancement
861a060 test(queue): verify pending-only editing and restart lifecycle
11422df test(ui): cover browsing navigation and viewport paging
84a30db test(ui): cover section navigation and compact paging
You can’t perform that action at this time.