Skip to content

nightingale

v0.7.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai bevy-engine demucs karaoke karaoke-application karaoke-game
+12 more
machine-learning machine-learning-algorithms party react rust shadcn tailwind tauri tauri-app whisper whisper-ai whisperx

Affected surfaces

auth breaking_upgrade

ReleasePort's take

Light signal
editorial:auto 12d

Nightingale v0.7.0 introduces self‑hosted web mode binary server, new media provider integrations (Jellyfin, Navidrome/Subsonic), a lyrics editor UI with LRCLIB candidate browser, and several refactorings plus deprecations.

Why it matters: The release adds concrete functional enhancements—self‑hosted HTTP serving, expanded library sources, and an in‑app lyrics editor—that directly affect developers building integrations and SREs deploying the service; it also deprecates `mic_mirroring` requiring config migration before its removal.

Summary

AI summary

Updates Highlights, https://nightingale.cafe/docs/self-hosted.html, and v1 across a mixed release.

Changes in this release

Feature Medium

Adds self-hosted web mode binary 'server' serving app over HTTP on LAN.

Adds self-hosted web mode binary 'server' serving app over HTTP on LAN.

Source: llm_adapter@2026-05-23

Confidence: high

Feature Medium

Adds Jellyfin media provider to library sidebar.

Adds Jellyfin media provider to library sidebar.

Source: llm_adapter@2026-05-23

Confidence: high

Feature Medium

Adds Navidrome / Subsonic media provider integration for audio-only libraries.

Adds Navidrome / Subsonic media provider integration for audio-only libraries.

Source: llm_adapter@2026-05-23

Confidence: high

Feature Medium

Adds lyrics editor with LRCLIB candidate browser for each song.

Adds lyrics editor with LRCLIB candidate browser for each song.

Source: llm_adapter@2026-05-23

Confidence: high

Feature Medium

Persists sidebar and song-list scroll positions across navigation via `usePersistentScroll` hook.

Persists sidebar and song-list scroll positions across navigation via `usePersistentScroll` hook.

Source: llm_adapter@2026-05-23

Confidence: low

Feature Medium

Increases contrast of sidebar/menu surfaces for better readability.

Increases contrast of sidebar/menu surfaces for better readability.

Source: llm_adapter@2026-05-23

Confidence: low

Deprecation Medium

Deprecates `mic_mirroring` setting; renames to `mic_monitoring` with compatible config migration.

Deprecates `mic_mirroring` setting; renames to `mic_monitoring` with compatible config migration.

Source: llm_adapter@2026-05-23

Confidence: high

Refactor Medium

Extracts cross-runtime logic into new `app-core` crate used by desktop client and self-hosted server.

Extracts cross-runtime logic into new `app-core` crate used by desktop client and self-hosted server.

Source: llm_adapter@2026-05-23

Confidence: high

Refactor Medium

Modularizes `library_db.rs` into separate submodules for connection, migrations, queries, songs, analysis queue, remote helpers, and rebase logic.

Modularizes `library_db.rs` into separate submodules for connection, migrations, queries, songs, analysis queue, remote helpers, and rebase logic.

Source: llm_adapter@2026-05-23

Confidence: high

Refactor Medium

Restructures sidebar to cluster library actions, cache actions, and theme toggle separately.

Restructures sidebar to cluster library actions, cache actions, and theme toggle separately.

Source: llm_adapter@2026-05-23

Confidence: low

Refactor Medium

Splits `use-menu-nav.ts` into focused hook modules to resolve focus edge‑case bugs.

Splits `use-menu-nav.ts` into focused hook modules to resolve focus edge‑case bugs.

Source: llm_adapter@2026-05-23

Confidence: low

Other Medium

Adds Self-Hosted Web Mode documentation page covering install, HTTPS, firewall, and coexistence with Caddy.

Adds Self-Hosted Web Mode documentation page covering install, HTTPS, firewall, and coexistence with Caddy.

Source: llm_adapter@2026-05-23

Confidence: low

Other Medium

Adds Library Sources documentation page describing Folder, Jellyfin, and Navidrome options with credential handling.

Adds Library Sources documentation page describing Folder, Jellyfin, and Navidrome options with credential handling.

Source: llm_adapter@2026-05-23

Confidence: low

Other Medium

Updates Lyrics & Transcription docs to include in‑app lyrics editor and LRCLIB candidate browser.

Updates Lyrics & Transcription docs to include in‑app lyrics editor and LRCLIB candidate browser.

