v1.2.3
Flowing word-by-word lyrics (ELRC karaoke)
Noctis_ELRC_Project.mp4
Noctis now reads word-level ELRC timings and animates them live on the full lyrics page — lyrics move with the vocal, not just line by line:
- Word-by-word sweep: Each word lights up the moment it's sung, sweeping across the active line in real time.
- Held-note glow: Words held for a second or longer swell with a soft glow, so long notes feel alive.
- Active-line zoom: The line being sung scales up and brightens while the others recede, keeping your eye in the right place.
- Cascading scroll: Lines settle into place top-down as the song moves — physical, not snapping.
- Full CJK support: Chinese, Japanese, and Korean lyrics render with proper per-script fonts — no more boxes.
- Share as video: Export the karaoke sweep as an MP4 lyric card straight from Share Lyrics.
Download
Pick your platform from the Assets below:
| Platform | Files |
|---|---|
| Windows | Noctis-v1.2.3-Setup.exe (installer) · Noctis-windows-x64.zip (portable) |
| macOS | Noctis-osx-arm64.dmg (Apple Silicon) · Noctis-osx-x64.dmg (Intel) |
| Linux | Noctis-x86_64.AppImage · Noctis-linux-x64.tar.gz · Noctis-linux-arm64.tar.gz |
Running on macOS — the app isn't code-signed, so Gatekeeper quarantines it on first launch. After dragging Noctis into your Applications folder, clear the flag once in Terminal:
xattr -dr com.apple.quarantine /Applications/Noctis.appThen open Noctis normally.
What's Changed
Fixed
- Fixed playback being too quiet (EQ preamp issue from v1.2.2)
- Fixed gapless playback volume blip between tracks
- Fixed audio glitch when scrubbing during library scan
- Fixed scan progress flooding the UI
- Fixed library scan taking forever with lossy files
- Fixed album art not showing until scan completed
- Fixed app state not saving on exit (queue, history, scrobbles)
- Fixed album art cache evicting wrong images
- Fixed intermittent crashes when removing library tracks during refresh
- Fixed potential crash on quit during track load
- Fixed rating/artwork tag writes corrupting playback on macOS/Linux
- Fixed duplicate-remover silently hiding files
- Fixed seek bar/lyrics freezing after seeking during track transition
- Fixed very short tracks stalling the queue
- Fixed folder tree scrollbar jumping when selecting folders
- Fixed EQ indicator color and positioning on now-playing row
- Fixed SMTC session not registering on Windows
- Fixed SMTC artwork not showing
- Fixed app losing multi-selected albums when scrolling
- Fixed context menus clipping off-screen at bottom
- Fixed word-sweep stutter in lyrics (trailing whitespace issue)
- Fixed held-note glow clipping in word-synced lyrics
- Fixed text shearing on line-final words in lyrics
- Fixed Esc key behavior (now clears selection consistently)
- Fixed custom EQ dropping volume ~12 dB when boosted
- Fixed ~1s audio cut when dragging/resetting EQ
- Fixed split-second cut at start of next track (AutoMix cleanup)
- Fixed CJK characters rendering as boxes in share cards
- Fixed card-options flyout shifting left on toggle
- Fixed albums showing placeholder art in grid but real art in detail
- Fixed album tiles losing selection on scroll
- Fixed import progress freezing the UI
- Fixed dropped files losing folder artwork
- Fixed per-play library save stalling UI
- Fixed drag-drop import freezing the whole app
- Fixed invisible wall clipping in lyrics view
- Fixed phantom 1-star ratings on new imports
- Fixed EQ visualizer freezing after pause
- Fixed non-playing rows rendering unreadable when scrolled
- Fixed previously-played track staying highlighted
- Fixed now-playing track not visible in Folders view
- Fixed RunLibraryScan no-opping when scan already active
- Fixed removing a folder not dropping its tracks
- Fixed memory explosion (18+ GB from SetEqualizer NRE loop)
- Fixed Single Instance behavior (taskbar launch now surfaces existing window)
- Fixed LastFm and ListenBrainz tokens stored as plain text
- Fixed filename-based argument injection in ffprobe reader
Added
- Added main player track title clickable to view album
- Added live track population during library scan (progressive fill)
- Added live album art during library scan
- Added live scan counter showing current progress
- Added DSD support (.dsf/.dff files with metadata)
- Added "Auto" background in Share Lyrics color picker (derives from artwork)
- Added card-options dropdown in Share Lyrics (1:1 / 9:16 · Auto / White / Black · Sync)
- Added delete-from-disk on "Remove from Library" (Apple Music-style 3-way prompt)
- Added per-platform trash support (Windows Recycle Bin, macOS Trash, Linux)
- Added Spotify-style lyric share cards with vibrant background color
- Added selectable lyric weight in share cards (semibold default)
- Added scan checkpoint on exit / resume on next launch
- Added DSD library support (.dff DSDIFF reader)
- Added codec badges for lossy audio (AAC / MP3 / OPUS / OGG / WMA)
- Added Windows media overlay (SMTC) integration with media keys support
- Added Tray menu playback controls (Play/Pause, Next, Previous)
- Added track numbers to Folders Section (right-aligned with perfect digit alignment)
- Added Explicit "E" badge in Folders Section
- Added animated EQ indicator on now-playing row in Folders
- Added Collapse Album Editions setting
- Added Player Bar Opacity slider in Settings
- Added hover to expand sidebar toggle in Settings
- Added Restore last played track on startup toggle
- Added Back + Search icons to sidebar (relocated from top bar)
- Added Search pill flyout animation
- Added Now Playing track highlight in all views (accent red text)
- Added right-click context menu for songs in Folders view
- Added Folder expansion state preservation
- Added Held-note emphasis (words sung ≥1s swell with soft glow)
- Added Cascading scroll in lyrics (lines settle top-down)
- Added Active-line zoom in word-synced lyrics
- Added drag-drop import progress indicator with live status
- Added real-time library fill-in during drop imports (~1.5s batches)
- Added Karaoke word-sweep in Share Lyrics MP4 export
- Added "Karaoke video" toggle in card-options
- Added per-script font fallback for CJK lyrics on share cards
- Added Esc key to deselect across all multi-select views
Improved
- Improved scrollbar styling and behavior across the app
- Improved autoscroll with velocity physics (px/second, linear-to-quadratic curve)
- Improved album edition handling and representative album selection
- Improved playback bar readability with adjustable background opacity
- Improved Settings integration for sidebar and album edition preferences
- Improved code maintainability (consolidated album title normalization)
- Improved UI dialog launching and removed duplicate implementations
- Improved streaming file enumeration (no up-front .ToList(), progressive processing)
- Improved scan parallelism (capped at min(ProcessorCount, 8) with env override)
- Improved album art cache now exact-match and cheaper
- Improved web remote request buffering
- Improved metadata scanning speed (ffprobe hang prevention)
- Improved memory growth (proper native memory reporting for album art)
- Improved song search across all views
- Improved UI startup load time (offloaded cache restore to background thread)
- Improved side panel font zoom consistency on word-timed lyrics
- Improved per-word lift and line lift animation
- Improved album grid artwork sharpness (768px decode vs 512px)
Full Changelog: v1.2.2...v1.2.3