Download Latest Version v0.1.2 source code.zip (4.2 MB)
Home / v0.1.2
Name Modified Size InfoDownloads / Week
Parent folder
ansimuz-0.1.2-1.fc43.x86_64.rpm 2026-11-01 7.1 MB
ansimuz-0.1.2-1.fc44.x86_64.rpm 2026-11-01 7.1 MB
ansimuz-0.1.2-1.fc45.x86_64.rpm 2026-11-01 7.1 MB
ansimuz-0.1.2-1.fc46.x86_64.rpm 2026-11-01 7.1 MB
ansimuz-git-0.1.2.r1.g5c6eb19-1-x86_64.pkg.tar.zst 2026-11-01 9.7 MB
SHA256SUMS 2026-11-01 509 Bytes
README.md 2026-11-01 9.6 kB
v0.1.2 source code.tar.gz 2026-11-01 4.2 MB
v0.1.2 source code.zip 2026-11-01 4.2 MB
Totals: 9 Items   46.6 MB 1

ANSImuz v0.1.2 is a major reliability and structural release focusing on playback resilience, bulletproof MPV IPC lifecycle management, atomic zero-copy artwork caching, TOML settings migration, Unicode text formatting, and Python backend improvements.


Highlights

  • Queue Continuation on Error: When a track encounters a playback or stream error in MPV, ANSImuz now logs the failure to history and immediately advances to the next queued track instead of stopping and leaving the queue idle.
  • Piped MPV Diagnostics & Generation Sockets: MPV stderr is now captured asynchronously to extract clear diagnostic errors (such as stream 403s or codec errors) rather than generic exit codes. Each playback generation receives an isolated IPC socket and atomic cancellation token, eliminating cross-talk from stale observer threads.
  • Atomic Zero-Copy Artwork Cache: Artwork in memory is now managed via Arc<DynamicImage>, eliminating heavy pixel buffer copying on every 80 ms UI frame. Downloads are streamed with hard memory bounds (8 MB), writes use atomic temporary-to-final renames, and transient network failures are retried after a cooldown rather than permanently poisoning the cache.
  • TOML Configuration with Serde: Migrated settings.toml to structured TOML with Serde serialization and full error propagation, while retaining transparent backward compatibility for legacy key=value configuration files.
  • Unicode-Aware Layouts: Upgraded string truncation across lists and modals to use unicode-width, ensuring East Asian (CJK), full-width glyphs, and emojis never overflow column allocations or misalign terminal borders.
  • Python Backend Optimization: Lazy-initialized YouTube Music clients for Spotify resolution, added descriptive failure diagnostics, added type annotations to the PyO3 bridge, and introduced a dedicated test suite in backend/tests/.

### What's Changed

#### Playback & MPV Lifecycle

  • Automatic Queue Progression: Failing tracks no longer halt the entire queue; remaining tracks continue playing automatically.
  • Repeat One Safety: Repeat::One restarts tracks only after natural EOF completion, never after playback errors or crashes.
  • Process Reaping: Cache-dump processes that exceed the 600-second timeout are killed and reaped immediately, preventing orphaned background instances.
  • Structured IPC with serde_json: Replaced fragile string parsing with serde_json::Value and request IDs (REQ_ID_VOLUME, REQ_ID_TIME_POS, REQ_ID_DURATION).

#### Artwork & Cache Manager

  • Atomic Lookups: Unified cache lookup and insertion under a single lock to eliminate duplicate concurrent downloads for the same artwork.
  • Streaming Limit: Replaced unbounded buffer downloads with an 8 KB chunked stream loop enforcing MAX_IMAGE_BYTES (8 MB) mid-stream.
  • Decompression Safety: Configured image::Limits on ImageReader (max_width = 4096, max_height = 4096, max_alloc = 64 MB) to prevent decompression bombs.
  • Centralized Atomic Writes: Introduced write_cache_atomic() for all cache writes.

#### Search & State Management

  • Search Generation IDs: Search requests now carry generation IDs (SearchResponse) so late-arriving results from previous searches are discarded silently.
  • Preserved Results: Failed searches no longer blank the active screen; valid results from the previous search remain visible.
  • Explicit PlaybackState Enum: Replaced overlapping booleans (is_resolving, paused, now_playing) with an explicit state machine (Stopped, Resolving, Playing, Paused).
  • Centralized Search Dispatcher: Unified asynchronous search spawning into crate::music::spawn_search().

#### Python Backend & Packaging

  • Lazy Initialization: YTMusic() in the Spotify provider is now instantiated only when track resolution is actively needed.
  • Diagnostic Spotify Resolution: Rejections detail whether the failure was due to version conflicts, duration mismatch, or low similarity scores.
  • Unbound Variable Fix: Fixed an UnboundLocalError when all YouTube Music search attempts raised exceptions.
  • Dependency Sync: Fully aligned runtime dependencies across requirements.txt, pyproject.toml, Arch Linux PKGBUILD, and Fedora COPR ansimuz.spec.
  • Smoke Tests: Added Python unit tests in backend/tests/test_backend.py covering imports, lazy initialization, resolution error reporting, and bridge routing.

Linux Packages

Distribution Package Architecture
Arch Linux ansimuz-git-0.1.2.*-x86_64.pkg.tar.zst x86_64
Fedora 43-45 and Rawhide ansimuz-0.1.2-1.fc*.x86_64.rpm x86_64

See the installation instructions in the README.

[!NOTE] The Arch package is the rolling ansimuz-git build. Fedora RPMs are versioned release packages.

Checksums

Download SHA256SUMS to verify package integrity.


Full Changelog: https://github.com/greenbugx/ANSImuz/compare/v0.1.1...v0.1.2

Download ANSImuz

Source: README.md, updated 2026-11-01