Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 22:48
c31aba4

0.6.0 (2026-10-08)

Features

  • analysis: follow the configured limits while running (fb08eb9)
  • analysis: take new cover and tag limits while running (7f466d5)
  • app: add nine AI-translated European languages (6932087)
  • app: add the Basque translation (bb9a22e)
  • app: add the Catalan translation (8554987)
  • app: add the Dutch translation (0b62057)
  • app: add the French translation (c6e575a)
  • app: add the Galician translation (dc19d3c)
  • app: add the German translation (3a78c3b)
  • app: add the Italian translation (2c7f9fc)
  • app: add the Polish translation (ef45d20)
  • app: add the Portuguese translation (8966ff3)
  • app: follow the configured crash report cap (066dce4)
  • app: prepare the interface for more European languages (ffe3b5f)
  • app: read each new track's length from its file header (bb9866e)
  • decode: the length a file's header declares (7255747)
  • engine: apply a device change once nothing sounds on it (2c936b8)
  • engine: apply output changes while running when nothing they affect plays (de03623)
  • engine: keep the running settings on a refusal, the new ones for an absent device (edbf23f)
  • engine: leave DSD before a device change (099437e)
  • engine: let the mixer take new tuning while it runs (25e34d2)
  • engine: move a player or the cartwall to another output while running (5afaa5e)
  • engine: open each device at its own rate and buffer (38c47eb)
  • engine: report placements and keep each bus's running settings (2ac0898)
  • engine: report placements and take new settings while running (f8dc6d2)
  • engine: switch the audio system while running (5c3f335)
  • engine: take new settings and tuning while running (109db4f)
  • model: a seek on a stopped player sets where Play starts (770e8c4)
  • model: a track's length from its file header until its analysis (f38fd81)
  • model: add the live settings state and device settings (3dff01f)
  • model: apply output changes now on request (14ef7b3)
  • model: forget a device's own settings when it leaves every route (e9cbaf7)
  • model: give each output device its own rate and buffer (0d3e13d)
  • model: keep a stopped player's pending start across a restart (d97d457)
  • model: keep what the engine reports about its outputs (28ccb88)
  • model: list the output changes the engine does not run yet (37a11e8)
  • model: rules for applying restart settings live (102baeb)
  • model: say why a DSD mode is not offered (2d6fcc4)
  • model: say why a holder or a device is busy (da5d1a4)
  • model: send output changes as soon as nothing they affect plays (c717b49)
  • play before analysis and choose where Play starts (feedback 4, plan 2) (50cc55c)
  • remote: seek a stopped player to choose where Play starts (cb1a810)
  • site: open the guide in the browser's language (69a8d41)
  • site: open the guide in the browser's language with localized screenshots (c0a24eb)
  • ui: a muted hourglass marks a track whose analysis is pending (ca3a78c)
  • ui: a Re-analyse item in the track row menu (f53eb9b)
  • ui: basic and advanced outputs settings with per-device rate and buffer (94d2090)
  • ui: click a stopped player's waveform to choose where Play starts (72627d1)
  • ui: countdown and seek before the analysis; an unknown total reads a dash (d2757fc)
  • ui: describe pending output changes and what they wait for (e20c8d4)
  • ui: give each device its rate, buffer and DSD row (37ac076)
  • ui: give the CUE window view its markers and badges (ed73536)
  • ui: label the digital meter scale more densely when it is tall (5ae7361)
  • ui: lay the meter out with a ruler on each side (7afb8b5)
  • ui: pure geometry for the drop index of a dragged entry (2f92fea)
  • ui: scroll a playlist table while dragging over it (38ed70b)
  • ui: scroll a table while dragging and label the digital meter more densely (482bbb8)
  • ui: show pending settings and apply them now instead of restarting (8437d58)
  • ui: show pending settings and apply them now instead of restarting (7136a8b)
  • ui: split Audio outputs into Basic and Advanced (5d712cd)
  • ui: the CUE window gets the player's waveform panel (7207aae)
  • ui: the CUE window gets the player's waveform panel (feedback 4, plan 3) (fe4801f)

