Skip to content

v0.1.1-alpha.6

Choose a tag to compare

@github-actions github-actions released this 25 May 12:19
· 12 commits to main since this release

Stability & Polish

Audio Engine Fixes

  • Remove std::sync::RwLock from real-time audio path — zero locks on the PipeWire RT thread, eliminating xruns during EQ changes
  • Merge redundant peak detection loops into a single pass (~30–40% less peak overhead per buffer)
  • Fold preamp multiplication into AudioEq::process() — eliminates an extra O(n) buffer pass
  • Fix Relaxed atomic ordering on peak meters — replaced with Release/Acquire pairs for correct visibility on ARM (Apple Silicon, Raspberry Pi, AWS Graviton)
  • Move pw-link -I subprocess off the PipeWire mainloop into a dedicated thread — eliminates periodic audio glitches on complex PW graphs

Daemon Reliability

  • Crash recovery: daemon auto-saves state (bands, preamp, bypass, connected devices) to ~/.local/share/eqtui/state.toml after every
    change and restores on startup
  • TUI reconnection: retry loop with exponential backoff (1s → 2s → 4s → 8s) when the daemon disconnects; TUI stays alive and automatically resumes
  • Daemon connection status shown in the monitoring panel (Connected / Reconnecting... / Disconnected)
  • Kill orphaned daemon processes on auto-launch timeout (SIGTERM)
  • Truncate daemon log on start to prevent unbounded growth
  • Graceful shutdown on SIGTERM/SIGINT with clean PipeWire teardown
  • Auto-recover from PipeWire disconnects (eqtui restart support)

TUI Improvements

  • Preamp value shown above the L/R peak meters in the monitoring panel
  • More keybind hints in the status bar (bypass, profiles, reset, command/visual mode)
  • Notification when pressing C before the filter is ready
  • Source: ? indicator when null-sink input state can't be determined
  • --help and --version CLI flags

Bug Fixes

  • Profile save errors now surfaced instead of silently swallowed
  • TUI state updated after daemon confirmation in connect/disconnect, preventing phantom device states
  • Bypass mode no longer applies preamp attenuation (unity gain)
  • Reject connecting the null sink or filter to itself (feedback loop guard)
  • Duplicate connected_devices entries on rapid double-C prevented
  • Float test tolerance fixed (f32::EPSILON1e-3)

Code Quality

  • Consolidated 11 standalone default-value functions into typed impl blocks with const defaults
  • Extracted duplicated profile update and band-bumping logic
  • Memoized regex compilation in PEQ parser (LazyLock<Regex>)
  • Safe regex capture access replacing panic-prone direct indexing

Note

actually we can just call it 0.1.1 to make it the official stable release but idk man i still want to see if there is other vuln or bug.

Full Changelog: v0.1.1-alpha.5...v0.1.1-alpha.6