Source: llm_adapter@2026-05-23

Confidence: low

Other Medium

Updates Configuration docs to reflect new `library_source` key and `mic_monitor_gain` rename.

Updates Configuration docs to reflect new `library_source` key and `mic_monitor_gain` rename.

Source: llm_adapter@2026-05-23

Confidence: low

Full changelog

Highlights

  • Self-hosted web mode (v1) — Nightingale now ships a second binary, server, that runs the same app over HTTP on a Linux box on the LAN. The React bundle is embedded into the binary via rust-embed, browsers on phones/laptops/tablets/TVs all open the app at http://<hostname>.local. A one-shot scripts/install.sh drops a systemd unit, a Caddy front-door (HTTP on :80, opt-in HTTPS via Caddy's local CA on :443 for mic capture), and an avahi advertisement onto the host so it's reachable without DNS. See docs/self-hosted.
  • Jellyfin media provider — connect the library to a Jellyfin server from the sidebar. Items are scanned via paginated GET /Items with SortName for stable enumeration; bytes are downloaded lazily on first analysis into cache/sources/<file_hash>.<container> and rekeyed to a true Blake3 hash, so the rest of the karaoke pipeline (stems, transcription, shifts) behaves identically to a folder library.
  • Navidrome / Subsonic media provider — same shape as Jellyfin, but talking the Subsonic API. Audio-only (Navidrome doesn't serve video). Auth uses per-call MD5(password + salt) tokens; the password is encrypted at rest in config.json.
  • Lyrics editor with LRCLIB browser — every song now has an "Edit lyrics" entry that opens an editor seeded with the current transcript. When LRCLIB returns multiple candidate matches, a second tab lets you carousel through them and apply one with a single click. Saving re-runs alignment with your edits, so timing stays accurate.
  • Sidebar restructure — Library actions (folder picker, Jellyfin/Navidrome connect, rescan), cache actions (clear all / videos / models), and the theme toggle moved out of the avatar dropdown into dedicated clusters. The Library row exposes its source buttons inline with live status badges (green/grey/amber) and tooltips showing the reachable hostname or the connection error. The avatar dropdown is now Profile / Settings / Update / About / Exit / Re-run Setup.

Improvements

  • Persistent scroll — sidebar and song-list scroll positions are preserved when navigating away and back, via a new usePersistentScroll hook keyed by panel id.
  • Higher-contrast sidebar surfaces — various sidebar/menu surfaces had their contrast bumped after the cluster restructure, mostly for the badges and the focused/hovered ring states.
  • app-core crate extraction — all cross-runtime logic (config, scanner, library DB, vendor bootstrap, sources, secrets, media server) was lifted out of client/src-tauri into a new app-core crate consumed by both the Tauri desktop client and the new self-hosted server. Drops a chunk of duplicated code and removes the few client/server divergences that had crept in.
  • library_db modularization — the single 1k-line library_db.rs was split into connection, migrations, queries, songs, analysis_queue, remote, and rebase. Remote-source helpers live in library_db::remote so Jellyfin/Navidrome share the prune/upsert plumbing.
  • Single-focus refactor — use-menu-nav.ts was split into menu-nav/{use-menu-nav-input, use-menu-nav-refs, use-mouse-menu-focus, use-nav-lock, use-scroll-to-song, use-tab-panel-switch}. Resolves a pile of edge cases where focus could land in two panels at once or get stuck after dialog dismissal.
  • mic_mirroringmic_monitoring — the setting and its config keys are renamed (mic_monitoring, mic_monitor_gain, mic_active). Older configs with mic_mirroring / mic_mirror_gain are read transparently via serde aliases and rewritten under the new names on next save. Existing UI hotkeys (R to toggle, etc.) are unchanged.

Documentation

  • New Self-Hosted Web Mode page with the full install / HTTPS / firewall / co-existing-with-your-own-Caddy story.
  • New Library Sources page covering the Folder / Jellyfin / Navidrome options and the at-rest credential envelope.
  • Updated Lyrics & Transcription page with a section on the in-app lyrics editor and the LRCLIB candidate browser.
  • Updated Configuration page with the new library_source key and the mic_monitor_gain rename.

Breaking Changes

  • Renamed config keys: `mic_mirroring` → `mic_monitoring`, `mic_mirror_gain` → `mic_monitor_gain`. Old names are read via serde aliases and rewritten on save.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track nightingale

Get notified when new releases ship.

Sign up free

About nightingale

All releases →

Related context

Beta — feedback welcome: [email protected]