Bug Fixes

  • analysis: key the cache by the limits the analysis used (9e2af8c)
  • app: a file found gone is reported missing once (ba346dc)
  • app: a header length the conductor could not queue is sent later (6c1b06c)
  • app: a Re-analyse urgent mark is used once (fa86629)
  • app: an unreadable file is analysed again when its size or time changes (d554a13)
  • app: an unreadable file is stamped with the stat its analysis read (6d55fde)
  • app: correct Dutch and Basque terms (4e945c3)
  • app: drop header lengths that come after the analysis (35c9d33)
  • app: drop header lengths that come after the analysis (ab414fe)
  • app: let an unknown configured language follow the system (6a33302)
  • apply the maintainer's answers to operator feedback 4 (2dcce95)
  • app: show the count in every plural variant (a88fa89)
  • decode: a track's header length only when the file stores it (7c3aa08)
  • decode: decode a VBR MPEG stream without a length frame to its end (37581be)
  • engine: a busy device no longer blacklists a sample rate (b1f06a5)
  • engine: a CUE seek no longer lights the player's meter (031bf71)
  • engine: a reopened device is back only at its first block (f682cdd)
  • engine: apply a device override only to a routed device (4f2c890)
  • engine: ask for a device's own buffer exactly (bcb269d)
  • engine: bound the busy-retry wait per reopen and never on a sounding bus (4beb549)
  • engine: fall back only when a device refuses its configuration (21a1a34)
  • engine: fall back to the global buffer when a device refuses its own (c3c4235)
  • engine: fall back to the global rate when a device's own does not open (0f2fda8)
  • engine: keep a pre-listen and a Main tail safe when routes move (a6938e9)
  • model: a player whose Cue route equals Main has no CUE (ca9b94c)
  • model: ask for a restart only for routed devices' own values (951d10b)
  • model: do not record a refusal for a device nobody uses (91a7349)
  • model: forget unrouted devices' settings only on load (9e65a1b)
  • model: raise the restart notice only when a device opens differently (d1c382b)
  • operator feedback 4 follow-ups (c2cbafa)
  • operator feedback batch 3 (CUE, busy devices, output flapping) (bf7031c)
  • remote: accept a seek before the cue-in on a stopped player (56e9126)
  • remote: accept a stopped seek when the end is unknown (cd44cb4)
  • remote: refuse a stopped seek that rule 3a would not store (719021d)
  • site: check hyphens and source commits, keep the anchor in the language menu (b856bf9)
  • store: report a saved pending start that does not parse (540ca25)
  • ui: a paused CUE keeps the zoom the operator set (3be61fa)
  • ui: a window over the table hides the drop target under it (8375f83)
  • ui: CUE window "Set as next" button (bb96704)
  • ui: double-click sets the playing entry as next (43e84f1)
  • ui: draw the meter's scale on two rulers, nothing over the bars (28750c9)
  • ui: files dropped over a table but on no target are not inserted (e21a410)
  • ui: flag stale device values and show the mode that really plays (f5289bd)
  • ui: keep a dropped entry on its line after a wheel during a drag (d4f3cd5)
  • ui: narrow the meter's rulers and clear their labels from the ticks (a65658e)
  • ui: open the Apply now confirmation in the frame the panel asks for it (6567116)
  • ui: operator feedback 4, plan 1 (pending flag, popup, drop line, CUE pause, re-analyse) (34eb325)
  • ui: rule the meter's minor ticks evenly, on round steps (d57bff4)
  • ui: say why the CUE is dimmed when Cue equals Main (9061b99)
  • ui: set a row as next on a double-click egui counts as a triple (879adaa)
  • ui: show the path once in the row popup of an unplayable track (46067df)
  • ui: space the digital meter's added labels evenly (262208c)
  • ui: the CUE window's Pause blinks while the CUE is paused (061cac3)
  • ui: the drop line is drawn at the row boundary under the pointer (2af9cd8)
  • ui: the meter's scale on two rulers (feedback 4, plan 4) (a424c9d)
  • ui: the row popup shows the file error first and has a fixed width (08f248c)

Performance

  • ui: build only the chosen meter labels (a2cc4e5)

Code Refactoring

  • app: remove the application restart (5f665c9)
  • model: remove RestartReason and restart_pending (7ec77fd)
  • ui: derive the file reason from the file state (e9a086c)
  • ui: extract marker_fractions from the player view (af5946b)
  • ui: key the waveform view state by WaveKey (a38af9b)
  • ui: move the player's waveform into a shared panel (8d85cf7)

Documentation

  • a new CUE opens on the whole file once its window has closed (12b3e93)
  • analysis: separate the effect of each analysis version (5b6282e)
  • describe the Basic and Advanced outputs settings (77fa93a)
  • describe the override scope, fallback and DSD display rules (0273ddf)
  • engine: say how a new tuning affects a volume ramp in progress (ae89af9)
  • feedback 4 plan 2 as built (7fbfd7a)
  • implementation plans for operator feedback 4 (1af26af)
  • link one guide that is available in ten other languages (b67584e)
  • list the interface languages and the AI translation notice (a9a383e)
  • plan: plan applying restart settings live (44ebcb1)
  • publish the user guide in ten more languages (76dc05d)
  • rule 3a's ends of the play range as the code has them (261ce1d)
  • say outputs apply while running and fix the refusal wording (3210fde)
  • site: build the guide in every language (2eef6b0)
  • spec: close Q6 as intended behaviour (5b47f5c)
  • spec: design applying restart settings live (4fce8e3)
  • spec: drop the unreachable limit rules from live settings (d689855)
  • spec: operator feedback 4 design (e99a7dc)
  • spec: record the maintainer's answers on live settings (9245f07)
  • spec: restore the feedback 4 spec's opening section (4ae577d)
  • the CUE window's waveform panel (7f068ab)
  • the pending flag, the popup, the drop line, the blinking CUE Pause and Re-analyse (e814f98)
  • ui: describe the evenly ruled minor ticks and the narrower rulers (f8a7bfc)
  • ui: describe the meter's two rulers (cc8e891)
  • ui: record where the Inter TTFs come from (9d81636)
  • ui: refresh the meter screenshots after the ruler fixes (477418e)
  • ui: refresh the screenshots for the meter rulers (2ff788a)
  • user: add the Basque guide (541ee15)
  • user: add the Catalan guide (d485e1d)
  • user: add the Dutch guide (c429888)
  • user: add the French guide (84f2706)
  • user: add the Galician guide (6703858)
  • user: add the German guide (311f59b)
  • user: add the Italian guide (ca7e41d)
  • user: add the Polish guide (ebd7b17)
  • user: add the Portuguese guide (99d46e5)
  • user: add the Spanish guide (12e88b9)
  • user: fix key names and wording in the translations (cbf73fa)
  • user: retake the language setting screenshot (717fac1)

Build System

  • backends: update wasapi to 0.25 for RUSTSEC-2026-0332 (c4e49ba)

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.