Skip to content

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 18:00
982c88b

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.