Repository navigation
v0.5.0
0.5.0 (2026-10-03)
Features
- analysis: read and write the whole tag sheet and its cover through the safe copy (bd030ca)
- analysis: read more tags and write them through a synced copy (999b064)
- app: a tag worker and the tag-only pass for tracks with unread tags (e358e3b)
- app: build the Windows release as a GUI program without a console (a86dee7)
- app: list No output (silent) after the real audio systems (O27) (bd94f26)
- app: start again after Restart now (a16d8eb)
- app: the tag worker reads and writes whole tag sheets and loads covers (b5f385a)
- audio path audit and DSD output on bit-perfect devices (O25, O26, O27, O34) (8cf858b)
- backends: DoP and native DSD encoders and the DSD stream flag (O25) (281d789)
- backends: native DSD output through ALSA on Linux (O25) (00bba3a)
- decode: a thread priority module over thread-priority (O21) (79858fc)
- decode: raw DSD reading and the DSD rate of analysed files (O25) (528632f)
- engine: decoder threads above normal priority, the analysis pool low (O21) (50d4792)
- engine: DSD reaches bit-perfect devices as DoP or native DSD (O25) (9b77218)
- engine: DSD sources carry raw words beside their PCM conversion (O25) (96259e0)
- engine: seek and pause the player CUE (5476856)
- engine: the mixer copies DSD words and the renderer encodes DoP (O25) (deb70cd)
- model: add the use_cue_markers setting and Track::play_range (fabd331)
- model: allow stop after current in Single mode while the entry repeats (302d685)
- model: DSD output settings per bit-perfect device (O25) (7e60275)
- model: let players ignore cue-in and cue-out (1ec5a60)
- model: list the settings that wait for a restart (e2b009f)
- model: list what is on air (5748bbb)
- model: play the entry on air once more when it is set as next (352a1fb)
- model: players play the whole file when cue markers are off (7d0367c)
- model: replay the entry on air once and stop after current in Single mode for a repeating entry (15ffce0)
- model: ResetPlayed clears the played marks of a playlist (O22) (c601f9a)
- model: restore one settings section to its defaults (62ce785)
- model: rules for DSD reaching a device unchanged (O25) (7a34468)
- model: the table column list and its rules (O24) (fe39535)
- model: the tag sheet, its 36 fields, its cover and its pure rules (866ac15)
- model: track tag fields, ApplyTags and the tag edit rule (de29844)
- site: landing page with per-platform downloads (5907db4)
- site: project website, user guide online and screenshots (57a704c)
- track tooltip and tag editor with front cover (88c3cd1)
- ui: a Reset played button with a question (O22) (a2c8708)
- ui: a single click moves a running CUE to the clicked row (bfff0fc)
- ui: a tooltip with the tags, format and path on each table row (5530a72)
- ui: add a cartwall Stop all button and one icon table for transport actions (1f8df9e)
- ui: add a CUE window, per-entry notices and click-to-seek waveform (2ace796)
- ui: add a Stop all button with a count to the cartwall bar (ea87ea7)
- ui: add the CUE window with seek, pause, stop and load as next (a4b8c12)
- ui: add the Use cue-in and cue-out switch to Settings (1c42cf8)
- ui: an About button in the top bar (cc5402a)
- ui: ask before closing while audio is on air (2f84376)
- ui: click seeks on the waveform and a drag pans the zoomed view (d405831)
- ui: configurable track table columns, live resize, reset played and scroll to next (dbcd8b6)
- ui: confirm before closing while on air, About button, Wayland window buttons (2785473)
- ui: countdowns and the remote API follow the play range (4b77fcc)
- ui: dim the cue marks on the waveform while they are ignored (9126227)
- ui: DSD mode per bit-perfect device, the DSD badge and the muted notice (O25) (255ac10)
- ui: edit a track's tags and cover from the row menu, saved off the UI thread (052d14e)
- ui: hide the silent backend from the audio systems (4f540b9)
- ui: mark the playing row as next and allow Set as next on it (a72ac3c)
- ui: reorder, show and hide the table columns (O24) (b4e4e51)
- ui: restore defaults per settings section (e39690c)
- ui: settings restore defaults, fixed window and restart now (15bb1d1)
- ui: show a notice when the current entry repeats or stops after itself (2c386de)
- ui: show pending restarts and offer Restart now (56fb6f8)
- ui: show the name and version in the native title bar only (d60aa85)
- ui: shrink, cut and scroll the playlist tabs (ee2a454)
- ui: tables open scrolled to the next entry and keep their last rows reachable (O7) (3feee74)
- ui: the repeat and stop icons come before the title (O9) (7d3c8c7)
- ui: the table draws the configured columns and resizes them live (O16, O24) (84c4023)
Bug Fixes
- app: analyse a cart's track without a format even when the operator chose Later (M4) (040d229)
- app: analyse tracks for remote requests at low priority (940c851)
- app: do not read a track's tags again before its answer lands (73da479)
- app: log ignored arguments once logging is up (afad855)
- app: log why an on-demand analysis for the remote API failed (29b4634)
- app: mark a track's tags answered only when the command is queued (42e7ae6)
- app: report a Flatpak hand-off that times out as a failed restart (928bd7d)
- app: retry the instance lock so a restart probe is not an instance (5c9ae07)
- app: standard window buttons on Wayland (6f65f21)
- app: stop MIDI control and the engine before a restart (711f0cb)
- app: stop reading tags at shutdown but finish pending saves (3720da5)
- app: wait for the Flatpak handoff and trust only our own AppImage (ec184de)
- audit follow-ups (remote minors, missing-file tooltip, thread priority, long-file check) (6d78e76)
- backends: ALSA native DSD opens non-blocking and waits with a timeout (O25) (3012022)
- backends: clip and round the integer conversion (A7) (6609e74)
- backends: cpal refuses a DSD stream without exclusive access (O25) (3cc6389)
- decode: ask for a priority macOS accepts for decoder threads (570ef38)
- decode: replace non-finite samples with silence (A6) (de28367)
- docs: keep personal paths out of the guide screenshots (21f1509)
- engine: a lost DoP bus with DSD ended comes back as PCM (O25) (06044a0)
- engine: a native DSD stream sends DSD silence from its first period (O25) (5298e55)
- engine: declick follows the device rate; no early start when stopping a scheduled source (c6d5e6d)
- engine: DSD survives device loss and pending switches safely (O25) (9a13dba)
- engine: end carts, failed sources and early stops without a step (A3, A4, A5) (3ba3de2)
- engine: end cut fades when a forced rate change reopens sources (O25) (d73dfab)
- engine: initialise the bus mixer lock before the device callback uses it (7fc8e97)
- engine: keep DSD mode switches in order and pin their frame boundaries (27e98da)
- engine: keep logging off cpal's error callback (A8) (2ea0e05)
- engine: leave native DSD on a PCM rate the device takes (O25) (d0f570d)
- engine: no de-click dip at a gapless join (A2) (9cc3fa4)
- engine: ramp in a source that starts inside the audio (A1) (29ef66b)
- engine: release a held CUE when it is replaced or stopped (d9fcdbf)
- engine: report xruns and underruns (A8) (4dd22a8)
- engine: tolerate a file running past its stop frame at a join (A2) (97c0593)
- model: a cut field is never written and a removed cover is not reported as kept (f1cb03f)
- model: keep a self-next safe across failures, edits and restarts (e1ae400)
- model: let a self-next whose file goes missing give way to the next entry (880ce6c)
- model: preload an explicit next even when its file went missing (3936835)
- remote: work out the peaks of a track an earlier version analysed when asked (M5) (4aca256)
- site: build into a fresh output folder and replace only safe ones (61295c8)
- site: keep pull request checks out of the deploy queue and guard the output folder (4e88802)
- ui: a stale cover pick or a file drop never reaches the tag editor's session (0da4d7e)
- ui: always mark and label both ends of the meter scale (ebd309d)
- ui: clip track table cells to their column again (69c875f)
- ui: close guard follow-ups from the final review (5a2bfcc)
- ui: every settings section on the shared grid (856a53b)
- ui: fit the cartwall rows to the room there is before scrolling (2cb0522)
- ui: guard the close from logic and assert the cancel (06632d0)
- ui: keep a meter end labelled when it is the alignment level (f723f55)
- ui: keep a number typed in Settings > Remote when another section opens (M1) (840de6e)
- ui: keep every live time at a fixed width (4060039)
- ui: keep meter labels on their lines and inside the meter (ec41e0d)
- ui: keep the cartwall row gap at GAP so the grid does not overflow (d1936b6)
- ui: label both ends of every meter scale and make its lines visible (38a5793)
- ui: make the meter reference lines easier to see (b448272)
- ui: one size for the settings window (3b66604)
- ui: one title bar, a cartwall that fits, fixed-width times, scrolling playlist tabs and no Windows console (0c931c2)
- ui: settings rows share one label column (bc93dbb)
- ui: show the missing-file reason on the title cell too (c314ddb)
- ui: truncate long device names in the Outputs boxes (720c810)
Performance
- ui: count the outdated tracks once per model snapshot, not every frame (M6) (f9c658b)
Code Refactoring
- model: keep the recording date as the standard ISO 8601 tag (30fd64e)
- ui: draw transport icons through one glyphs module (3392ecf)
- ui: drop the unused configured argument of the backend list (087768f)
Documentation
- a truer README screenshot from a scripted scene (O29) (979d59e)
- add operator feedback O25–O30 (DSD output, audio path audit, no-output backend, guide screenshots, repo about) (45cee9d)
- add operator feedback O31–O36 (cartwall fit, one title bar, fixed-width times, meter overs, playlist tabs, no Windows console) (7fd3f19)
- add operator feedback O37–O38 (replay the current entry once, stop after current in Single mode) (9d45cf2)
- add the feedback 2 plan 7 for track tags (cc9d2e0)
- add the plan for the player notices and the CUE window (234486d)
- add the plan for turning cue markers off (01a9732)
- apply the maintainer's decisions to plan 2 (15239b6)
- audio path audit (O26) (68657a9)
- correct DSD details after review (O25) (3500fb6)
- correct when a CUE follows the next entry (7e32e8a)
- describe restore defaults and restart now (03d7e76)
- describe the close guard and the About button (0dac24f)
- describe the CUE window, per-entry notice and waveform drag (0faeac7)
- describe the restart shutdown and pending-restart details (34f49a2)
- describe the track table changes (scroll to next, icons, live resize, reset played, columns) (ca2415f)
- describe the track tooltip and the tag editor (de3165e)
- DSD output on bit-perfect devices (O25) (09288ae)
- final review minors of the audio path (O25) (bb8dfba)
- mark audit finding A1 fixed (2be7e33)
- mark audit finding A2 fixed (e256ab5)
- mark audit finding A8 fixed (7a38a61)
- mark audit findings A3, A4 and A5 fixed (6063d46)
- mark audit findings A6 and A7 fixed (243c150)
- mark plan 3 done in the feedback 2 roadmap (81eb808)
- mark plan 5 done (2555031)
- name the language carried by the restart exit (a74b0ee)
- peak hold, thread priority, cart analysis, remote peaks and the plan 9 notes (9a9e979)
- plan 10 — audio path (84102c7)
- plan 10 as built, audio path (956ff2b)
- plan 10 audit follow-ups (A1–A8 fix tasks, O34 left as is, A10 to the roadmap) (2c226ce)
- plan 11 — website and guide (0133b40)
- plan 11 as built (a4b2310)
- plan 12 — window and layout (04212ea)
- plan 13 — player rules (d5e6a1c)
- plan 13 as built, remote and MIDI follow the player rules (5baf720)
- plan 8, the track table (scroll to next, icons, live resize, reset played, columns) (5834748)
- plan 9, the audit follow-ups (remote minors, missing-file tooltip, thread priority, long-file check) (fe68249)
- plan the cartwall stop-all button and shared glyphs (acd174b)
- plan the meter scale fixes (ce706a8)
- plan the second round of operator feedback (de8d286)
- plan the second round of operator feedback (6a7991b)
- plan the settings window (feedback 2, plan 2) (f01b5b6)
- README and dialog wording for the close guard (026b627)
- rewrap the stop-all lines and mark plan 4 done (fbce15a)
- say what the players and the table show with cue markers off (4703782)
- show, change and remove the front cover in the plan 7 tag editor (e214b28)
- site: build the user guide with mdBook (8055656)
- specify the second round of operator feedback (cdf0df8)
- state when Remove and Esc work in the tag editor (2072d29)
- track tags keep the recording date, not a year (af7c1e1)
- ui: describe the meter scale marks and reference lines (19ad72f)
- ui: describe the Stop all button and the shared glyphs (704df6f)
- user: screenshots of every screen in the guide (O28) (5dc5d55)
- widen the plan 7 tag editor to the common tag fields (62d9606)
- window and layout notes, plan 12 as built, roadmap row 12 done (6862b1e)
- wrap the tag editor feature like its neighbours in the README (bf9e794)
- wrap the track tables bullet and name the Unknown artist placeholder (f230760)
Build System
- keep only line tables in dev builds and add a target pruning script (de96958)
Unsigned installers
- the Windows installer (SmartScreen warns about an unknown publisher)
- the macOS app (not signed or notarised: macOS asks before its first start)
How to open them: Getting started.