pine v0.5.0
This release expands search, separates playback sessions by installation, and
hardens playback, cache, and local-secret handling.
What's New
- Fuzzy search everywhere — command-palette search now tolerates partial and
approximate matches across books, podcasts, and series. - Podcast episode search — individual podcast episodes now appear in global
search and can be played directly from the result. - In-place list filtering — press
/on the home, library, series, or
series-list screen to filter the visible list by title, author, podcast, or
series context. Pressescto clear the filter before navigating back. - Per-install playback identity — Pine generates a stable
device_idand
editabledevice_name, preventing Audiobookshelf from merging playback
sessions from different machines. Pine also reports its installed version to
Audiobookshelf. - Editable default configuration — Pine creates
config.tomlon first run,
including its default theme values and playback identity.
Reliability and Correctness
- Stale mpv launch events can no longer interfere with a newer playback session.
- Seek commands now run through the Bubble Tea update loop, and a missing mpv
seek confirmation no longer freezes position tracking. - Pine stops playback, closes the active session, and clears queue and sleep
state before returning to login after a401 Unauthorizedresponse. - mpv startup fails promptly when the subprocess exits before IPC is available.
- MPRIS playback state is synchronized for safe concurrent D-Bus access.
- Cancelled cache fills can be retried by other callers instead of spreading a
stale cancellation result. - Search snapshots are invalidated after cache clearing, metadata updates, and
item or episode deletion. - Books belonging to multiple series now use the selected series sequence when
sorted.
Security and Storage
- Pine restricts its SQLite database to owner-only
0600permissions. - Native mpv IPC sockets now live in an owner-only
0700directory, protecting
stream URLs and authorization headers from other local users. - Default-account updates are transactional, ensuring only one account remains
selected as default.
Pine continues to store the Audiobookshelf token directly in the protected local
SQLite database; no desktop keychain is required.
Upgrade Notes
Existing config.toml files are migrated in place with device_name and
device_id while preserving unrelated settings. Keep device_id stable for one
installation. When copying the config to another machine, remove or replace that
value so Pine generates a separate identity.
Installation
go install github.com/Thelost77/pine@v0.5.0Requirements
- Go 1.25+
- mpv installed and available in
PATH - An Audiobookshelf server