# DriftFM 0.1.4

Release date: 2026-05-25

DriftFM 0.1.4 is a quality, architecture, and reliability release. It keeps the same user-facing radio workflow while making the internals safer, easier to maintain, and better covered by deterministic tests.

## Highlights

- Added CI quality gates for formatting, clippy, tests, release build, RustSec audit, and a static TLS safety guard.
- Removed the insecure HTTPS invalid-certificate bypass from stream setup.
- Surfaced library persistence failures in the TUI instead of silently swallowing them.
- Split audio internals into focused modules for buffering, metadata parsing, recording helpers, stream reading, visualizer wrapping, and session connection logic.
- Added lazy audio device initialization so browsing/search can work even before an output device is available.
- Hardened Radio Browser search with HTTPS mirror failover, HTTP fallback for upstream TLS outages, and compact real error messages.
- Split the monolithic app reducer into focused app-state modules while preserving the public `crate::app` API.
- Added deterministic tests for app reducers, Radio Browser helpers, audio buffer status math, keymaps, library behavior, theme behavior, metadata parsing, and recording filename sanitization.
- Added architecture and testing documentation under `docs/`.

## Validation

Validated before release with:

```bash
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features
cargo build --release
cargo run
cargo publish --dry-run
```

## Notes for Linux and WSL users

On Linux, make sure ALSA development/runtime packages are installed. On WSLg, PulseAudio may need to be exposed through ALSA for audio playback. See `docs/testing-strategy.md` for the runtime smoke checklist.
