Changelog
QUP Karaoke Engine — Changelog
What's new in QUP Karaoke Engine
QUP Karaoke Engine — Changelog (v2.0.42 onwards)
Note: v2.0.54 was tagged but never released — the build failed at compile time due to an ambiguous-overload bug in the new file chooser API. v2.0.55 is the working release with the native file dialogs.
v2.0.55
Added
- Native file and folder pickers across the entire app. The Add Folder, Add Files, Browse, Save, and Import dialogs now use the platform's native file picker —
IFileDialogon Windows 10/11,NSOpenPanelon macOS,GtkFileChooserNativeon Linux. On Windows you get the full File Explorer–style picker with the This PC sidebar, address bar with breadcrumbs, recent folders, pinned locations, and OS theme support (light/dark mode follows your Windows setting automatically).
Changed
- Plugin SDK: file chooser API replaced with action-oriented methods (
openFile,openFolder,openFiles,saveFile) that return the selected file directly. Plugin authors no longer configure a chooser before showing it. - Database singer-list import simplified to use a CSV-only filter (the previous mixed files/directories mode was vestigial; the call site only ever consumes CSVs).
Removed
- Internal cpanel theming sweep for file chooser widgets — no longer needed now that file dialogs are rendered by the OS.
v2.0.53
Changed
- File chooser theming for plugins now flows through the plugin SDK (
PluginContext) rather than direct internal references. Genre Tagger, File Management, and Karaoke Maker plugins migrated to the SDK factory methods. Lays groundwork for future picker improvements without touching plugin code.
v2.0.52
Fixed
- File chooser dialogs no longer have dark Folder Name fields or Files of Type combo boxes. Both widgets now render with white backgrounds and black text, matching the rest of the file picker. Affects the Media → Add Folder, Database → Browse, Music Video → Cache directory, and License chooser dialogs.
v2.0.51
Fixed
- Number spinners across all configuration panes now render with white backgrounds and black numbers instead of solid black rectangles. Affected widgets included Auto-pause threshold (Kiosk Security), Max cache MB (Music Video), Intro duration (OBS Recording), Min queue depth and No-repeat window (AutoFiller), height-weight spinners (Skin & Layout), and the Simulation engine spinners.
- Scroller's editable font combo box now displays the currently selected font name in black on white — previously the selection box was unreadable.
- Configuration table column headers (Media Library Folders "Folder" / "Filler" headings) now display in black text instead of blue.
- Empty tables (Kiosk Security pattern filter table) no longer fill with dark color when there are no rows.
- Spinner up/down arrow buttons render consistently as flat-style buttons matching the rest of the cpanel.
v2.0.50
Added
- Flat WACUP-style arrow buttons for combo box dropdowns and spinner up/down controls. Matches the existing flat-button styling for regular cpanel buttons.
v2.0.49
Fixed
- Cpanel tables, lists, and trees now have white backgrounds (previously appeared as dark holes when empty — most visible in the Bribe singer list and Kiosk Security pattern table).
- Non-editable combo box dropdowns display items in black-on-white rather than dark colors. Affects Output settings, Kiosk Security drop-downs, and Scroller selection menus.
- Spinner inner text fields correctly render with white backgrounds.
v2.0.48
Added
- Custom flat-button rendering for cpanel buttons. Buttons now have a raised bevel with hover and pressed states, matching the WACUP visual style.
v2.0.47
Fixed
- Cpanel text labels, buttons, and checkboxes no longer render in blue on light backgrounds — foreground text is now correctly black throughout the configuration panel.
- Text input fields, spinners, and combo boxes have white backgrounds across all cpanel panes (some plugin config panes were rendering dark).
v2.0.46
Fixed
- Plugin configuration panels (AutoFiller, Music Video Background, OBS Recording, Karaoke Maker, Genre Tagger, File Management, SongShop) and the Simulation pane now have consistent light backgrounds matching the rest of the cpanel. Previously these panes inherited the global dark theme.
v2.0.45
Internal
- Diagnostic release. No user-visible changes.
v2.0.44
Fixed
- Restored proper rendering of cpanel controls after the v2.0.43 theming change. Buttons now display their raised bevels, dropdowns show their arrows, and text fields have visible borders.
v2.0.43
Changed
- Cpanel light-theme implementation refactored to use a centralized override table rather than per-component color setters. More consistent and predictable theming behavior across all panes.
v2.0.42
Added
- Plugin panes that lazily construct widgets (e.g. when an "Enable" button is first clicked) now get themed automatically when new widgets appear.
NativeFileChooser.createFolderChooserconvenience method (pre-configures folder-selection mode with drag-and-drop enabled).
Fixed
- File chooser dialogs maintain the cpanel light theme more reliably when reopened.
v2.0.41 — Wait Time clock starts fresh when your song is up next
Fixed
- Wait Time now resets when a singer's next song becomes "up next." Previously, if you had two songs queued and your first song was playing, your second song's wait clock was already counting — so the moment your first song finished, your second song would show something like "10 minutes" of wait time. That was misleading. Now the clock starts at zero the moment a song actually becomes the singer's next-up turn.
v2.0.40 — Fixed "Est Time: NOW" on second singer
Fixed
- The singer in position 2 of the rotation no longer incorrectly shows "NOW" as their estimated time. Only the currently-playing singer should display "NOW"; everyone else should show how long until they're up. The calculation now accounts for remaining time on the currently-playing song. The same fix applies to the scrolling display.
v2.0.39 — Polish on the new mobile kiosk
Fixed
- Your Submissions list now displays in rotation order. Your next song to be sung appears at the top, not the most recently submitted one. Played songs and errors fall to the bottom.
- Credit balance updates correctly on the mobile kiosk. Previously the kiosk showed "$0.00" for credits even after the KJ added credits via Singer Database → Edit Singer. Now changes propagate within a second or two.
- Bribe submission errors are clearer. Instead of a generic "required" message, the kiosk now tells you exactly what's wrong.
Changed
- Bribe cost table now only shows singers you can actually skip past. Previously every singer in rotation was listed, including ones at or after your own position (which always cost $0 because there's nothing to skip). Now the list shows only actionable move-up targets.
v2.0.38 — Live kiosk state; view the full playlist; Change Song fixed
Added
- View Playlist on mobile. A new button on the patron kiosk opens the full current rotation — every singer, every song, in order. Your own entries are highlighted. See where you are, see who's ahead of you, see the big picture. Same data the KJ screen shows.
- Rotation position indicator. The kiosk now shows "You're #3 in line, 2 songs ahead" so patrons know where they stand at a glance.
- Live state refresh. The kiosk refreshes its view every 10 seconds. Songs that have already been sung disappear from "Your Submissions." Credit balances update. Bribe availability updates.
Fixed
- Change Song now actually works. The command was being silently rejected by the engine due to a name mismatch. It's been recognized now. If you click "Change Song" on a queued submission and pick a different song, the swap goes through and you see "Done."
- Played songs no longer linger on the patron's kiosk. If you sang your song and it finished, your kiosk updates within 10 seconds to show it as played, and stops offering Change Song / Bribe buttons on it.
v2.0.37 — Change Song and Bribes wired up (with caveats addressed in v2.0.38)
Added
- Change Song button on patron kiosk. Patrons can now swap a queued song for a different one — as long as their original submission hasn't been sung yet. Uses the same "verify it reached QUP" feedback flow as regular song submission.
- Bribe system on patron kiosk. Bribe-enabled venues now show a Bribe button next to each of a patron's queued songs. Tapping it shows who they can move ahead of and what it costs. Patrons select a target, confirm the cost, and the bribe is processed by the engine — which deducts credits, validates the cost, and reshuffles the rotation. KJs credit singer accounts manually via Singer Database → Edit Singer (no payment processing on the kiosk; cash-in-venue model).
- Bribe button auto-hides when bribes are disabled in the venue's Bribe configuration.
Known issues addressed in later releases
- v2.0.38 fixed the
QUEUE_REPLACEswitch-case gap that prevented Change Song from actually working end-to-end. - v2.0.39 fixed credit balance display, submission ordering, and bribe cost-table filtering.
v2.0.36 — Finally: patrons' songs actually reach the queue (and the kiosk tells the truth)
This release fixed three converging bugs that had caused silent song drops. After this, first-session fresh installs work end to end.
Fixed
- The "double CloudSync" race. On registered-install reboots, two cloud-sync workers were running simultaneously on the same install. One had the song-queue engine wired up; the other didn't. Whichever fetched a patron's submission first processed it — so submissions failed or succeeded at random. Now there's exactly one sync worker per install.
- Silent song drops. As a consequence of the above, roughly 5 out of 8 song submissions were silently failing with "Enqueue engine not ready" while the patron's phone happily showed "Submitted!" Now that the race is fixed, and combined with the ack-verify flow below, submissions are reliable.
- Catalog sync on library changes. If you registered your cloud before adding your media folder to QUP, the server-side song catalog was empty and the kiosk found nothing when patrons searched. Now, whenever QUP finishes scanning a library folder, the cloud catalog refreshes automatically — no restart required.
Added
- Submission ack-verify. When a patron submits a song, the mobile kiosk shows "Sending..." then "Verifying with host..." then — only after QUP actually confirms the song was queued — "In queue." If QUP rejects the submission, the kiosk shows "Couldn't queue" with the reason. If QUP doesn't respond within 60 seconds, the kiosk shows "Still trying... if this keeps happening, ask the KJ." No more silent success; no more patrons wondering why their song never came up.
v2.0.35 — Auto-initialize kiosk on registration
Fixed
- QR code now appears automatically within 60 seconds of completing cloud registration. Previously, even with everything else working, the kiosk token had to be manually minted by clicking "Initialize kiosk now" in the Kiosk Security settings. That step is now automatic when a venue verifies its email.
- Rate-limit friendliness for the nonce-fetch calls that precede every signed request. These are now exempt from the per-IP and per-install general buckets, so high-frequency polling no longer starves other cloud operations.
v2.0.34 — Fresh-install QR rendering
Fixed
- Cloud polling now self-starts on a fresh install. Previously, registering cloud on a brand-new install left the polling scheduler unstarted, which meant the venue's status never flipped to "active" internally, which meant the QR code URL never resolved. Fixed.
- Poll and sync rate-limit ceilings doubled. The original values were sized assuming one counter increment per request; in practice each request produced two increments, so the ceiling tripped during normal operation. Now set correctly.
Changed
- The old
/sing/patron URL is deprecated. If a patron scans an old-era QR code linking to/sing/something, they'll now see a friendly page directing them to scan the current QR on the karaoke screen, instead of getting a confusing error. The supported patron flow is/k/<token>which resolves to a cookie-persistent/s/<session>URL.
v2.0.33 — Secured cloud auth migration
Changed
- Cloud authentication fully migrated to signed requests. Previously, some cloud endpoints used a shared secret model that was prone to subtle desync bugs (secret generated on the client, secret generated separately on the server, the two never exchanged — silent auth failures). All runtime cloud endpoints now use per-install cryptographic signing. Authentication desync is structurally eliminated.
Breaking change
- Clients on v2.0.32 and earlier will need to upgrade to v2.0.33 to continue using cloud features. (Fresh installs on pre-v2.0.33 were already broken in practice due to the desync issue this release fixed.)
v2.0.32 — Multiple stability fixes
Fixed
- Cloud sync now starts immediately after registration without requiring a QUP restart. Previously, completing cloud registration correctly updated the cloud settings, but the actual sync worker wasn't started until the next app launch.
- No more "split-brain venues." If cloud registration was already complete, the app no longer attempts to re-register on restart, which was previously creating duplicate venue records server-side.
- Venue name length check. Venues named with fewer than 3 characters are now accepted (previously the registration form silently rejected them).
- Silent cloud errors now surface. Sync failures that used to go to an invisible error stream now appear in the log with full stack traces, so operators can diagnose issues.
Added
- Session ban / unban from Singer Management. The Singer Management table now lets a KJ ban a specific kiosk session (e.g., a problem patron) and reverse the ban later.
- Catalog sync progress indicator. The Media Library window shows an indicator strip during a cloud catalog sync, so operators can see the operation is in progress.
v2.0.31 — Signed request rate limit
Fixed
- Singer Management panel no longer polls continuously when hidden. It used to make signed cloud requests every 10 seconds forever, whether the panel was visible or not — about 360 requests per hour. Now it polls only when the panel is showing, and the per-install hour cap was raised to accommodate bursts.
v2.0.30 — Fresh-install UI defaults fixed
Fixed
- Checkbox defaults on first launch now match the intended values. A long-standing bug meant that even though many settings had sensible default values in code, they were silently overwritten to "unchecked" on fresh installs because the save-preferences code read from the UI state before the UI was fully initialized. The Karaoke settings panel now sets each checkbox explicitly after creation, so defaults persist correctly. Affected checkboxes include the proportional scroller toggle and eleven others.
v2.0.29 — Cloud settings persistence on registration
Fixed
- Cloud is now enabled automatically when registration is verified. Previously, a successful registration verification didn't flip the "Connect to QUP Cloud" checkbox on or save the updated state, so restarting the app meant re-enabling cloud manually.
- Production cloud configuration is now bundled with release builds. Shipped zips contain the correct live-production cloud settings out of the box.
v2.0.28 — Baseline release
The starting point for this release series. All subsequent changes above build on this.
Notable features present as of v2.0.28 (not new — included here for context)
- Crossfades between the filler playlist and karaoke songs with configurable duration.
- Async song-length scanning and database v3 migration with background backfill of missing lengths.
- Proportional CDG rendering that scales cleanly at any window size.
- Per-role equalizer namespacing (main output vs. phones output).
- Click-to-position on the global playback slider.
- QR float overlay on the CDG window.
- GenreTagger plugin (freedb/MusicBrainz metadata tagging).
- AutoFiller plugin with Enable/Disable toggle and manual "Fill Now" action.
QUP Karaoke Engine v2.0.27
The biggest UI refactor since 2.0 — the main window is no longer a fixed layout. Each major section can float, dock, and snap freely. Plus a ton of polish throughout.
Dockable windows
The Player, Media Library, and Playlist are now independent panes. Dock them in the main window or pop them out to float wherever you want. Drag title bars to move, and floaters snap to each other at the edges when dragged close. Clicking any one floater brings the whole group to the foreground so nothing gets buried behind another app. Each window can be set "Always on Top" independently, and layouts persist between sessions.
Media Library redesign
A left-side navigation tree now covers Rotation, Local Library (Karaoke + Filler), and Plugins. Each library has its own "Add to Library" button with Add Folder / Add File(s) — fast imports no longer require a detour through Preferences. When docked, a draggable divider between Media Library and Playlist lets you size each one to taste.
Filler playlist overhaul
The filler queue finally behaves like it should — currently-playing is pinned at the top, tracks disappear after they finish, and the NOW indicator actually points at what's playing. AutoFiller keeps topping things up whenever the queue runs low.
Right-click everywhere
Right-click almost any title bar, list view, or empty chrome area to get a shared menu with Dock/Undock, Always on Top, AutoFiller, Genre Tagger, Send Message, New Session, Preferences, Singer Database, and Exit. No more hunting for where a feature lives.
Alternating row colors
Every list view (karaoke, filler, playlist, rotation, plus every plugin table) now renders with alternating row colors for easier scanning. Right-click any list to toggle it — the setting is global and persists between runs.
Native file browsers
Open/Save dialogs now render with the native Windows look instead of QUP's dark theme. Feels much more at home when navigating your file system.
Notable fixes
- Filler Genre column is actually visible and resizable now (was being hidden by a column-index bug)
- Corner resize on floating windows works reliably on the first click, every time
- Right-click menus no longer flash and disappear when opened on an unfocused floater
- Ctrl-A in list views selects the rows you're looking at, not the navigation tree
- Transport controls stay properly centered inside the Player window at any width
- Filler library alternating colors match the rest of the UI
QUP Karaoke Engine v2.0.26
New Features
- Up Next Scroller config panel — Full settings pane for the CDG window's upcoming-singers overlay. Configurable scroll style (horizontal/vertical), animation speed, custom font and size, color mode, transparent overlay option, scroll position (top/bottom), and Cloud QR code display with position and color pickers.
- Skinned title bar — Custom-drawn window title bar that follows the active skin theme.
- MMCSS audio thread priority — Audio playback threads now register with Windows Multimedia Class Scheduler for lower latency and fewer glitches during heavy CPU load.
Bug Fixes
- Fixed right-click song queueing — "Enqueue Song" from the singer submenu was silently failing. Songs now queue correctly when selected from the right-click menu.
- Fixed cloud registration — Registration was hitting a retired server endpoint, causing "Error communicating with server" on signup. Now connects to the correct API.
- Fixed folder removal freeze — Removing a large media folder (thousands of files) no longer locks up the UI. Deletions now run in the background.
- Fixed connection leaks — Cloud sync and HTTP calls were accumulating open connections over long sessions. Cleaned up for better long-run stability.
- Fixed exit confirmation dialog — Properly sized and non-resizable.
- Reverted FlatLaf experiment — Restored Nimbus via QUPDarkLaf. EQ sliders back to 3D shaded knobs, all 10 bands visible.
Security Improvements
- Removed legacy SSL bypass that weakened encrypted connections
- Removed hardcoded credentials from source
- Hardened HTTP error handling to prevent silent failures
Under the Hood
- ~30 resource leaks patched for improved stability during extended shows
- Background processing improvements to keep the UI responsive during database operations
v2.0.25 — Architecture & Reliability
The filelist panel — the main screen where you browse and search your song library — was rebuilt from the ground up. What was a single 2,700-line file is now five focused modules handling table display, search, file importing, column preferences, and right-click actions separately. This makes the codebase easier to maintain and sets us up for faster feature work going forward.
Other improvements in this release:
- Right-click "Enqueue Song" submenu now shows all singers currently in rotation for one-click queuing, with a "More options..." fallback for the full dialog
- Bad file marking and unmarking available directly from the right-click menu based on current file status
- Multi-select support for bulk song deletion from the database
- Filler table gets its own right-click context menu with enqueue and folder browsing
v2.0.24 — Security Hardening
A comprehensive security and stability pass touching 21 areas across the engine. The highlights:
Input validation — A new centralized input validator now screens all data coming in from the kiosk web interface. Singer names, hashes, pin codes, mobile numbers, and general text fields are all checked for length limits, allowed character sets, and common injection patterns before they reach the database.
Safer data handling — Replaced the legacy XML parser with Gson for configuration serialization. Thread-safe collections now protect shared data structures that are accessed from multiple threads simultaneously. Several places where the application could abruptly terminate have been softened to graceful error handling instead.
General hardening — Path traversal protections, stricter input sanitization on HTTP parameters, and defensive null checks across the kiosk communication layer.
v2.0.23 — Performance & Polish
This release focused on fixing rough edges reported from live venue use:
- Media database loading performance improved — library scanning is noticeably faster on large collections
- Filler music crossfade behavior fixed — transitions between filler tracks and karaoke songs now blend smoothly without volume jumps
- Build size reduced by removing duplicate and unused libraries from the distribution
- First-run experience fixed — eliminated a double-restart that occurred on fresh installations
- Column layout preferences now load with proper guards, preventing crashes when saved preferences reference columns that no longer exist
QUP Karaoke Engine v2.0.23 Release Notes
Genre Tagger Plugin
Brand new plugin that tags your entire song library with genre metadata from the freedb database — over 1 million artists catalogued.
- One-click genre tagging — download the pre-built genre database from qupkaraoke.com (~45 MB), then click Tag Library. Genres appear in your media library instantly, no restart needed.
- freedb import — for advanced users, import the full freedb dump directly from archive.org (~850 MB). QUP stream-parses the archive without extracting it to disk.
- MusicBrainz fallback — songs that freedb doesn't recognize get queued for MusicBrainz lookup. Start it when you're idle — it runs at 1 query per second in the background. Pause and resume anytime.
- Persistent LED indicators — the Genre Tagger window shows green LEDs with dates for each completed step: IMPORTED, TAGGED, and BRAINZED. State persists between sessions.
- Loading screen — the Genre Tagger opens instantly with rotating fun messages while the database loads in the background. No UI freeze.
- Browse for local file — already downloaded the freedb dump? Point QUP at the file instead of downloading again.
AutoFiller Plugin
New plugin that automatically keeps your filler music playing between karaoke singers. No more dead air.
- Enable with one click from the skinned popup window — right-click any empty area and select AutoFiller
- Shuffle mode — plays through your entire filler library before repeating any track
- Repeat avoidance — set a time window so the same song doesn't come back too soon
- Genre filter — limit auto-fill to a specific genre using ID3 tag data from your MP3 filler files
- Fill Now button — prime your filler queue before the show starts
- Live status — shows queue depth and available track count in real time
Genre Column in Media Library
- Genre column added to both the karaoke and filler file lists
- Artist and Genre columns added to the filler table
- Genre data populates automatically after running the Genre Tagger
Right-Click Context Menu
- Right-click on empty areas of the main window for quick access to AutoFiller, Genre Tagger, Control Panel, Singer Database, and About
- Menu is dynamic — only shows plugins that are actually loaded
Media Database Performance
- Song scanning is dramatically faster — indexed lookups replace full table scans, batch transactions replace per-song commits
- Database bloat fixed — automatic compaction after scans prevents the database from growing to multiple gigabytes over time
- Clean shutdown — database is properly checkpointed and closed on exit
Plugin API Expansion
For plugin developers building on QUP:
- New FillerPlugin interface for hooking into the filler playback system
- New SkinnedDialog utility for creating themed popup windows that match the active QUP skin
- New genre tagging methods:
updateSongGenre(),updateSongGenres(),updateFillerGenre() - New
refreshMediaLibrary()method to update the file list UI without a restart - New
getPluginDatabase()for plugin-private SQLite storage SongInfoexpanded with genre and album fields
Bug Fixes
- Fixed: Application required two restarts on first launch — now starts fully on the first run
- Fixed: Upgrading with new columns no longer crashes on startup — column count mismatches are handled gracefully
- Fixed: Filler music going silent on manual crossfade song transitions
- Fixed: Build size reduced from ~245 MB to ~90 MB by excluding unnecessary platform-specific native libraries
v2.0.22 — April 13, 2026
Crossfade & Distribution Fixes
- Fixed filler music going silent on song transitions when crossfade is set to Manual mode
- Fixed crossfade gains resetting on each new karaoke song start in Manual mode
- Fixed crossfade incorrectly triggering during seeks in Manual mode
- Filler volume slider now correctly applied on all playback paths
- Distribution size reduced from ~245 MB to ~90 MB by removing unused libraries (OpenCV, Tesseract, sensor drivers, and non-target platform binaries were being bundled unnecessarily)
v2.0.21 — April 12, 2026
KaraokeMaker Local Files & Fast Restart
- KaraokeMaker now supports local MP3 and MP4 files — use the Browse button instead of requiring a YouTube URL
- Accurate duration detection using FFmpeg probe replaces the old bitrate-based estimation
- Fast song restart — video mode seeks to the beginning instead of fully reloading, audio mode caches duration to skip the rescan
- Stop → Back now immediately restarts the current song without needing another Play click
- Playlist wait times show "PENDING" for a singer's queued songs that aren't up next
v2.0.20 — April 11, 2026
File Management Plugin & Plugin API Improvements
- New FileManagement plugin — batch rename and re-import songs with support for 6 naming formats (DISC/TRACK - ARTIST - TITLE, ARTIST - TITLE, and more)
- Right-click selected songs to re-import with a different naming convention or physically rename and reorganize files on disk into a clean folder structure
- Karaoke and Filler sub-tabs with multi-select, sortable columns, and a configurable output folder for file conversions
- Progress bar for batch operations across hundreds of files
- Plugin API extended with
SongInfo— plugins can now query and inspect the full song library - New
buildPluginApiGradle task automatically rebuilds the plugin API JAR when interfaces change - Five plugins now ship with QUP: SongShop, Music Video Backgrounds, OBS Recording, KaraokeMaker, and FileManagement
v2.0.19 — April 11, 2026
KaraokeMaker v2 & GPU Acceleration
- Complete rewrite of the KaraokeMaker plugin with a job queue system — queue multiple songs while one is processing
- Jobs persist between sessions so you can close and reopen without losing your queue
- Per-song output settings: brightness, duet mode, frequency slider, and visual effects are now set per song, not globally
- Right-click menu on queued jobs: Re-Start, Re-Sub (redo transcription only), Re-View, Import to library, Delete
- GPU acceleration throughout: NVIDIA NVENC for encoding, CUDA for vocal separation (Demucs), and CUDA for lyric transcription (Whisper) — falls back to CPU automatically if no NVIDIA GPU detected
- NVIDIA CUVID hardware video decoding for music video backgrounds and karaoke video playback
- Language support for 65 languages with auto-detection and manual override
- Graceful handling of songs where lyrics can't be transcribed — produces instrumental karaoke instead of failing
- Music Video plugin now supports browser cookie import for authenticated YouTube downloads
- Music Video plugin strips track numbers from search queries for cleaner YouTube results
v2.0.18 — April 10, 2026
Session Recording & Media Library Improvements
- Session Recording — every song queued, dequeued, moved, or removed during a live show is logged automatically
- Session Playback — replay saved session logs through the real rotation engine for debugging or training
- Per-folder media scanning — each media library folder now has its own Scan and Remove buttons with an inline progress bar
- Rescan All button replaces the old "check boxes then rescan" workflow
- Database settings panel cleaned up with a simpler vertical layout
- Fixed a rotation bug where singers could get scheduled back-to-back at the start of a show
v2.0.17 — April 9, 2026
Portable Distribution
- Switched from native installers to a portable zip distribution — just unzip and run, no installation required
- Per-platform JavaFX bundling for Windows, macOS, and Linux
- Gradle now auto-compiles all plugins as part of the standard build
v2.0.15 — April 5, 2026
Plugin Architecture
- New plugin system — third-party developers can extend QUP with custom song stores, media tabs, recording integrations, and more
- Four shipping plugins:
- SongShop — browse and purchase songs from the Party Tyme catalog directly inside QUP
- Music Video Backgrounds — automatically downloads YouTube music videos as CDG backgrounds via yt-dlp
- OBS Recording — controls OBS Studio via WebSocket to auto-record each karaoke performance with scene switching and lower thirds
- KaraokeMaker — AI-powered karaoke track creation: downloads a song, separates vocals from instrumentals, transcribes lyrics, and builds a karaoke file with timed lyric sweeps
- Playlist right-click menu — Exchange Song, Replace Singer, Lock/Unlock in rotation, Show Singer History, Dequeue
- Video drag-and-drop support for MP4, MKV, and AVI files
- Plugin developer guide included for third-party development
v2.0.14 — April 5, 2026
Bug Fixes & Stability
- Fixed music video backgrounds looping indefinitely after the last karaoke song ends
- Improved rotation engine stability in headless/CI environments
v2.0.13 — April 4, 2026
Rotation Engine Overhaul, Simulation & Cloud Queuing
- Deep analysis and alignment of the rotation algorithm with the original ml_akdj C++ engine
- Graduated new singer preference — replaces the old on/off checkbox with a 0–100 slider that controls how aggressively new walk-in singers jump the queue
- Max wait time lock now correctly protects only a singer's next song, not all their queued songs — matches the original algorithm's intended behavior
- Same-rotation tiebreaker corrected to use actual singer position in the rotation list
- Full simulation engine — run fake shows with randomized singers, songs, bribes, and KJ moves to test rotation fairness before going live
- Simulation displays a purple "SIMULATION" banner on the kcombo web interface with a simulated venue clock
- Rotation invariant tests added to the CI pipeline
- Bribe cost calculation fixed for songs queued via cloud and kiosk
- Double-click to edit singer name
- "Unmark Bad File" option added to the right-click context menu
Cloud Song Queuing
- Singers queue songs from their phones — scan a QR code displayed on the kcombo screen and they're in
- Mobile-first web interface with search-as-you-type across the venue's entire song library — even libraries with 120,000+ songs search instantly, with phones only downloading a handful of results at a time
- QR code rotates daily to confirm the singer is physically present at the venue
- One account per device per venue prevents duplicate signups from the same phone
- Returning singers are recognized automatically when they scan in on a future night
- Singer selfie photo upload from phone camera, displayed on the kcombo screen above the current singer
- Song change and replace — singers can swap a queued song for a different one without losing their spot
- "You're next!" notifications — in-app banner and vibration alert when a singer reaches position 2 or 1 in the queue
- No port forwarding or special network setup required — works behind any firewall
- Live queue view — singers see their position and estimated wait time from their phone
v2.0.0 — March 29, 2026
Major Release
- Application now starts immediately — no blocking dialogs on launch
- JavaFX video playback reliability improved with an alternating MediaPlayer strategy that avoids a known GStreamer pipeline degradation bug
- Import Media button added to the file list for quick song imports
- Venue name is now a simple text field instead of a button
- Output defaults corrected: JavaFX video, PortAudio audio, WASAPI driver on Windows
- Build system modernized with dynamic file scanning and updated GitLab CI for Windows, macOS (Apple Silicon), and Linux builds
- Version format standardized to three-part numbering (e.g., 2.0.0)
v1.1.51 — March 22, 2026
Skin System, Crossfade Engine & UI Overhaul
- 14 bundled skins themed after classic hi-fi receivers — EAD Ovation, Technics SC-CH900, Kenwood KR V-106, and more
- Live skin switching — change the look of the entire application without restarting
- All UI components (VFD timers, scrolling displays, VU meters, waveforms, EQ sliders, transport buttons) are fully skinnable
- Vector-drawn transport buttons replace old bitmap buttons — scale cleanly at any size
- Filler music EQ — filler now has its own independent 10-band equalizer (separate from karaoke EQ)
- CUT slider and VU meter — horizontal CUT slider for filler volume with a redesigned VU meter bar
- Smart crossfade engine with three modes:
- Silence — auto-fades filler based on silence detection in the karaoke audio
- No Karaoke — filler plays only when no karaoke song is active
- Manual — direct slider control
- Crossfade mode persists between sessions
- Config panel redesign — tabbed interface replaced with a tree-navigation panel (always light themed for readability)
- Alternating row colors in all list views, configurable per skin
- EQ curve visualizer with smooth spline rendering
- EQ memory preset buttons redesigned with LED indicator lights
v1.1.0-b48 — Pre-March 2026
Foundation (Java 21 Port)
- Filler music system — dedicated filler music player with its own playlist, crossfading between karaoke and filler streams
- Filler checkbox per media folder — designate folders as filler music (excluded from kiosk and song search)
- Internet radio URL support for filler music
- Filler songs appear on the kcombo web interface as "Filler" with no rotation logic applied
- VU meter panel — real-time stereo VU meter
- Smart crossfade — monitors karaoke audio levels and automatically fades filler at natural silence points
- Kcombo web interface — live queue display for the audience showing current singer, upcoming songs, rotation order, and queue status
- Kiosk touchscreen keyboard improvements
- Bribe visual indicator on kcombo — bribed songs show a tiled money GIF background
- Cloud backend with venue registration, live playlist sync, singer photo uploads, and session heartbeat