Skip to content

Korai Player V1.4.5

Choose a tag to compare

@Behdad-kanaani Behdad-kanaani released this 11 Jun 15:33

KORAI Player V1.4.5 Latest

Released this 11 Jun 2026


Release Notes – KORAI Player v1.4.5

🎯 Overview

This is a major feature release focusing on library UI modernization, playback engine reliability, vocal extraction capabilities, and comprehensive timeline visualizer improvements. Includes deep recursive directory scanning and a completely redesigned empty home dashboard.


✨ New Features

Library UI Overhaul – Completely redesigned table view with cover art, BPM column, and collapsible genre filter accordion

Import Loading Modal – Visual feedback during file/folder imports with animated spinner, progress bar, and wave animation

Empty Home Dashboard (Premium Design) – Beautiful animated empty state with feature highlights (AI Analysis, Smart Playlists, Vocal Separator, Studio EQ) and "Import Your First Track" CTA

Song Info Modal – Comprehensive track metadata display including cover art, lyrics, BPM, energy percentage, codec, bitrate, and sample rate

Vocal/Karaoke Extraction – Extract vocal tracks from currently playing songs, creates new tracks automatically, with progress notifications

Timeline Visualizer Improvements – Dynamic bar count (30-80 bars based on container width), idle animation when no track playing, proper "played" portion marking


🐛 Bug Fixes

Core Engine

  • Fixed frozen timeline after track import – AudioContext now properly closed and recreated before each track play
  • Resolved race conditions with concurrent play requests using request counter and queuing system
  • Fixed deep directory scanning – replaced shallow scan with proper recursive scanner (max 100 levels)
  • Fixed file path extraction in second-instance handler – correctly filters .exe, electron, KORAI, and internal flags
  • Added emergencyAudioRecovery() system with 3 retry attempts for catastrophic audio failures

Playback & Audio

  • Added pendingPlayRequest lock to prevent concurrent play operations
  • Fixed repeat mode toggling (Off → Repeat All → Repeat One)
  • Improved seek function with bounds clamping and progress fill redundancy
  • Better AudioContext state management – resume when suspended, recreate when closed
  • Added safety checks for NaN and infinite values in duration handling

Import & Analysis

  • Fixed missing fs.existsSync check in second-instance handler for audio files
  • Added proper directory readability checks before scanning
  • Worker thread now uses CommonJS require instead of ES module import for compatibility
  • Added robust fallback handling when modules fail to load

UI / Performance

  • Visualizer switched from requestAnimationFrame to interval-based updates (60ms / ~16 FPS)
  • Fixed scrub tooltip bounds calculation
  • Removed duplicate variable declarations (sleepTimeRemaining, lastSleepUpdateTime)
  • Fixed language toggle button event listener – skin buttons now properly highlight active skin
  • Added missing null checks for various UI elements

Memory Management

  • Added beforeunload cleanup for visualizer interval, spectrum interval, and IPC state update listeners
  • Fixed transition protection with isTransitioning flag (500ms cooldown between tracks)

Keyboard Shortcuts

  • Added safety checks for input fields – prevents shortcut triggers while typing
  • Ctrl+K now properly focuses search input

⚡ Performance Optimizations

  • Enabled GPU rasterization and zero-copy rendering
  • Added Vulkan and SkiaRenderer features where available
  • Increased V8 memory limit to 4GB for large libraries
  • Added v8CacheOptions: 'code' for improved startup performance
  • Enabled enableBlinkFeatures: 'OverlayScrollbars' for modern scrollbar styling
  • Throttled media session position updates to ~5% track progress (reduced from every frame)
  • Sleep timer now updates from audio timeupdate event instead of separate setInterval

🎨 UI Polish

  • Removed border-radius from table cells for cleaner look
  • Disabled box-shadow on table cells for reduced visual clutter
  • Removed neon accent stripe on active rows
  • Added monospace fonts for duration and BPM columns (perfect alignment)
  • Liquid Glass theme now supports empty home state and album track items
  • Fully responsive empty home dashboard with breakpoints at 640px

🛠️ Technical Improvements

Audio Pipeline

  • Complete playTrack() rewrite with request queuing system
  • Added 50ms settling delay between track changes
  • Media load timeout (5 seconds with fallback)
  • Retry logic for play attempts (3 attempts with exponential backoff)
  • Proper disconnection of existing audio nodes before reconnecting

Enhanced Next/Previous Track

  • nextTrackEnhanced(): transition lock, improved error handling, better repeat-one mode
  • prevTrackEnhanced(): transition lock, improved seek behavior (>3 seconds seeks to start)
  • Both functions properly handle shuffle mode history

Error Handling

  • Added try-catch for AudioContext close operations
  • Safe handling of analyser data when not ready
  • Better error propagation with specific error types:
    • NotAllowedError → Requires user interaction
    • NotSupportedError → Unsupported audio format

Code Quality

  • Replaced import with require in worker thread for Node.js compatibility
  • Added escapeHtml() usage in song info modal
  • Better console logging with emojis (🎵, ✅, 🚨)
  • Removed unused variables and commented code sections

🔧 Supported Formats

MP3, WAV, OGG, M4A, FLAC


📦 Build & Packaging

Version bumped: 1.4.2 → 1.4.5

Changes: +1688 lines / -339 lines across 7 core files

Key file updates:

  • main.js – Deep scanning, second-instance handler fixes, performance flags
  • src/frontend/app.js – Major rewrite (+734 lines): playback engine, song info modal, vocal extraction
  • src/frontend/styles.css – Import modal, accordion styles, animations
  • src/backend/server.js – Backend improvements with importedTracks response

📥 Upgrade Notes

  • No database migration required – drop-in replacement from v1.4.2
  • First launch after update will display the redesigned library UI
  • Vocal extraction feature requires additional processing time for first use
  • The @yawlabs/electron-optimize package is now optional (still recommended)