Changelog

Release notes for the Windows desktop app — what changed, what improved, and what to try after you update. Current download: v0.7.12. Older installers remain on the previous releases page. Notes last synced July 21, 2026.

RGBJunkie for Windows — What's new

Plain-language release notes for the desktop app. Newest changes are listed first.

v0.7.12

July 20, 2026

Effects
  • Audio Lines can trim the lowest frequency lines — a new Remove Lowest Bins (%) slider drops a fixed share of lines starting at the bass end (not by loudness) and folds them into the next higher line, then respaces the rest. Set it to 0 to keep every line.
  • Bloom keeps flowering — the animation could die after a short burst (with or without sound): a bad ring gradient threw inside the frame, and because the next frame was only scheduled afterward, the whole effect froze. Drawing is hardened, the loop always schedules the next frame first, and with sound off blooms spawn on a steady timer.
  • Bloom hits with the beat — with Sound Responsive on, new flowers spawn on bass/kick onsets. Raise Beat Sensitivity for softer hits. Fresh installs default to Beat Sensitivity 79. Beat detection is tuned for the app’s peak-held spectrum so high sensitivity actually floods blooms on music. Beat Gate and Saturation controls were removed.
  • Bloom growth follows the music — with Sound Responsive on, each new flower locks in a growth speed from how loud the music was when it spawned. Quieter moments later do not slow blooms that are already growing. Growth Speed is a global scale for all of them. Bloom size also follows frequency: bass blooms grow large, higher tones stay smaller (Max Size is the cap for the lowest frequencies).
  • Bloom colors follow your color profile — each new flower picks a random spot on the active Color Profile. The old Color Palette list was removed so only the profile drives color.
  • Effect share links are simpler — copying a share link now puts only the effect name and its controls in the link as plain query text (for example `?rgbj=v2&name=Bloom&speed=20`), not a packed blob. Opening or pasting the link still applies those settings on another PC that has the same effect.
  • Bloom flowers stay on the canvas — new blooms pick random spots across the full canvas, and existing ones are pulled back in if the layout size changes.
  • Opening a share link no longer shows the import toast twice — the same link was sometimes delivered twice to the app; it now runs once.
  • Audio-reactive effects less likely to go flat after a hitch — when the app was briefly busy (loading a scene, cleaning memory, talking to devices), it used to wipe the live audio picture before the next sample arrived, so effects like Audio Lines looked like they lost the music for a moment. They now keep the last good sample until a fresh one arrives. Spectrum polling also recovers faster when a read stalls, so the status-bar audio rate should stay near your target instead of dropping to about 1/s.
Performance
  • Lower CPU by default — new installs now target 45 FPS for lights and the on-screen preview (was 60). Effects still look smooth, and the PC stays cooler. Raise it anytime under Settings → System → Engine → Hardware update cap (up to 120 for high-refresh controllers). If you already chose a value there, that choice is kept.
  • Quieter in the tray — when RGBJunkie is minimized, effects no longer wake up ~100 times a second just to throw most of those frames away. They run at the same Hardware update cap as when the window is open.
  • Audio-reactive effects use less CPU — beat detection still tracks music, and you can set how often RGBJunkie asks Windows for the spectrum under Settings → System → Engine → Audio poll rate (default 30/sec; lower for cooler CPU, higher if beats feel late). The bottom status bar shows the actual poll speed next to the current audio input (for example `Audio: Speakers · 28/s`); hover to see the target you set.
  • Screen-capture effects start gentler — the default capture rate is 20 FPS (was 30), which is enough for most desktop-reactive looks without the extra load.
v0.7.11

July 20, 2026

Stability
  • Effects no longer freeze for a second or two while memory cleans up — with lots of devices (keyboards, mousepads, wallpaper grids, RAM), the app was throwing away and rebuilding huge piles of color data every frame. That filled memory until a big cleanup pause stalled the effect. Color data is reused in place now, so those cleanup pauses should be much rarer and shorter.
  • Settings → Help loads again — the Help tab could show “www.rgbjunkie.com refused to connect” instead of the Help Center. The in-app browser view was blocking the site’s pages inside that panel; Help opens correctly again.
  • Effects wait for their settings before starting — when you opened an effect, it could briefly run with default colors and sliders before your saved settings kicked in. Effects now stay still until those settings are loaded, then start with the values you saved.
v0.7.10

July 20, 2026

Devices
  • WLED matrix flicker fixed — the new safeguard that keeps WLED strips from going dark during busy moments was quietly re-sending the last picture on a timer during quiet scenes, and on a WLED matrix each of those extra sends showed up as a flicker (the flicker even kept time with the safeguard's interval). The safeguard no longer re-sends during quiet moments — it only smooths out bursts of catch-up frames — so steady scenes look clean again while strips still recover after a real slowdown.
Website
  • Help for antivirus false alarms — Windows Security (Microsoft Defender) sometimes quarantines a brand-new RGBJunkie build by mistake, with a name like Trojan:Win32/Bearfoos.A!ml. This is a false alarm, not a real infection — it happens because the version is new and not yet widely downloaded. The Windows download and warnings help page now explains it in plain language and walks you through getting RGBJunkie back: Windows Security → Protection history → open the RGBJunkie item → Actions → Restore, and how to add RGBJunkie as an exclusion if Windows keeps removing it. The same steps work for other antivirus programs. As always, only download RGBJunkie from rgbjunkie.com.
v0.7.9

July 17, 2026

Performance
  • Lower RAM use in long sessions — several memory fixes. A launch-settings conflict had quietly turned off the deep-clean step of the automatic memory cleanup, so RAM could climb much higher than intended before being reclaimed; that step now runs as designed. The engine is also told to keep the effects' working memory close to what is actually in use instead of letting it balloon between cleanups. Task Manager should show lower, steadier numbers while effects run for hours.
  • Steadier RAM with Live Wallpaper and screen devices — sending the effect picture to a Live Wallpaper or a device screen (Stream Deck and similar) was setting aside a fresh chunk of memory for every single frame, which made RAM bounce up and down in large waves. Those frames now reuse the same memory, and the automatic cleanup also runs more often (every minute instead of every 2), so the peaks you see in Task Manager stay much lower.
  • RAM peaks trimmed sooner — some effects generate scratch memory very quickly, and the app used to wait until it passed 1.1 GB before stepping in. It now does a light, instant cleanup as soon as the effect engine passes about 700 MB and checks twice as often, so the number in Task Manager stays in a much lower band. The light cleanup never pauses the lights.
  • More unused browser parts switched off — the built-in view that draws the app also carries browser machinery RGBJunkie never uses: the extensions system, website safety lookups, speech features, and form/password autofill. Those are now turned off at launch, which saves a little memory and background work without changing anything you see.
Stability
  • Loading a scene no longer restarts the app view — while a big scene was still loading, the built-in crash recovery could mistake the busy loading work for a freeze and reload everything, sometimes over and over. This hit hardest on scenes with several canvas tabs: opening them makes every device set itself up again, and a slow or sleeping device (a wireless mouse, for example) can keep the app waiting quite a while. Recovery now knows the difference between "waiting on a device" and "actually stuck" — it holds off while devices are still answering and only steps in for a real freeze.
  • Scenes load much faster when a device isn't answering — a sleeping or switched-off wireless device used to make the whole app freeze during scene loads: every question sent to it waited the full 3 seconds, and with retries that added up to half a minute or more of frozen screen and lights. After a couple of unanswered attempts the app now gives that device only a brief moment per question and moves on, then automatically tries again at full patience once a minute in case it woke up. Working devices are not affected — they answer in milliseconds.
  • Device wait times no longer max out a CPU core — some devices ask the app to wait between commands (a few seconds when setting up certain boards and RAM sticks). That waiting used to spin the processor at full speed the whole time. It now waits quietly instead, and if one device's waits add up enough to stall the lights, the log names that device so support can tell you exactly which one is slow.
  • One stuck device can no longer freeze the whole app — turning on a device that never finishes its setup (for example a Razer device that stopped answering, or hardware that doesn't match its plugin) used to lock up RGBJunkie completely: the setup routine retried over and over, holding the app hostage the entire time, and re-ran on every frame. A device now gets a few seconds to finish setting up; if it can't, RGBJunkie sets it aside and keeps everything else running smoothly, retrying that device with growing pauses (up to every 2 minutes) in case it comes back. The log names the device so you know which one to check or disable. A device that is clearly answering gets extra time to finish, so a slow-but-healthy device (some Razer mice take several seconds to set up) is never cut off half-way or wrongly set aside.
Devices
  • Device components no longer vanish from the sidebar — the component rows under each device (the mouse, keyboard, and strip layouts) could all disappear from the device list mid-session and only come back briefly when you cycled the sort button. This happened whenever a device renamed itself or announced a capability while running, which rebuilt the list without refilling it. The list now refills itself every time it rebuilds, so components stay put.
  • WLED strips no longer go dark or fast-forward when the app gets busy — if the app stalled for a couple of seconds (heavy scene load, memory cleanup, high CPU), WLED strips would lose their picture, briefly fall back to their own built-in animation, then replay all the missed frames at high speed. RGBJunkie now keeps each strip's last picture alive on its own — a dedicated sender re-sends it until fresh frames resume — and stale backlogged frames are skipped in favor of the newest one, so a busy moment shows as a barely visible pause instead of a blackout and a fast-forward burst. Turning a strip off in RGBJunkie still releases it normally so it can return to its own animations.
Audio
  • Microphone gain for audio-reactive effects — when Listen to is set to Default microphone in Settings → System → Engine → Audio-reactive effects, a Microphone gain slider appears (25%–400%). Use it to boost a quiet mic so lights react more strongly; speaker / system audio is unchanged.
v0.7.8

July 15, 2026

Effects and multi-canvas
  • Fixed Keyboard Effects staying black / not reacting — some keyboards never got a layout into the effect (missing device-kind metadata), and switching canvas tabs skipped refreshing that layout. RGBJunkie now recognizes fixed keyboard components even without that metadata, refreshes the layout when you reuse a tab, and recovers automatically if the keyboard appears after the effect started.
  • Sound-reactive effects keep moving when you switch to another canvas — if one tab used audio (for example Audio Party) and you switched to a tab with Keyboard Effects, RGBJunkie stopped listening to sound and zeroed the shared audio data. Parked sound effects looked frozen. Spectrum analysis now stays on whenever any canvas needs it.
  • Effects keep animating when you switch canvas tabs — the focused effect could lose its frame driver handoff after a tab change, and parked tabs used a fully transparent iframe that some WebView builds throttle. Tab switches now hand the driver to the active canvas cleanly, and parked canvases stay at a near-invisible opacity so they keep running.
Audio
  • Audio-reactive "listen to" selection now sticks between sessions — the choice of system output vs. microphone in Settings → System → Engine could revert to the default after an app update or WebView cache clear. The setting is now saved to your RGBJunkie data folder so it persists reliably.
Shutdown and sleep
  • RAM sticks now go dark on sleep — other devices already received their shutdown color when the PC slept, but memory lighting was skipped (on the assumption sticks reset themselves). Many boards keep DRAM powered through sleep, so sticks stayed on the last effect color. RGBJunkie now blacks out RAM with everything else before the machine suspends.
App updates
  • Download progress bar stays visible even with a long changelog — previously, if the "What's New" section was tall enough to scroll, the download bar disappeared off the bottom of the update dialog. It now stays pinned below the scrollable area so you can always see download progress.
v0.7.7

July 15, 2026

Performance
  • Plugins that produce no output are automatically paused — if a device plugin runs its Render loop for 2 seconds without sending any data to hardware (for example, an MSI motherboard controller that can't communicate with the board), RGBJunkie stops calling it to save CPU. It retries every 5 seconds so the device picks back up automatically if the issue resolves.
v0.7.6

July 15, 2026

Effects and smoothness
  • Eliminated stutter in effects — the engine's frame timer was firing faster than the hardware sample gate allowed, causing it to skip every other frame and produce a visible hitch pattern on your lights. The timer now fires at exactly the target rate (matching your Hardware update cap), so every tick produces a fresh effect frame that goes straight to your devices — no more skipped frames.
  • Fresh effect frames always reach devices on time — previously the effect canvas blit and the hardware sampling ran on two independent timers that could fall out of sync. Now the engine reads the effect's latest frame immediately before sampling, so devices always get the most recent colors.
Live Wallpaper
  • Fixed wallpaper going black when the effect holds a steady frame — the companion skipped repainting when the LED colors hadn't changed, so a static or slow effect could leave the wallpaper stuck on a black screen. It now always repaints so your lights stay visible.
Shutdown and sleep
  • Devices now receive their shutdown color when the computer goes to sleep — previously the shutdown sequence could not finish before the OS suspended USB, so devices stayed on their last effect color through sleep. RGBJunkie now holds the suspend transition long enough for shutdown colors to reach every device, then releases cleanly.
  • Shutdown colors work reliably across repeated sleep/wake cycles — a one-shot guard prevented shutdown colors from running more than once per session. The guard now resets on resume so every sleep (and a subsequent quit) applies shutdown colors correctly.
Device panel
  • New "Group by layout group" view in the left panel — click the sort button until you see the grid icon. The sidebar hides all device rows and shows only your components, organized by their canvas layout groups (Ctrl+G). You can name each group right in the sidebar, drag components between groups or into the Ungrouped section, and reorder components within a group. Group names are saved with your profile.
Audio
  • Switch between speakers and microphone for audio-reactive effects — open Settings → System → Engine and look for "Audio-reactive effects." A new dropdown lets you pick whether RGBJunkie listens to your default playback device (system audio loopback, the original behavior) or your default recording device (microphone / line-in). The status bar shows which source is active, and the change takes effect within a couple of seconds — no restart needed.
Stream Deck
  • Fixed buttons sometimes freezing and stopping updates — if an LCD key's image encode failed once (e.g. during a black frame), the bad result was cached and that button permanently stopped receiving new images until the effect changed enough to look different. The cache now discards failed encodes and retries on the next frame, so every button keeps updating.
v0.7.4

July 15, 2026

GPU lighting
  • Fixed a critical crash that stopped ALL devices from lighting up — when a GPU with a matched plugin was present, the entire rendering loop crashed every frame with "Cannot read properties of undefined (reading 'render')". This made every single device (keyboard, mouse, Nollie, headset — everything) appear dead even though they were correctly detected. The GPU sandbox stub was missing an internal property that the engine's frame loop checks on every active device row.
  • Rebuilt GPU lighting the way graphics-card plugins expect — GPU RGB (Gigabyte, MSI, PNY and other cards controlled over the card's built-in I2C bus) stayed dark because RGBJunkie was sending commands in the wrong format and to the wrong place. It now talks to the card exactly the way its plugin expects, using the address the card reports during detection.
  • GPU lighting rolls out carefully and safely — this release verifies everything against your real card _without sending anything to it_ while we confirm it works across many models. RGBJunkie only ever targets the exact controller your card reports (it never probes random addresses), and if the graphics driver reports repeated errors it automatically stops instead of retrying forever — so GPU lighting can't disturb anything else on the card.
  • Clearer GPU status — the graphics card list now labels the communication column "I2C link" with an "I2C available" state, and a tooltip explains it only means RGBJunkie can reach the card — not that the card has RGB LEDs.
  • "LEDs" column shows what was actually detected — the graphics card list now has an LEDs column that reads "detected" (with the light count) when a plugin recognizes your exact card and knows its lighting layout, or "None detected" when no plugin claims it. This tells you at a glance whether a card's lights can be controlled, separate from whether RGBJunkie can merely reach the card.
System
  • Performance settings logged at every boot — the app now writes all performance-related settings (FPS cap, sampling backend, USB delivery mode, engine resolution, etc.) into the log file each time it starts. If a tester reports problems, you can see exactly what their settings were without guessing.
  • "Reset performance settings" button — in Settings → System → Engine, a new button resets all performance tuning (FPS cap, engine resolution, binary USB delivery, WebGL sampling, wireless Razer override, HID dedup) back to factory defaults in one click. Use this if lighting stopped working or looks choppy after an update — leftover settings from an older version may be the cause.
v0.7.3

July 15, 2026

GPU lighting
  • GPU LED control runs fully in the Rust interpreter — GPU plugin probing and rendering (the I2C communication that drives LEDs on your graphics card) now runs entirely in the native Rust interpreter instead of the WebView sandbox. This fixes GPUs not lighting up after recent updates, removes the dependency on WebView JavaScript evaluation for hardware I2C, and makes GPU lighting more reliable and responsive.
Support
  • Visual log analyzer — run `npm run logs:visual` to open a drag-and-drop diagnostic tool in your browser. Drop a user's log files or their `rgbjunkie-logs.zip` support bundle and get a full visual report: health summary cards, error breakdowns, stall timeline scatter plot, memory trend chart, detected device list, RAM controller inventory, and rotated log history. Copy or download the report to share.
  • CLI log analyzer — run `npm run logs:analyze` for a quick text report of the same diagnostics from the terminal. Add `--json` for machine-readable output.
v0.7.2

July 14, 2026

Device plugins
  • Razer headsets stay lit after startup and USB events — Razer Kraken headsets (and similar multi-collection devices) could stay dark from the moment the app started because the lighting endpoint the plugin selected during setup was lost before the first frame was sent. RGBJunkie now remembers which endpoint the plugin chose and re-applies it automatically whenever USB devices are re-scanned — no manual "Find Lighting Connection" needed.
  • Razer headsets no longer lose lighting after a few minutes — some Razer headsets and peripherals revert to their built-in color animation if they don't hear a "stay in software mode" command often enough. RGBJunkie now automatically resends that command every 60 seconds in the background, keeping the device under app control indefinitely without any manual intervention.
Effects
  • Effects now animate at the full Hardware update cap — when a Live Wallpaper device was active, its target frame rate (often 30 FPS) was also used for the on-screen effect preview, making every effect look choppy even though your Hardware update cap was set higher. The preview now always follows your cap, so effects stay smooth regardless of what wallpaper devices are streaming.
  • Double Pendulum scales to any canvas size — the pendulum arms, joints, and trails now fill the canvas proportionally instead of rendering in a fixed 320×200 area.
Component Library
  • Loading indicator while online components arrive — the Component Library now shows a spinner and "Loading online components…" banner while the list from rgbjunkie.com is being downloaded, so you know more devices are on the way.
Support
  • Ctrl+L copies log files to your clipboard — press Ctrl+L anytime to copy the log files (app log, hardware snapshot, and debug log) to your clipboard. Paste them straight into Discord or a support ticket as file attachments.
Website
  • Simplified navigation — removed the separate Documentation link from the site header, footer, and hub; everything lives in the Help Center now.
Reliability
  • Devices that connect late keep their saved desk position and size — USB devices that aren't available at startup (speakers, soundbars, hubs that take a moment to enumerate) could appear at the default position and size instead of where you last placed them. They now restore their saved layout immediately when they come online.
  • All devices go dark on exit, sleep, hibernate, and shutdown — every device now has a Shutdown Color setting (Settings → Plugin Settings → Lighting, defaults to black). When you quit RGBJunkie, put the PC to sleep, hibernate, or shut down, the app sends that color to each device's LEDs — including Stream Decks, speakers, and any other device whose plugin previously left the lights on whatever the last effect was.
v0.7.1

July 14, 2026

Device plugins
  • Razer headset and Base Station no longer flicker after ~45 minutes — Razer devices that require periodic "software mode" authorization (Kraken headsets, Base Station V2, and similar) could revert to their internal color animation after about 45 minutes of being controlled. The plugins now keep those commands running reliably because RGBJunkie no longer skips or shortens their timing requests.
  • Device plugins have full control over their own timing — `device.pause()` now waits for exactly the time the plugin asks for, in every situation. Previously, pauses during lighting updates were shortened or skipped entirely, which could break firmware handshakes and mode-switching sequences on timing-sensitive devices.
  • Device reads always return live data — `device.read()` and `device.get_report()` now always talk to the hardware and return a fresh response. Previously, some reads during lighting updates returned stale cached data, which could cause plugins to misread device status or miss firmware replies.
  • USB control and bulk transfers work during lighting updates — `device.control_transfer()` and `device.bulk_transfer()` now work at any point in a plugin's lifecycle, not only during initial setup. Plugins that need these for mode switching or configuration can now use them reliably.
  • Clear read buffer drains stale data — when a plugin clears its read buffer before sending a new command, RGBJunkie now actually discards any old reports waiting in the device's queue. Previously nothing happened, so the next read could get leftover data instead of the expected reply.
  • Flush sends queued writes immediately — when a plugin asks to flush pending data mid-frame, RGBJunkie now dispatches everything that's been queued so far instead of waiting until the frame ends. This helps devices that need a write to land on the wire before the next read.
  • Plugin firmware warnings show in the App log — if a device plugin reports a notice (like a firmware version mismatch), the message now appears in Settings → Logs → App instead of being silently dropped.
  • GPU lighting works reliably — GPU plugins (Gigabyte, MSI, ASUS, PNY, EVGA) that control the card's LEDs over I2C now get proper timing and live data. Previously, pauses between I2C writes were skipped and register reads returned stale values, which could prevent the GPU from accepting color commands. The GPU bus also now exposes `GetAddress` so more upstream plugins can run without crashing.
  • MSI GPU plugins no longer crash on startup — MSI GPU plugins (Blackwell, Lovelace, and others) would fail to probe your GPU because an assertion helper they rely on was missing. That helper is now available so those plugins can detect and claim your card correctly.
  • Bus diagnostics show in plugin log — when plugin diagnostics are enabled (Settings → Logs → App), messages from GPU and RAM bus plugins now appear alongside regular device plugin logs. Useful for troubleshooting lighting on GPUs and memory modules.
  • Word-sized I2C reads available for GPU and RAM — some upstream GPU and memory lighting plugins need to read two-byte registers. The bus now supports word-sized reads in addition to single-byte reads.
  • Keychron (and other QMK keyboards) show their brand image — keyboards from the upstream QMK plugin repo (Keychron, Nuphy, GMMK, Lemokey, and others) were showing the generic RGBJunkie logo in the device list instead of their own brand tile. They now display the correct brand image.
  • Live Wallpaper shows Lively or Wallpaper Engine branding — the Live Wallpaper device in your device list now shows the correct name and brand image for whichever app is running (Lively Wallpaper or Wallpaper Engine) instead of the generic "Live Wallpaper" label and default icon.
  • "Turn WLED OFF on shutdown" now works — the setting in a WLED device's options (Settings → Hardware → Connected → your WLED → Turn WLED OFF on shutdown) was never actually sending the off command. RGBJunkie now sends the shutdown color reliably and then tells the WLED controller to power off before the app exits, so your strip actually goes dark when you quit.
v0.7.0

July 14, 2026

Device plugins
  • Wireless Razer mouse lights correctly after a restart — on a wireless Razer mouse (Basilisk V3 Pro and similar), lighting could come back slow and laggy after restarting RGBJunkie, and you had to re-run Find lighting connection each time to make it fast again. RGBJunkie now sends lighting to exactly the connection the mouse's own plugin chooses, so it lights up correctly on every launch with no extra steps.
  • Stream Deck Elgato Friendly Mode paints buttons again — turning on Elgato Friendly Mode in the Stream Deck’s plugin settings is supposed to fill each key (and the dial strip, when present) with one solid color sampled from your effect. RGBJunkie had been treating that option as “leave the panel alone,” so nothing updated. Friendly mode now drives the LCD again; use Output off in Settings → Hardware → Connected when you want Elgato’s own icons left untouched.
  • Stream Deck button images no longer streak in Canvas mode — when buttons show a live effect image (not solid Friendly colors), some frames could look streaked or half-drawn. RGBJunkie was reusing a cached JPEG that the Stream Deck plugin had already torn apart into USB packets. Cached images are now copied before send, so each refresh is a complete picture. A follow-up fix also stops the panel from painting once and then freezing: button images keep updating with your effect instead of holding the first frame.
  • Live Wallpaper follows the canvas it sits on — Lively / Wallpaper Engine was reading colors from whichever workspace tab you had open, so the desk matrix showed the wrong effect when the Live Wallpaper component lived on another canvas. It now samples the canvas where that component is placed.
  • Live Wallpaper LEDs match the layout box after startup — on launch, restoring the saved Live Wallpaper size/position could leave the desk matrix sampling the wrong spot (as if the box were still at its default size). RGBJunkie now refreshes that mapping whenever the layout is restored or resized.
Reliability
  • Fewer wild flickers when a controller's USB connection acts up — if a device (such as a Nollie LED controller) stopped accepting lighting for a few seconds because its USB connection got stuck, RGBJunkie kept firing new frames at it. When the connection briefly cleared, all the backed-up frames rushed out at once, causing a burst of harsh flickering, and the App log filled with repeated errors. RGBJunkie now notices when a device stops responding, briefly pauses lighting to that one device so nothing piles up, and quietly resumes as soon as it recovers — other devices keep running normally the whole time. If a controller keeps going dark, it's worth trying a different USB port (ideally on the back of the PC, not a shared hub) and turning off USB power saving for it in Windows.
  • Multi-connection devices light on the right connection automatically — devices that expose several connections at once (Razer mice, some keyboards and controllers) used to rely on a shared internal lookup to decide where lighting went, which could point at the wrong connection after a reconnect or restart and leave the device dark. Each device's own plugin now picks its lighting connection directly, so gear lights up on the correct connection every time — on first launch, after a restart, and after unplugging and replugging.
Performance
  • Lights run smoother and faster — RGBJunkie now sends lighting through a leaner, more direct path to each device with less work happening behind the scenes. Effects update at higher frame rates and stay fluid even with many devices connected at once, and some panels that used to refresh slowly now run several times faster.
  • Screen-based panels no longer slow everything down — devices that show the effect as a little picture (Stream Deck LCD keys and touch strips) were redrawing that picture far faster than the eye can see, and all that image-building on a busy effect could bog down the whole app — you'd notice other lights and network devices (like WLED) dropping to a lower frame rate, especially at higher Engine Resolution. RGBJunkie now refreshes those screens at a smooth, sensible rate and skips redrawing a screen that hasn't changed, so your other gear keeps its full speed.
  • Sensible limits on the heaviest settingsSettings → System → Engine now lets you pick Resolution scale as or with two buttons (instead of a slider), and caps the Hardware update cap at 120 FPS. Higher values mostly burned CPU and dragged every device's frame rate down without a visible improvement. If you'd saved a higher resolution before, it's moved down to 2× automatically.
  • Faster startup when Lively / Wallpaper Engine is set up — connecting to your desk wallpaper no longer holds up the rest of startup. RGBJunkie finishes opening your devices and workspace first, then hooks up the Lively bridge and Wallpaper Engine companion in the background, so the splash doesn't sit waiting on wallpaper checks.
  • Devices reach your Hardware update cap again — with the update rate set to 60 FPS, fast USB gear (Stream Deck and similar) was falling well short even though the same devices could run much faster when the temporary “uncap” test mode was on. RGBJunkie now keeps those devices on their own faster update path at your chosen cap, so they can actually hit 60 when you ask for it.
  • Stream Deck no longer stuck near 20 FPS on a busy desk — the Stream Deck was sharing USB turns with every other device even when it had its own LCD refresh rate set. With several lights connected that dropped it to about 20 updates a second no matter what the Engine hardware cap said. It now keeps its own update path, so the LCD refresh rate in the Stream Deck’s plugin settings can take effect.
  • Plugin refresh rates are honored — if a device plugin sets its own rate (Stream Deck LCD refresh, Nollie frame target, and similar), RGBJunkie follows that setting. Settings → System → Engine → Hardware update cap is only the ceiling. Extra host limits that used to cut devices below what the plugin asked for (USB turn-sharing, a hard LCD encode cap, a hard wireless-mouse floor) are removed.
  • Live FPS on the Connected listSettings → Hardware → Connected now shows each device’s frame rate in the main row, so you can see it without opening the device fold. Live Wallpaper rows now include that number too while the desk matrix is streaming.
v0.6.6

July 13, 2026

Device plugins
  • Wireless Razer mouse colors track live — on a wireless Razer mouse (Basilisk V3 Pro and similar), fast effects could run a long way behind, with the mouse showing colors from many seconds ago. RGBJunkie now updates the mouse at a steady rate its wireless dongle can keep up with (about the same as other Razer software), so colors follow your effect in real time instead of trailing.
App log
  • Type commands in the App log — the App log window (press F12) now has a command box at the bottom. Type `help` to see what you can view or change — for example `razerfps 20` to set the wireless Razer mouse rate, `devicefps 60` for the overall update cap, or `pluginlog on` to record device-plugin messages. It's a small, safe set of settings only; use the up/down arrows to reuse recent commands.
v0.6.5

July 12, 2026

Reliability
  • Stays light on memory during long sessions — over a marathon session with lots of plugging, unplugging, and network lights coming and going, RGBJunkie could slowly hold onto more and more memory for gear that was no longer connected. It now lets go of that leftover data as devices come and go, so memory use stays steady and the app keeps running smoothly whether it's been open for minutes or days.
v0.6.4

July 12, 2026

Effects
  • Keyboard-reactive effects light your keyboard every time — effects that respond to your typing (the Keyboard "layout follow" style) sometimes left the keyboard dark for no clear reason — random from one launch to the next, more likely when the keyboard's tab wasn't the one you were looking at or right after you reconnected the keyboard. The effect was giving up if your keyboard's key layout wasn't ready the instant it started. It now waits for the layout and lights up as soon as it arrives, so these effects work reliably on any tab and after a replug.
Device plugins
  • Wireless Razer mice keep up with your effect — on a wireless Razer mouse (Basilisk V3 Pro and similar), colors could trail the workspace by many seconds even though the mouse was connected and lit. RGBJunkie now sends lighting at a steady pace the dongle can actually apply, so side-to-side and fast effects track in real time instead of lagging behind.
  • Unplugged devices disappear right away — when you disconnect a USB device, it could linger in Settings → Hardware → Connected for several seconds before vanishing. RGBJunkie now drops unplugged gear from the list as soon as Windows reports it gone, and stops sending lighting to it so reconnect is more stable.
Reliability
  • No more crash when unplugging and replugging devices — disconnecting a USB light (or its whole hub) and plugging it back in could occasionally crash RGBJunkie. Cleanup of a device that's going away is now handled safely even while RGBJunkie is scanning the bus for the reconnect, so plugging gear in and out stays stable.
  • Plugging one device back in no longer freezes the others — reconnecting a mouse (or any USB light) used to make every other device blink or stall for the better part of a minute while RGBJunkie re-initialized the whole lineup. Now devices that never left keep running untouched and only the device you actually plugged in gets set up, so a reconnect is quick and the rest of your gear keeps animating.
  • Newly plugged-in devices attach on their own — when you plug in a device while RGBJunkie is running, it now sets up just that one device in the background instead of rescanning your entire setup. Your existing lights keep their effect running without a pause, and the new device's controls appear on their own a moment later.
  • Lights stay lit while RGBJunkie checks the bus — after plugging or unplugging a device, RGBJunkie repeatedly checks which devices are still connected. On some setups one slow device made that check take several seconds, and while it ran every other light would freeze or blink — sometimes long after the device had already reconnected. Those checks are now near-instant, so your other gear keeps animating smoothly through a connect or disconnect.
  • Unplugging a device no longer disturbs the rest — disconnecting one USB light used to make RGBJunkie re-initialize your whole lineup, so everything blinked. Now an unplug simply drops that one device and closes its connection; every other light keeps running without a flicker. Reconnecting also no longer triggers a second, redundant refresh a few seconds later.
  • Keyboards light back up after you replug them — unplugging and reconnecting a keyboard (Keychron and other QMK boards) could leave it in the device list but completely dark. Keyboards need a quick setup handshake to switch back into RGBJunkie's lighting mode after being reconnected, and the faster reconnect path was skipping it. RGBJunkie now runs that setup for a keyboard that comes back, so it relights on its own.
v0.6.2

July 12, 2026

Device plugins
  • Razer mice light up reliably again — a Razer mouse (Basilisk V3, V3 Pro, and others) could show up in the device list but stay dark, with no lighting and no layout — while every other Razer device worked. The mouse needs a quick back-and-forth with RGBJunkie at startup to hand over its lighting layout, and that handshake wasn't completing. It now does, so the mouse lights up, follows your effect, and flashes when you use Identify — wired or wireless.
  • Device serial shown in Settings → Hardware — expand a device under Settings → Hardware → Connected to see its firmware serial. Razer devices show the serial they reported, or "Not captured" if the device hasn't handed one over yet — handy when checking why a wireless device isn't lighting.
Logs
  • Filter the app log — the App log panel (press F12) now has a filter box that narrows what you see to just the lines containing your text, with a live match count. Clear it to see everything again. The log view under Settings → System → Logs has the same filter.
  • Plugin diagnostics you can turn on — a new Plugin log switch on the App log panel records the play-by-play from a device's plugin (what it asks the device, the serial it reads back, and any errors) straight into the log. Turn it on, reconnect the device or restart, then read or send the log — great for figuring out why one device won't light. Leave it off for everyday use.
  • App and Plugin logs on separate tabs — the App log panel (press F12) now splits into two tabs: App for RGBJunkie's own messages and Plugins for the device-plugin chatter, each with a live line count. Switch tabs to focus on one without the other scrolling past, and the filter box applies to whichever tab you're viewing.
Startup
  • No more freeze when two wallpaper apps are open — if both Lively Wallpaper and Wallpaper Engine were running when RGBJunkie started, it could get stuck on the "Connecting to Wallpaper Engine…" startup screen forever, because the "which one should I use?" question was hidden behind the loading screen and could never be answered. That question now appears on top during startup, so you can pick one and RGBJunkie finishes loading.
Performance
  • Lower memory use — RGBJunkie now keeps its lighting engine's memory footprint tighter instead of letting it drift upward the longer the app runs, so it holds a lower steady RAM level while your effects play.
  • Effect memory limit you can tune — a new Settings → System → Engine → Advanced & diagnostics → Effect memory limit control lets you choose how much memory the display engine may use for effects (default is the new, lower setting). Pick a lower value for less RAM, or a higher one if a very heavy full-screen effect ever restarts on its own. Takes effect after you restart RGBJunkie.
v0.6.1

July 11, 2026

Audio
  • Audio-reactive effects on a rock-solid listener — RGBJunkie captures your system sound the proven way: it follows your Windows default playback device, starts cleanly at launch, and keeps feeding effects without dropping out. It always listens to your speakers (never the microphone), so a quiet moment can't make your lights react to room noise. To use a different source, set it as your default output in Windows Sound settings.
  • Audio status in the status bar — the bottom status bar shows what RGBJunkie is listening to: a green dot when sound is coming through, an amber dot when the speakers are open but silent, and a gray dot when there's no output to capture. Hover it for the device name and live signal level.
  • Audio recovers on its own — if capture stalls after the PC wakes from sleep, after a Bluetooth headset switches modes, or when you change your speaker's format (bit depth, sample rate, or Spatial Sound) in Windows, RGBJunkie reconnects automatically instead of going quiet until a restart. On PCs where Windows briefly flips its default playback device back and forth (Razer Synapse's virtual speaker, monitor HDMI/DisplayPort audio, or a VR headset connecting), effects no longer stutter — RGBJunkie waits for a settled change before switching.
  • Effects catch every beat — audio-reactive effects no longer skip quick beats. RGBJunkie holds the loudest sound between updates and reads it more often, so fast kicks and snares reach your lights instead of slipping through the gaps.
Startup
  • The startup screen shows it's actually working — the loading bar now has a light that keeps sweeping across it the whole time, and the status line calls out more of what's happening — including live counts as your effects, plugins, and lights load — so a longer step no longer looks like a freeze.
  • Faster start with live wallpaper devices — startup no longer pauses for up to 20 seconds waiting for a live wallpaper (Lively or Steam Wallpaper Engine) to open its connection. RGBJunkie finishes loading right away and links up with the wallpaper in the background the moment it's ready.
Device plugins
  • Wireless Razer mice follow your effect instead of breathing — mice such as the Basilisk V3 Pro could show the right name and layout in RGBJunkie but keep their own rainbow/breathing colors on the desk, even though the same plugin worked in SignalRGB. RGBJunkie now groups the mouse's many split USB connections as one device, reads back its real serial during startup, binds the lighting connection SignalRGB expects (interface 3 / boot mouse), and switches the mouse into software lighting mode so it follows your active effect. Wired Razer devices are unaffected.
  • Gaming mice keep lighting while polling buttons — mice that poll buttons every frame now switch only their input connection during effects; lighting colors keep going to the connection chosen at plug-in, matching SignalRGB.
  • Razer keyboard stays in sync when a wireless mouse is connected — having a wireless Razer mouse plugged in no longer makes RGBJunkie probe your keyboard on the mouse's USB paths, which could freeze the keyboard on one color and leave Rescan or startup stuck on multi-Razer setups.
  • Razer Base Station V2 Chroma shows up and lights again — Windows can expose the stand as two USB devices; RGBJunkie now recognizes both and binds the right interface, so it appears under Connected and follows your effect.
  • Razer Kraken Ultimate headset lighting — the ear cups light with your colors again (RGBJunkie now sends the full USB lighting packet the headset expects).
  • Nollie boards on serial (CDC) firmware connect again — Nollie 8, Nollie1, and similar controllers that appear as a COM port in Windows now open on the right port and show all their channels under Connected. RGBJunkie keeps its bundled Nollie drivers authoritative, and Install SignalRGB plugins skips Nollie so imports don't overwrite them.
  • WLED matrix & clock add-on is now built in — the WLED add-on that adds matrix modes (Time, Custom Text, Pixel Art, Libre Hardware Monitor, Weather, System Sensors) now ships with RGBJunkie, so those options are there the first time you add a WLED device — no separate download or manual file drop.
  • Cleaner plugin settings — labels and dropdowns that used to say SignalRGB now show RGBJunkie, while the app still passes the original plugin values so lighting and quit behavior keep working. Expand a device under Settings → Hardware → Connected to see the exact driver file loaded for it.
Effects
  • Smooth effect canvas with wireless Razer mice — during an active effect, the workspace preview no longer hitches about once a second while the mouse is connected.
  • The Matrix, rebuilt — a lightweight falling-code effect that scales correctly on the workspace and your LEDs at any engine resolution. Opens sound-reactive with slower rain and longer trails; a Color profile at the top of the Colors tab drives each column (Rainbow, custom slots, or your saved profiles).
  • Vortex Tunnel fills the canvas — the preview and LEDs now fill the workspace instead of staying at a small fixed size.
System tray
  • Wireless mouse battery in the tray — when a supported wireless mouse is connected, a colorful battery icon appears next to RGBJunkie in the tray (green when high, orange in the middle, red when low). Hover for the device name, charge level, and whether it's draining or charging. The reading is steady and light on your mouse, and you can turn it off under Settings → System → Startup.
Updates
  • Reliable update checks and release notes — the in-app update check accepts release-candidate versions, loads What's new from rgbjunkie.com when the bundled notes are older, and uses a single clean scrollbar for long notes. Restart from the tray relaunches RGBJunkie cleanly again.
Troubleshooting
  • Find a device's lighting connection — if a device is detected but stays dark, open Settings → Hardware → Connected, expand it, and click Find lighting connection. RGBJunkie switches the lights to each connection one at a time so you can see which one lights up — no more guessing.
Settings
  • Clearer Connected devices — driver paths no longer show odd `\?\` characters, WLED rows show their host/IP instead of Unknown, and you can copy a link to a Settings search to jump straight back to it (handy for Stream Deck or support).
Components
  • Component library loads from rgbjunkie.com — RGBJunkie no longer packs hundreds of brand-specific fan and strip layouts in the installer; the online catalog merges in automatically when you open the component library, alongside a few generic ARGB fan sizes. Your saved desk layouts are unchanged.
Website
  • App deep linksDocumentation → App deep links on rgbjunkie.com lists every `rgbjunkie://` shortcut with copy-ready examples and a route reference for brightness, effect and scene cycling, desk-lights toggle, and every Settings tab.
  • Clearer downloads — the releases page lists every hosted build with clearer download buttons, and short "latest" links (for example /RGBJunkieApp/download/latest/setup) always start the newest installer for each format (Windows setup, MSI, portable ZIP, Linux .deb, .rpm, and AppImage).
v0.4.11

July 7, 2026

Website
  • Download help for Windows warnings — the download page, the “thanks for downloading” page (while your file transfers), and Help Center explain what to do when Edge says the installer “isn’t commonly downloaded” (Keep / Keep anyway) and when SmartScreen asks before the first run (More info, then Run anyway).
First run
  • Device plugin install promptNot now on the first-run Install device plugins dialog only skips until you quit RGBJunkie; the next launch asks again until you install the catalog or use Settings → Installed → Plugins. Older builds that saved “not now” permanently no longer block the prompt.
  • SignalRGB trademark note — the plugin install dialog and Settings → Installed → Plugins now state that SignalRGB® is a WhirlwindFX trademark, that RGBJunkie is not affiliated or endorsed by them, and that the copy helper is only for your convenience when you choose to import their plugins.
Installer
  • Fresh install when the old copy is already gone — if Windows still lists RGBJunkie from an earlier install but the folder was removed, choosing Uninstall before installing no longer stops on an error; the installer clears the leftover entry and continues.
Device plugins
  • RGBJunkie plugins and add-ons are open source — WLED, Nollie, PrismRGB, Stream Deck, glyph helpers, and add-on templates ship under GPL-3.0-or-later. You can read, modify, and share that source; the RGBJunkie app itself stays proprietary. See plugins/OPEN-SOURCE.md in the install folder or repository.
  • QMK keyboards download on first launch — Keychron, GMMK, Wooting, and other QMK keyboard plugins no longer ship inside the installer. On first start RGBJunkie adds the community SRGBmods/qmk-plugins Git source and downloads them automatically (also listed under Settings → Installed → Git). Your keyboard should appear after that download finishes — use Rescan hardware if needed.
  • SignalRGB install copies the full catalog — optional install from GitLab, your SignalRGB app folder, or a chosen `Plugins` directory now includes partner folders such as Zhi Yan, Nollie, and PrismRGB when they are present in the source. Matching files in your user plugins folder are replaced so SignalRGB’s version is used. WLED and QMK keyboard plugins are still skipped during SignalRGB import.
  • Plugins folder readme — the readme beside bundled plugins now explains your %APPDATA%\RGBJunkie\plugins folder (where imports go), what ships with the installer, optional SignalRGB and QMK installs, add-ons, and when to run Rescan hardware.
v0.4.8

July 7, 2026

Device plugins
  • SignalRGB plugins are optional now — RGBJunkie no longer ships SignalRGB’s device plugin library in the installer. After launch (or from Settings → Installed → Plugins → Install SignalRGB plugins), choose Download from GitLab, Copy from SignalRGB on this PC, or Choose a plugins folder. A progress bar shows while files copy into your user plugins folder; then run Rescan hardware so your gear is detected.
  • Remove old SignalRGB imports — if you still see a large plugin count after updating, use Settings → Installed → Plugins → Remove SignalRGB plugins to delete previously imported catalog files from your user folder (your own add-ons stay). Only the bundled RGBJunkie plugins load until you install again.
  • WLED, Nollie, and Stream Deck still ship with RGBJunkie — only the SignalRGB catalog was removed from the bundled plugin folder. QMK keyboards moved to a first-launch Git download in v0.4.11 below.
v0.4.7

July 5, 2026

Sensor dashboards
  • Sensor helper stays on when you switch canvas tabs — if Deck Vitals or another sensor effect is still running on a background tab, RGBJunkie no longer stops the sensor helper just because the active tab uses a different effect.
v0.4.6

July 5, 2026

Startup
  • Splash bar shows real progress — on launch, the thin bar at the bottom of the splash screen fills as RGBJunkie loads your devices, effects, and scene instead of looping the same animation.
Sensor dashboards
  • CPU and GPU effects work without extra setup — dashboards like Deck Vitals on Stream Deck Plus can read load, temperature, RAM, and fan speed without opening LibreHardwareMonitor or turning on its web server. RGBJunkie starts a small background helper when you need live readings and stops it when you do not.
  • Deck Vitals fills in faster — dials and numbers appear as soon as your processor and graphics readings are ready; other sensors (drives, network, and so on) catch up in the background instead of leaving every key blank until a full scan finishes.
  • Switching sensor effects keeps your readings — moving between CPU/GPU layouts on different canvas tabs no longer drops live data or leaves dials stuck on “loading.”
  • Lights stay smooth while sensors connect — your LEDs no longer stutter every few seconds while RGBJunkie waits for hardware readings, including when a sensor effect is open but data is not available yet.
  • Background helper closes with the app — quitting RGBJunkie or choosing Exit from the tray also stops the sensor helper instead of leaving it running in the background.
Effects
  • Easier effect settings — sliders have a box where you can type a number, color pickers show an editable hex code beside the swatch, and imported effects get familiar controls (on/off toggles, dropdowns, hue sliders, and text fields) under Effect Settings.
  • Deck Vitals — clearer labels — each key slot is named C1R1, C1R2, and so on in Effect Settings, matching the eight keys on Stream Deck Plus. Old saved scenes still pick up your sensor and caption choices.
  • Deck Vitals — your color on each key — pick a color for every sensor slot (C1R1 color, C1R2 color, and so on). The dial brightens as the reading rises, and the top row’s color tints that column’s strip history.
  • Deck Vitals — network speeds in Mbps — download and upload show Mbps, the same scale as speedtest apps. Set C4R1 dial max in Mbps (for example 1000 for a gigabit line).
Settings
  • Overview shows your WLED strip sizeSettings → Overview lists how many LEDs you actually assigned on the desk for each WLED device, not the controller’s maximum capacity.
  • Overview hides muted devices — gear with Output off under Settings → Devices no longer clutters the connected-hardware grid. The summary still tells you how many are muted.
v0.4.4

July 4, 2026

Updates
  • Update dialog matches the version you are installing — What's new now leads with notes for the latest release (for example v0.4.3), skips empty developer placeholders from older versions, and pulls fresh notes from rgbjunkie.com when your installed copy is behind.
WLED layouts
  • Corrupted WLED saves heal on reload — if a layout file wrongly stored a one-LED WLED placeholder for a strip or matrix, RGBJunkie restores the component you named in the device tree (for example your matrix or desk strip) instead of lighting every LED from a single dot.
v0.4.3

July 4, 2026

Updates
  • What's new shows real release notes again — the update dialog no longer displays the internal “add bullets here” developer placeholder. In-progress sections stay hidden until they have real notes, and the app can load fresh release notes from rgbjunkie.com when your installed copy is out of date.
v0.4.2

July 4, 2026

Startup
  • Splash screen moves past “Finding your lights and effects” again — startup no longer waits on a full SignalRGB plugin import before scanning your gear. That import runs quietly after the main window opens. The loading bar also keeps moving while hundreds of device plugins are read from disk (this step can take a minute the first time).
Devices
  • SignalRGB device plugins import again — on startup RGBJunkie copies missing device plugins from your SignalRGB install into your user plugin folder during the splash screen (before your gear is scanned). A line is written to the app log whether anything new was copied or not.
  • Splash screen no longer hangs on a black screen — importing SignalRGB plugins no longer blocks the app from opening; that step runs while the loading bar is visible instead of freezing the window before it appears.
  • Startup splash keeps moving — after “Closing other RGB control apps”, the splash now shows a SignalRGB plugin check step instead of looking frozen; that check is skipped quickly when plugins are already imported, and startup continues even if it times out.
  • Much lower memory after a big plugin import — importing many SignalRGB plugins no longer keeps every plugin file in memory or tries to compile hundreds of unrelated drivers for each USB device. Only plugins that match your connected gear are loaded; replaced devices shut down cleanly on rescan.
  • Old SignalRGB Turzx plugin is ignored — if you still have Turzx Device from a SignalRGB import, RGBJunkie skips it and removes that row on the next hardware scan. Remove Turzx_LCD_Controller.js under Settings → Installed files, then rescan hardware.
Performance
  • Importing SignalRGB plugins no longer runs memory and CPU away — while importing SignalRGB device plugins, RGBJunkie checks which of your plugins already cover your gear. On some device plugins that check could get stuck and slowly eat all your memory (into the tens of gigabytes) while pinning several CPU cores, even with the app sitting idle and every device disabled. The check now finishes quickly, so memory stays flat and your cores stay free after startup.
  • Effects use less CPU while the window is open — an animating effect used to render as fast as your monitor refreshes (often 144 times a second) even though your lights only update 60 times a second, so the extra frames just heated up your CPU. Effects now animate at your Settings → System → Engine → Hardware update cap whether the window is on screen or minimized to the tray. Changing the cap in Settings applies immediately — you do not need to reload the effect. The status bar Effect FPS is the workspace preview at that cap; Hardware is how often your devices are actually sent new colors (it can read lower when slow USB work backs up the loop). Hover the FPS cell for a short explanation. Lower the cap for even quieter running; a paused effect still costs almost nothing.
Backup
  • SignalRGB imports stay out of your backup zipSettings → Backup & restore data no longer packs plugins that RGBJunkie copied from SignalRGB (they can be pulled in again on the next launch). Your own installed plugins, effects, and components are still included.
v0.4.1

July 3, 2026

Hardware
  • WLED and unidentified USB each have their own tab — in Settings → Hardware, WLED network lights and USB devices that did not match a plugin now sit on separate tabs (WLED and Unidentified devices) instead of sharing one screen with Connected gear.
  • Settings tables line up consistently — table headers and columns across Settings (Connected, RAM, GPU, WLED, unidentified USB, Installed files, Conflicting apps, and This PC) now share the same bordered layout, numeric columns align on the right, index and toggle columns center under their headers, and row divider lines run the full width of each table (including Git repositories and Remove columns). Long filenames in Settings → Installed files (Plugins, Components, Effects) wrap inside the table so Remove stays visible without horizontal scrolling.
v0.4.0

July 3, 2026

Devices
  • Every channel on multi-header controllers lights up now — on controllers with many strip headers (DRGB, Nollie, Prism and similar), lights on channels past the first one now turn on and identify correctly. Before, if an earlier channel was empty or set to fewer LEDs, the colors for later channels (for example Channel A6) could shift and stay dark even with a strip mapped there. Identify from the device list now pulses the channel you actually picked.
v0.3.99

July 3, 2026

Startup
  • First-run agreement no longer hangs on the loading screen — new installs and anyone who needs to re-accept the Terms of Service now see the agreement dialog instead of staying stuck on “Checking Terms of Service…” with no way to continue.
Hardware
  • Hide turned-off devices in the sidebarSettings → Hardware → Connected has a new option to remove devices from the left device list when their output is off. Turn it on to keep the panel focused on active gear; turn a device’s output back on in the same screen to show it again.
Scenes and devices
  • Device settings from older versions restore again — settings saved by earlier RGBJunkie releases (for example the Nollie32 24-pin and GPU cable switches, or shutdown and forced colors) are now picked up by the updated device plugins. The Nollie32 no longer forgets that a Strimer cable is disconnected every time the app starts.
  • Device settings can’t get lost while saving anymore — if a device was briefly reconnecting (after sleep, a USB rescan, or a cable glitch) at the moment RGBJunkie saved, its settings could vanish from the saved file. Saves now always keep the last known settings for every device.
  • Hidden devices stay hidden after a restart — a device you hid on the canvas (such as an ASRock motherboard with its output turned off) no longer pops back into the middle of the screen on the next start. It comes back exactly where you left it, still hidden, and its hidden state is kept in the scene even while the device’s output is off.
  • Identify focuses on one layout — when you identify a single component or a whole channel from the device list, the effect on the current canvas pauses, every other layout on that canvas goes dark first, and then only what you picked pulses on your desk and in the preview.
v0.3.98

July 3, 2026

Settings
  • On/off switches match Hardware — every yes/no option in Settings now uses the same red and green sliding toggle as the Hardware tab (Startup, Updates, App look, Engine, Connected devices, Conflicting apps, and Git repositories). Easier to see what is on at a glance.
Scenes and devices
  • Device choices stick with your scene — when you turn off a device in Settings → Hardware (for example your ASRock motherboard or Stream Deck), or change plugin device settings (such as turning off the Nollie32 24-pin or GPU cable when those Strimers are not connected), those choices now save into the scene’s device file (such as Fire) on autosave, not only the generic autosave copy. After a restart, they stay as you left them instead of resetting.
  • USB soundbars keep their desk spot when they sleep — if a USB soundbar such as the Razer Leviathan V2X powers off or drops from USB while you are on a named scene, autosave no longer forgets where you placed it on the canvas. When it comes back on, it should reopen in the same position instead of jumping to the default corner.
v0.3.96

July 2, 2026

Help Center
  • App links open on the site you are browsing — links on the App links help article now stay on your current site (localhost or rgbjunkie.com) instead of jumping to production. The handoff page uses the same header and styling as the rest of the site, and explains when Windows may ask to open RGBJunkie.
  • Website app links skip UAC when RGBJunkie is already open — handoff links from the Help Center or rgbjunkie.com talk to your running copy first, so opening a folder or jumping to Settings no longer triggers an administrator prompt every time. You only see User Account Control when RGBJunkie was closed and Windows needs to start it once.
  • Cleaner Help Center home — the site Help Center index is easier to read: a comfortable system font, a narrower centered column, indented article lists under each section, and rows that show a short title plus one summary line. Use search to find articles — tag filtering was removed from the home page. Article pages still show the full sidebar and on-page contents.
Plugin developer guide
  • Parameter and format docs in every section — the published plugin guide now explains what each export, lifecycle argument, and `device.*` call accepts (types, byte order, report sizes, settings row fields, `match` / `visibleWhen`, add-on hooks, and common patterns with example flows), not only a single API appendix.
  • How to make an add-on (Section 8.7) — step-by-step guide for external authors: create the file, register settings, wire `__rgbjPostWirePluginExports`, split helpers with `@rgbj-include`, and test — without RGBJunkie source or repo build tools.
  • Easier to follow from the top — the guide now opens with an on-page contents list, a five-step “how a plugin runs” mental model, and a single complete copy-and-run plugin with a plain-language walkthrough and load steps, so you can get lights working before diving into the full API reference (which gained a quick “what do I need?” cheat sheet).
  • Developer guides now live in the Help Center — the plugin guide and both effect guides (HTML canvas and functional `.mjs`) open as regular Help Center articles, so they match the rest of the site: the same header, search, breadcrumbs, and on-page contents, and they turn up when you search Help. Code samples keep their copy button and syntax labels, and every in-page link still jumps to the right spot. The searchable supported devices reference stays on its own page.
Devices
  • Razer Leviathan soundbars keep their canvas spot — RGBJunkie now reads the serial from the soundbar during setup and uses a stable layout key tied to that device (not the Windows USB path, which can change when the bar sleeps or wakes). Your saved position and size stick after restart and when the Leviathan comes back on USB. Older saves that used the old USB path still match.
  • Live Wallpaper FPS overlay shows real stream speed — with Show FPS on, Lively now reports how many new frames RGBJunkie sends each second, not your monitor refresh rate (for example 160 Hz on a high-refresh display).
  • Live Wallpaper keeps up when many devices are connected — the wallpaper stream runs at Live Wallpaper Target FPS, not your desk-lights hardware update cap. When your USB cap is lower than the wallpaper target, RGBJunkie nudges the active effect forward without slowing the workspace preview. Large engine layouts read only the LED area instead of the whole canvas, and RGBJunkie sends UDP directly without waiting for every physical device.
  • Live Wallpaper settings apply right away — changing Target FPS, aspect ratio, blur, or other Live Wallpaper options in Plugin Settings now pushes them to Lively immediately. You no longer need to restart RGBJunkie for the wallpaper to pick up your changes.
  • Shutdown Effect works on Lively — when RGBJunkie closes or stops sending frames for a couple of seconds, the Lively wallpaper now plays your chosen Shutdown Effect (Aurora, Breathing, Fire, waves, and the rest) using Shutdown Color for solid and breathing modes — the same behavior as the original Wallpaper Engine companion.
Scenes and autosave
  • Scene files stay smaller over time — autosave and named scenes no longer hoard slider settings for every effect you ever previewed. RGBJunkie keeps presets for your active effect and each canvas tab only, drops duplicate path aliases, and stops copying the full effect cache into every tab snapshot. The next save or autosave rewrites your files at a leaner size; layout data is unchanged.
  • Effects stay smooth while autosave runs — background saves no longer poke the active effect iframe or rebuild hidden canvas tabs when nothing changed, and they skip re-reading your whole autosave from disk every time. You should not see a brief animation hitch every couple of seconds while an effect is playing.
v0.3.95

July 1, 2026

Stream Deck
  • Pause button shows Play when stopped — the effect transport pause control now swaps to a play icon (green highlight) while paused or when lights are toggled off from Stream Deck. The in-app pause button uses the same lights-off behavior as Toggle Lights.
  • Toggle all lights off — assign RGBJunkie Toggle Lights on any Stream Deck key to pause your effect and black out every connected device; press again to resume. Reinstall RGBJunkie-Deck 1.2.2. Shortcut: `rgbjunkie://lights/toggle?silent=1`.
  • More Stream Deck + dialsCycle Effect (Dial) and Cycle Scene (Dial) step through effects or saved scenes as you rotate. Pause + Brightness (Dial) pauses lights on press/touch and adjusts master brightness on rotate. Reinstall RGBJunkie-Deck 1.2.0 and use a current RGBJunkie build.
  • Master brightness dial (Stream Deck +) — assign RGBJunkie Master Brightness to a dial on Stream Deck + (open a dial slot, not a regular key). Rotate to dim or brighten all lights; press the dial or touch the LCD to jump back to 100%. Brightness Up / Brightness Down keys work on any Stream Deck. Reinstall RGBJunkie-Deck 1.2.0 and use a current RGBJunkie build.
  • Stream Deck effect buttons resume playback — choosing an effect from a Stream Deck button no longer leaves the effect paused if it was stopped earlier.
  • Scene buttons load the scene you picked — the Stream Deck property inspector now saves your scene choice as soon as you change the dropdown, and the button sends that exact saved file to RGBJunkie instead of reloading whatever scene is already open. Reinstall RGBJunkie-Deck 1.2.0.
  • Scene bar stays in sync from Stream Deck — when you change scenes with a Stream Deck button or `rgbjunkie://scene/…` link, the Scene dropdown in RGBJunkie now shows the scene you switched to.
  • Pick which canvas a Stream Deck button controls — effect and previous/next effect actions can target a specific canvas tab instead of whichever tab is selected in RGBJunkie. Choose Selected canvas to keep the old behavior. Reinstall RGBJunkie-Deck 1.2.0 for the latest Stream Deck plugin fixes.
  • Stream Deck scene list skips internal files — the scene picker no longer lists `session_profile_baseline`, `user_color_profiles`, or `wled_devices` (RGBJunkie data files, not saved scenes). Previous and Next scene buttons and scene cycle links skip those files too.
  • Previous and next effect or scene from a link — `rgbjunkie://effect/applyprevious`, `applynext`, and the same for `scene` step through your lists without opening the app window (`silent=1` keeps it in the tray). Use these in the RGBJunkie Stream Deck plugin or any shortcut that opens `rgbjunkie://` links.
  • Previous/next effect updates lights right away — Stream Deck previous and next effect buttons (and the same deep links) now start the new effect on your lights immediately. This works for the canvas tab you have open and for background canvas tabs you pick in the Stream Deck settings.
  • Stream Deck no longer asks to run RGBJunkie every press — when the app is already open, shortcuts and the RGBJunkie-Deck plugin send commands through your user data folder instead of relaunching the app (which used to trigger an administrator prompt on each button).
Plugin host parity
  • Fan and pump control — fan-controller and AIO plugins can register fans/pumps, show speed sliders and live RPM in Plugin Settings, and read your target level each frame. Turn all fan control off under Settings → Hardware → Fan and pump control. Slider values are remembered per device in your profiles.
  • Temperature readouts — liquid and probe temperatures from cooler plugins appear as read-only rows in Plugin Settings.
  • Raw USB for select devices — Lian Li Uni Fan and Aqua Computer Farbwerk plugins can use USB control and bulk transfers again (lighting on those hubs should behave as the plugin authors intended).
  • Panel brightness (monitors) — LG UltraGear and similar monitor plugins get a Panel brightness slider; on Windows RGBJunkie can adjust the display through DDC/CI when the monitor supports it.
  • Plugin keyboard/mouse input (opt-in)Settings → System → Allow plugins to send keyboard/mouse input is off by default. Turning it on shows a security warning; only enable it for plugins you trust (macro remapping from Razer/Corsair-style devices).
  • Battery level in Devices panel — wireless mice, keyboards, and headsets that report battery over HID now show the live percentage next to the device name (for example 72%). A small charging icon appears while plugged in; hover for the full status. Low levels are highlighted in red. Wired Razer mice (such as the Basilisk V3) no longer show a false battery reading — the app filters those reports in the host, without changing upstream plugin files.
  • Host parity test device (virtual) — enable with `localStorage.setItem("rgbjunkie.hostParityTestDevice","1")` in DevTools (or `window.__rgbjEnableHostParityTestDevice(true)`), then reload. A fake AIO appears with fan sliders, temperature readouts, panel brightness, and a Battery badge — no USB hub required.
  • Plugin Settings scrolls smoothly — long device option lists scroll normally again. Live fan RPM and temperature updates no longer jump the panel back to the top, and dragging sliders no longer fights the scroll wheel.
Help and developer docs
  • Updated guides for the new layout — Help Center articles now describe collapsible Devices and Effects docks, the Scene bar above canvas tabs, effect transport controls, per-device Output on/off, and the RGBJunkie-Deck Stream Deck plugin.
  • Plugin developer guide rewritten — the public plugin guide now centers on the export-function format (`Name()`, `VendorId()`, `Initialize()`, `Render()`, …) used by the importable device library, with the optional `rgbjunkie` descriptor documented as an advanced path. The `device` API section now explains that vendor hardware settings (DPI, polling, onboard modes, and similar) work through Plugin Settings, and lists which legacy APIs are intentional no-ops.
Devices
  • Stream Deck stays untouched when output is off — restarting or quitting RGBJunkie no longer blacks your Stream Deck LCD or clears button icons when that device is turned off in Settings → Hardware → Connected. RGBJunkie also skips the Stream Deck shutdown pass on exit so your Elgato button icons are not wiped when you close or restart the app. During startup, Stream Deck HID stays blocked until your saved settings load and the splash screen finishes. Turning output back on runs full hardware init and restarts the LCD update loop. Elgato Friendly mode (and legacy Elgato-Friendly lighting mode) still keeps RGBJunkie from driving the panel.
  • Toggle all lights off resets on restart — the temporary “all lights off” state from Toggle Lights (Stream Deck or the in-app pause control) no longer carries over after you quit and reopen the app.
  • Off stays off after unplug — if you turn a USB device’s lights off in Settings → Hardware → Connected and then unplug and plug it back in, it stays off instead of turning itself back on.
  • Off stays off after restart — turning a device off and reloading RGBJunkie no longer clears that setting during startup layout restore.
v0.3.94

June 30, 2026

Interface
  • On/off switch for each device — in Settings → Hardware → Connected, the control that turns a device’s lights on or off is now a sliding toggle switch — green with the knob to the right when output is on, red with the knob to the left when it’s off — so each device’s state is obvious at a glance.
  • Performance graphs now live with each device — the separate Performance tab is gone. Expand any device in Settings → Hardware → Connected and you’ll see that device’s live speed, data rate, and timing graphs right there in its panel, next to its on/off switch and layout options.
Updates
  • Update download stops when you close the dialog — closing the “new version available” window cancels the in-progress download instead of leaving it running in the background. Starting again shows a steady progress bar without flicker.
Performance
  • Nollie (and similar) controllers refresh faster — controllers that need a constant refresh now send to the device on their own dedicated lane instead of taking turns with your other USB lights. On a desk with several USB devices they were waiting in line for a turn, which held their effect rate down; now they update much more smoothly and keep up with your chosen refresh rate.
  • Stays at full speed when minimized — RGBJunkie now keeps your lights and effects running at the same rate whether the window is on screen or minimized to the taskbar or tray, and it tells Windows not to slow the app down the moment you minimize it. While minimized it also asks Windows to keep its lighting work a higher priority, so your effects stay smooth even when other programs are busy on the CPU; that extra priority is dropped again as soon as you bring the window back up. It also no longer works _harder_ in the background than on screen. Lower your Settings → System → Engine → Hardware update cap for an even quieter background.
v0.3.92

June 29, 2026

Workspace
  • Plugin settings stay sharp behind the panel — opening a device’s settings no longer blurs the workspace underneath; the dim overlay stays, but your layout stays crisp while you adjust options.
  • Clearer plugin settings layout — device options are grouped under one Lighting or Settings heading each (Live Wallpaper and similar plugins no longer repeat the same section), color pickers show the hex code beside the swatch, and sliders show the live value on the same row.
  • Live Wallpaper grid on the layout canvas — the Live Wallpaper (Lively / Wallpaper Engine) device now shows its virtual LED matrix on the workspace canvas, so you can see where each screen cell is sampled and resize or move the block like any other fixed layout.
  • Other canvas tabs stay off the layout — components assigned to another workspace tab no longer appear dimmed on the canvas you are editing. They are hidden by default; use the eye button on the tab strip if you want to see every tab’s layout at once.
Devices
  • Layout restore uses one stable key per device — USB gear (like your Razer Leviathan), PawnIO RAM, WLED, and everything else on the desk is matched by a stable hardware key when your scene loads, not by internal ids that can change between launches. Positions stick after startup, rescan, and scene reload.
  • OpenRGB removed — RGBJunkie no longer bundles or talks to OpenRGB. RAM lighting uses PawnIO only. OpenRGB.exe still appears in Settings → Hardware → Conflicting apps if you run it separately, so RGBJunkie can warn you when it fights for control of your lights.
  • RAM sticks keep their place on the desk — PawnIO memory lighting no longer jumps back to the center of the layout after startup or a RAM rescan. Reloading your scene puts your sticks where you left them.
  • USB soundbars and speakers keep their place too — devices like the Razer Leviathan V2X no longer show up as a fresh layout block in the center after startup. RGBJunkie matches them by the physical USB connection, not just an internal id that can change between launches, so your saved position sticks when the scene reloads.
  • Smarter "Conflicting apps" list — the Conflicting apps page (Settings → Hardware → Conflicting apps) now also flags the background software tied to the devices you actually have connected, not just the built-in list of well-known RGB programs. If one of your devices ships an app that's known to fight RGBJunkie for control of its lights, it now shows up here automatically — listed by the device that needs it — so you can end it in one click (or have RGBJunkie end it on startup) and keep your lighting under RGBJunkie's control.
  • Onboard lighting settings reach the device — hardware-lighting and firmware settings (Prism Mini, SRGBmods LC, and similar controllers) are now sent on their own after the LED stream, and RGBJunkie runs the plugin’s deferred settings pass about three seconds after you change a device option — no plugin changes required.
  • Enable Hardware Lighting takes over the strip — when Enable Hardware Lighting is on, RGBJunkie stops sending live canvas colors to that controller so the onboard rainbow, solid, or breathing effect can run even while an effect is playing.
  • Runtime mouse settings show up in Plugin Settings — Razer, Logitech, and Corsair plugins that register DPI and control options after the device connects (like Enable Setting Control, DPI stages, and per-stage sliders) now appear in the settings panel alongside the built-in lighting options.
  • Mouse and keyboard settings reach the device — Razer, Logitech, Corsair, HyperX, and similar plugins can now read firmware responses and apply DPI, polling, LOD, and other hardware options from Plugin Settings (not just lighting). Side buttons and DPI-stage input on supported mice work again too.
  • Razer mouse DPI stays put on startup — RGBJunkie no longer pushes DPI changes to your mouse when the app starts unless you change a mouse option in Plugin Settings with Enable Setting Control on. Saved profile values still load into the panel, but they are not sent to the device until you adjust a setting yourself.
  • Choose which apps RGBJunkie may close — each app in the Conflicting apps list now has its own checkbox. Leave it checked to let RGBJunkie end that app, or uncheck it to always keep it running. Your choices are remembered and apply both to the "End conflicting apps" button and the automatic check on startup, so you stay in control of exactly which programs get closed.
  • NollieRGB added to the Conflicting apps list — if the NollieRGB companion app is running, RGBJunkie now spots it and can close it so the two don't fight over your Nollie lights.
  • Conflicting apps sorted A–Z — the Conflicting apps list in Settings is now sorted alphabetically by app name so it's easier to scan.
Startup
  • No more squished window on launch — the loading screen now stays the right size until the app is ready. Before, the full window could briefly appear cramped into the small loading-screen size before snapping out to its normal size; now it grows back behind the loading screen, so you only see the main window once it's the correct size.
  • Loading screen fills the window — the startup splash now stretches edge to edge in the small borderless window instead of leaving empty space around a smaller box inside it. The loading window is sized comfortably again so the logo and status text are not cramped.
  • Animated startup splash — while RGBJunkie loads, the splash shows the same lightning mark as the app icon with a soft green glow and a thin progress line at the bottom. The main line says what step is running; the detail line uses plain language (for example “Connecting to WLED lights…” or “Connecting to Lively Wallpaper…”) without file paths, IP addresses, or port numbers. The splash stays up until loading finishes, then disappears cleanly when the main window opens.
  • Matching logo in the toolbar — the lightning mark and RGBJunkie name on the top-left match the app icon and loading screen; click either one to open rgbjunkie.com in your browser. A Website button (globe icon) next to Discord on the right opens the site too. Layout tools (align, snap, grid, and so on) stay centered in the top bar and use the space between the logo and the right-side buttons — no horizontal scroll bar.
Tray
  • Restart from the tray — right-click the RGBJunkie tray icon and choose Restart to save your layout, turn off your lights cleanly, and open RGBJunkie again — handy after changing a setting that needs a relaunch or when something feels stuck.
v0.3.91

June 28, 2026

Performance
  • Lower background CPU use — RGBJunkie now runs its behind-the-scenes health checks far less often. Several routine checks used to run every few seconds the whole time the app was open; they now run on a relaxed schedule, so the app uses less CPU while sitting idle and while effects are playing. That means less fan noise without any change to how your lights look.
  • Quieter while minimized — when RGBJunkie is hidden in the tray, it no longer keeps checking effect files for edits in the background, trimming a bit more idle CPU.
v0.3.89

June 27, 2026

App look
  • Tidier in Task Manager and the taskbar — RGBJunkie's helper processes now group together under one "RGBJunkie" entry instead of scattering as separate items, matching how other apps appear. Easier to find the app and see its total resource use at a glance.
Reliability
  • WLED layouts no longer disappear — components placed on a WLED device could vanish from your layout if the device was still connecting when RGBJunkie loaded your scene, and once that happened the loss became permanent on the next save. RGBJunkie now holds onto a connecting WLED device's components until it finishes coming online, so its lights stay in your layout the same way wired devices do.
App look
  • Matching panel titles — the "Devices" heading on the left panel now uses the same bright, bold style as the "Effects" heading on the right, with a slightly larger font, and both headings now have a matching thin divider line beneath them so the two side panels look consistent.
  • Even side panels — the right (Effects) panel now has the same thin divider line along its bottom as the left (Devices) panel, so both sides are framed the same way.
Performance
  • Lights keep full speed when you click another app — effects no longer slow to about half rate when RGBJunkie loses focus but stays on screen (for example on a second monitor). The effect now keeps running at full cadence in that state, so your LEDs stay smooth while you work elsewhere.
v0.3.88

June 27, 2026

App look
  • Cleaner app background — removed the faint repeating texture behind the workspace that could look like a subtle grid; the background is now a smooth, plain gradient.
Effects
  • Aurora Borealis runs at a steady speed — the aurora no longer speeds up when its canvas tab is in the background (not selected). Its motion is now time-based, so it looks the same whether the tab is showing or parked behind another.
Performance
  • Lights keep full speed when RGBJunkie isn't the active window — clicking another app used to roughly halve the update rate sent to fast controllers (for example a Nollie dropping from ~40 to ~20 updates per second), causing visible stutter while you worked elsewhere. RGBJunkie now holds the faster timing in the background, so effects stay smooth on your LEDs even when the window doesn't have focus.
v0.3.87

June 27, 2026

Reliability
  • Really fixed the blank white window on launch — the installed app could still open to an empty white window that never finished loading and was closed by Windows as "not responding". A performance tweak that limited how RGBJunkie used your processor turned out to freeze the app at startup on installed copies. That tweak is now off, so RGBJunkie opens to your layout normally. (Your processor use is still kept in check by Settings → System → Engine → Hardware update cap.)
v0.3.86

June 27, 2026

Reliability
  • Fixed the blank white window on launch — after installing, RGBJunkie could open to an empty white window that never finished loading. The app now starts up and shows your layout normally.
v0.3.85

June 26, 2026

Effects
  • Chromatic Split drifts at a calmer pace — default Drift speed is tuned so shapes glide slowly across the canvas instead of racing; motion is time-based (smooth at any frame rate), and Drift speed at zero holds still.
  • Chromatic Split shapes stay on screen — blobs stay inside the canvas with room for the RGB split fringe, instead of drifting off the bottom or right edge.
  • Chromatic Split matches your layout size — shapes and RGB split scale with the engine canvas and Settings → System → Resolution scale, not a fixed 320×200 preview size. Blob positions use the same reference coordinates as other RGBJunkie effects so they stay centered on your layout.
  • Chromatic Split fades in gently — new shapes ramp up over several seconds, grow from small to full size, and soften near the edges (including the glow, not just the center) so they do not pop or blink on your LEDs.
  • Chromatic Split pure black background — turn on Pure black background in Colors for a true black backdrop instead of a dim tint from the color profile.
  • Chromatic Split spreads shapes across the layout — blobs spawn anywhere on the canvas and can drift close to the edges; only the outer glow softens near the border so they do not pop on your LEDs.
  • Ink Drops matches your layout size — marbling fills the engine canvas and drop size scales with Settings → System → Resolution scale, not a fixed 320×200 area.
  • Ink Drops pure black backgroundPure black background lives under the Colors tab; when it is on, the backdrop is true black and every stop in the color profile is used for ink drops instead of reserving one for the background.
  • Liquid Metal runs faster — color profiles are cached instead of recomputed for every pixel, large layouts skip an extra noise pass, and default Render Quality is tuned for smoother playback (raise it in Surface if you want more detail).
  • Liquid Metal pure black background — turn on Pure black background in Colors so creases and low areas stay true black while chrome ridges keep your profile colors.
  • Neon Hex looks right again — glowing lines use additive blending and smooth trails like the original effect, color profiles from Settings → Color profiles work correctly, and cell size scales with your layout instead of clumping in a corner.
  • Neon Hex defaults tuned — fresh installs and Reset to defaults use a tighter hex grid with shorter trails, more spark, and stronger pulse (matching the curated Neon Hex preset).
  • ORGB Audio Visualizer fills your layout — the equalizer bars and background patterns scale with the engine canvas instead of staying locked to a 320×200 corner.
  • ORGB Audio Visualizer clearer bars — log-spaced frequency bands with log-normalized levels and per-frame spectral balancing; Sensitivity sets overall bar height again (default 110). Also tune Smoothing and Bar width under Audio.
  • ORGB Audio Visualizer color wheels run smoothlyColor Wheel, Color Wheel 2, and Original backgrounds no longer redraw every pixel each frame, so those modes stay responsive on large layouts.
  • ORGB Bouncing Ball works again — the ball is drawn to the live canvas buffer (not a blank back buffer), scales with your layout size, and physics time is capped so the first frame does not break the bounce.
  • ORGB Bubbles is faster with more bubbles — rings draw only near each bubble instead of repainting every pixel, spawns scale with time and layout, and defaults allow up to 16 bubbles more often (Rarity 28).
  • ORGB Bubbles sound sensitivity — settings are grouped under Motion, Colors, and Audio; Sound sensitivity above 0 spawns bubbles only when audio hits (silence stays empty), with thick rings for bass and thin rings for treble; Speed still controls ring growth; 0 keeps the timed bubble loop.
  • ORGB Bubbles renders reliably again — bass and treble use peak levels from the spectrum, new rings start visible right away, and thin treble rings are no longer clamped to the same width as bass.
  • ORGB Clock fills your layout — hour, minute, and second markers span the full engine canvas width and scale with Settings → System → Resolution scale, not a fixed 320×200 strip.
  • ORGB Color Wheel works again — the rotating wheel fills your layout using a fast canvas gradient (not a per-pixel loop that could stall on large canvases), and draws to the live canvas buffer.
  • ORGB Comet color speed is separateSpeed controls travel only; new Color speed under Colors sets how fast the tail cycles through your profile (default 25, 0 keeps a fixed gradient on the tail).
  • ORGB Custom Gradient Wave works again — a duplicate canvas buffer declaration prevented the effect from loading; the wave now renders and scales with your layout.
  • ORGB Custom Gradient Wave uses Color profile only — the old Color Preset list is removed; wave colors come from Color profile and Settings → Color profiles (with Custom slots when selected). Motion controls live under Wave, colors under Colors.
  • ORGB Double Rotating Rainbow spins more smoothly — rotation is time-based with capped frame steps, band spacing scales with your layout, colors blend smoothly through your profile, and the effect renders on a fast fixed-size buffer then scales to your layout so frame rate stays up on wide strips.
  • ORGB Hypnotoad runs faster and smoother — rings render on a fixed-size buffer scaled to your layout, colors use your Settings → Color profiles lookup table, and distance/angle math is cached so wide layouts no longer stall the frame rate.
  • ORGB Lightning works again — a missing color variable stopped the effect from loading; strikes and fade now run on the full canvas with your Color profile.
  • ORGB Mask is easier to use in layers — pick Rectangle, Ellipse, or Rounded shapes, soften the edge with Edge softness (low values stay tight to the border), and set Inside color / Outside color under Colors (or use your Color profile). Corner radius on Rounded now rounds the window the right way. The mask redraws when your layout size changes.
  • ORGB Moving Panes runs faster and fills your layout — vertical panes still slide in opposite directions, but motion is time-based with capped frame steps, colors use a cached profile lookup table, and the effect renders on a fixed-size buffer then scales to your engine canvas so wide strips stay smooth.
  • ORGB Noise Map runs faster on wide layouts — noise renders at a capped reference resolution (scaled up to your canvas) so long strips stay responsive; Render quality defaults to 75%, audio bands use peak levels with smoother response, and Turbulence jitters less harshly. Flash contour highlights no longer dim the whole palette.
  • ORGB Noise Map audio sensitivityAudio sensitivity now scales Flash, Pulse, and Turbulence predictably after auto-leveling (50 = balanced; lower is subtler, higher is stronger), including when you switch Audio response band.
  • ORGB Noise Map pure black background — turn on Pure black background under Colors so low valleys fade to true black while brighter lava contours keep your Color profile colors; off restores the normal profile-tinted lows.
  • ORGB Policing runs faster — the scanner renders on a fixed-size buffer then scales to your layout instead of thousands of canvas draws per frame, with time-based motion and the same direction-change flash.
  • ORGB Radial Rainbow runs faster — rings render on a fixed-size buffer scaled to your layout, distance from the center is cached, colors use a profile lookup table, and motion is time-based so wide strips stay smooth.
  • ORGB Rain runs faster — drops render only in their small on-screen streaks on a fixed-size buffer scaled to your layout, instead of testing every drop at every pixel; each drop keeps its profile color when it spawns.
  • ORGB Rainbow Wave runs faster — sliding bands render on a fixed-size buffer scaled to your layout, with cached column phase and a profile color lookup table instead of thousands of canvas fills per frame.
  • ORGB Random Marquee bar width and gap work againBar width and Bar gap always control stripe size (they were being overwritten each cycle); the effect also renders on a fixed-size buffer scaled to your layout for smoother playback on wide strips.
  • ORGB Random Spin keeps moving — brief random pauses no longer freeze for many seconds at low Speed; spin and pause timing use real seconds, the effect starts spinning right away, and bands render on a fixed-size buffer scaled to your layout. While paused it skips redundant redraws; while spinning it fills one row and copies it to the rest of the buffer for smoother playback on wide strips.
  • ORGB Rotating Beam runs faster — the beam renders on a fixed-size buffer scaled to your layout, colors use a profile lookup table, glow falloff is precomputed, and only pixels near the beam are updated instead of repainting the whole canvas every frame.
  • ORGB Rotating Rainbow runs faster — the spinning rainbow renders on a fixed-size buffer scaled to your layout, colors use a cached profile lookup table, and rotation math reuses precomputed row and column offsets instead of recomputing every pixel on wide strips.
  • ORGB Sequence runs faster — solid color steps render on a fixed-size buffer scaled to your layout; while a color is held steady the effect skips redundant buffer uploads instead of repainting the full canvas every frame.
  • ORGB Smooth Blink runs fasterSolid mode renders on a fixed-size buffer and skips redundant uploads when the blended color has not changed; Circle mode caches distance from the center and uses a color blend lookup table instead of per-pixel math on wide strips, and uses the same fast solid path during the hold interval between pulse bursts.
  • ORGB Custom Blink runs faster — vertical band patterns render on a fixed-size buffer (one row copied to the full height) then scale to your layout, instead of thousands of full-height canvas draws per frame on wide strips.
  • ORGB Sparkle Fade runs faster — fade in, hold, and sparkle fade out render on a fixed-size buffer scaled to your layout; solid phases skip redundant uploads, and each sparkle pixel uses a color blend lookup table instead of per-frame object updates on wide strips.
  • ORGB Spectrum Cycling runs faster — solid profile colors render on a fixed-size buffer scaled to your layout; a cached color cycle lookup table and stepped hue updates skip redundant buffer uploads between color changes instead of repainting the full canvas every frame.
  • ORGB Stack runs faster — horizontal and vertical fills render on a fixed-size buffer scaled to your layout; each band uses a brightness lookup table and row or column replication instead of writing every pixel on wide strips.
  • ORGB Starry Night runs faster — stars simulate on a fixed-size buffer scaled to your layout; the background fills in one pass and only active star pixels are updated instead of repainting every LED on wide strips each frame.
  • ORGB Sunrise runs faster — the radial sun renders on a fixed-size buffer scaled to your layout; distance from the center is cached when motion is off, profile colors use a lookup table instead of a canvas gradient readback, and unchanged frames skip redundant buffer uploads.
  • ORGB Swap runs faster — the left-to-right color wipe renders on a fixed-size buffer (one row copied to full height) scaled to your layout; edge blending uses a color lookup table and unchanged wipe steps skip redundant buffer uploads instead of repainting every pixel on wide strips.
  • ORGB Swirl Circles Audio runs faster — the twin glowing orbs render on a fixed-size buffer scaled to your layout; glow falloff uses a cached lookup table instead of per-pixel power math on wide strips, and pixels far from both circles stay black without extra blending work.
  • ORGB Visor runs faster — the hard-edge color wipe renders on a fixed-size buffer (one row copied to full height) scaled to your layout, and unchanged wipe steps skip redundant buffer uploads instead of thousands of full-height canvas draws per frame on wide strips.
  • Stream Deck canvas keeps updating — several optimized ORGB effects were skipping a final canvas refresh when nothing changed on screen; the workspace preview and Stream Deck LCD could look frozen even though the effect was still running. Those effects now present every frame again so your deck keys and touch strip stay in sync with the canvas.
  • Deck Vitals on a second canvas tab works again — when Deck Vitals (or any sensor dashboard) runs on a Stream Deck workspace while you work on another tab, live readings and the touch-strip history no longer freeze; background workspace effects keep their animation timer and LibreHardwareMonitor polling stays on.
  • Gradient Wave uses Color profileORGB: Gradient Wave (and other wave-style ORGB ports that share the same color helper) now follow Color profile and Settings → Color profiles instead of a fixed red-to-blue sweep.
  • Gradient Pinwheel uses Color profile — pick a built-in or saved gradient under Color profile, or stay on Custom to blend your color slots around the wheel. The Rainbow toggle still switches to the classic hue sweep.
  • Gradient Pinwheel opens its own folder — the effect now lives under Gradient Pinwheel (not the old SolarSystemOld path shared with Solar System), so Open effect folder in the browser and saved presets point at the right file.
Performance
  • Memory stays steady during long sessions — RGBJunkie now reads the canvas through the GPU by default, so memory no longer creeps up over time on busy layouts with lots of lights running. If an effect ever looks wrong, you can switch back under Settings → System → Engine → Advanced → Lower-memory mode.
  • Watching the Performance charts no longer slows your lights — the live graphs under Settings → System → Performance only draw the device you have expanded, instead of redrawing every device's charts in the background. Opening that page to check on a device no longer causes a visible dip in your LED frame rate.
  • Smoother output on big USB controllers — frames now go out to USB lighting controllers in a compact form, so large controllers (like a 5120-LED Nollie32) stay steadier and less jumpy instead of stuttering when a busy effect is running. If a USB device ever misbehaves, you can switch back under Settings → System → Engine → Advanced → Fast USB delivery.
v0.3.84

June 24, 2026

Colors
  • LED Studio size slider — dense strips and keyboards can crowd the paint preview; use the LED size slider above the layout to enlarge markers for easier brushing (up to 400%).
  • LED Studio matches the canvas — markers use the same real LED positions and circle/rectangle shape as the workspace canvas (Settings → App look → LED shape), and labels follow the workspace LED numbers toggle.
  • LED Studio grid no longer stretched or overlapping — keyboards and other layouts keep their LEDs in the right spots with a small gap between them, so the paint preview lines up with the canvas instead of looking squished, oversized, or merged together.
  • LED Studio paint and erase — in Paint mode, drag on empty LEDs to color them; click or drag over a painted LED to clear it. Erase mode still clears every LED you touch.
Window & Settings
  • The app remembers its window — RGBJunkie reopens at the same position, size, and monitor you left it on, and stays maximized if you closed it maximized, instead of always re-centering at a default size. (First launch still opens centered.)
  • Roomier Settings window — Settings now opens nearly full-screen so you can see more options at once, and it no longer hides behind a frosted blur of the workspace. It also opens already centered instead of flashing in a corner first.
  • Settings window stays put — the Settings window is a fixed size and can no longer be dragged or resized by accident.
  • Windows ease open — pop-ups and panels (Settings, effect browser, dialogs, the release notes, dropdowns, and more) now fade and rise in gently instead of snapping onto the screen.
Workspace
  • Keyboards show their real layout — keys now appear in their actual positions (with the proper gaps around wider keys), instead of being packed into a plain left-to-right grid. The same true-to-life layout is used on the canvas and in Settings → Colors → LED Studio. (Fans, strimers, tube sleeves, and other shaped devices keep their familiar shapes.)
  • LED numbers on the canvas — the workspace toolbar has a new LED numbers toggle. Turn it on to see each marker’s index (0, 1, 2…) while you line up strips and keyboards; turn it off for a clean layout view. Your choice is remembered. Numbers stay readable when you zoom and on dense layouts (hex panels, long strips), draw on top of each marker, and flip to white or dark text to match your LED fill color. Plugins that export LED names (keyboards, Stream Deck zones, etc.) show those names instead of bare numbers. The same toggle controls labels in Settings → Colors → LED Studio.
  • LED Studio key shapes — rectangle markers in the paint preview use the same uniform grid cells as the workspace canvas (not stretched into thin bars).
  • LED Studio label centering — when LED numbers is on, index and plugin names stay centered inside each marker instead of spilling across the grid.
Development
  • Startup splash shows again during dev — the loading window stays small and centered with the logo and status text instead of a blank white full-size window. The WebView also uses the splash dark background until the page paints, and debug builds can open tray → Open developer tools without an extra flag.
  • Splash dismisses when the app is ready — the loading screen no longer stays on top showing “Ready.” after boot; the main workspace appears as soon as layout and profiles are loaded.
  • `compile.bat` opens in its own elevated window again — from Cursor or a normal terminal, dev still launches a standalone Administrator window via UAC (same as before). `compile.bat build` stays in the current terminal when you only want the debug `.exe` with no launch. Debug builds no longer hit “requires elevation” at startup; installed release builds still run elevated for USB access.
Effects
  • rgbjunkie.com gallery duplicates — when the online catalog lists several copies of the same effect name, RGBJunkie now keeps the newest published copy instead of the first broken one. Fan and Strimers and similar gallery effects load their real animation again instead of the “not exported yet” placeholder.
v0.3.83

June 24, 2026

Scenes
  • Load a scene without swapping your devices — next to Load scene, a new toggle controls what a saved scene replaces. Keep devices (default) applies the scene’s effects and canvas layout to the gear already on your desk. Full replace restores the scene’s saved device list the way older builds did. Click the button to switch modes; your choice is remembered.
Effects
  • FlowField respects audio toggles — turning off Audio Reactive or Flash on Beat in FlowField no longer leaves a white pulse on the beat.
  • Many built-in effects fill your engine canvas — effects that were stuck drawing in a small corner (including Festive Lights, Waves, Storm, VJ Lightning, Plasma Sphere, Topographic Contours, Multizone V2, Multi Radar, Rainbow Collection, and dozens of ported classics) now stretch to Settings → System → Engine → Engine resolution so your lights and preview thumbnails match what you see.
  • Shadertoy effect removed — the experimental Shadertoy integration is no longer included in RGBJunkie.
  • Refreshed effect preview images — built-in effect cover art was regenerated so thumbnails in the browser and effect header look like the live effect again.
Wallpaper Engine helper
  • Wallpaper helper uses the correct name — the small companion process under runtime/wallpaper is now RGBJunkieWallpaperShim.exe instead of being mislabeled as SignalRGB. Upgrades remove the old SignalRgb.exe copy from earlier builds.
v0.3.81

June 24, 2026

Effect browser cover art
  • Built-in effect preview images show again — thumbnails in the effect browser grid and the selected-effect header load correctly instead of staying on the placeholder gradient.
v0.3.80

June 16, 2026

Stream Deck Plus
  • Deck Vitals for SignalRGB — a SignalRGB-compatible copy of the Stream Deck Plus Deck Vitals dashboard is included under Stream Deck Plus srgb. It uses the same eight-key layout and four touch-strip history lanes, reads sensors through SignalRGB’s engine.getSensorValue API, and ships with sensible default sensor names (CPU Load, CPU Package, GPU Core, and so on). Pick your accent palette and dial style in Effect Settings; SignalRGB Pro unlocks the full sensor list.
App look
  • Borderless startup splash — while RGBJunkie loads, the app opens as a small window centered on your screen with no title bar. When loading finishes, it expands to the full main window with the normal frame again. The splash now paints with its styling right away instead of flashing unstyled content first.
  • Canvas fills the center panel — the workspace canvas no longer keeps a padded margin or inset frame around the drawable area; it uses the full center column (aspect-ratio letterboxing still applies when the canvas does not match your window shape).
  • Single-channel devices sit tighter in the list — when a device has only one lighting channel, its components now appear directly under the device row without the extra gap that multi-channel gear keeps between the device name and the first control. The tinted block under each channel is now a soft gradient (stronger at the top, fading down) with no leftover vertical line on the left edge.
  • Selected components are clearly highlighted in the list — when you click a component on the canvas (or in the list), its row in the Devices panel now stands out with a soft accent-colored highlight and a matching accent bar down its left edge, so it's easy to see which component is selected. Before, the selected row looked the same as all the others.
  • Expanded devices read as one connected group — when you open a device, its name row and everything underneath (brightness, position, and each component) are now wrapped together in a single soft, rounded block, with the device name styled as the header of that block. A thin line in the channel's color runs down the left edge of the components, so at a glance it's obvious each control and component belongs to the device above it instead of looking like a separate item in the list.
  • Calmer, more spacious device list — the Devices panel now reads like a clean navigation menu: each device is a roomy, full-width row that leads with its icon and name, with plenty of vertical breathing room and no boxes, borders, divider lines, or expand arrow. The eye and gear controls tuck to the right edge and fade in only when you hover a row or it's selected, so the list stays uncluttered. Click a device to expand its channels and components into a full-width panel right underneath it — shaded a touch differently so it's clear everything inside belongs to that device — and the selected device is marked by a quiet neutral highlight. The rest of the app keeps the same flat, minimal styling and your chosen accent colors.
  • Fresh cyber-neon interface — RGBJunkie has a new high-tech look: deep dark backgrounds, glowing accent highlights on buttons and active toggles, and smoother hover and focus feedback across the whole app.
  • Floating panels with more depth — the toolbar, device and effects side panels, workspace tabs, and status bar now feel like polished floating cards with subtle accent glow when you interact with them.
  • Settings and dialogs match the new style — Settings, the effect browser, setup wizard, confirm dialogs, and toast notifications all use the same neon-accent theme you pick in Settings → App look.
  • Accent color follows your theme everywhere — glow, focus rings, panel highlights, and drag-and-drop cues now track the accent you pick in Settings → App look instead of staying stuck on green.
  • Light mode still supported — switch to light appearance and the accent colors stay readable with softer glow on white surfaces.
  • LED Studio got a refreshSettings → Colors → LED Studio now arranges its controls into clean, evenly-aligned cards (Component, Brush, Mode, Actions) so nothing looks cramped or ragged. It also adds quick color presets, live painted/total counts, clearer Paint and Erase toggles, and a brighter layout preview that matches the rest of the app.
Workspace
  • Lights stay smooth in fullscreen canvas — maximizing the workspace canvas no longer slows your physical LEDs. The full-screen preview was quietly redrawing the whole effect at monitor size every frame in the background, which stole time from sending colors to your devices. The big preview still fills the screen, but that hidden work is now done at a small size, so your lights keep updating at full speed while maximized.
  • Smoother lighting with big, busy setups — the part of RGBJunkie that reads your effect and pushes colors to your gear now does much less throwaway work on every update, especially when you have lots of devices or large layouts (full keyboards, LED matrices, long strips). The result is steadier, smoother lights with fewer tiny hitches, particularly on more modest PCs.
  • Shorter effect details card — in the Effects panel, the selected effect summary uses the same card layout with or without preview artwork. Effects with a PNG show it full-size behind the text; effects without one keep the neutral placeholder background.
  • Effect settings dropdowns open reliably again — with the new floating panels, the dropdown menus in the Effect Settings area (Mode, Look, Monitor, color profile, and similar) could fail to appear when clicked. They now open in the right place every time.
  • Device settings dropdowns open reliably again — in a device's settings window, the dropdown menus (Lighting Mode, color order, per-zone modes, and similar) could open hidden behind the window, so clicking seemed to do nothing. They now appear in front, on top of the window, every time.
  • Fold buttons for the side panels stay put — the collapse/expand handles for the Devices (left) and Effects (right) panels are now pinned to the outside edge of the window, so they no longer jump to a new spot when you fold a panel. The button stays exactly where you left it, so folding and unfolding is one easy click in the same place.
  • Effect cards look the same with or without a preview image — in the Effects panel and effect browser, cards now share one layout: a preview strip on top (your effect art when available, or a neutral placeholder when not) and the title, author, and tags underneath. No more hero-style cover on some effects and plain text on others.
  • Effect settings now follow the canvas you're on — when you switch between canvas tabs, the Effect Settings panel updates to show the controls for that canvas's effect instead of leaving the previous tab's sliders on screen. Switching still keeps each effect running smoothly without restarting it.
Devices
  • USB lights recover after a bus glitch without restarting — when Windows briefly drops and restores your USB gear (same cables, same device names), RGBJunkie could keep every USB light dark until you closed and reopened the app. Rescan hardware and automatic reconnect now drop stale USB handles and reopen them the same way a full restart does, so your keyboards, mice, pads, and controllers light up again.
  • RAM lights recover after hibernate — waking the PC could leave your memory sticks dark even though USB gear came back. Wake recovery now re-scans RAM right away (with retries while the motherboard SMBus wakes up), and Rescan hardware in the Devices panel runs the same RAM scan as Settings → Hardware → RAM → Scan now.
  • Identify now works on RAM — the Identify button (the lightbulb that makes a device gently pulse so you can spot it) did nothing for memory (RAM) modules. RAM lights are sent over a different connection than your USB gear, and that path was being skipped while identifying. Now your RAM breathes in the highlight color just like every other device, so it's easy to tell which stick is which.
  • Lights no longer freeze from a stray color value — if a device ever received an invalid color byte (for example from a misbehaving plugin or effect), the whole batch of colors for that device could fail to send, leaving it stuck on its last frame and filling the log with errors. Out-of-range values are now cleaned up automatically, so the device keeps updating smoothly instead of locking up.
  • Turning off a device's built-in lighting mode no longer slows your other lights — some devices (such as Asrock motherboards) have a setting that hands lighting back to the device's own onboard modes. Switching it off used to make that device talk to its hardware far more often than it was meant to, which bogged down every other USB light. RGBJunkie now follows the device's own update pacing in that mode, so the rest of your gear keeps running smoothly.
  • Device settings use RGBJunkie's name — a few device settings that came from other lighting software mentioned that app by name (for example a “…Canvas Support” toggle). Those labels and notes now read RGBJunkie instead.
  • Asrock motherboards show their addressable headers again — Asrock boards were turning up with only a single lighting zone instead of their addressable RGB headers, so most of the board's strips and fans had nowhere to land on the canvas. RGBJunkie now hands the board's plugin the zone information it expects during setup, so the addressable header channels appear and you can place your lighting on them. The channels are now labeled 5V ARGB Header 1/2/3 instead of a plain “Channel 1/2/3”, so it's clear which header each one is. (Each addressable header starts empty — add a strip to it and set how many LEDs you plugged in.) The board's 12V RGB header also shows up again as its own single-color zone you can light, alongside the addressable headers.
  • Installed Files no longer freezes the app — opening Settings → Installed Files could lock up the whole app and stall your lights for several seconds. Two things were to blame and both are fixed: the Git repositories tab was checking each source's branches online on the main thread (so a slow connection froze everything), and the Plugins/Components/Effects tabs scanned your folders the same way. All of that now happens in the background — your lights keep updating, the file lists show a brief "Reading installed files…" spinner while they load, and the branch lists fill in on their own. Stray `.git` and `node_modules` folders dropped in next to plugins are skipped so the scan stays fast.
  • Sort your device list by name or type — the Devices panel has a new sort button next to the expand/collapse control. Tap it to switch between the original detected order, alphabetical by name, or grouped by device type (mice, keyboards, motherboards, and so on). Your choice is remembered between sessions.
  • Click a zone row to fold it away — in the Devices list, the lighting-zone rows under a device (such as a motherboard's ARGB headers) now collapse when you click them, just like the device rows do. Click once to tuck the zone's components out of sight and tidy up a long list; click again to open it back up.
  • ASRock motherboards show their real board model — the ASRock device used to come up with a blank/placeholder model in its name. RGBJunkie now reads the actual board model from your system, so it reads like "Asrock X570 Steel Legend" instead of a meaningless number.
  • PrismRGB Prism Mini is detected again — the Prism Mini controller wasn't being recognized because its plugin file was packaged without the right file ending, so RGBJunkie skipped it entirely. It's fixed, and the Prism Mini now shows up and lights like the other Prism devices.
  • SteelSeries QcK Prism Cloth pads now light up — cloth QcK Prism mousepads (including the 3XL, Medium, XL, XL Destiny, and 4XL) were skipped during USB detection because the app looked for a differently named plugin file. They now match the correct two-zone driver and light up alongside the rigid QcK Prism hard pad.
  • QcK Prism Cloth top and bottom zones line up — the two-zone cloth mousepad driver stacks top and bottom on the canvas with a gap row between them (matching the dead zone on the pad), and samples the upper and lower parts of your effect instead of diagonal corners.
  • Razer Leviathan soundbars stay on when USB rediscovers them — the Leviathan V2 and V2X sometimes drop off USB and come back while RGBJunkie is running. Reconnecting no longer runs the full setup sequence again (which could reset the soundbar or knock it off). RGBJunkie only checks that software lighting is still on and keeps sending your colors.
  • More Razer mice light up and show their picture — some Razer mice (for example the Basilisk V3) were detected and listed but stayed dark, with no device picture in the device tree even though the effect looked right on the canvas. These mice set up their lights and LED map a moment after connecting; RGBJunkie now picks that up, so the mouse gets its picture, lands on the canvas, and lights with your effect.
  • Lighting reaches the right part of the mouse — for these Razer mice, color is now sent to the mouse's lighting connection instead of its button/input connection, so the LEDs actually change instead of staying off.
  • Much wider device support — RGBJunkie now ships the latest device support for a long list of brands (Asus, Corsair, Logitech, SteelSeries, Roccat, HyperX, NZXT, MSI, Gigabyte, Glorious, Mountain, Lian Li, Thermaltake, and more), plus newly added Deepcool and Fantech gear. More mice, keyboards, headsets, and controllers are detected and light up out of the box. Your memory (RAM), graphics card, and motherboard lighting keep working exactly as before — those were intentionally left untouched.
  • SRGBmods LED controllers (incl. Nanoleaf) — added support for the SRGBmods USB controller boards: Pico LC, LED Controller v1 and v2, and the WiFi LC bridges. Plug one in and your attached strips, fans, or Nanoleaf panels show up and light with your effects.
  • Keyboard lighting is more dependable — RGBJunkie now uses the official, regularly-updated keyboard plugins for a huge range of custom keyboards (Keychron, Lemokey, GMMK, NuPhy, Monsgeek, Drop, Akko, Epomaker, XBows, and many more). More boards are recognized out of the box, and keyboards that need a brief moment to switch into software lighting now turn on reliably instead of occasionally staying dark.
  • Nollie controllers — refreshed to the full current Nollie lineup (Nollie 1 / 2 / 4 / 8 / 16 / 28 / 32 and the newer firmware versions), so more Nollie models are detected and light up.
  • Stream Deck — standard Elgato Stream Deck support now ships with RGBJunkie. If you have added your own custom Stream Deck plugin to your personal plugins folder, it automatically takes over for that model so your version stays in control.
  • Graphics cards and motherboards use the same plugin library as other brands — GPU and motherboard lighting now comes from the same regularly-updated SignalRGB-style plugins as your keyboard and mouse, instead of separate RGBJunkie-only drivers. Your memory (RAM) still uses RGBJunkie's own detection — that path was not changed.
Effects
  • Full Canvas Fire rises and fades naturally — flame blobs now start fully below the bottom edge and keep climbing until the whole glow has left the top, instead of popping in or vanishing the moment the center hits the frame.
  • Full Canvas Fire Flame look — under Effect Settings → Look, pick Flame for tall flickering tongues and a warm base glow. Glow keeps the original soft blobs. Both use your Color profile. The experimental Ember look has been removed.
  • Desk Clock Bold vs DigitalBold now uses larger outlined digits (not gray plates). Digital stays the lighter single-weight layout. Keys, gaps, and strip unfilled areas are pure black.
  • Desk Clock layout tweaks — on the bottom row, AM/PM and weekday swapped places (12-hour mode). Seconds digits use the full key height, and the Seconds strip bar fills the full touch strip.
  • Desk Clock styles tuned for Stream Deck Plus — removed analog, arc, and ring layouts that were too cramped on the small keys. Clock style is now Digital, Wide, Bold, or Split (all readable digit layouts). Monospace digits and a : between hours and minutes on per-key styles.
  • Mini Spectrum left and right rows — the top row shows the left channel and the bottom row shows the right channel (four bands each). Settings are Left row style and Right row style. Mono audio shows the same levels on both rows.
  • Mini Spectrum button and strip styles — pick Left row style and Right row style for the keys (Fill, VBar, HBar, Ring, Segments, Ticks, Line). Strip mode adds Mirror, Line, Segments, and Wave Line (scrolling trace without the fill).
  • Mini Spectrum waveform line is thinner — the scrolling trace on the touch strip uses a finer stroke so it reads more like a line and less like a thick band.
  • Mini Spectrum waveform scrollsWaveform strip mode traces the average of the four key meters, scrolls in from the right, and scales to the loudest point on screen so the trace uses the full strip height without drifting upward over time.
  • Deck Vitals and Mini Spectrum use black key backgrounds — every LCD key is filled black behind the dials or meters (no gray gauge tracks or dark blue canvas).
  • Mini Spectrum backgrounds are black — the canvas, keys, and touch strip all use a black background (no dark gray meter tracks).
  • Mini Spectrum for Stream Deck Plus — new audio-reactive effect mapped to the Plus layout: live and peak meters fill each key edge-to-edge, and the touch strip shows a full-width spectrum or a matching waveform (same live audio shape, filled edge to edge). Tune sensitivity, smoothing, and colors under Effect Settings.
  • Stream Deck Plus LCD keys no longer look squashed — each key LCD expects a square picture, but the layout math made the sampled region slightly taller than wide on the 160×100 canvas, so rings and numbers looked compressed vertically. Keys now crop a centered square that matches the hardware.
  • Deck Vitals dial styles — pick how each key shows its reading under Effect Settings → Display → Dial style: Arc (default), Ring, Bar, VBar (vertical bar), Pie, Ticks, or Segments.
  • Deck Vitals strip charts line up — all four history curves start at the same horizontal position, with labels tucked right up against the chart start.
  • Deck Vitals Effect Settings use key grid names — sensor and caption fields are labeled C1R1, C1R2, and so on (column, row) to match the eight keys on the Stream Deck Plus.
  • Deck Vitals dials glide smoothly — gauge rings and live numbers ease between sensor updates instead of jumping every poll. Use Settings → Smoothing to make them steadier or more responsive.
  • Deck Vitals strip chart — the touch-strip history panel is black (no gray panel), and each curve is labeled on the left in larger text using that row’s load caption (for example CPU Load, GPU Load).
  • Effect sensor pickers show one control again — hardware sensor settings no longer show a second dropdown underneath the picker (a hidden accessibility list was accidentally styled like a normal combobox).
  • Deck Vitals fan speed shows RPM — the fan key now includes the RPM unit next to the reading (no space between the number and unit, same as % and ° on the other keys).
  • Deck Vitals labels and cleaner gauges — each sensor slot has its own label text (shown under the live reading in a smaller font). The extra horizontal bar under each dial ring is removed.
  • Deck Vitals for Stream Deck Plus — new autoplay dashboard mapped to the Plus layout: each column shows CPU, GPU, RAM, or system load and temperature on the two keys, with four stacked history lanes across the full width of the touch strip. Sensors are picked automatically from LibreHardwareMonitor; override any slot under Effect Settings if you prefer different readings.
  • Aurora Borealis blends where the profile wraps — when Color Profile is not Custom, the gradient now smoothly connects the last color stop back to the first as the curtains drift, instead of a hard jump at that boundary.
  • Game integrations — effects can watch part of your screen — effects can now read a specific section of your screen that the effect picks (a top, left, width, and height), so your lights can follow a single corner of a game instead of the whole display. Great for matching a health bar, a map, or a glowing UI panel.
  • Effects can read text on your screen — effects can capture a small area and recognize the text inside it (for example a score, ammo count, or health number) using the text recognition built into Windows, then turn that into color or brightness — picture your lights sliding from green to red as your health drops. A ready-made Game HUD Reader example is included in your user effects folder (under examples) to try it out and copy from. Reading text needs a Windows language with text recognition installed; if it isn't available, the example falls back gracefully.
  • Effects can measure how much of an area is a color — effects can ask what percentage of a screen section is a particular color (say, how much of a health bar is still green) and drive your lights from that percentage. The Game HUD Reader example adds a Color coverage mode that lights up by how much of the region matches a color you pick, with an adjustable match tolerance.
  • Smarter Pac-Man on the Stream Deck Plus — when you're not driving, Pac-Man now plays on his own and actually dodges the ghosts instead of strolling into them, and he no longer loops the same route every time so the maze stays lively. Press an arrow key (or WASD) and you take over instantly; leave it alone for a few seconds and the computer takes the wheel again. Turn this off under Settings → effect controls → You control Pac-Man to always let the computer play.
Add-ons
  • Add-ons now work with any device, not just WLED — community add-ons can tweak or extend any supported device (extra lighting zones, modes, or settings) without changing the original device file, so your tweaks survive updates. Drop an add-on next to a device’s file named like the device with `.addon.js` at the end, and RGBJunkie blends it in automatically. Existing WLED add-ons keep working exactly as before.
Performance
  • Lower CPU use out of the box — the default Hardware update cap is now 60 fps instead of 120. Most lighting looks identical to the eye at 60, but the app does about half the work, so it runs much lighter — especially on laptops and mid-range PCs. If you have a fast controller (such as a Nollie strip) and want the extra smoothness, raise it again under Settings → System → Engine → Hardware update cap.
  • Effects stop running faster than your lights need — on a high-refresh monitor (120/144/240 Hz), animated effects used to render at the full monitor rate even though your devices only update at the cap, burning CPU on frames nothing ever used. The Hardware update cap is now a true ceiling: effects draw no faster than it, even when a device (such as a Stream Deck) asks for a higher frame rate. This noticeably lowers CPU with no visible difference to your lighting. If you want a fast controller to run quicker, raise the cap under Settings → System → Engine → Hardware update cap.
  • Paused effects now really pause — pressing pause used to only hide the effect while it kept running in the background, using CPU and advancing its animation. So when you unpaused, objects had jumped ahead as if time never stopped. A paused effect now fully freezes — its motion, timers, and internal clock all stop — so it costs almost nothing while paused and picks up exactly where it left off when you resume. Your lights hold the last frame in the meantime.
  • Smoother preview with less overhead — when you're not using a high-speed controller, RGBJunkie no longer draws the on-screen effect preview twice per frame. The preview and your device colors come from a single pass, which trims background CPU while the window is open.
  • Sound analysis only runs when a sound effect needs it — RGBJunkie used to constantly analyze your system audio in the background, even when nothing was reacting to sound. That work now switches off whenever no music- or sound-reactive effect is running, and switches back on instantly the moment one does, so quiet, non-audio setups use less CPU.
  • The frame-rate cap is respected right after startup — on some setups an effect could run at the full monitor rate (and show a high frame rate in the status bar) right after launching the app, even with a lower Hardware update cap set, until you nudged the setting once. The saved cap is now applied to everything as soon as your devices finish loading, so effects respect it immediately on every start without you touching anything.
  • Effect preview stays at your cap — the on-screen effect could start at the right speed, then creep up to your monitor’s refresh rate a few seconds later (while your lights still updated at the cap). The preview now stays locked to the Hardware update cap the whole time, including after an effect finishes loading or a device plugin wakes up late.
  • Effect preview no longer follows the slowest device — with the cap set to 40 fps, the status bar could show ~24–30 fps for Effect because the engine was syncing to a slower device (such as a Stream Deck LCD at 30 fps) instead of your chosen cap. The frame loop and preview now always run at the Hardware update cap; slower devices still update at their own rate without dragging the preview down.
Sleep and hibernate
  • Memory (RAM) lights recover on their own after waking — on some PCs the motherboard quietly takes the RAM lighting back a few seconds after the computer wakes from sleep or hibernate, which left your DIMMs dark until you opened Settings → Hardware → RAM and rescanned. RGBJunkie now keeps nudging the RAM back under its control for a couple of minutes after each wake, so the lights come back by themselves without the manual rescan.
v0.3.79

June 16, 2026

Workspace
  • Effects keep the right size when you switch canvases — with more than one canvas tab, switching away and back no longer shrinks effects (for example Pac-Man on a Stream Deck Plus looked about half size). Each canvas now keeps its own effect framing when the app updates background tabs.
  • Switching canvas tabs no longer restarts your effect — if that tab already had the effect running, RGBJunkie keeps it going instead of reloading and firing a burst of resize events (which made lights flicker and reset things like Pac-Man mid-game).
  • Color Profile stays with each canvas tab — switching canvases no longer applies another tab's gradient to the effect you are viewing; each tab keeps its own Color Profile choice in the effect and in the settings panel.
Devices
  • Stream Deck Plus LCD layout — key and strip sample regions now follow measured physical spacing on the 160×100 canvas (15 mm keys, 2 mm strip-to-key inset, 12.5 mm gap above the strip). Horizontal gap between keys is calculated so the margin on the right matches the left inset on the canvas.
  • Stream Deck Plus layout in RGBJunkie — the workspace device box no longer treats the Plus as a simple 4×3 grid, and the right-side keys and touch strip no longer collapse into thin lines on the canvas. Each LED marker sits on the fixed 160×100 hardware map (key size, gaps, and touch strip), matching where the plugin samples the effect.
  • Stream Deck Plus LCD geometry — button and strip positions on the Plus are fixed hardware layout, not sliders in device settings. Use the Stream Deck Plus Calibration effect if you want to see that map on screen.
  • Stream Deck Plus LCD refresh — all eight keys and the touch strip are sent every frame so a button image never gets stuck when the effect keeps moving. Lower LCD refresh rate (FPS) in device settings if USB load is too high.
  • Plugin hot-reload — with Settings → Engine → Hot-reload user plugins on (on by default when running from source), saving a device plugin reloads only that device’s driver; other gear keeps running. Reload runs when the OS reports a file save (not on a timer), skips work when the file content did not change, and waits one second after the last save before touching USB.
Effects
  • Stream Deck Plus Calibration — simple layout grid for tuning the Plus on your desk: two rows of four hollow buttons (each row has its own x/y; shared width, height, and gap) plus a full-width strip from the bottom of row 2 to the screen edge. The inner bright rectangle is the 8∶1 band sent to the dial; vertical lines mark the four dial zones. Default values match the calibrated plugin layout.
  • Pac-Man for Stream Deck Plus — runs at engine resolution (320×200 by default) instead of a fixed 160×100 bitmap; maze layout scales with Settings → Engine → Resolution so keys and the touch strip stay aligned on the Plus.
  • Pac-Man for Stream Deck Plus — the maze is one open grid: Pac-Man can move anywhere, including the old ghost-house cells. When you eat a scared ghost, its eyes zip through the maze to a new spot away from Pac-Man, then the ghost pops back in there. Pac-Man no longer hesitates at the center keys when a ghost is nearby on another cell. At the start of a round, both ghosts begin as far from Pac-Man as the maze allows. You control Pac-Man is on by default — use arrow keys or WASD while RGBJunkie is focused; your turn is remembered and applies at the next corner (turn it off in the effect settings to watch the computer play).
v0.3.77

June 14, 2026

Effects
  • Pac-Man for Stream Deck Plus — new arcade-style Pac-Man effect for the eight LCD keys and touch strip.
Reliability
  • One slow USB device can't freeze the rest anymore — RGBJunkie used to send to all your USB lights through a shared handoff, so if any single device got stuck mid-update (a screen flooded with image data, a controller that stopped responding), every other light would pause with it until that device recovered. Each USB device now has its own private send line, so a stuck or slow device only ever holds up itself — your other keyboards, mice, pads, strips, and screens keep updating without a hitch.
Website
  • Experimental gear on the supported devices page — on Supported gear, the validation admin can now mark devices as Experimental (early or partial support) as well as Validated. The public list has an Experimental tab and amber badge on cards, alongside the existing Validated tab and green badge.
Devices
  • Stream Deck Plus no longer pauses your other USB lights — the Stream Deck's screen sends large image updates. Previously those shared a limited pool of USB send slots with all your other controllers, and the screen was also being refreshed on a timer it didn't need (its image stays on screen by itself). On a busy setup — for example a Stream Deck next to a high-speed strip — the extra traffic could overwhelm the screen and freeze every USB device for several seconds. The Stream Deck screen now sends on its own dedicated lane, only when the picture actually changes, and without the unnecessary timer refresh — so it keeps showing your effect smoothly while your keyboards, mice, pads, and strips keep running.
  • Stream Deck Plus screen stays smooth and doesn't lock up — a full screen update is a big burst of image data, and sending it all at once could overrun the Stream Deck and leave its screen frozen on the last picture. RGBJunkie now spaces out those image updates just enough for the screen to keep up, so the live effect keeps flowing on the buttons and dial strip instead of getting stuck.
  • Stream Deck Plus edge alignment — the workspace layout box now matches the plugin’s 160×100 screen shape (instead of a taller 4×3 LED grid), so any effect you assign reaches the bottom of the keys and dial strip without a thin gap. LCD sampling uses the full device canvas, and the touch strip reads the whole strip band top to bottom.
  • Stream Deck Plus shows the full effect on each LCD key and the touch strip — sampling was mapped through the small LED marker grid (about four columns by three rows) instead of the whole device layout box, so only the center of your effect reached the hardware — roughly a 15% crop from every edge. Canvas-style Stream Deck plugins now map the full layout region, so ghosts, icons, and maze art fit the keys and dial strip without zooming in.
  • Stream Deck Plus touch strip no longer stretches your art — the plugin was sampling a wide-but-short slice of the effect (about 159×21 pixels) and stretching it to the dial strip’s 800×100 JPEG. That mismatch squashed or stretched anything on the touch bar. The plugin now samples an 8:1 region aligned with the key row (same aspect as the hardware JPEG), so maze lines, icons, and text keep their shape on the strip.
  • Forced color now works on the Stream Deck Plus screen — setting the device's Lighting Mode to Forced had no effect on the buttons or dial strip; they kept showing the effect. Forced mode now paints the whole screen your chosen Forced color, and switching mode or picking a new color updates the screen right away.
v0.3.75

June 13, 2026

Reliability
  • The app recovers on its own if the window goes blank — after a long session with many lights connected, the RGBJunkie window could occasionally go blank or freeze and stop updating your devices until you closed and reopened it. RGBJunkie now notices when this happens and brings the window back automatically — reloading it, or fully restarting the app if the whole window engine has been shut down (for example when Windows is low on memory) — so your lights come back without you doing anything. If it ever keeps happening in a row, it stops retrying so it can't get stuck in a loop, and it records what went wrong in the log (Settings → System → Logs) so support can see the cause.
  • A flaky USB device no longer freezes all your lights — a controller or accessory that rapidly disconnects and reconnects (a loose cable, a misbehaving device) used to make RGBJunkie re-scan every USB device each time, which could stall all your lights for several seconds at a time and slowly use more and more memory over a long session. RGBJunkie now groups these rapid reconnects together and re-scans once things settle, and it eases off automatically when scanning is running slow — so a single chatty device can't drag everything else down.
  • Uses noticeably less memory — during very long sessions the app's display window could slowly build up memory until it ran out and went blank. RGBJunkie now keeps an eye on that and tidies up automatically before it becomes a problem (and, in the rare case it's still climbing, briefly restarts the on-screen effect to reclaim it). It also starts up much leaner: it switches off a wider set of background browser features it never uses (casting, translation, autofill, content suggestions, automatic downloads), runs in a built-in memory-saver mode, and holds itself to a tighter memory ceiling. The result is a smaller, steadier footprint — especially when you're sitting on a static color or have effects paused — over hours of running. The memory-saver mode is on by default and you can turn it off under Settings → System → Engine → Advanced → Lower-memory mode if a heavy full-screen effect ever looks less crisp (the change applies after a restart).
Workspace
  • Layout parts hide when you unplug the device — if you disconnect USB gear, its component no longer stays on the workspace canvas while the device is gone. Your saved layout is kept so it comes back when you plug the device in again.
  • Copy workspace preview matches what you see — right-click Copy workspace preview now copies only the effect and layout canvas at engine resolution, without the extra margin band around the preview that used to show up in the pasted image.
Effects
  • Lights no longer freeze when the app is in focus — with a fast USB controller (Nollie-class) connected, clicking on the RGBJunkie window could stop all your other lights (WLED, wallpaper, RGB RAM) while the on-screen effect kept animating. Clicking away made them update again. The lighting loop now keeps itself running whether or not the window has focus.
  • Full Canvas Fire reaches the top again — flames now always climb to the top edge at every speed setting. Upward speed at the low end is much slower (a gentle rise over many seconds); turn the slider up for a fast flicker.
  • Full Canvas Fire audio bursts spread out — bass-driven extra particles no longer all spawn on the same frame; they trickle in smoothly on the beat instead of popping in as one wall of fire.
  • Full Canvas Fire stays thick to the top — flame blobs no longer shrink to specks before they reach the top; they stay large through most of the climb and only taper near the tip.
  • Slow Full Canvas Fire no longer piles up at the bottom — at low Upward speed, spawn timing eases off enough to avoid a lump at the base while keeping the flame full and lively.
Wallpaper
  • Pick one wallpaper app when two are open — if you have both Lively Wallpaper and Wallpaper Engine running, RGBJunkie now asks which one you want to light up instead of quietly fighting over them (they share the same connection, so only one can work at a time). RGBJunkie closes the other for you and remembers your pick. To switch later, just close the app you don't want and open the other — RGBJunkie follows whichever one is open and will ask again the next time both are running.
  • "Full canvas" wallpaper mode removed — the Wallpaper stream-mode option that sent a sharp JPEG of your whole effect every frame is gone. It kept piling up memory and stuttering, and a saved scene could quietly turn it back on. Wallpaper effects now always use the Virtual LEDs grid, which stays smooth. If an older scene still had Full canvas selected, it switches to the grid automatically — nothing for you to change.
  • Wallpaper device renamed to "Live Wallpaper" — the wallpaper device in your device tree now shows as Live Wallpaper (and Live Wallpaper (2nd Screen)) instead of "Wallpaper Engine 2," since it lights up either Lively Wallpaper or Wallpaper Engine.
Status bar
  • Your version is always in view — the RGBJunkie version number now shows at the right end of the bottom status bar. Click it to jump straight to the About screen.
Website
  • Validated gear on the supported devices page — the Supported gear list now has a Validated tab for devices we have tested and confirmed working. Validated entries show a green badge on the full list too.
v0.3.72

June 8, 2026

Effects
  • Effects run at monitor refresh again — HTML effects no longer crawl at ~10–12 FPS when Settings → Hardware uses a high device update cap (default 120 FPS). The workspace preview composites on its own display-timed loop again; your strips still sample the live effect frame on each hardware tick so Nollie-class controllers stay smooth.
  • Smoother effect preview with high-FPS USB — with a Nollie or similar device connected, the main lighting loop stays on display refresh while USB keeps its own fast timer, so the effect iframe is not starved by ~100 Hz canvas work on one thread.
  • Effect FPS no longer stuck at 0–1 — fixed a regression where the status bar and preview could freeze after the unique-frame counter change; compositing and scheduling work correctly again with the USB sidecar.
  • Effect preview keeps up while USB is busy — when the preview is fed frame-by-frame from the effect (common with fast USB gear connected), several frames can now be on the way at once instead of one at a time. Effects that dropped to a slideshow while strips were updating move smoothly again.
  • Effect FPS tells the truth — the status bar now counts only frames where the effect picture actually changed, instead of counting every repaint of the same frame. If you ever see a low number there again, it matches what your eyes see — and hovering the FPS cell shows how the preview is being fed.
  • Wallpaper backgrounds no longer cause stutter — running one or more Wallpaper effects no longer makes everything periodically freeze for a fraction of a second and drop to a slideshow. The capture used to make a fresh full-size copy of the picture every frame; it now reuses one.
Status bar
  • Hardware min / max FPS is visible again — the bottom bar shows slowest and fastest device rates as 60 / 120 fps when you have gear connected (not only a single number). The FPS column is wide enough that the hardware line is not cut off, and device count stays accurate even when USB stagger skips a plugin for a frame.
Nollie32
  • High-FPS strips reach their target again — Nollie-class controllers no longer sit at ~10 fps when the main loop is busy sampling the canvas. USB `Render()` runs on its own fast timer using the last good colors while the engine resamples effects at monitor refresh (~60 Hz).
RGB RAM
  • Adding RAM sticks no longer slows everything down — color updates for RGB RAM ride a very slow bus, and each extra stick makes every update take longer. Those updates used to block the whole app while they ran, so installing more RGB RAM could drop effects and USB strips to a slideshow. RAM updates now run in the background: your effects, preview, and other devices keep full speed no matter how many sticks are installed.
  • Faster wake from sleep with RGB RAM — the RAM reconnect step after waking your PC no longer freezes the app for a couple of seconds while it waits for the memory controllers to settle.
v0.3.71

June 8, 2026

Scenes
  • Unsaved scene changes after restart — if you edit a loaded scene and restart without saving, switching or reloading that scene again asks whether to save first (the app keeps the last clean snapshot on disk instead of treating autosave as already saved).
Sleep and hibernate
  • App stays fast after wake — resuming from sleep or hibernate now restarts the lighting and effect loop right away (not only after a tab visibility change), and pauses automatic memory cleanup for about a minute so wake recovery is not competing with a background trim.
Performance
  • Always full-speed renderer — RGBJunkie no longer switches WebView2 into low-memory mode during Free RAM, auto-trim, or tray/minimize. Lights and effects stay at full performance even when the window is hidden.
Settings
  • Device throughput chartsSettings → Hardware → Throughput shows live charts for frame rate, USB/HID/WLED traffic, frame spacing, and data sent to each connected device (~30 seconds of history while the tab is open).
Effects
  • Comet uses Color profile — the Lian Li–style comet band reads Color profile and Settings → Color profiles instead of only the old per-object gradient pickers.
  • Comet reacts to music — bass drives beat flashes, brightness, and comet speed again (audio was off by default and never fed into the animation loop).
  • ORGB: Comet color profile & bass — profile colors resolve correctly from the host, and Bass boost brightens and speeds the horizontal comet on the beat.
  • Audio Bubbles thicker rings by default — new installs and Reset to defaults use a Bubbles Thickness of 160 so rings read clearly on wide layouts (same as the recommended share preset).
  • Audio Eclipse ring renders again — the rotating spectrum ring and central void show on your layout; a bad canvas handoff had been drawing an empty buffer instead of the eclipse pixels.
  • Audio Eclipse uses Color profilePalette and Amplitude Hue modes read Color profile and Settings → Color profiles (the old Ocean / Lava palette list is removed).
  • Audio Eclipse tuned defaults — new installs and Reset to defaults match the recommended share preset: tighter ring beams, brighter corona, larger star field, and stronger audio response.
  • Audio Eclipse fits your layout — the eclipse, ring, stars, and comets draw at your engine canvas size (for example 640×400), scaled proportionally so it stays centered and fills the layout with no black borders.
  • Audio Eclipse runs smoother — the spectrum ring uses precomputed color tables and a tighter pixel loop, so large layouts stay more responsive without blowing out to white.
  • Audio Sine fills your layout — the wave draws at your engine canvas size (for example 640×400) instead of staying stuck at the old 320×200 preset box.
  • Audio Sine uses the full spectrum — the wave shape is built from all 200 frequency bins (one partial per bin), so bass, mids, and treble each push different ripples instead of one averaged bump.
  • Audio Sine runs smoother — colors and wave shape are precomputed per column, so large layouts stay responsive without recalculating every pixel.
  • Audio Star runs smoother — spoke colors use a precomputed profile table and ray weights are baked per pixel, so large layouts (for example 640×400) stay responsive without recalculating every color on every frame.
  • Audio Star Star Points work againStar Points now draws the number of rays you pick (3–12). The old pattern used a sine formula that doubled the count and washed out the shape, so the slider looked like it did nothing.
  • Audio Star spectrum spinsRotation Speed now rotates the frequency bins and star rays together around the center. Color Flow still scrolls profile colors separately when music is playing.
  • Audio Star tuned defaults — new installs and Reset to defaults use a slower Rotation Speed of 8 so the star drifts gently instead of spinning fast out of the box (matches the recommended share preset).
  • Audio Waveform Sim uses Color profile — the simulated waveform reads Color profile and Settings → Color profiles instead of a single Wave Color picker. Color Flow scrolls the gradient along the wave.
  • Audio Waveform Sim wave position — the line sits at the same height as before the color-profile update (original 320×200 center), while still drawing across your full layout width.
  • Audio Waveform Sim smoother wave — the line is rebuilt each frame from the spectrum (same idea as Audio Sine), so there is no flat edge or blobby beads at the start. Flow on Sound drifts the wave when music is playing.
  • Audio Waveform Sim RepeatRepeat sets how many wave cycles fit across your layout (same as Audio Sine).
  • Audio Waveform Sim defaultsAmplitude 45, Line Thickness 11, Flow on Sound 19, Repeat 6 (Rainbow profile, black background).
  • Bio-Neural Automata fills your layout — the slime-mold simulation runs at your engine canvas size (for example 640×400) instead of staying stuck in the old 320×200 box.
  • Bio-Neural Automata scales cleanly — the colony simulates at your full layout size with scaled agent count and trail physics, so 640×400 matches 320×200 in feel with smoother, finer trails instead of chunky upscaled blocks.
  • Chuck Norris legend image loads again — the animated legend GIF shows when the effect starts; the app loads it from disk so the preview iframe does not need to fetch sibling files on its own.
  • Butterchurn SRGB fills your layout — the visualizer stretches to your full engine canvas instead of sitting in a small box at the top-left (stable 320×200 render, upscaled to fit).
  • Bioluminescent Deep is back to the organic spore look — the glowing cyan deep-water clusters return (the bay wave scene that replaced them is removed). The effect still fills your layout size with crisp pixels.
  • Bioluminescent Deep softer bass pulse — beat highlights stay on the spores instead of flashing the whole layout white; Bass highlight defaults lower for a gentler look.
  • Bioluminescent Deep — separate audio controlsAudio agitation stirs the spore currents on the beat (movement only); Bass highlight is its own brightness pulse.
  • Bioluminescent Deep settings — color options live in one Colors tab instead of split Color / Colors tabs.
  • Bioluminescent Deep bass highlight fixedBass highlight gets live spectrum data again and pulses on the beat like before (the app had skipped audio for this effect).
Effect switching
  • Audio-reactive effects receive music data — effects that read the spectrum through `engine?.audio` (including Bioluminescent Deep) now get live audio from the app instead of staying silent.
  • HTML effects reload after MJS effects — choosing an HTML effect after an MJS effect always reloads the effect canvas instead of sometimes reusing the empty MJS placeholder, so your lights and preview match the new effect.
  • Effect switching checks the loaded page — when you pick a different HTML effect, the app verifies the canvas page title matches before reusing it, so you do not keep seeing the previous effect’s visuals.
Audio Visualizer
  • Motion / spin works on every layoutMotion / spin now rotates the radial ring and scrolls the spectrum on linear-style layouts. Before, it only affected Orbit, Spiral, Rings, Bloom, and Tunnel, so Linear and Radial looked frozen.
  • Motion / spin on Radial (fixed again) — the Audio Visualizer effect file in the catalog was an older copy that never applied spin on Radial; it now matches the main visualizer and reads Motion / spin reliably.
  • One Audio Visualizer in the list — the multi-mode visualizer (Linear, Radial, Orbit, …) is now Audio Visualizer. The older circular blob effect was renamed Spectrum Blob so it no longer replaces the wrong file in the effect list.
  • Audio Visualizer tuned defaults — new installs and Reset to defaults turn on Mirror spectrum to match the recommended share preset (Linear layout, Motion / spin 25, profile bar colors).
Nollie32
  • Fewer whole-strip blinks (fixed) — when the effect canvas briefly drops a frame, Nollie32 now keeps showing the last good colors and keeps sending USB refresh traffic. A previous hold-colors path skipped that refresh, which made the strip blink off anyway.
v0.3.69

June 7, 2026

Build
  • Changelog syncs after Windows buildsBuild menu option 6 (and full release builds that include it) now refresh the local marketing site changelog automatically after a successful installer build, so you no longer need a separate Sync changelog step.
  • Release notes follow the version bump — a release build now retitles the top CHANGELOG section from the old app version to the new one (your dev notes ship under the correct version), then adds a stub for the next development cycle. Full release builds also sync the marketing site changelog again at the very end.
v0.3.68

June 7, 2026

Color profiles
  • Your color profiles stay in the app — gradients you create under Settings → Color profiles are saved in one app-wide library, so they still appear after restart and are not tied to a single scene preset. Existing profiles in your scene files are merged in automatically the first time you open the updated app.
Effects
  • Audio Sine stays on screen — the wave no longer jumps above or below the layout when music is loud; height still follows the spectrum and Audio Reactivity.
  • Audio Sine centered on your layout — the wave sits in the middle of the strip instead of hugging the bottom, and still grows with louder music.
  • Audio Sine Repeat matches wave countRepeat only changes how many sine waves fit across your layout; it no longer blends in extra smoothing or spectrum detail at higher values.
  • Audio Sine Flow on Sound works again — the wave drifts sideways with music at a speed that matches the Flow on Sound slider (it was barely moving before).
  • Audio Bubbles uses Color profile only — bubble colors come from Color profile and Settings → Color profiles (the old Ocean / Vaporwave preset list is removed); each new bubble cycles through every color in the profile instead of staying in the bass end of the spectrum.
Website
  • Changelog version picker — on Changelog, By app version is a compact dropdown instead of a long grid of version buttons.
  • Changelog dropdown readable in dark mode — the version list uses a dark background and light text so every release is easy to read when the menu is open.
Settings
  • Performance charts per deviceSettings → Hardware → Performance lists each output device in an expandable card with live frame-rate and data-rate pills plus four charts: frame rate, bus I/O (USB, HID, and WLED writes per second), frame spacing, and data rate (~30 seconds of history while the tab is open).
v0.3.67

June 7, 2026

About
  • Release notes show for every version againSettings → About → Release notes (and the update dialog) now display the full text for each version, including patch releases and older entries that only had a short paragraph under the heading.
Settings
  • Consistent layout on every tab — Overview, App look, Colors, Hardware, System, Installed files, Help, and About now share the same scroll behavior (section title stays put while content scrolls), matching card spacing, sub-tab styling, and heading rhythm.
  • Settings opens a bit larger by default — the settings window starts at 1200×900 so tabs like Colors have more room; your size and position are still remembered after you move or resize it.
  • About matches the rest of SettingsSettings → About now uses the same full-width cards, headings, and sub-tab layout as Colors, System, and Installed files.
  • OpenRGB removed from the appSettings → Hardware → RAM no longer shows an OpenRGB section. RAM and GPU lighting use built-in scanning only; help text and translations were updated to match.
  • Installed files uses the same sub-tabs as other sectionsSettings → Installed files now has top-level tabs for Git repositories, Plugins, Components, and Effects (like Colors or System), instead of nested tabs inside one card.
  • Git repositories table fills the card again — the repo list and header now span the full width, and the empty download log box no longer shows as a grey rectangle at the bottom.
Help Center
  • RAM and GPU help updated — the Help Center article describes built-in Settings → Hardware → RAM and GPU on Windows (no separate helper app).
Startup
  • Simpler splash while loading — the startup screen now shows the logo, one short status line, and the version number. Detailed hardware and plugin steps stay in the app log instead of flashing on screen.
Devices
  • Wallpaper Engine shows its name on the main screen — the first Wallpaper Engine virtual device now lists Wallpaper Engine 2 under the device header, matching the second-screen layout.
  • Each Wallpaper Engine screen keeps its own canvas — the main and second-screen virtual devices no longer share the same canvas tab after reload or layout refresh. Main defaults to the first canvas; second screen defaults to the second when you have two tabs.
  • Wallpaper Engine reads the canvas you picked — each screen’s virtual device now samples colors from its own canvas tab (not the other monitor’s tab), including when you use different tabs for main and second screen.
  • Wallpaper canvas picks survive reload — after startup or a layout refresh, main and second-screen Wallpaper Engine rows keep the canvas tab you saved (for example PC on canvas 1 and second screen on canvas 3), and background effect previews resync before colors are sent.
Updates
  • App opens again after in-app update — when an update finishes installing, RGBJunkie now relaunches reliably instead of staying closed. The background helper no longer treats a leftover Lively bridge process as “already restarted,” and it always attempts to start the app after copying files.
Nollie32
  • Fewer whole-strip blinks — when the effect canvas briefly drops a frame (for example while the app is busy), Nollie32 and other fast USB strips now hold the last good colors instead of flashing off for a moment. Dark effects and other devices still update normally.
v0.3.66

June 6, 2026

Patch release

No separate release notes for this version. See v0.3.67 for user-facing changes shipped in this period.

v0.3.65

June 6, 2026

Patch release

No separate release notes for this version. See v0.3.64 for user-facing changes shipped in this period.

v0.3.64

June 6, 2026

Help Center
  • Eighteen how-to and troubleshooting articles — the site Help Center now covers the Devices panel, RGB Wizard, Component Library, canvas tabs, effects, WLED, color profiles, LED Studio, installed files, backup, tray and startup, keyboard shortcuts, app links, OpenRGB, wallpaper sync, supported gear, and common “no lights” / “wrong colors” fixes. Quick start links to the full set.
  • Friendlier Help Center tone — articles read more like the in-app RGB Wizard guide: conversational, less manual-like, same facts.
  • Alert panels in help articles — write Information, Caution, Warning, or Danger callouts in Markdown (`> [!caution]` on the first line, body on the next quoted lines). They show with colored icons on the site and in the article editor.
  • Insert alert panels from the Help editor — the ! toolbar button opens a panel picker (type + message) so you do not have to type the Markdown by hand.
  • Help editor panel insert fixedInsert on the alert panel dialog adds the panel where your cursor was, keeps focus in the editor on the line after the panel, and no longer jumps to the bottom of the article. Panels no longer show the raw `[!caution]` tag or a duplicate title in the editor or on the live site.
  • Alert panels look right in the Help editor — colored Information, Caution, Warning, and Danger boxes in the article editor now match the live site (icons and tinted borders), including in light theme. The hidden `[!caution]` marker line no longer shows above the panel text.
  • Help editor paragraph breaks — pressing Enter for a new paragraph now shows the same spacing as published articles, and saved articles keep the break on the live site (not one merged block of text).
Help tab
  • Settings → Help shows the website Help Center — the in-app Help tab now loads the same articles as rgbjunkie.com (search, categories, and updates when new guides ship). Use Open in browser for a full-window view. Back returns to the previous Help page you opened in the tab.
v0.3.63

June 6, 2026

RGB Wizard
  • Renamed from “Initial setup wizard” — the channel setup guide is now called RGB Wizard everywhere in the app (Devices panel magic-wand button, dialogs, and Settings → Help).
App links
  • Open your data folder from a link — `rgbjunkie://open/appdata` (or `https://www.rgbjunkie.com/RGBJunkieApp/s?p=open/appdata`) opens your RGBJunkie user folder in File Explorer. Add a subfolder path to jump straight there — for example `open/appdata/plugins` or `open/appdata/logs`. The website handoff page and Documentation → App deep links list these URLs.
Help Center
  • Editor tables match the live article — markdown tables in the Help article editor now use the same header tint, borders, spacing, centering, and text colors as published help pages (Toast UI’s dark header text is overridden).
v0.3.62

June 5, 2026

Color profiles
  • Generate gradients from a phrase — in Settings → Color profiles, type a short mood or scene (for example “midnight rain”) and click Generate profile to add a new gradient. RGBJunkie looks up matching colors online when possible; if that is unavailable, a built-in palette is used instead. Each profile also has a phrase field and sparkle button to rebuild its colors from words.
  • Smarter offline phrase colors — when the online lookup is unavailable, the built-in generator recognizes many mood words (for example “devil”, “hell”, “ocean”, “lawyer”) and uses curated multi-stop palettes instead of random hues.
  • Cleaner generate layout — the phrase field and Generate profile button in Settings → Color profiles now match the spacing and button style used elsewhere in Settings.
  • Cleaner gradient previews — profile stripe bars no longer show a thin color line on the left edge; previews match the left-to-right colors you set.
Fan Tracer Pro Max
  • Color profiles apply again — choosing a profile under Circle, Rails, Master, or other layers no longer falls back to a rainbow hue sweep when your gradient or a built-in preset is selected.
v0.3.61

June 5, 2026

Scenes
  • Save always asks for a name — clicking Save on the scene bar now opens the name prompt every time, even when a scene is already selected. You can keep the same name to overwrite or type a new one to save a copy.
v0.3.60

June 5, 2026

Updates
  • Check for updates without restarting — every check from Settings → About loads the latest release from rgbjunkie.com right away instead of reusing a copy fetched at startup, so new versions show up before you restart RGBJunkie. When you're up to date, About shows your installed version and what the website lists.
  • Smoother in-app update restart — after an update installs, RGBJunkie closes its Lively bridge helper, restarts without a flashing command or File Explorer window, and comes back more reliably when the app lives under Program Files. A failed update no longer leaves a background watcher that keeps spawning windows you cannot close.
Lively Wallpaper
  • Full canvas from the right tabStream mode → Full canvas again captures the effect on the workspace where your Wallpaper Engine virtual device lives, even when that tab is in the background.
v0.3.59

June 5, 2026

Updates
  • www download links work in-app — portable update installs accept tracked download URLs on www.rgbjunkie.com as well as rgbjunkie.com.
v0.3.58

June 5, 2026

Build
  • `compile.bat` works again — the dev build step that refreshes the Lively bridge no longer calls an invalid `cargo build --debug` flag on newer Rust toolchains.
v0.3.57

June 5, 2026

Lively Wallpaper
  • Full canvas stream stays live — switching the Wallpaper Engine device to Stream mode → Full canvas no longer freezes the Lively preview after a moment. JPEG frames are sent in order again so the bridge can rebuild each picture.
  • Full canvas follows the right tab — the Lively stream now captures the effect from the tab where the Wallpaper Engine virtual component is placed, instead of whatever tab is currently open. Full canvas works again when that tab is in the background.
  • Virtual LEDs keep moving after switching modes — changing back from Full canvas to Virtual LEDs no longer leaves the LED grid stuck on the first frame. Restart once for rgbj-lively-bridge-12.
  • Full canvas visible in Lively — the sharp JPEG stream now stays on the bottom effect layer, while your cover image remains available above it like the regular LED canvas.
  • Full canvas can run smoother — raising Target FPS on the Wallpaper Engine device can now drive the Lively full-canvas stream up to 60 FPS when your PC keeps up. Restart once for rgbj-lively-bridge-12.
  • Wallpaper Engine devices load again — a bad plugin patch could stop both Wallpaper Engine virtual devices from appearing (“Invalid left-hand side in assignment”). That patch is fixed.
  • Full canvas actually paints in Lively — the Lively page had a JavaScript error (`lastDrawnMs = ms`) that stopped the draw loop, kept the workshop cover on top, and drew the JPEG on the tiny LED grid instead of the monitor. Restart RGBJunkie once so rgbj-lively-bridge-6 replaces bridge-5, then reload the Lively website wallpaper.
  • Full canvas no longer blinks — the Lively page keeps the last JPEG on screen while the next one loads, uses stacked fullscreen images instead of clearing a canvas (smoother in Lively/WebView2), skips empty/black frames from the stream, and keeps the FPS label above the cover image. Restart once for rgbj-lively-bridge-12.
v0.3.56

June 5, 2026

Lively Wallpaper
  • Full canvas stream for Lively — on the Wallpaper Engine virtual device, set Stream mode → Full canvas to send a sharp JPEG of your active effect to the RGBJunkie Lively bridge instead of the coarse virtual LED grid. Virtual LEDs stays the default and still matches the Wallpaper Engine workshop companion. Restart RGBJunkie once after updating so rgbj-lively-bridge-5 replaces an older bridge.
v0.3.55

June 5, 2026

Devices
  • Strips stop blinking when other USB gadgets come and go — some PCs have a background virtual or software device that quietly announces itself over and over. Each announcement made RGBJunkie re-scan the whole USB bus, and on Windows a scan briefly freezes every light at once — long enough that a Nollie32 (and other fast strips) would blank and slow-blink for up to a minute before recovering. RGBJunkie now ignores comings and goings from devices that none of your lighting plugins use, so unrelated gadgets can chatter all they want without interrupting your lights. Plugging or unplugging your actual lighting gear still updates instantly.
v0.3.54

June 5, 2026

Patch release

No separate release notes for this version. See v0.3.55 for user-facing changes shipped in this period.

v0.3.53

June 5, 2026

WLED
  • WLED add-on loads from Git plugin folders — matrix/clock `wled.addon.js` (or `WLED.addon.js`) is found under any `Network/WLED/` folder in your plugin library, not only beside the built-in `WLED.js`. Add-ons from Settings → Git repositories (for example RGBJunkie-Add-Ons) merge again without copying files next to the stock plugin.
  • Libre Hardware Monitor on WLED matrix — choosing Matrix display mode → Libre Hardware Monitor now starts RGBJunkie’s sensor helper on port 8085 (same as hardware-monitoring effects), so CPU/GPU readings can load on the WLED matrix without running LHM yourself first.
v0.3.52

June 5, 2026

Wallpaper Engine + Lively Wallpaper
  • Wallpaper Engine companion receives UDP again — RGBJunkie no longer starts the Lively bridge on port 8133 when the Steam workshop wallpaper is already listening there, so color packets reach the desk companion instead of the Lively HTML bridge. If nothing is on 8133 yet, a small SignalRgb.exe helper starts so older workshop builds can open their UDP listener.
  • Wallpaper plugin sends settings on load — the virtual device pushes its setup packet as soon as it initializes, and grid resync no longer runs a heavy layout reset every frame (which could stop UDP silently when aspect ratio settings were invalid).
  • Cover image stretch on Wallpaper Engine works again — settings UDP packets match the pre-Lively workshop format (no extra grid bytes after the cover path). RGBJunkie also repairs a bad cover image path in the workshop companion save file when stretch changes, so Fill on 21:9 and other layouts apply instead of staying letterboxed.
  • Cover image stretch on the Lively Website wallpaper — changing Cover Image Stretch (Fill, Uniform, and so on) now reaches the Lively Website wallpaper right away, so the diffuser image scales the way you picked instead of staying at the default size.
Development
  • `tauri dev` no longer forces a release bridge rebuild — the dev preflight reuses the debug Lively bridge and retries `cargo` with a single job if the compiler crashes, so a flaky `rustc` access violation during `--release` no longer blocks startup.
v0.3.51

June 3, 2026

WLED
  • RGBJunkie clears WLED “override UDP” for you — when a controller was left showing built-in effects (live override / the star in the WLED app), RGBJunkie now tells it to accept UDP realtime again as soon as that device loads, so you do not have to tap the star by hand.
v0.3.50

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • Lively bridge starts only when Lively is running — RGBJunkie no longer launches the companion bridge until Lively Wallpaper is open, so the bridge does not sit in the background when you are not using Lively. Open Lively, then start RGBJunkie or reload your layout.
Updates
  • Check for updates works without restarting the app — every check (startup splash and Settings → About) now loads latest.json live from rgbjunkie.com instead of reusing the copy fetched when RGBJunkie first opened. About shows Installed and rgbjunkie.com lists so you can confirm what the app saw.
v0.3.49

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • Lively bridge stays smooth during long sessions — the companion no longer rebuilds the full LED frame on every poll when nothing changed, so FPS on the Lively page stays steady after hours of use. Restart RGBJunkie once after updating so rgbj-lively-bridge-4 replaces an older bridge.
Updates
  • Update check recognizes rgbjunkie.com download links — fixes in-app install when the update manifest uses www.rgbjunkie.com URLs (the button no longer stays Unavailable after 0.3.49 is published).
v0.3.48

June 3, 2026

Updates
  • Minor reliability fixes — small improvements so installs and in-app updates keep working smoothly.
v0.3.47

June 3, 2026

Effects
  • Aurora Borealis uses your full color profile — choosing a profile in Color Profile (not Custom) now maps every stop in that gradient, including Rainbow and multi-stop presets like Cyber or Sunset, and those colors drift with the curtains instead of staying locked to fixed horizontal bands.
v0.3.46

June 3, 2026

Startup
  • Open at login works on Windows again — RGBJunkie runs with administrator rights for USB and RAM lighting, so the old startup registry entry often never launched the app. Login startup now uses a Windows scheduled task (refreshed every time you open RGBJunkie) so the app starts when you sign in to Windows.
  • Update check starts with the app — when Settings → System → Startup → Check for updates on startup is on, RGBJunkie begins loading the update manifest as soon as the program starts (before plugins and devices) and shows the result on the splash screen while the rest of startup continues.
v0.3.45

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • Cover / diffuser image stays visible when RGBJunkie starts — the Lively page no longer wipes cover art when `frame.json` briefly has empty settings; the bridge keeps your cover path in JSON before the LED grid is ready; settings UDP is sent every effect frame (deduped) before colors. The diffuser stays a full-screen image on top of the opaque LED canvas.
  • Blur, LED shape, padding, and corner radius apply live in Lively — LEDs render on the bottom canvas (z-index 0); your transparent cover PNG stays on top (z-index 999). Changing those Wallpaper settings forces a fresh UDP settings packet so `frame.json` updates immediately.
  • Show FPS moves to the top-right — the Lively wallpaper FPS readout no longer sits in the top-left corner.
  • Blur and rounded LEDs in Lively look correct — the LED canvas is fully opaque (background color plus solid LED cells); your transparent cover PNG stays on top. Shaped drawing, rounded corners, and blur apply to that solid grid.
  • LED Shape draws rectangles or circles in LivelyRectangle fills square cells; Circle (or legacy Sphere) draws round dots with even spacing; Rounded Rectangle uses the corner-radius slider. The matrix keeps square pixels on your monitor so circles are not stretched into vertical bars.
Installers and portable ZIP
  • Legacy SignalRGB shim removed from installs — the old SignalRgb.exe helper under runtime/wallpaper is no longer included in the installer or portable ZIP (RGBJunkie uses RGBJunkieLivelyBridge.exe for Lively Wallpaper instead).
v0.3.44

June 3, 2026

Patch release

No separate release notes for this version. See v0.3.45 for user-facing changes shipped in this period.

v0.3.43

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • 21:9 and other aspect ratios no longer show a scrambled grid in Lively — Wallpaper now sends the full LED frame for the selected grid (not a leftover 48×27 slice), and Lively waits until every color cell is ready before drawing, so 63×27 in `frame.json` matches what you see on screen.
  • Each release rebuilds the Lively bridge for the installer — version bumps (for example 0.3.42 → 0.3.43) no longer reuse an old RGBJunkieLivelyBridge.exe sitting in the build folder, so auto-update and portable ZIPs ship the bridge built with that release.
v0.3.42

June 3, 2026

Patch release

No separate release notes for this version. See v0.3.43 for user-facing changes shipped in this period.

v0.3.41

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • Installer and portable ZIP include the new Lively bridge — release builds now compile RGBJunkieLivelyBridge.exe (release) before packaging, so auto-update and fresh installs ship rgbj-lively-bridge-3 with http://127.0.0.1:8138/meta.json, not an old copy left in the build folder.
v0.3.40

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • Outdated Lively bridge is replaced automatically — If http://127.0.0.1:8138/meta.json was missing (old rgbj-lively-bridge-2 still running), RGBJunkie now stops it and starts rgbj-lively-bridge-3. Fully quit the app if Task Manager still shows an old RGBJunkieLivelyBridge.exe, then run `npm run bridge:build` and start RGBJunkie again.
  • Clearer logs for Lively vs Steam — startup messages now say when RGBJunkieLivelyBridge is your Lively companion versus when UDP 8133/8134 is only Steam’s workshop wallpaper. The log also shows which RGBJunkieLivelyBridge.exe path was started (often under Program Files\RGBJunkie\runtime\wallpaper).
  • Aspect ratio, cover image, and Show FPS — fixes from the prior release now apply once the new bridge is running; reload the Lively Website wallpaper after updating.
v0.3.39

June 3, 2026

Patch release

No separate release notes for this version. See v0.3.40 for user-facing changes shipped in this period.

v0.3.38

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • Full Wallpaper settings in Lively — the Lively Website wallpaper now matches the Wallpaper Engine plugin: diffuser cover image (local file or URL), stretch modes, LED shape (rectangle, rounded, sphere), padding, corner radius, blur, background color, and Show FPS. Local cover images are served by the bridge so the browser can load them safely.
  • Aspect ratio and display size — changing the Wallpaper grid size no longer scrambles the LED pattern; the bridge clears and resizes its buffer when the layout changes, and the Lively page follows the new width and height.
  • Show FPS and cover image fixes — the FPS overlay updates live when you turn it on, and cover art loads through the bridge (including local files you pick in Settings).
v0.3.37

June 3, 2026

Patch release

No separate release notes for this version. See v0.3.38 for user-facing changes shipped in this period.

v0.3.36

June 3, 2026

Wallpaper Engine + Lively Wallpaper
  • Two Wallpaper devices, two Lively pages — RGBJunkie loads Wallpaper Engine 2 (UDP 8133) and Wallpaper Engine 2 (2nd Screen) (UDP 8134). Each device is locked to its own UDP port (they no longer share 127.0.0.1 routing). The bundled bridge keeps separate streams: monitor 1 → `http://127.0.0.1:8138/`, monitor 2 → `http://127.0.0.1:8139/`. For one display only, set `"wallpaperEngineDualMonitor": false` in media_sources.json.
v0.3.35

June 3, 2026

Patch release

No separate release notes for this version. See v0.3.36 for user-facing changes shipped in this period.

v0.3.34

June 3, 2026

Patch release

No separate release notes for this version. See v0.3.36 for user-facing changes shipped in this period.

v0.3.33

June 2, 2026

Patch release

No separate release notes for this version. See v0.3.36 for user-facing changes shipped in this period.

v0.3.32

June 2, 2026

Wallpaper Engine + Lively Wallpaper
  • Lively Wallpaper support — RGBJunkie can run a small bundled bridge that listens for the Wallpaper Engine 2 virtual device (same UDP ports as the Steam workshop wallpaper) and drives an HTML LED matrix in Lively. RGBJunkie starts the bridge when the Wallpaper plugin loads and port 8133 is free. In Lively, add a Website wallpaper at `http://127.0.0.1:8138/` (port 8137 was an early test build that returned JSON on `/`).
  • Lively matrix smoother — the bridge wallpaper fills your monitor edge-to-edge (no letterboxing that jumped in Lively), one canvas upload per real frame, and it freezes when you pause the effect in RGBJunkie.
  • Steam Wallpaper Engine unchanged — if the workshop companion is already listening on UDP 8133 or 8134, RGBJunkie leaves it alone and keeps sending frames there as before.
v0.3.31

June 1, 2026

Wallpaper Engine plugin
  • Canvas tab stays put when you change settings — changing any Wallpaper Engine option (blur, aspect ratio, cover image, and so on) no longer jumps the virtual device layout back to your first workspace canvas.
  • Virtual matrix stays on the canvas you chose — the Wallpaper Engine layout grid no longer disappears when you tweak settings on another workspace tab; RGBJunkie only re-applies saved positions when the LED grid size actually changes.
v0.3.30

May 31, 2026

Audio-reactive effects
  • Developer docs (rgbjunkie.com) — the HTML canvas and functional (.mjs) API guides now document stereo audio: `freqL` / `freqR`, per-channel loudness, `pan`, and the `stereo` flag, with safe mono fallback examples. Section 6 is rewritten in plain language (audio, stereo, screen, sensors) with quick links instead of one dense table.
  • Stereo Ring Spectrum — removed on-screen L / R labels; Layout adds Stereo Ring, Stereo Bars, Dual Arc, Mirror Ring, Bloom Orbit, and Mono Circle. Stereo Bars and Dual Arc flip the left channel so bass sits at the top like the right; Bloom Orbit left-side blooms use the same flip. Dual Arc keeps thick arc segments at any band count (default 64 no longer collapses into dots). Bass band share now maps the top of the ring to low-end bins by arc length (lower values shrink the bass region; higher values spread it). Frequency map (Log / Linear) chooses logarithmic or linear bin spacing along the ring. Low clip and High clip drop FFT bins outside the range and remap the ring to what remains.
  • Functional effects (on-screen preview) — the workspace canvas no longer wipes to black while each frame is still being calculated; the previous frame stays visible until the new one is ready (fixes on-screen flicker).
  • Stereo Spectrum Bands (.mjs)Input gain now actually scales sensitivity (low values no longer fill the whole strip). Smoothing at 0 is instant; higher values slow the fall and rise. Scroll shifts the analyzer along the strip again.
  • Stereo spectrum visualizer — new Stereo Spectrum effect in the gallery: left and right channels shown side by side (split bars, mirror wings, pan scope, or dual orbit). Uses the new stereo audio data when Windows captures stereo playback; mono still works with both channels matched. Brighter defaults; Bands per channel no longer wipes the meter when you change it; brief audio dropouts fade smoothly instead of snapping to empty.
  • Stereo spectrum for new effects, same mono mix for old ones — `engine.audio.freq`, `level`, and `density` still come from the overall (mono) mix, so existing audio-reactive effects behave exactly as before. When Windows captures stereo playback, effects can also read `freqL`, `freqR`, per-channel loudness, and `pan` (−1 left … +1 right) for left/right visuals.
Fan Tracer Pro Max
  • Rails use one serpentine path — both fan rows act as a single animation path: row 1 runs left→right, row 2 runs right→left, meeting at the junction. The dot head moves onto row 2 right away; the row 1 trail keeps fading without leaving a second head behind. Each row keeps its own trail so motion stays smooth across the junction.
  • Rail dot matches trail thickness — the moving head on the rails is the same height as the trail line, not a taller block.
  • Bounce return tail — on Bounce, the left-moving return trail and the right-moving outbound trail use separate paths, so when the return tail finishes fading the new outbound trail stays put. At each turnaround the old leg’s head is dropped so it does not stay behind as a stuck dot.
  • Collide (Loop) on rails — two dots meet at the junction between rows, move apart (one toward row 1’s left, one toward row 2’s right), then come back together smoothly each cycle instead of snapping on the loop wrap. Inward and outward legs keep separate fading trails so the tail does not reset when direction changes.
  • Loop (Rev) on rails — dots travel the serpentine path backward (row 2 toward row 1) instead of matching plain Loop.
  • Solid Line Spinner + VU Meter rails — with Circle style set to Solid Line Spinner, each fan ring spins when the audio meter on the rails reaches that fan (top and bottom rows, including VU Meter (Rev)).
  • VU Meter rails use stereo when available — with Rails → Style set to VU Meter or VU Meter (Rev), the top fan row follows the left channel and the bottom row follows the right when Windows captures stereo playback; mono mixes still drive both rows together.
  • VU Meter (Row 2 Rev)Rails → Style adds VU Meter (Row 2 Rev): the top row fills left→right as usual; the bottom row fills right→left (handy when the second row’s LEDs run the opposite direction on your build).
  • Global Audio Sensitivity drives VU metersAudio → Global Audio Sensitivity now scales rail and tube/stick VU meter height the same way as the rest of the effect (including stereo left/right rails).
  • Sparkle rails fixed — Sparkle no longer crashes the effect when rails are enabled.
  • Solid Line Spinner fan style — under Circle → Style, Solid Line Spinner draws a full gradient ring on each fan. When a rail dot passes that fan (using your Rails style and speed), the ring spins and coasts to a stop — same spin direction on the return pass as on the way out. Circle → Speed and Rails → Speed control how hard each pass spins and how fast it slows down.
  • Random gradient per fan — under Circle, turn on Random gradient per fan so each fan ring picks its own spot on the Color Profile instead of marching across the row in order.
Documentation
  • App deep link reference on rgbjunkie.comDocumentation → App deep links is its own page with every supported `rgbjunkie://` URL and matching website handoff links, laid out for easy copying into Stream Deck, batch files, or bookmarks.
Effect settings
  • Sliders drag reliably again — after scrolling the effect settings panel, sticky tab rows no longer sit on top of sliders and swallow your clicks; drags also stay on the slider instead of turning into scroll.
v0.3.29

May 31, 2026

Updates
  • Analog Dream: Custom color profile works again — choosing Custom under Color Profile (or the Custom palette) no longer washed the whole effect white; it now uses your three custom color pickers as intended.
  • Effect links from rgbjunkie.com stay applied — opening a share link such as Analog Dream (website handoff or `rgbjunkie://effect/apply/…`) switched to that effect for a moment, then snapped back to your last autosaved scene. The link now wins over the saved scene, and your choice is autosaved so it stays put.
  • Sensor effects just work — no more digging through LibreHardwareMonitor menus — when an effect needs CPU/GPU/temperature readings, RGBJunkie now turns on LibreHardwareMonitor's data server for you. Its own bundled copy starts that server automatically, and if you're running your own copy with the server switched off, a one-click "Turn on sensor server" button (shown in the sensor picker) restarts it with the server enabled while keeping all your other LibreHardwareMonitor settings. If your copy runs as administrator and RGBJunkie can't manage it, it tells you how to enable it yourself (Options → Remote web server → Run).
  • Lights no longer freeze when the sensor helper isn't responding — if LibreHardwareMonitor was running but its built-in web server was turned off (or still starting), the app kept trying to read sensors every fraction of a second, and each try stalled for up to ~2 seconds waiting on the dead connection. That stall briefly held up _all_ LED updates, so every device froze on a steady ~2-second beat — even effects that don't use CPU/GPU readings at all. The app now gives up on an unreachable sensor server almost instantly and quietly slows its retries until the server comes back, so your lights keep running smoothly. (If you do want live CPU/GPU/temperature effects, enable Options → Remote web server → Run inside LibreHardwareMonitor.)
  • Lights no longer freeze every few seconds — the routine "is a device still plugged in?" background check was quietly running a full USB scan on every pass. With many devices connected, that scan briefly tied up the USB lanes and froze _every_ strip at once for a second or two, over and over. The check now reuses what it already knows and only does a full scan when Windows actually reports a device was plugged in or unplugged, so your lights keep moving smoothly even with a lot of hardware connected.
  • No flashing console during automatic update — the install helper no longer opens a timeout window every second while waiting for RGBJunkie to close; delays run hidden in the background instead.
  • Install-from-link pauses your lights briefly — opening a Git plugin link pauses LED output only while new plugins are probed on the USB bus, so your other strips keep running smoothly during download and rescan.
  • Wallpaper Engine goes away when you remove the plugin — uninstalling the Wallpaper Engine plugin from Settings → Installed now removes its two virtual devices from the device tree right away instead of leaving them until you restart the app. Turning off or removing the Git repo does the same.
  • Wallpaper Engine stays off after you remove it — the app remembers when you uninstall the plugin so duplicate copies on disk cannot bring the two virtual devices back until you install the plugin again.
  • Git Wallpaper Engine uninstall is complete — turning off or removing the Wallpaper Engine Git repo now deletes its whole plugin folder (not only tracked files), clears the two virtual devices immediately, and blocks leftover copies from coming back on rescan.
  • Effect details show the cover art — the selected effect’s name area now uses its thumbnail as a softly dimmed background so you can recognize it at a glance.
  • Smoother strip updates again — when Settings → System → Engine → Maximum device FPS is above 60, lights now use the fast hardware path even if one device (such as WLED) asks for a slower refresh. Before, a single slow plugin could cap every USB strip at ~60 Hz while the UI still felt fine.
  • Bundled sensor helpers start correctly — LibreHardwareMonitor and OpenRGB no longer fail to launch with a PowerShell LiteralPath error on Windows.
  • App opens even when the online effect list is slow — the splash screen dismisses before rgbjunkie.com downloads finish, and restoring a saved gallery effect no longer freezes the whole window while the effect file loads.
  • Gallery effects no longer freeze the app — the effect browser opens right away with your local list, online thumbnails load only as you scroll, and switching to another effect is not blocked by a slow rgbjunkie.com download.
  • Gallery cover art at the top of the list loads — the first row of effect thumbnails from rgbjunkie.com now appears as soon as you open the browser, not only after you scroll.
  • Selecting a gallery effect works reliably — picking an rgbjunkie.com effect now downloads and runs it instead of freezing the app when the effect list and dropdown were out of sync.
  • rgbjunkie.com gallery effects run like built-in ones again — gallery effects now use the exact same launch, animation, and hardware path as your local effects. The only difference is the one-time effect.json download; everything after that is identical, so the lights respond the same way they do for built-in effects.
  • Gallery effects stay smooth while running — rgbjunkie.com exports ship with sensor helper code even when the effect does not use CPU/GPU readings; the app no longer starts LibreHardwareMonitor polling for that boilerplate (which caused ~half-second LED stutters). Built-in effects were never affected.
  • Gallery effects skip disk hot-reload — no file-watcher checks for online effects that only live in memory.
  • Built-in effect cover art shows again — thumbnails and images bundled with your local effects load correctly in the effect browser (WebView2 blocked the secure asset URL the app uses for those files).
  • One LibreHardwareMonitor helper, not dozens — RGBJunkie no longer starts a new sensor helper every time an effect polls before readings are ready; it reuses the bundled copy that is already running and waits less time before your lights start.
  • Extra workspace canvases animate again — when you use more than one workspace tab (for example Canvas 1), each tab’s effect now keeps moving on its LEDs instead of staying frozen on the first frame.
  • Two workspace tabs no longer make effects stutter — running an effect on a second workspace tab used to make your main effect work for half a second, freeze for half a second, and repeat. Each tab now reads its lights only once per update instead of reading the active tab twice, so a heavy gallery effect stays smooth even with another canvas open.
  • Effects stay smooth when you click away from the app — clicking another program used to make a busy effect (and the whole RGBJunkie window) stutter, because the app switched to its background "keep the lights moving" mode the moment it lost focus. Now that high-speed background mode only kicks in when the window is actually minimized or hidden in the tray, so an effect you can still see on screen keeps running smoothly even when another app is in front.
  • Audio Sine and Audio Star work again — both audio effects draw to the canvas correctly instead of staying black after an incomplete port update.
  • Audio Sine moves smoothly with the music — the wave no longer jumps on every spectrum refresh; frequency bars ease in quickly and fall off gently between updates. The wave also keeps a gentle idle scroll and color drift when quiet, and no longer freezes on the first frame.
v0.3.26

May 31, 2026

Setup wizard
  • Wizard breathing fades to off — each channel’s preview color now breathes from fully off to full brightness so it is easier to spot on your desk.
  • One channel at a time while picking a component — when you choose a color from the list, only that channel keeps breathing; every other channel (including on high-speed controllers) is forced to black until you finish or go back.
  • Workspace goes black during setup — while the wizard is open, your current effect pauses and the canvas stays black so only the hardware breathing colors stand out.
  • Longer wizard preview on each strip — the breathing preview now lights up to 200 LEDs on a channel so longer strips are easier to spot.
  • Wizard colors match their names — red is #FF0000, green #00FF00, blue #0000FF, and the rest of the list uses saturated values sent to your strips as-is (no soft tints like #FF3333).
v0.3.24

May 31, 2026

Updates
  • Automatic update opens RGBJunkie again — after files copy, the updater relaunches the app with a small restart helper (no PowerShell). If the first launch does not stick, a background watcher tries again so the window comes back instead of staying closed.
v0.3.17

May 31, 2026

Setup wizard
  • Setup wizard stays responsive — the initial setup wizard no longer slows the whole window while channels breathe. It skips heavy canvas work, lights only a short preview segment on each strip, and turns off other channels once instead of every frame.
Updates
  • Automatic update restarts RGBJunkie again — after files copy, the updater relaunches the app with plain cmd start, trying RGBJunkie.exe, the exe that was running during the update, then the legacy rgbjunkie-led-controller.exe name from older installs.
  • No stuck console window during update — the install helper no longer uses find / findstr pipes that could leave a blank command window open while waiting for the app to exit.
v0.3.16

May 31, 2026

Updates
  • Auto-update runs the install helper again — the background updater now starts reliably (including under Program Files, where Windows may ask for admin approval after RGBJunkie closes), copies the new files, and opens RGBJunkie again instead of stopping at “Restarting…”.
App links
  • Website handoff opens RGBJunkie automatically again — share links on rgbjunkie.com redirect to the app on load (no extra click). The fallback Open RGBJunkie button is still there if the browser blocks the redirect.
  • Copy link icons stay subtle — small chain icons on Settings tabs, the Scene bar, Effect browser, active effects, and Git repos in Installed stay hidden until you hover that row or header. Release builds copy a rgbjunkie.com share link; while developing from source, the same buttons copy an rgbjunkie:// link so testing does not launch a second copy from Program Files.
  • Share links encode paths correctly — re-copy links after updating; older ones used slashes that some servers rejected as a bad request.
v0.3.15

May 30, 2026

App links (web and desktop)
  • Install plugins from a link — open a GitHub or GitLab repo in RGBJunkie from a website button or bookmark, similar to SignalRGB addon links. Example: `https://www.rgbjunkie.com/RGBJunkieApp/s?p=addon/install&url=https://github.com/qiangqiang101/SignalRGB-Wallpaper-Engine`
  • Jump to settings, effects, or scenes — `rgbjunkie://` links can open Settings tabs, the effect browser, or load a saved scene by name. Use `silent=1` or `-silentlaunch-` to run an action without restoring the window from the tray.
  • Batch and Stream Deck friendly — use `start rgbjunkie://…` on Windows; `%20` encodes spaces in effect and scene names.
  • Copy link buttons — a small link icon on settings tabs, the effect browser, scenes, Git repos, and effects copies the matching shortcut to your clipboard.
Wallpaper Engine 2
  • Second screen wakes up on its own — RGBJunkie now watches 8133 (main) and 8134 (second monitor) separately. When the second-screen workshop wallpaper starts after RGBJunkie, settings and colors are sent again without toggling a slider.
  • Clearer setup messages — startup logs name each UDP port (main vs 2nd screen) and point to the correct Steam workshop item when a companion is missing on one monitor.
  • Browse for cover image without freezing lights — opening Browse… for Cover Image no longer stops LED updates while the Windows file picker is open.
v0.3.14

May 30, 2026

Installer
  • Windows setup builds reliably again — fixed NSIS packaging for the step that stops the bundled sensor helper before files are replaced, so the setup `.exe` ships with the v0.3.12 install fix.
v0.3.13

May 30, 2026

Updates
  • Portable auto-update helper runsInstall update automatically no longer stops with “Windows cannot find … apply-update.cmd”. The helper now starts through PowerShell `Start-Process` instead of fragile `cmd start` quoting.
v0.3.12

May 30, 2026

Installer
  • Setup can finish while the sensor helper was running — the Windows installer now closes RGBJunkie and the bundled LibreHardwareMonitor copy under `runtime/lhm` before it replaces files. Your own separate LibreHardwareMonitor install is not stopped.
v0.3.11

May 30, 2026

Updates
  • Auto-update respects your LibreHardwareMonitor — the portable updater stops only the bundled copy under `runtime/lhm`, not a separate LibreHardwareMonitor install you already run.
  • Safer handoff when updating — RGBJunkie pauses briefly after starting the update helper so Windows does not cancel it when the app closes.
v0.3.10

May 30, 2026

Updates
  • Automatic update starts again on Windows — the portable updater no longer fails with “Windows cannot find … apply-update.cmd” when you choose Install update automatically (launch uses PowerShell instead of fragile `cmd start` quoting).
Hardware sensors (LibreHardwareMonitor)
  • Your own LibreHardwareMonitor install works — if you already run LibreHardwareMonitor with Options → Remote web server → Run (port 8085), RGBJunkie uses it for effect sensors and does not start a second copy from `runtime/lhm`. Updates only stop the bundled helper under the RGBJunkie install folder, not your separate install.
  • Sensor helper stays in the background — when RGBJunkie does start the bundled copy, its main window no longer pops up on screen (it still runs in the background for readings).
  • Setup hints only when you need sensors — reminders to turn on Remote web server in LibreHardwareMonitor show up when a sensor effect is running or you open the sensor picker, and only while readings are not available yet — not at every app start.
v0.3.9

May 30, 2026

Updates
  • Automatic update opens RGBJunkie again — when Install update automatically applies a portable or AppImage update, RGBJunkie now closes, replaces its files, and starts the new version instead of leaving the app shut down. The updater also stops the bundled LibreHardwareMonitor helper so locked sensor files no longer block the copy step, runs with admin rights when RGBJunkie is elevated (needed under Program Files), and still relaunches the app even if a few locked files could not be replaced.
v0.3.8

May 29, 2026

Serial (COM) devices
  • COM port scan works again — hardware rescan can list USB serial devices without `serial_list_ports not found` in the log.
Wallpaper Engine 2
  • Second monitor in the log — RGBJunkie now reports whether the workshop companion is listening on 8133 (main screen) and 8134 (second screen), and resyncs when the second companion comes online later.
v0.3.7

May 29, 2026

Wallpaper Engine 2
  • Browse for cover imageCover Image in Wallpaper Engine plugin settings now has a Browse… button so you can pick a PNG or JPG from your PC instead of typing the full path. You can still paste a URL in the field.
  • Saved settings stick on startup — Wallpaper Engine plugin sliders (aspect ratio, display size, cover image, etc.) are restored from your scene/profile before RGBJunkie sends the setup packet to the workshop companion, so a restart or update no longer pushes defaults to the desk matrix first.
v0.3.6

May 29, 2026

Updates (portable Windows)
  • Auto-update restarts after the exe rename — the portable updater now waits for and closes `rgbjunkie-led-controller.exe` as well as RGBJunkie.exe, then launches RGBJunkie.exe after the update (and removes the old dev-style exe when present). Updating from an older build no longer leaves the app closed when the process name changed.
v0.3.5

May 29, 2026

RGBJunkie 0.3.5 improves Wallpaper Engine 2 companion setup (no SignalRGB helper, correct process name, Git install path) and keeps Git repository downloads organized in per-repo folders.

Wallpaper Engine 2
  • Official Git repo install — RGBJunkie now recognizes Wallpaper_Engine_RGBJunkie.js from Settings → Installed → Git repositories (the upstream RGBJunkie-Wallpaper-Engine folder), not only the older manual path `Network/Wallpaper/Wallpaper_Engine.js`.
  • Second monitor uses its own port — the main desk matrix talks to 127.0.0.1:8133; a second screen uses 8134 and needs the separate second-screen SignalRGB Wallpaper Engine workshop wallpaper on that monitor (not the main-screen one).
  • No SignalRGB helper required — the workshop companion now detects RGBJunkie directly (looks for a RGBJunkie process), so RGBJunkie no longer starts a bundled `SignalRgb.exe` helper. Dev and release builds now run as RGBJunkie.exe so the companion can see the app (older dev builds used `rgbjunkie-led-controller.exe`, which the companion did not recognize).
  • Smoother desk preview — color packets are sent in order as one frame, setup is not resent every few seconds (that was reloading the cover image and causing flicker), and a gentle keepalive prevents brief black flashes when the engine hiccups.
  • Nollie32 stays smooth with Wallpaper Engine on — the wallpaper plugin slows to 45 fps while a Nollie-class strip is active so USB lighting keeps priority.
Settings → Installed → Git repositories
  • Each repo in its own folder — plugins and components downloaded from Git now land under `owner/repo/` in your user folder (for example `qiangqiang101/SignalRGB-Wallpaper-Engine/RGBJunkie-Wallpaper-Engine/Wallpaper_Engine_RGBJunkie.js`), keeping subfolders from the repository instead of dumping files at the plugins root. Re-downloading a repo replaces its previous files.
v0.3.4

May 29, 2026

Maximized effect preview
  • Cleaner fullscreen canvas — zoom hints and other tooltips no longer pop up when you move the mouse over a maximized preview.
  • Effect log hidden while maximized — the runtime log button stays out of the way until you exit maximized mode.
  • Exit control fades in on movement — the exit-maximize button hides while you watch the effect and fades back when you move the mouse.
Wallpaper Engine 2
  • Settings resync when effects start — if the Wallpaper Engine companion starts after RGBJunkie, the plugin sends its settings packet again on the first color frame so the matrix can wake up without toggling a slider.
  • Clearer wallpaper logs — the log now reports the first settings and first color UDP packets separately (port 8133 / 8134), so support can tell whether RGBJunkie is streaming colors or only sent the setup packet.
  • More reliable UDP on localhost — wallpaper traffic on 8133 and 8134 no longer shares one send queue keyed only by IP, so two-screen setups do not block each other.
  • Companion not listening warning — if nothing is receiving on UDP port 8133, startup logs explain that the Wallpaper Engine workshop wallpaper must be applied (RGBJunkie can send colors while the desk stays blank).
  • Wallpaper companion wake-up — the workshop wallpaper only listens for colors when it sees WhirlwindFX SignalRGB running. RGBJunkie now starts a tiny bundled helper so the companion opens UDP port 8133 without installing SignalRGB (the desk was staying black even though RGBJunkie was sending colors).
  • Settings when the companion connects late — the workshop wallpaper can take up to ~10 seconds to open UDP after RGBJunkie starts. RGBJunkie now waits longer, then sends its setup packet again as soon as port 8133 comes online so the matrix can wake up without restarting the app.
  • Reliable companion detection on Windows — the workshop app listens on all interfaces (`0.0.0.0:8133`); RGBJunkie now detects that correctly and keeps resending setup packets until the companion is ready (previously it thought nothing was listening and skipped the resync).
  • Steadier desk colors — each wallpaper color frame is sent as one complete group of UDP packets (large grids use three), so the companion no longer mixes pieces of old and new frames and stays black. RGBJunkie also pushes a fresh color frame when the companion first connects, not only the setup packet.
  • Nollie32 stays smooth with Wallpaper Engine on — localhost wallpaper UDP no longer queues ahead of USB lighting on the same path, the wallpaper plugin slows to 30 fps while a Nollie-class strip is active, and the periodic settings heartbeat no longer runs a full color render every few seconds.
v0.3.3

May 29, 2026

RGBJunkie 0.3.3 brings back WLED matrix add-ons from community Git repos, smooths Identify on USB and WLED gear, packs more into support reports, and adds an optional Wallpaper Engine 2 network plugin.

Startup and stability
  • App opens again after a crash — a blank white window after an out-of-memory crash was caused by WebView2 refusing to start with an outdated browser-flag list. RGBJunkie now uses a smaller, compatible set so the UI loads normally on current Edge WebView builds.
Wallpaper Engine 2
  • UDP settings packet — the optional Wallpaper Engine 2 network plugin no longer fails to send colors when Show FPS is off; boolean slider values are converted to bytes before UDP send.
  • Canvas grid stays in sync — when you change Aspect Ratio or Display Size on Wallpaper Engine 2, the layout canvas grid updates to match so effect colors sample correctly (previously the plugin and canvas could disagree and the wallpaper stayed black).
  • Smoother wallpaper streaming — color packets to the companion on port 8133 are no longer throttled by WLED-style UDP dedup (that path is only for WLED port 21324).
Multi-canvas scenes
  • Correct effect per canvas tab — loading a scene with different effects on canvas 1 and canvas 2 (for example Audio Party on one tab and Keyboard Effects on the other) no longer swaps or picks the wrong effect when the Effect Library order changes. Each tab now remembers which effect it uses by stable id, not list position.
WLED matrix add-ons
  • Community add-ons load again — optional WLED matrix & clock extras (clock, custom text, pixel art, Libre Hardware Monitor readouts on 2D matrices) install from Settings → Installed → Git repositories. Turn the repo On, rescan hardware, and Matrix settings appear on your WLED device. If nothing new shows up, delete the old add-on files in your user plugins folder and download the repo again.
Identify
  • Stop button matches the sidebar — while identify is running, the bulb button switches to a stop icon with the same accent highlight as the other sidebar controls, instead of a plain black icon.
  • Quicker, softer pulse — identify breathes a little faster with a smooth sine fade instead of a hard blink.
  • Hardware matches the layout fade — physical LEDs now fade all the way off at the bottom of the pulse, like the layout dots.
  • Smooth fade, not steps — layout dots use their own display-rate pulse; physical LEDs use the same engine path as your effects.
  • Identify matches effect smoothness — hardware identify now updates every engine tick (not only on the slower hardware sample interval), so the breathe is no longer limited to a handful of brightness steps.
  • USB identify like WLED — during identify, small USB HID packets (mice, mousepads, keyboards) go out immediately instead of waiting on the batched flush queue that was capping brightness to a few steps per second. Long LED strips still use the safe batched path.
Support reports
  • Diagnostic log zipSettings → Logs → Send a report (and missing-device requests) now attach one `rgbjunkie-logs.zip` with every diagnostic file that exists: `rgbjunkie.log`, `hardware-snapshot.txt`, `rgb-hardware-debug.txt`, `freeze-events.txt`, and a recent rotated log when present.
  • Diagnostic files always created — every launch writes a `sessionStart` line to `freeze-events.txt` and refreshes `rgb-hardware-debug.txt` when hardware detection starts (and again after a successful scan or if detection fails), so support can tell the logging path works even when nothing stalled yet.
Network devices
  • Wallpaper Engine 2 (community plugin) — RGBJunkie can load the optional Wallpaper Engine 2 network plugin from your user plugin folder. It talks to the Wallpaper Engine / Lively companion over UDP on your PC so your wallpaper matrix can follow RGBJunkie effects. Not bundled with the installer — see the community repo README for install steps.
v0.3.1

May 28, 2026

RGBJunkie 0.3.1 brings back physical Identify, improves Skydimo serial-strip detection, polishes support diagnostics and the component library, and extends Linux installs.

Identify
  • Physical LEDs againIdentify from the sidebar or workspace drives your real lights again, not just the dots on the layout. It works even when you have not placed a component on that channel yet — RGBJunkie uses the channel’s LED count from your device.
  • Smooth identify breathe — identify fades the channel accent color up and down on a slow sine curve (fully off at the bottom), instead of a hard on/off blink, so watchdog strips stay steadier.
  • Layout dots restore when you stop — stopping identify puts each component’s LED markers back to that canvas tab’s normal look (preview fill, LED Studio paint, and tab accent ring) instead of leaving the pulse colors on the layout.
  • Identify color matches the channel dot — hardware identify now uses the same red/green/blue channel accent as the sidebar (fixes swapped green/red on strips and wrong colors when the device id contains dashes).
Skydimo serial LED strip
  • COM port devices show upSkydimo LED Strip (USB-serial CH340 `1a86:7523`) is detected from Windows COM ports when the port reports USB VID/PID, not only from the HID SK0902 matrix (`1a86:e316`). Support snapshots list serial ports so missing strips are easier to diagnose.
Startup
  • Faster boot — RGBJunkie no longer probes every anonymous COM port at startup (which could add many seconds on PCs with Bluetooth or virtual serial devices). USB-serial gear like Skydimo attaches only when Windows reports the expected USB ID on that COM port.
  • Less work before the UI appears — serial plugins are matched from a short list instead of re-reading every plugin file from disk; USB detection reuses plugin code already in memory instead of opening each file again; extra layout warm-up runs only when a device still has no LED map; the online effects gallery loads in parallel with USB detection; support debug logs write in the background after devices are ready.
Support reports
  • Hardware debug log — when you email a report from Settings → Logs, RGBJunkie refreshes rgb-hardware-debug.txt right before send so the latest device snapshot is always included.
Component Library
  • Thumbnails on first open — product photos and LED layout previews now appear as soon as you open the library, without needing to scroll the grid first (fixes blank cards on some PCs where the browser delayed visibility checks).
Updates and About
  • Release notes after an update check — if your installed build has an older bundled changelog, What's new loads missing versions (including v0.3.1) from rgbjunkie.com instead of showing “No release notes found.”
SteelSeries QcK Prism Cloth
  • More cloth sizes light up — QcK Prism Cloth pads that were mis-detected as the older rigid 12-zone QcK Prism (including 4XL, CS:GO Neon Rider XL, and Neo Noir XL) now use the correct two-zone driver so top and bottom edges respond again.
  • Easier USB match — cloth QcK pads are less picky about which HID interface Windows reports, so they are more likely to show under Connected instead of staying unmatched.
  • Smoother motion — QcK cloth pads no longer sit at a low update rate with USB traffic that looks like zero and then bursts; effects and forced colors track your other devices more closely.
Linux and macOS
  • Settings and logs work on first launch — RGBJunkie now creates your user folder automatically (`~/.config/RGBJunkie` on Linux, Application Support on Mac) instead of expecting Windows %APPDATA%. Settings → Logs no longer shows Error loading: No APPDATA on AppImage or `.deb` installs; profiles, WLED lists, and support reports save there like on Windows.
  • AppImage auto-update — when you run the AppImage (not a `.deb` system install), Settings → About can download the new .AppImage from rgbjunkie.com, replace your file, and restart — same flow as the Windows portable ZIP. Check for updates on startup and Install update automatically apply on Linux AppImage when latest.json includes the AppImage URL and SHA-256.
  • Linux download checksums — release builds now write `.sha256` sidecar files for `.deb`, `.rpm`, and AppImage (same as the Windows portable ZIP). latest.json lists each Linux installer URL with its SHA-256 so downloads and in-app update checks stay fast and reliable.
v0.3.0

May 27, 2026

RGBJunkie 0.3.0 tidies the install folder, fixes Windows login startup after portable updates, and adds a Third party page under About.

Install layout
  • Smaller install folder — optional helpers now live under a single `runtime/` directory next to the app instead of scattered top-level folders.
  • `runtime/pawnio/` — PawnIO DLL and SMBus modules for ENE DRAM RGB on supported boards (Windows).
  • `runtime/lhm/` — LibreHardwareMonitor portable for sensor-driven effects (Windows).
  • No `openrgb/` in the install directory — OpenRGB is not copied beside the app anymore. On Windows, RAM/OpenRGB integration can still download a portable build into app data the first time it is needed.
  • In-place upgrades — if an older install left `pawnio/`, `pawnio-runtime/`, or top-level `lhm/` behind, RGBJunkie still finds them. After you confirm everything works, you can delete those legacy folders; new installs only need `runtime/`.
  • PawnIO folder choice — when more than one PawnIO folder exists (for example after several portable updates), RGBJunkie prefers the copy that has both `PawnIOLib.dll` and bundled `Smbus*.bin` modules.
About
  • Overview and Third party tabsSettings → About keeps updates, legal, and version info under Overview; Third party lists open source and bundled helpers RGBJunkie relies on (Tauri, Konva, Bootstrap, optional Windows sensor/RAM helpers, p5.js for P5 effects, and others) with license names and links to each project.
Settings
  • LED calibration layoutSettings → Colors → Calibration shows each channel’s percentage on the same row as Red, Green, and Blue (to the right of the label), with the slider directly underneath.
  • Windows startupSettings → System → Startup → Open RGBJunkie when this computer starts re-registers the login entry on every launch so portable moves and updates do not leave a broken path in Windows. If Start minimized is off, the main window appears after sign-in instead of staying tray-only.
Updates and About
  • What's new on update — when a newer build is available, the update dialog shows release notes from the bundled changelog (every version between yours and the latest). All release notes opens the full in-app history; missing versions can load from rgbjunkie.com.
v0.2.99

May 26, 2026

Effects
  • ORGB port library — the remaining OpenRGB ports under ORGB_Port now use host Color profile and eight Custom slots (same pattern as Fractal Motion, Mosaic, and Custom Marquee), resize with the engine canvas via `rgbjSetupCanvas` / `ImageData`, and share palette helpers injected with every effect iframe.
  • Moving PanesColor profile and custom slots now drive pane colors (the port had left the old two-color blend in place).
  • Policing — scanner and flash colors follow Color profile / custom slots (alternates two profile samples each direction change).
  • Rain — droplets use Color profile and custom slots (each drop samples the active profile; profile changes apply to new and falling drops).
  • Rainbow Wave — sliding bands use Color profile and custom slots instead of a fixed HSL rainbow.
  • Random Marquee — rebuilt like Custom Marquee (scrolling profile-colored bands, Bar width / Bar gap, horizontal or vertical); each cycle still randomizes bar size, gap, axis, and speed; colors follow Color profile and custom slots.
  • Noise Map — fixed a broken render path after the ORGB port (`pixels` / canvas buffers were never initialized); colors come only from Color profile and custom slots (removed the old WLED Color palette list). Faster rendering (2D noise, color lookup table, optional Render quality); fixed oversized blobs after the speed pass (noise scale and upscaling).
  • Swap — each wipe now uses the next colors from your Color profile (all eight Custom slots, or stepped samples along presets like Rainbow), not only two fixed profile points.
  • Starry Night — fixed a broken render path after the ORGB port (`pixels` was never set from `framePixels`, so the effect threw an error and showed nothing). Stars re-initialize when the engine canvas is resized.
  • Stack — fixed Speed feeling stuck near minimum: stacking advanced one column per second at the default slider, so wide layouts took minutes; speed now scales with matrix size (default 50 fills in about four seconds). Color profile samples advance only when a new stack starts (full reset), not every column or frame. When full list: None, Fade at end, or Stack out (one choice only — not both).
  • ORGB color profile audit — remaining ORGB_Port effects now sample Settings → Color profile and eight Custom slots through the host API, not legacy `random_colors` / fixed hex pairs. Sequence cycles the full profile list; Clock uses three profile samples for hour/minute/second hands; Mask inside/outside colors follow the profile; Visor advances palette pairs each wipe like Swap; Wavy, ZigZag, Smooth Blink, and beam effects use profile phase colors; Audio Sync, Audio VU Meter, Audio Bubbles (new Color profile preset), and Bloom audio/rainbow modes map audio height or bins to profile colors; Retro Wave custom shapes use the profile; Lightning per-LED strikes use profile RGB. WLED-style palette pickers on Bloom, audio eclipse, and Retro Wave still work alongside the profile where noted.
  • Custom Gradient Wave — fixed inverted FPS in the status bar (very high when the window was in the background, ~30 when focused). The effect was calling `fillRect` once per pixel each frame, which blocked the main thread; it now uses the same fast `ImageData` path as Gradient Wave.
  • Custom Marquee — uses host color profiles via Color profile, or your eight custom slots when profile is Custom; Bar width and Bar gap adjust band thickness and spacing; each scrolling band keeps its color as it moves; fills engine resolution with fast `ImageData` rendering.
  • Double Rotating Rainbow — same host color profile and custom-slot support; engine-sized canvas with fast `ImageData` rendering; Rotation speed and Frequency plus color profile controls (removed non-functional Color speed slider).
  • Fractal Motion — uses host color profiles and custom slots (replaces single-color / random modes); engine-sized canvas with `ImageData` rendering; controls grouped under Motion, Wave, Harmonics, and Colors.
  • Hypnotoad — uses host color profiles and eight custom slots (replaces Rainbow/Custom list modes); engine-sized canvas with fast `ImageData` rendering; controls grouped under Motion, Pattern, and Colors.
  • Mosaic — uses host color profiles and eight custom slots (replaces Random Colors toggle and four fixed colors); engine-sized canvas with fast `ImageData` rendering; Custom profile spawns only from your slots, other profiles sample the active color profile.
  • Effect HTML hot-reload — saving an effect file reloads the active iframe from the newest on-disk copy (repo edits beat stale bundled duplicates); improved Windows file matching plus a lightweight mtime poll when OS notify misses a save.
  • Effect edits during development — the app loads HTML from your repo `effects/` folder before the bundled copy, so saving an effect file shows up after you re-select it (without stale installer resources winning by title).
Effects panel
  • Current effect summary — effect name is larger; developer credit sits on its own line underneath (right Effects column).
  • Effect settings scroll — the right Effects column keeps brightness, browse/transport, and the current-effect summary fixed; long parameter lists scroll inside the Effect settings box (layout sync keeps the scroll region sized correctly in the desktop shell).
Devices and layout
  • USB power-cycle layout — when a USB device (for example a Razer soundbar that sleeps when idle) drops off the bus and comes back, RGBJunkie keeps your canvas position instead of spawning a new centered copy. Reconnect matches the same physical unit by stable USB group id and reuses the existing layout component when the plugin signature changes.
Updates and About
  • What's new on update — when a newer build is available, the update dialog shows release notes from the bundled changelog (every version between yours and the latest). All release notes opens the full in-app history.
  • About → Release notesSettings → About has a Release notes button and the build label opens the same changelog modal for your installed version (scrollable, works offline; falls back to rgbjunkie.com when a version is missing from the bundle).
  • Release notes headings — section titles such as Effects and Sleep and hibernate render as proper headings instead of raw markdown text.
v0.2.98

May 25, 2026

Sleep and hibernate
  • RAM after wake without restarting — wake recovery now drops the in-app PawnIO SMBus session (same as quitting and reopening RGBJunkie), waits for motherboard firmware to finish its post-wake pattern, re-probes ENE DRAM, forces direct mode on each stick, and reinjects RAM plugins a few seconds after USB handles refresh.
Effects panel
  • Auto cycle per workspace tab — when Auto cycle effects is on, each canvas tab keeps its own timer and advances through that tab’s saved effect list independently (not one global clock for the whole app).
v0.2.97

May 25, 2026

Sleep and hibernate
  • RAM after wake without restarting — hibernate left the in-app PawnIO SMBus session running with a stale “direct mode already set” cache while the motherboard firmware had reset the DIMMs to its own pattern. Wake recovery now drops that session (same as quitting and reopening the app), waits for post-wake SMBus traffic to settle, re-probes ENE DRAM, forces direct mode on each stick, and reinjects the virtual RAM plugins a few seconds after USB handles refresh.
v0.2.96

May 25, 2026

Sleep and hibernate
  • RAM after wake — post-hibernate recovery now runs the same full PawnIO RAM rediscovery as first boot and Settings → Retry RAM discovery (strip cached DIMM rows, probe SMBus, reinject fresh plugins) instead of only reconnecting the session. The USB watchdog does the same full replace after its reload finishes, so RAM should stay lit past the ~1 minute mark when the watchdog unpauses.
v0.2.95

May 25, 2026

Settings
  • Overview punctuation — device cards and the workspace pill no longer show stray question marks between items (for example `1 channel · 1 layout component` and `PC · 2 tabs`). The same fix applies to LED calibration channel labels and a few Settings helper lines that used the wrong separator.
Sleep and hibernate
  • RAM staying dark after wake — about a minute after hibernate, the USB watchdog could run a full rescan that stripped and re-probed PawnIO RAM over SMBus while USB was busy. Wake recovery now resets watchdog peek state, heals RAM without reinject on USB-only reloads, and re-heals PawnIO ~50s after wake when the watchdog unpauses.
v0.2.94

May 25, 2026

Sleep and hibernate
  • RAM after wake — hibernate recovery now re-connects PawnIO/OpenRGB SMBus and re-runs RAM discovery (same path as Settings → Retry RAM discovery), and clears color dedup so DIMMs get a fresh push without a full USB rescan.
v0.2.93

May 25, 2026

Sleep and hibernate
  • Nollie32 flicker after wake — logs showed resume was running a full hardware rescan _and_ the USB watchdog reload at the same time, leaving multi‑second gaps between Nollie HID flushes (firmware blanks near 500 ms). Wake recovery now only reopens HID handles and repoints existing plugins; the USB watchdog stays paused briefly so Nollie keeps steady frames.
v0.2.92

May 25, 2026

Sleep and hibernate
  • Lighter wake recovery on USB strips — resume no longer kicks off a full hardware rescan when reopening stale HID handles is enough, so Nollie-class strips spend less time dark right after wake.
v0.2.91

May 25, 2026

Sleep and hibernate
  • Nollie32 after wake — resume recovery no longer re-runs full plugin Initialize on Nollie-class controllers (they only need fresh HID handles). That extra init was causing ~3 Hz flicker while colors were otherwise correct.
v0.2.90

May 24, 2026

Sleep and hibernate
  • USB and OpenRGB after wake — hibernate often leaves the same HID path open in Windows but the handle is dead, so effects kept playing while USB/OpenRGB gear stayed dark. Wake recovery now closes all cached HID handles, resets OpenRGB and GPU I2C sessions, reloads plugins, and re-runs Initialize on every active device (WLED still gets the HTTP live nudge).
v0.2.89

May 24, 2026

Effects
  • Mixing — simplified to two-band merge only (removed the large multi-shape editor); bands meet at center, Blend or Custom merge color, Color Profile, soft edges, gravity modes, bass flash; fills engine resolution.
  • MeteorSpeed applies immediately while the comet is moving (not only after it hits an edge).
  • MeteorBand Thickness now works intuitively (higher = thicker band).
  • Meteor — simplified to comet only (removed the large multi-shape editor); Color Profile, soft edges, optional gravity modes, and bass flash; fills engine resolution.
  • Liquid Metal — fixed effect not rendering (crash from Audio Sensitivity variable shadowing the host-injected setting).
  • Liquid Metal — fixed blank/black output: chrome ridges again lerp between profile shadow and highlight samples (full palette still drifts across the surface via Color Flow).
  • Liquid Metal — fills engine resolution with Render Quality scaling; Color Profile maps the full palette across chrome ridges (Custom still uses highlight/shadow pickers); Color Flow drifts the palette; bass drives extra turbulence via Audio Sensitivity; settings grouped under Motion, Surface, Colors, and Audio.
  • Kyber Duel: Flashpoint — each saber blade runs the full color profile from hilt to tip (left forward, right reversed); clash sparks sample random profile colors.
  • Kyber Duel: Flashpoint — saber inner core tints from each blade’s profile color instead of always rendering white.
  • Kyber Duel: Flashpoint — fills engine resolution (blade length, pivots, flash, and sparks scale with canvas); Color Profile via host profiles (Custom still uses saber overrides); settings grouped under Sabers, Motion, Clash, and Colors.
  • Kinetic Sand — fills engine resolution (simulation and spawn scale with canvas size); colors use Color Profile + Color Spread; settings grouped under Spawning, Physics, Colors, and Audio (removed legacy palette picker).
  • Functional `.mjs` effects — fixed freeze when the effect worker hung (batch timeout, main-thread fallback, effect switching clears the active worker); engine no longer deadlocks if sampling fails.
  • Euclidean Beats — fixed frozen animation (host now keeps a stable time origin and passes frame index; pattern uses continuous Step speed motion).
  • Bass Reactive Pulse (and other `.mjs` effects) — fixed stray dots on the engine canvas from per-LED 1×1 stamping (including manual LED paint overrides); the preview field now shows the effect only while hardware output is unchanged.
  • Audio Star — removed Edge Beat and related border-flash settings.
  • Audio Star — polar spectrum visualizer refresh: Color Profile + Color Flow, Audio Reactivity, Star Points rays, Spoke Floor for LED strips, engine-resolution canvas, and smoother bin response.
  • Audio Sine — tighter vertical glow (less halo above/below the wave); default Glow lowered.
  • Audio Sine — wave colors use Color Profile (Settings → Color profiles) with optional Color Flow on sound; removed Spectrum Cycle / static wave color.
  • Audio Sine — stronger sound reactivity (bass-weighted level, taller waves, faster response); default Audio Reactivity is 100.
  • Audio Sine — removed the always-on bounce and scroll; the wave height, drift, and spectrum colors now follow audio only (flat when silent).
  • Effect Browser — built-in effect preview images in nested `effects/` folders load again during development (served from `/effects/…` instead of blocked asset URLs); also finds folder-named or `.jpg`/`.webp` sidecars beside the effect file.
  • Fractal Explorer — fills the live Engine Resolution canvas (tracks `engine.canvas` each frame; no fixed 320×200 cap).
  • Fractal Explorer — scales with engine resolution, Render Quality slider for speed vs sharpness, Smooth Colors / Color Bands, Profile palette from color profiles, smoother Julia orbit motion, and improved bass/mid/treble sampling.
  • Effect settings panel — boolean options (e.g. Enable Animation, Sound Responsive) now use toggle switches instead of checkboxes; more vertical space between all options.
  • Flags of the World — all effect settings now appear on one panel tab (wave and audio controls were previously split into separate tabs).
  • Flags of the World — fixed startup crash (`Cannot read properties of null (reading 'style')`) when running inside RGBJunkie.
  • Firefly Glade — new defaults: Audio Sensitivity 8 and Beat White Flare off (0) for a softer, less flash-heavy swarm out of the box.
  • Fibre OpticBeat Reactivity now speeds up glow pulses traveling down the strands on each beat (surges on beat hits).
  • Fibre OpticSway Speed and Glow Intensity now have a clear effect (sway rate and bloom halo were previously too subtle to see).
  • Fibre Optic — rebuilt with physics-based strand sway, traveling light pulses, neighbor color bleed, per-band Bass / Mid / Beat audio, Strand Drape, and Glow; works at engine resolution in RGBJunkie.
  • Festive Lights — the first string starts near the top of the canvas; additional strings fill downward from there.
  • Festive Lights — fixed blank preview: canvas now bootstraps at 320×200, uses host `rgbjSetupCanvas` when needed, and cords draw immediately from a sag shape instead of blocking on physics settle.
  • Festive Lights — new Cord Drape slider (0 = tight/straight, 100 = deep sag) adjusts rope slack and gravity on the physics cords.
  • Festive Lights — cords use Verlet rope physics (gravity, tension, slack) for natural catenary drape; audio shakes one anchored end and ripples propagate along the string.
  • Festive LightsBass and Mid Reactivity now drive cord motion along the full string and brighter bulb response (works with Random Beat Lights on; set Cord Vibration above 0 for cord shake).
  • Festive LightsCord Variation slider randomizes each string’s height, drape depth, end hang, and sag (0 = identical evenly spaced cords).
  • Festive LightsRandom Beat Lights now brightens only the picked bulbs on each beat (rest stay dim); no whole-string beat pulse. Turn it off to restore beat brightness on every bulb.
  • Plasma Sphere — updated effect description for the library (plasma-lamp lightning, layouts, and controls).
  • Plasma SphereScreen edge: the full bolt follows a drifting edge contact (not just the last point). Wiggle shape is seeded and rerolls on a Particle Speed interval; Particle Amplitude sets zigzag size.
Scene profiles
  • Color calibration from component menu — right-click a component on the canvas or in the sidebar and choose Color calibration… to open Settings → Colors → Calibration with that component's hardware channel already selected.
  • Color calibration stays global — per-channel RGB calibration (Settings → Colors → Calibration) is saved in `profiles/devices/channel_calibration.json`, not in scene or layout files. Switching or saving a scene no longer overwrites your hardware calibration.
  • Layout and lighting split — scenes store your effect, sliders, and colors; strip positions and canvas tabs live in a paired device layout file (`profiles/devices/`, referenced by `defaultLayout` on the scene). Saving or loading a named scene updates both files. Older scenes that still embed `components` in the JSON keep working until you save again.
  • Correct effect on load — scene reload no longer picks the wrong Effect Library entry from a stale workspace tab or from clamping to the last slot when the saved effect cannot be resolved; re-save once if an old scene lacks stable effect ids.
  • Save, reload, and switch — named scenes (e.g. Audio Party) keep strip positions after reload; multiple components on the same controller channel restore by instanceId and strip name; switching scenes no longer asks to save when nothing changed.
Nollie32 and high-FPS USB
  • Throughput and stability — higher stable refresh on long strips, prioritized HID flushes when many USB devices are connected, optional hardware update cap, and smoother HTML effects at high sample rates.
  • Display off — lights and effects keep moving when Windows blanks the monitor for power saving.
Audio Party
  • Wave floor (General, default 14%) so bands do not drop to black between beats; Glitch off by default and softer when enabled.
Sleep and hibernate
  • USB controllers after wake — resuming from sleep or hibernate runs a full device reload (stale HID handles cleared), relaunches the active effect, and retries if the app was still busy when Windows woke.
  • WLED after wake — each configured controller gets `on:true` then `live:true` over HTTP so strips that powered off during hibernate accept realtime UDP again.
v0.2.88

May 23, 2026

Hardware update cap slider and high-FPS devices
  • Settings → System → Engine → Hardware update cap — the FPS slider drags smoothly again; the limit is applied when you release the slider instead of on every pixel while dragging.
  • Nollie32 and other 100 Hz controllers — when RGBJunkie is in the foreground, device updates are no longer stuck at ~60 FPS from monitor refresh; the engine keeps the rate your plugin or cap requests (up to 100 FPS by default).
  • Nollie32 with many USB devices — watchdog `hid_device_flush` calls now jump ahead of mouse/keyboard-sized flushes when the global USB slot pool is full (8+ HID devices used to cap at 2 parallel flushes and starve Nollie). Commit-packet pacing default is 1 ms (was 2 ms).
Scene load — component positions
  • Named scenes (e.g. Audio Party) — loading a saved scene no longer replaces the on-disk layout snapshot with live canvas positions mid-restore (which could shift strips after USB spawn/rebind). Saved x/y, size, and workspace are re-applied from the scene file after plugin layout passes finish.
  • Save / reload named scenes — saving a scene now writes the same snapshot to autosave as to the named `.json` file (instead of rebuilding autosave separately). Autosave no longer merges in extra stale components from an older autosave when a named scene is active, which made reload look like your save was ignored.
  • Scene reload flash — reloading a named scene no longer snaps back to old positions a moment later when plugin layout spawns, USB rescans, or `loadSystemData`'s deferred layout pass re-run after the file load; saved x/y are frozen from the named file and re-applied after every spawn (including hardware rescans).
  • Multiple strips on one channel — scenes like Audio Party can legitimately save several layout components on the same controller channel (e.g. three Nollie fan strips on `…-0`). Reload no longer maps every deferred re-apply to the first match on that channel; rows restore by instanceId, strip name, then nearest saved x/y.
  • Scene switch save prompt — switching to another scene no longer asks to save when you have not edited anything. The clean baseline is captured as soon as a scene finishes loading (not only after the 2 s layout settle), and the prompt stays off while deferred restore is still running.
  • Focused high-FPS mode — on-screen HTML effects keep updating at monitor refresh while hardware sampling runs faster, instead of repainting the effect iframe on every 100 Hz tick (which capped real throughput around 25–30 FPS).
  • Nollie32 blanking — watchdog controllers no longer get forced black during channel identify, setup wizard, or USB rescans; HID frames are queued through rescans instead of dropped so firmware does not blank the strip.
  • Channel identify — the old 4 Hz on/off hardware flash is removed; identify now pulses only on the workspace canvas so strips (especially Nollie32) stay steady. Saved layouts no longer restore a stuck identify selection.
  • Nollie USB pacing — shorter default gap between commit packets (2 ms instead of 8 ms) to reduce visible flicker during multi-packet frames.
  • Nollie32 Firmware 2.x commit — the group commit marker is now sent only on the last HID packet of each channel group (not on every packet for the highest channel). Long strips or multi-packet channels no longer commit mid-frame, which looked like a stutter or blink.
  • Nollie32 whole-strip blink — high-FPS hardware sampling no longer clears the engine canvas between effect frames, reuses the last good pixel read when sampling fails, and skips watchdog HID pushes during brief all-black canvas dropouts so the strip stays on the last good frame instead of flashing off.
  • Nollie32 ~50 FPS cap — the high-FPS engine timer now fires on a fixed schedule at the start of each frame instead of after frame work finishes (work time was doubling the interval). Nollie32 requests 108 Hz; the default hardware update cap is 120 FPS so you do not need to raise Settings unless you lowered it before.
  • Nollie32 ~50–60 FPS (focused) — watchdog `Render()` now runs on a dedicated interval decoupled from the heavy UI `frameLoop` (canvas read + Konva), so throughput can reach ~108 Hz while effects still composite at monitor refresh.
  • Nollie32 strip stutter (HTML effects) — high-FPS hardware no longer samples a ~60 Hz cached fallback while the fast timer runs at ~100 Hz (that uneven hold/jump pattern looked like stutter on long strips). The engine now blits the live effect canvas on the same tick as `getImageData`.
  • Nollie32 HID flushes/s — Strimer USB traffic (6–12 extra packets per frame) now runs only when that Strimer subdevice has LEDs on your layout, not just because GPU/ATX Strimer connected is enabled in device settings. Unmapped channels also report 0 mapped LEDs to the plugin instead of the full 256-LED cap, so strip-only setups send fewer packets per flush and HID flushes/s can track closer to your hardware update cap.
Audio Party and physical LED strips
  • Audio Party — wave bands no longer drop to pure black at every trough (new Wave floor setting under General, default 14%). Glitch is off by default and is softer when enabled, so long strips (Nollie32) no longer look like they are blinking off between beats.
Screen turns off from inactivity
  • When Windows blanks the monitor to save power, your lights and on-screen effects keep moving smoothly instead of slowing to a crawl.
Smarter updates for some USB controllers
  • Nollie32 — only updates the channels and LED counts you actually placed on your layout (not every empty port at full size).
  • Prism Mini — same for its strip channel.
  • ASRock motherboards — when Per-LED / ARGB mode is enabled in settings, motherboard headers and built-in zones follow only the LEDs you added.
  • SteelSeries QcK Prism (two-zone models) — sends less data when colors are not changing; animated effects still look normal.
Many USB devices on one PC
  • When you run a lot of USB RGB gear, RGBJunkie spreads work across updates so one USB hub is less likely to stutter. Wi‑Fi WLED strips and RAM lighting behave as before.
Memory number matches Task Manager
  • The memory shown in the status bar and under Settings → System → Computer now includes all parts of the app, so the total is closer to what you see for RGBJunkie in Task Manager.
Tray, minimize, lock screen, and other apps
  • Lights and effects stay smooth when RGBJunkie is minimized, in the system tray, on the lock screen (Win+L), or while you use another program.
  • Fixed a bug where everything looked like a slideshow (~1 update per second) after minimize or close-to-tray.
  • The native background pump now calls the lighting loop directly on the webview thread (instead of throttled IPC events) and keeps the hidden WebView2 controller visible so tray/minimize timing stays at full speed.
Smoother effects when RGBJunkie is in front
  • On-screen effects match your monitor refresh again instead of lagging behind slow device updates.
  • New installs default to 320×200 engine size (Settings → Engine → Resolution, 100% scale).
Adjustable maximum device FPS
  • Settings → System → Engine → Hardware update cap — set the top speed for canvas sampling and device plugin updates (15–240 FPS, default 100). Plugins can still request a lower rate via `device.setFrameRateTarget()` (for example Nollie32 at 100 FPS, WLED at 60, mousepads at 25).
  • Low power mode removed — the old Enable low power mode toggle is gone. Use Hardware update cap to limit CPU/USB load instead (for example 30–60 FPS on busy hubs). Saved low-power preferences are ignored on upgrade.
Memory use
  • The app frees unused memory after big changes (switching effects, rescanning hardware) without freezing your lights for a long cleanup.
  • Automatic cleanup about every 2 minutes when memory stays above about 600 MB (was 5 minutes / 800 MB).
  • Free RAM from the status bar or Ctrl+Shift+F still does a deeper cleanup when you ask for it.
  • Less aggressive cleanup when you alt-tab away, which could cause small LED hiccups.
Stays responsive in the background
  • Windows is less likely to slow RGBJunkie down while it runs in the tray and your lights are still on.
After sleep or hibernate
  • Your gear comes back on its own after wake — similar to using Rescan hardware. WLED gets a quick refresh; everything else settles within a couple of seconds.
v0.2.81

May 22, 2026

Developer workflow
  • `compile.bat devtools` — runs elevated `tauri dev` with `RGBJUNKIE_OPEN_DEVTOOLS=1` so WebView2 DevTools open on startup (tray → Open developer tools remains available). Plain `compile.bat` is unchanged.
  • Tray FPS diagnostics — in Edge DevTools, `window.rgbEngine.getFrameTickDriverStatus()` reports whether the background Web Worker tick driver is active while the window is minimized or in the tray (`workerActive`, `pageHidden`, target interval).
v0.2.78

May 21, 2026

Settings → Hardware — Performance tab
  • The former Throughput sub-tab is renamed Performance. The table adds an FPS column showing each device’s plugin Render() rate (rolling ~2 s window), alongside data rate and I/O counts.
Nollie / high-FPS plugins — `setFrameRateTarget` now drives the engine
  • Performance tab FPS was often stuck near 30–60 even when a plugin requested 100 FPS, because the host sampled the canvas at ~60 Hz (or ~30 Hz with Settings → System → Engine → Low-power engine) and `setFrameRateTarget` only raised the floor without speeding up sampling. The default hardware sample cadence is now ~100 Hz (`1000/100` ms). Plugins that call `device.setFrameRateTarget(100)` (Nollie32, etc.) pull the frame loop to match (up to the 100 FPS sandbox cap). Turn off Low-power engine if you want headroom above ~30 Hz on devices without an explicit target.
Nollie32 — up to 100 FPS
  • Nollie32 (V1 and Firmware 2.x / Nos 2.0) can now drive hardware at up to 100 FPS instead of being capped at 60. The host still paces multi-packet HID writes so the USB bus stays stable.
  • Plugin sandbox — `device.setFrameRateTarget` is hard-capped at 100 FPS for every device; no vendor-specific FPS rules in the sandbox. Nollie plugins declare `usbPathHealWithoutReinit: true` on `rgbjunkie` instead of the host matching USB vendor IDs.
LED timing when the window is in the background
  • Unfocused or minimized — the lighting loop no longer waits until each frame finishes before scheduling the next tick (that pattern could drop well below 60 Hz and feel like LED lag). It now runs on a steady ~60 Hz timer, and effect preview frames are applied immediately instead of waiting on a throttled animation frame.
  • Tray / hidden window — a native background pump keeps driving the loop when Chromium slows JavaScript timers, so strips and controllers stay in sync while you use other apps or RGBJunkie is only in the system tray.
WLED device list — one file in AppData (dev and release)
  • Settings → Devices → WLED now loads and saves only `%APPDATA%\RGBJunkie\profiles\devices\wled_devices.json`. Dev and release builds share the same list (no separate WebView `localStorage` copy). A one-time migration copies any legacy browser-stored rows into that file on first launch after the update.
Nollie plugins — one brand folder
  • All Nollie controllers now live under `plugins/Nollie/` only. The old `plugins/Firmware 2.x/` folder (Nos 2.0 / CDC variants) and duplicate *`plugins/Default/Nollie.js` stubs are removed. `Nollie32.js` remains the unified plugin (V1 + Firmware 2.x protocols); Nos 2.0 and CDC builds are sibling files in the same folder. Saved bindings that pointed at `Firmware 2.x/...` or `Default/Nollie...`** paths are redirected automatically.
WLED — fewer periodic rapid flashes on long strips
  • When the PC pauses the lighting loop briefly (memory trim, DNS refresh, or a heavy rescan), stacked UDP frames are no longer blasted to the controller in one burst. Each host now sends one latest frame at a time, and hostname lookups reuse the last good IP while refreshing in the background (about every 5 minutes) instead of stalling mid-stream.
WLED — layout components stay after restart (IP vs hostname)
  • Scene autosave may store `wled:192.168.x.x-0` while Settings → WLED lists `wled-matrix.local` (or the other way around). On load, RGBJunkie matches the same physical controller by discovered IP, configured hostname, and UDP maps — then rebinds and remaps canvas channels to the live plugin id. Duplicate autosave rows (two per controller — IP and `.local`) are collapsed to one strip per WLED device on load and save.
  • Restore still recreates skipped rows, merges missing WLED layout from `devices/autosave_device.json`, and avoids shrinking autosave when startup is partial. Settings → WLED keeps a stable device id per host when you save device settings.
LED timing when minimized to tray — Web Worker tick driver and effect rAF polyfill
  • Tray / taskbar minimize — LED FPS used to collapse to 1–2 Hz when the window was minimized or hidden because Chromium's IntensiveWakeUpThrottling clamps hidden-page `setInterval` to ~1 second per tick, no matter what Tauri events tried to do. The lighting loop now ticks from a dedicated Web Worker that runs on its own thread (not subject to page visibility throttling) at the same ~100 Hz the focused window uses. WebView2 also gets the `IntensiveWakeUpThrottling` and `CalculateNativeWinOcclusion` features disabled, so timers, message ports, and IPC stop being slowed down when the window is occluded. The native Tokio pump and the JS `setInterval` remain as a belt-and-suspenders fallback.
  • Effect animations stay alive when hidden — Chromium pauses (not just throttles) `requestAnimationFrame` inside iframes whenever the parent page is hidden, so HTML effects froze and the LED loop kept sampling the same canvas. Every effect iframe now boots with a small polyfill that swaps `requestAnimationFrame` for a `setInterval`-backed driver while `document.visibilityState === "hidden"`, so JavaScript / Canvas2D / WebGL effects keep redrawing at ~60 Hz when the window is minimized or in the tray. Native `requestAnimationFrame` is restored automatically when the window is visible again.
Workspace canvas tabs — device tree and component menu
  • Devices panel — every layout component stays listed under its device and channel, even when it belongs to a different canvas tab than the one selected above the workspace. Hiding other tabs on the layout (eye on the tab strip) only affects the Konva canvas, not the tree. Rows on another tab show a subtle left-edge marker, softer name text, and the canvas pill (1, 2, …) for which tab owns the strip.
  • Identify (canvas or tree) no longer wipes LED Studio brush colors on the layout — painted LEDs are restored when identify stops.
  • Right-click a component on the canvas (or in the Devices tree): removed Clear LED paint for this component (still in Settings → Colors → LED Studio); Lock layout is renamed Lock component; Move to canvas opens a flyout submenu with all workspace tabs (current tab marked).
Scene bar, toolbar, and settings — Español and 简体中文
  • The Scene label, Save, Reload, Delete, scene dropdown placeholder, and related tooltips and dialogs translate when you choose Español or 简体中文 in Settings.
  • Layout toolbar buttons (align, distribute, flip, snap, grid, report, help, settings, and grid spacing) use translated hover tooltips in those languages.
  • Settings → User media folders — action buttons no longer stack Chinese text vertically; intro, tabs, 删除, and 重新扫描硬件 are fully localized.
  • Settings → System → Startup help text uses 退出 / 关于 instead of English Quit / About; update copy no longer says ZIP alone.
v0.2.73

May 21, 2026

Workspace canvas tabs — device tree and component menu
  • Devices panel — every layout component stays listed under its device and channel, even when it belongs to a different canvas tab than the one selected above the workspace. Hiding other tabs on the layout (eye on the tab strip) only affects the Konva canvas, not the tree. Rows on another tab show a subtle left-edge marker, softer name text, and the canvas pill (1, 2, …) for which tab owns the strip.
  • Identify (canvas or tree) no longer wipes LED Studio brush colors on the layout — painted LEDs are restored when identify stops.
  • Right-click a component on the canvas (or in the Devices tree): removed Clear LED paint for this component (still in Settings → Colors → LED Studio); Lock layout is renamed Lock component; Move to canvas opens a flyout submenu with all workspace tabs (current tab marked).
Scene bar, toolbar, and settings — Español and 简体中文
  • The Scene label, Save, Reload, Delete, scene dropdown placeholder, and related tooltips and dialogs translate when you choose Español or 简体中文 in Settings.
  • Layout toolbar buttons (align, distribute, flip, snap, grid, report, help, settings, and grid spacing) use translated hover tooltips in those languages.
  • Settings → User media folders — action buttons no longer stack Chinese text vertically; intro, tabs, 删除, and 重新扫描硬件 are fully localized.
  • Settings → System → Startup help text uses 退出 / 关于 instead of English Quit / About; update copy no longer says ZIP alone.
v0.2.68

May 21, 2026

Light, dark, and system color scheme
  • Settings → App look → Color scheme — choose Dark, Light, or Match system (follows Windows/macOS `prefers-color-scheme`).
  • Light mode restyles panels, docks, toolbar, device tree, dialogs, and splash using shared design tokens; your accent theme (Toxic Viper, Electric Blue, etc.) still applies in both modes.
  • Fixed light mode only changing the canvas area — shell colors now follow the same theme tokens as the rest of the UI.
  • Light mode now also reaches the settings sidebar, status bar, device tree rows, effect browser, and other panels that still used hardcoded dark greys.
  • Light mode readability — accent-colored labels use a darker “readable” mix so green/blue accents are not neon-on-white; Overview stats, hardware tables, and Matrix-style sidebar fields use light surfaces with dark text.
  • Light mode dropdowns — language, scene, and other custom select menus use a light panel with dark text instead of the dark-theme list chrome.
  • Light mode contrast — Effects panel transport icons, setting tabs, effect title/author, and device-tree visibility buttons use darker text and icons on light surfaces.
  • Settings → Hardware — VID/PID hex values and table chevrons use dark text in light mode (no more pale cyan on white).
  • Help tooltips — `?` hints no longer show raw `<strong>` / `<code>` tags; HTML in locale strings is converted to plain text for tooltips and `aria-label`s.
  • Light mode — Settings — About card and update blocks use light surfaces; sidebar selection uses a stronger accent tint and left-edge marker so the active tab is easy to see.
  • Light mode — Help — Help paragraphs, lists, and keyboard-shortcut tables use dark text on light rows (no dark shortcut column); `kbd` chips and help popovers match the light theme.
  • Light mode — Logs — Log tail viewers use a light monospace panel with dark text; file tabs and Copy/Refresh buttons match other settings controls.
  • Light mode — Modals — Setup wizard, confirm dialogs, Effect Browser, and Component Library use light surfaces, dark copy, and readable badges instead of dark-theme panels and toolbars.
  • The choice is saved in app data and applied before the window paints to reduce a flash of the wrong scheme on startup.
Component Library
  • Filters — Brand, type, LED count, and sort sit side by side under search; the LED count list includes every fixed count in the catalog plus Dynamic length.
  • LED layout thumbnails — When a catalog entry has no product image (common for CompGen and other layout-only JSON), the grid shows a rendered LED map (dot positions from `LedCoordinates`) instead of the generic RGBJunkie logo. Entries with a real ImageUrl still use that artwork; failed downloads fall back to the layout render when possible.
  • Escape closes the browser (same as X); if a rename/import prompt is open, Escape dismisses that prompt first.
Effect settings — consistent category tabs
  • Controls grouped by object name from RGBJunkie builder exports (`Object 1: …`, `obj1_…`) now use the same category tab layout as effects that declare `group="…"` on each `<meta property>` (e.g. Fan Align). Builder rows no longer open a separate top-level Object 1 / Object 2 tab bar; categories such as Geometry, Stroke, and Fill-Animation appear in the same icon tab row as other effects.
WLED — correct component after restart
  • WLED channels no longer auto-load Airgoo Neon DLS30 (or another random catalog strip with the same LED count). Pick your layout from the Component Library as before; that choice is kept when you restart the app or reload the scene.
  • Scene autosave that still contains the old auto-spawned strip is upgraded to a neutral Strip layout on load. Deferred startup re-apply no longer tears down and rebuilds components (which was putting the old catalog strip back a few seconds after launch).
HID — fewer start/stop flickers when Windows churns USB paths
  • Several HID devices no longer pause for seconds, restart, then pause again in a loop while the bus is stable. The USB watchdog used to treat every short-lived `hid_path` string change as a full hardware reload (dropping live frames, re-probing every plugin). It now compares logical USB groups (not raw path strings), waits for two consecutive peeks before closing stale handles, coalesces bursty plug-and-play notifications, and uses a path-only heal (repoint + re-init) instead of a full plugin scan when your devices are already bound.
Effect runtime log on the canvas
  • Removed the accordion bar under the workspace; open the effect log with the terminal button in the lower-right corner of the canvas (Copy, Clear, and Escape to close).
Canvas maximize (effect preview fullscreen)
  • A fullscreen control in the top-right of the layout canvas stretches only the effect preview to every pixel of the screen (layout wireframes and bleed margins hidden; aspect ratio is not preserved). Press Escape or click the button again to return. The control uses a frosted chip so it stays visible over bright effects.
In-app update check when latest.json fails
  • If releases/latest.json on rgbjunkie.com errors (for example HTTP 500 while hashing a large portable ZIP), the app now shows the server message instead of failing silently on startup. The marketing site caches portable ZIP SHA-256 in a `.sha256` sidecar (uploaded with the ZIP) so the manifest stays fast and reliable.
  • Check for updates tries both www and non-www manifest URLs and reports the real failure (native TLS vs in-app fetch) instead of a generic “could not reach the server” when the site works in your browser.
  • Fixed update manifest validation rejecting valid `downloadUrl` links that include `/RGBJunkieApp/downloads/portable/` (native TLS check now matches the website manifest format).
In-app update download uses direct portable ZIP URL
  • Auto-update now downloads the direct `downloadUrl` portable `.zip` from the manifest instead of download.php (tracked gateway), so a server error in optional Firestore logging cannot block the update. download.php logging failures are also caught on the server so website and gateway downloads still serve the file.
  • After the ZIP passes SHA-256 verification, the app sends a lightweight HEAD request to `trackedDownloadUrl` (`download.php` with `channel=app-update`) so /stats/downloads/ records in-app updates without downloading the file twice. Older builds that only used the direct URL did not appear in stats.
  • Marketing site — server-side download logging works when PHP openssl is enabled (fixed a WAMP crash on `OPENSSL_ALGORITHM_SHA256`); failed writes are logged to PHP error_log. On localhost, `/stats/test-server-log.php` verifies Firestore writes.
Scene profiles and layout shell
  • Scene profiles combine device layout and effect settings in one file under `profiles/scenes/`. The picker sits in a bar above your workspace tabs (center column), not in the Devices or Effects side panels. Share effect settings remains effect-only (no canvas data). Run `node scripts/merge-legacy-profiles-to-scenes.mjs` once to merge old `devices/` and `effects/` JSON on this PC.
  • Save shows a brief confirmation in the bottom status bar as well as the toast, and the save button indicates when a write is in progress.
  • Loading a scene now confirms success (or shows an error) instead of switching silently.
  • Loading a scene with multiple workspace canvases starts the saved effect on every tab, not only the active one. Keyboard layout follow on inactive tabs now receives input and layout polling for that tab’s hidden runner (WebView2 no longer pauses those iframes).
  • Scene load refreshes subdevice layout rows, rebinds components, and rebuilds the device tree. Single-channel devices with no canvas component get a default full-width strip on channel 0 so the active effect can reach the hardware again. Output off applies only for devices that are actually connected. `wled_devices.json` no longer appears in the Scene dropdown if it was copied into `profiles/scenes/` during migration.
  • Effects and Scene use the right column with the same dock shell as Devices; canvas tabs sit centered above the workspace. Channel-colored dots appear on channel rows only, not the device summary row.
  • Toolbar stays compact icon-only; the top bar scrolls horizontally if your window is narrow. Grid spacing opens in a fixed layer so the bar does not jump. Browse effects stays the main call-to-action without a continuous pulse animation.
  • Workspace tabs show the 1–9 shortcut slot in brackets (e.g. Main [1]). New tabs added with + are kept when you switch away until you save or remove them. Switching tabs shows that canvas’s components without reloading the default layout from disk when both tabs use the same effect.
  • Device tree — one lock/unlock toggle for the canvas; workspace picker uses 1–9 with flat icon styling; Rescan shows a spinning icon only (no “Scanning…” text).
Portable updates verify ZIP SHA-256 before install

In-app auto-update now requires `portableZipSha256` in the update manifest. After the portable ZIP downloads, RGBJunkie checks its SHA-256 before extracting (same idea as the pinned OpenRGB download). On rgbjunkie.com, `releases/latest.json` is generated by `releases/latest.php` on each request from the newest *`downloads/portable/RGBJunkie__x64-portable.zip` on the server — upload the ZIP via `build.bat`** / FTP; no static manifest file in the repo or build output.

Security: safer profile files, effect paths, and portable updates
  • Profile save/load (`save_user_data` / `load_user_data`) now only accepts known folders (`scenes`, `effects`, `devices`, `cache`) and safe `.json` basenames — blocking path traversal outside `%APPDATA%\RGBJunkie\profiles\`.
  • Effect / plugin / component discovery — the library scans, in order: your `%APPDATA%\RGBJunkie\` imports, then folders next to `RGBJunkie.exe` (and `resources\…` when present), then the repo dev trees (`effects/`, `plugins/`, `components/` from the project root when you run `tauri dev`). Settings imports still land only under AppData.
  • Effect files by path and Open in Explorer / editor use the same allowlist (AppData user effects + bundled install effects).
  • Open folder in Settings only opens RGBJunkie AppData, bundled install effects/plugins/components folders (next to the app), or Documents\RGBJunkie Backups — not arbitrary paths on your PC. Opening an effect’s folder from the browser still uses the effect path allowlist.
  • `local_http_request` (WLED JSON over the Rust proxy) only connects to loopback, private LAN, link-local, and CGNAT (100.64/10) addresses — not the public internet — so a compromised webview cannot use RGBJunkie as an arbitrary HTTP client.
  • Tighter webview CSP and asset access — removed the catch-all `` asset scope (AppData, install dir, resources, and dev working tree only). `connect-src`** no longer allows arbitrary `http:`/`https:`/`ws:` to the internet; LAN WLED HTTP stays on the Rust proxy. Allowed fetches are limited to rgbjunkie.com, assets, GitHub API (update fallback), effect CDNs, and local IPC/dev URLs.
  • Plugin and functional effect isolation — device plugins no longer get the full Tauri `invoke` surface on `globalThis.__rgbjInvoke`; only `local_http_request` and `wled_udp_send` (WLED LAN path). User `.mjs` effects are scanned at load for forbidden APIs (`fetch`, dynamic `import`, `invoke`, DOM, etc.) before the host runs them. When your browser supports Workers, `sampleLed` runs in an isolated Worker (batch sampling per frame) so effect code cannot reach the main window or Tauri; if Worker init fails, the app falls back to the previous in-process import path.
  • Functional (.mjs) preview no longer flashes black — the workspace effect preview is painted on an offscreen buffer while the Worker runs, then copied to the engine canvas in one step (hardware LEDs were already using the finished sample cache and looked fine).
  • Guest Tauri invoke deny list — `globalThis.__TAURI__.core.invoke` is patched at startup so plugin/WLED guest code cannot call profile I/O, `open_folder`, portable update, arbitrary effect/plugin reads, etc. (host UI still uses the normal `@tauri-apps/api` `invoke` path). WLED shims no longer fall back to unrestricted `__TAURI__` invoke.
  • `rgbjunkie://` effect-settings links — only `rgbjunkie://import…` (and equivalent empty-host forms) are accepted; gzip/JSON payloads are capped to block decompression bombs.
  • HTML effect iframe bridge — effects receive a narrow read-only `window.engine` facade instead of a live reference to the host `rgbEngine` object. `appState` is no longer attached to `window` in production builds.
  • Device plugin source scan — plugin `.js` bodies are rejected at load if they reference `__TAURI__`, `window.parent`, or `parent.appState` (escape hatches before `new Function` evaluation).
  • HTML effect source scan — built-in and imported `.html` effects are checked at launch for Tauri/`invoke`/host-state escape patterns (network `fetch` to CDNs remains allowed).
  • Effect iframe sandbox — workspace effect iframes use `sandbox="allow-scripts allow-same-origin"` and `referrerpolicy="no-referrer"`.
  • Maintainer: `npm run audit:security` — scans `plugins/` and `effects/` for forbidden markers; CI Security audit workflow runs it with `npm audit` and `cargo audit`.
  • Plugin sandbox invoke allowlist — `PluginSandbox` only calls a fixed set of HID/GPU/SMBus Tauri commands (not the full IPC table).
  • Update manifest validation (Rust) — `fetch_app_update_manifest` rejects malformed JSON, bad versions, non-rgbjunkie URLs, or oversized fields before the UI parses the manifest.
  • Security overview — see `docs/SECURITY.md` for a plain-language summary of controls and limits.
  • Portable auto-update URLs must use host `rgbjunkie.com` or `www.rgbjunkie.com` (parsed hostname, not a substring). The in-app Update button only appears when the manifest points at a valid *`downloads/portable/.zip`** on that domain.
In-app updates use tracked download.php URLs

Portable auto-updates on current builds download through rgbjunkie.com/download.php with `channel=app-update`, separate from website portable downloads (`channel=website` in the browser tracker). `releases/latest.json` keeps a direct `.zip` URL in `downloadUrl` so older installed versions can still apply updates; `trackedDownloadUrl` is used by newer builds for gateway downloads and stats. On the server, optional Firestore logging (service account in `download-stats-secret.php`) records app-update downloads; the stats page shows a Channel column.

In-app update showed “Unavailable” after publishing latest.json

If `downloadUrl` was only a download.php link, builds before gateway support treated the update as not installable (button Unavailable). Republish `latest.json` with a direct portable `.zip` in `downloadUrl` (and optional `trackedDownloadUrl` for tracking).

Scene profiles: removed components stay removed when you reload

Loading a saved scene (for example Audio Party) no longer pulls extra strips and fans back in from old `profiles/devices/autosave_device.json`. That legacy merge still runs on startup autosave when the scene file was damaged or truncated, but a scene you saved after deleting a component is now the source of truth.

Workspace toolbar: snap and grid toggles show when they are on

Snap Grid, Snap Edges, Snap Center, and Show Grid now get a visible pressed state (accent highlight) in the Windows minimal theme. The toggles were saving and working; only the on-state styling was missing because flat toolbar buttons use `!important` backgrounds that overrode the older active style.

rgbjunkie.com gallery effects render again

Effects downloaded from the site often call `engine.getSensorValue()` (Effect Builder export). The desktop app now implements that API on top of LibreHardwareMonitor readings, with a safe animated fallback when a sensor name is missing or LHM is still starting — so gallery effects no longer crash on launch with a blank canvas.

Functional (.mjs) effects: preview grid and thumbnails

The engine canvas preview for `.mjs` effects now maps each preview cell’s `ledIndex` along the horizontal strip (same as real LED sampling), instead of a diagonal mix of X and Y — so patterns like Euclidean Beats, Morse Stream, VU Meter, and Palindrome Symmetry look correct on the workspace and in generated catalog PNGs. Thumbnail generation also simulates `audio.level` and `audio.density` so level-meter and sound-reactive previews are not stuck dark.

Maintainer: dependency security audits in CI

GitHub Actions workflow Security audit runs `npm audit` (prod + dev, high severity and above) and `cargo audit` on `src-tauri` when dependencies or core security code change. Run the same locally before release: `npm audit` and `cargo install cargo-audit && cargo audit` (in `src-tauri`).

Maintainer: catalog thumbnails from effect canvas renders

New script `npm run generate:effect-thumbnails:canvas` (after `npx playwright install chromium`) loads each built-in HTML effect in headless Chromium with the same host bridge the app injects, waits for the largest canvas to draw, and writes `{effectName}.png` next to the effect file for the Effect Browser. It also supports functional `.mjs` effects (`npm run generate:effect-thumbnails:mjs`) by rendering the same coarse `sampleLed` preview grid the app paints on the engine canvas. Use `--skip-existing` to fill in only missing images; use `generate:effect-thumbnails` when you want AI-generated art instead of a live frame grab.

Effects: hardware sensors via bundled LibreHardwareMonitor

Effects can read CPU/GPU load, temperatures, fan speeds, and other values from `engine.sensors` — a stable ID-based API (`list()`, `get(id)`, `normalize(id)`). The app can ship LibreHardwareMonitor in the installer (see `vendor/librehardwaremonitor/README.md`), start it as a background helper, and poll its `data.json` feed so effects do not talk to port 8085 directly. Sidebar `type="sensor"` controls are now sensor pickers populated from the live catalog. Sample effect: System Vitals. Enable Options → Remote web server → Run in the helper if sensor status stays on “starting”.

Effects: LHM sensor list showed only one entry

LibreHardwareMonitor reports readings as strings with units (for example `69.5 °C`, `1264 RPM`), not bare numbers. The parser now understands those values and uses LHM’s `SensorId` paths, so the sensor picker lists the full catalog (hundreds of sensors) instead of a single S.M.A.R.T. counter like Power On Count.

Effect browser: cleaner filter bar layout

The Effect Browser filter bar is one shallow row that uses the modal’s width (CSS grid): search and dropdowns share horizontal space, actions are icon-only, active filter chips scroll in their own slot, and “N shown” moved to the header. No second filter row unless you open More filters (advanced row only). Fixed the Favorites toolbar control overlapping neighbors (it was injecting “Favorites (10)” text into an icon-sized button).

Effect browser: source badge and tags on one row

Effect cards show Built-in / MJS badges and effect tags (audio, visualizer, +N, …) in a single combined chip row instead of two separate lines.

Effect browser: card menu opens upward when needed

The menu on effect cards no longer gets cut off at the bottom of the browser. It opens in a fixed layer above the grid, flips above the button when needed, and closes when you click again, pick an action, or click outside the menu. Star (favorite) sits on the top-right of the preview image; (more actions) on the bottom-right, with icons centered in their round buttons.

Effects: sensor tree picker in the sidebar

Effect settings with `type="sensor"` now use a searchable hardware tree (same layout as LibreHardwareMonitor: PC → board → chip → group → sensor) instead of one long dropdown. Type filter pills (All, Temp, Load, Fan, …) narrow the list; each row shows a live value and updates when the catalog refreshes. The tree opens only when you click the sensor control (like the color-profile picker) and opens to the left of the effects sidebar over the canvas, not on top of the narrow panel. It closes when you pick a sensor, press Escape, or click outside. Folder rows start collapsed; expand and collapse with the chevron (▸/▾). Search still opens branches that contain matches. A second row of tabs filters by hardware (CPU, GPU, RAM, Mobo, and other buckets present on your PC) in addition to sensor type (Temp, Load, Fan, …). Choosing a hardware or type tab expands all matching folders so you see every sensor without clicking through the tree.

Escape closes more overlays

Escape dismisses the initial setup wizard and plugin device settings modal (same as their close buttons). The custom strip / rename prompt cancels on Escape even when focus is not in the text field. Existing behavior is unchanged for Settings, Browse effects, Component Library, confirm dialogs, and maximized canvas view.

Effect settings: category tabs

Effects that declare `group=` on each control (for example Fan Align) now use one row of category tabs (Layout, Colors, Pattern, …) like Audio Party, instead of turning `Label: Setting` prefixes into separate top-level tabs with an empty General panel.

Devices: Elgato Stream Deck

Stream Deck Plus (`0x0FD9` / `0x0084`) is detected again — the host wires `Size()` before the plugin reads canvas dimensions. Five Stream Deck scripts from the SRGBmods Corsair-Elgato pack ship under `plugins/Corsair-Elgato/` (MK.2, XL, original, Mini, Plus). Stream Deck Neo stays in `plugins/Elgato/`.

Settings, Help, and accents

Settings → Help (all languages) documents Scene profiles, canvas maximize, expanded Escape behavior, the setup wizard, Component Library thumbnails, and the refreshed Devices/Effects layout. The rgbjunkie.com documentation page adds an end-user guide; run `npm run changelog:sync-wamp` after editing this file so the site changelog matches.

Settings → About uses a clearer hero (version pill), grouped Updates and Legal, and flat buttons consistent with the rest of the app.

Crimson Pulse is a deeper true red and Rose Neon a brighter fuchsia-pink so the two accent presets are easier to tell apart with mild red–green confusion.

v0.2.64

May 19, 2026

Workspace: Escape clears selection

Press Escape to deselect all components and layout groups on the canvas (same as clicking empty workspace). Does not run while Settings, the effect browser, confirm dialogs, or a context menu is open. Fixed a case where the component library overlay was treated as always open (CSS-hidden modals no longer block Escape).

Device tree: opening a device no longer jumps selection to the last channel

Clicking a device in the left panel selects that device’s components on the canvas instead of leaving only the last component in the last channel selected.

Dropdowns and fields match minimal panel buttons

Profile pickers, effect/device layout selects, toolbar dropdowns, effect-browser filters, plugin settings, and Settings form controls now use the same flat look as icon buttons — ghost comboboxes (faint underline, larger chevron, light hover wash) and lighter text fields instead of heavy gray boxes.

Custom dropdown menus (replacing the OS list)

Opening a profile or settings select now shows an in-app list (dark panel, hover highlight, accent on the current item) instead of the default WebView2 popup. Native `<select>` is still used for values and keyboard accessibility; only the open menu is custom.

Minimal sliders

Brightness, effect parameters (e.g. Overall pace), plugin settings, and calibration sliders use a thin track: your theme accent from the start up to the thumb, faint line after, and an accent-colored thumb (matches tabs and other accent controls).

Effect settings profile reload no longer adds extra canvases

Reloading a saved effect settings profile restores effect choices and sliders only — it no longer auto-loads the paired default device layout, which could add workspace canvases that were not part of the profile when you saved it. Switching effects in the library still applies the default device layout mapping when you have one set.

Warning before switching profiles with unsaved changes

Changing the effect settings or device layout profile dropdown, reloading a profile, or picking a new default device layout for effect now warns you when the session has changed since that profile was loaded or last saved (for example adding a canvas tab). Autosave still runs in the background, but the prompt compares against that loaded baseline — not autosave alone — so edits like a new canvas are not missed. The dialog offers Cancel, Continue without Saving, and Save and Continue on one row. Save and Continue now writes the named profile file you were on (not only autosave), so switching back to that layout keeps new canvases and other edits.

Effect browser: rescan local effects when opened

Opening Browse effects now runs a full disk rescan (built-in and user folders), merges the online gallery, and refreshes the list — so new or edited `.html` / `.mjs` files show up without restarting the app.

New effect: Topographic Contours

A calm elevation-map look — drifting hills drawn as contour lines with optional shading from your color profile, and optional bass response so lines shift slightly with music.

New effect: Chromatic Split

Soft floating shapes tinted by your color profile, then separated into red / green / blue channels — prismatic fringing that widens on bass hits. No text rain or digital noise; adjustable split distance, direction, and wobble.

Effect settings no longer reset when opening Browse effects

Opening the effect browser rescans disk and merges the gallery without switching to a different effect, relaunching the iframe, or reapplying autosave parameters — sidebar sliders and the running effect stay as they were.

Brainstorm effect pack — fixes and removals

Removed: Gray-Scott, SEM Lithography, Origami Fold, PCB Traces, Fan Tachograph, Network Pulse, Ambient Pulse, Slime Mold, Cymatics, Rope Chain, plus earlier weak HUD/layout effects (Pendulum Wave, Solar Day Arc, Path Runner, Corner Reflector, Desk Lamp, Terrarium, Star Ceiling, Health Rings, Cooldown Sweep, Loot Flash, Minimap Ping).

Tuned: Halftone drifts faster and has a movement angle slider. Fibre Optic sways slower with visible sound response (sway, brightness, and traveling pulses on bass). Segment Chase scrolls profile colors through bands and offers segment shapes (vertical, horizontal, diagonal, radial rings, wedges); wedge mode rotates profile colors with the spokes (not locked to the screen). Dominant Color Wash weights screen center more. Seasonal Slow density updates live; autumn vs spring look distinct. Double Pendulum has arm length controls.

Brainstorm effect pack (remaining canvas + strip `.mjs`)

Open Browse effects to rescan the disk.

  • Physics & math: Double Pendulum
  • Visual style: Halftone, Fibre Optic
  • PC / mood: Dominant Color Wash (screen sampling)
  • Layout / chase: Segment Chase
  • Calm / HUD: Seasonal Slow
  • Strip functional (`.mjs`): Hilbert Walker, Euclidean Beats, Thermodynamic Noise, Palindrome Symmetry, Morse Stream
Sidebar and Settings: hints behind icon-only help buttons

Device Layout Profiles and Effect Settings Profiles no longer show gray subtitle lines under the headings. The same text is on the ? icon beside each title (hover or focus).

Settings uses the same control everywhere section intros used to be gray paragraphs: App look (language, theme, typography, canvas LEDs, labels), Color profiles, Hardware (OpenRGB RAM, WLED, unmatched devices), RAM / GPU tabs, Engine advanced options, Backup, Computer, Logs, Installed files (Git repos and media lists — click opens the full help dialog), and the request missing device dialog. Installed-files help no longer uses a bordered ? text button.

App-wide buttons: minimal flat style

Buttons across RGBJunkie (toolbar, Settings, component/effect library modals, setup wizard, plugin settings, confirm dialogs, LED Studio, and the device/effect side panels) use the same light treatment: transparent by default, soft hover, accent when toggled on. Browse effects, Submit, and other primary actions still use the green btn-primary-strong style. Delete/remove controls keep a red hover hint. Top toolbar controls stay icon-only (labels hidden for space); icons keep an explicit size so they remain visible with the flat button style. Toolbar button groups no longer use a separate grey pill background — icons sit directly on the top bar. Tools that are unavailable (nothing selected, etc.) show darker gray icons instead of a washed-out fade.

Sidebar panels: lighter icon buttons

Small controls in the Devices and Effects docks (profile save/reload/delete, rescan, visibility/lock toolbar, transport buttons, share, reset, and per-device tree actions) use the same minimal icon-only style as the profile ? help buttons — no heavy gray btn boxes; subtle hover and accent when active. Effect settings category tabs match (flat until selected).

Settings: hardware notes and color profile delete buttons

Removed the RAM (OpenRGB) and GPU I2C disclaimer notes from Settings → Hardware. Color profile and swatch delete controls now show an × icon (Bootstrap Icons) instead of a ? placeholder.

Effect hot-reload: stay on the same effect

When you save an effect `.html` file while it is running, RGBJunkie reloads that effect instead of jumping to a different entry in the list (fixes wrong index after catalog rescan and profile restore overriding your selection).

Effect developer guide: scaling shapes to canvas size

`EFFECT-DEVELOPER-GUIDE.md` (and the HTML guide on the site) now documents Section 2.2 — how to scale radii, spacing, and stroke width using `canvas.width`/`height`, `engine.canvas`, `rgbjSetupCanvas`, and the 320×200 reference size.

v0.2.63

May 19, 2026

Linux: correct status-bar memory and bundled effects

On Ubuntu and WSL, the bottom Proc. line could show hundreds of thousands of MB and inflated CPU because Linux reports each thread as a separate process with full RSS. The app now counts main processes only, so memory and CPU match what you would expect (~hundreds of MB, not hundreds of GB).

Installed Linux builds (`.deb`, AppImage) now find built-in effects from the installer’s resource folder (not only effects downloaded from rgbjunkie.com). Paths under `/usr/lib/.../resources/effects` and Tauri’s resource resolver are included.

Linux / WSL without a sound card

On machines with no ALSA playback device (common in WSL), RGBJunkie no longer retries audio capture in a tight loop, which avoids repeated ALSA lib … Unknown PCM default messages on the console. Audio-reactive effects stay off until a real sound device is present; use a normal Ubuntu desktop or PipeWire/PulseAudio setup for microphone/loopback capture.

Discord invite opens #welcome-and-rules

The toolbar Discord button now uses discord.gg/adHsQG8czv, which lands in #welcome-and-rules instead of the old invite that opened #bot-spam.

v0.2.62

May 19, 2026

Patch release

No separate release notes for this version. See v0.2.64 for user-facing changes shipped in this period.

v0.2.61

May 19, 2026

Patch release

No separate release notes for this version. See v0.2.60 for user-facing changes shipped in this period.

v0.2.60

May 19, 2026

Effect profiles: deleted canvas tabs no longer come back

Saving or loading an Effect Settings profile (for example Audio Party) could bring back a removed Canvas B tab. Workspace tabs are stored in both effect and device autosave; a later device layout restore could re-add a tab you had deleted, and the app’s default workspace used to include Canvas B whenever tabs were empty. Profiles now prune stale per-tab effect snapshots on save/load, treat saved `workspaceTabs` as authoritative over old component rows, sync device autosave after effect profile changes, and default to a single Main canvas only.

build.bat: automatic release prerequisites

`build.bat` now runs `setup-release-prerequisites.mjs` first: creates `scripts/sftp-upload.config.local.json` from the example when missing, checks the FTP password, installs WSL Ubuntu apt packages for Linux builds when needed (one sudo prompt), and warns if OpenRGB is not vendored. Use `RGBJUNKIE_GIT_PULL=1` to pull latest code before the build. Old `RGBJunkie.AppDir` and unpack folders under `bundle/` are cleaned before FTP upload.

WSL setup: auto-install Node.js and Rust

The WSL prerequisites script now installs Node.js LTS (NodeSource) and rustup stable when missing, instead of only printing a warning. First `build.bat` on a new Ubuntu WSL image may take a few minutes for apt + rustup.

Release FTP: clearer Linux upload failures

If Linux `.deb`/`.rpm`/AppImage versions do not match `package.json` (for example old 0.2.48 files after a bump to 0.2.62), FTP upload now prints an explicit error instead of silently skipping Linux. `build.bat` runs `verify-linux-bundles.mjs` before upload; `build-linux-via-wsl.mjs` removes stale Linux artifacts when copying a new build back from WSL.

Linux downloads on the website (release pipeline)

`build.bat` can produce Linux installers via WSL, and the FTP upload step now publishes `.deb`, `.rpm`, and AppImage files under `downloads/linux/` on rgbjunkie.com (alongside Windows NSIS, MSI, and the portable ZIP). If a Linux build was skipped, the upload continues with Windows artifacts only.

Linux WSL build: fix Vite EPERM on `C:`

Building on `/mnt/c/...` from WSL could fail with `EPERM` when Vite copies `public/` into `dist/`. The WSL build script stages under `~/RGBJunkieApp-wsl-build`, builds on the Linux filesystem, then copies `.deb`/`.rpm`/AppImage back through Windows (`\wsl$\...`) — not with Linux `cp` into `/mnt/c`, which often hits the same permission error.

LED Studio: toolbar layout like the design mockup

The LED Studio controls are laid out in one horizontal strip: Component (device dropdown), Brush tools (color + HEX in one capsule, Paint/Erase in another), and Actions (three rounded buttons, with Clear all in red). Sections are separated by vertical dividers with small uppercase labels above each group.

LED Studio: confirm before Clear all

Clear all in LED Studio now asks for confirmation first. It reminds you that painted LED colors will be removed on every component on the canvas, not only the one selected in the dropdown.

In-app confirmation dialogs (no more browser popups)

Destructive or important actions no longer use the WebView’s “localhost says” `confirm()` box. RGBJunkie shows a styled in-app dialog instead — LED Studio Clear all, removing a canvas component, deleting device/effect profiles, resetting effect parameters, setup wizard prompts, and similar confirmations in Settings (color profiles, WLED devices, installed files, Git disable-all).

v0.2.59

May 19, 2026

Right-click → LED Studio on every component

LED Studio… is on the canvas and Devices sidebar menus for every component. It opens Settings → Colors → LED Studio with that component already selected. Components with no LED grid show the item disabled (tooltip explains why). Fixed-layout plugin rows in the sidebar can use the menu too (not only removable components).

Save confirmation toasts for device layout and effect settings

When you click Save current layout or Save current effect settings, a short success toast shows the profile name that was written. If the save fails, you get an error toast instead of only a console message.

App-wide links open in your browser (not inside the WebView)

http, https, and mailto links across the main app window now open in your default browser — Settings (About, Help, RAM/OpenRGB help text, bug-report footer, and similar), update dialogs, and other host UI. The embedded WebView no longer swallows those clicks. Effect panels are unchanged (they run in their own iframe). In About, the build stamp is always a link to this version’s release notes on rgbjunkie.com, including after you’re already up to date.

v0.2.58

May 19, 2026

Desktop shell: no browser right-click menu or Find (Ctrl+F)

The embedded WebView no longer shows the Edge-style default context menu (Back, Refresh, Inspect, etc.) when you right-click outside RGBJunkie’s own menus. Ctrl+F / F3 Find on page, Ctrl+P print, Ctrl+R / F5 reload, and Ctrl+Plus/Minus zoom are disabled so the app feels like a desktop tool, not a browser tab. Your canvas and component right-click menus (move, copy preview, component actions) are unchanged — those are part of RGBJunkie. Developer builds can still open WebView tools from the tray when the devtools feature is enabled.

v0.2.57

May 18, 2026

Patch release

No separate release notes for this version. See v0.2.58 for user-facing changes shipped in this period.

v0.2.56

May 18, 2026

Patch release

No separate release notes for this version. See v0.2.58 for user-facing changes shipped in this period.

v0.2.48

May 18, 2026

Languages: English, Español, 简体中文

The desktop app UI can run in English, Español, or Simplified Chinese (简体中文). Open Settings → App look → Language — labels update immediately without restarting, and your choice is remembered for the next launch. If you have not picked a language yet, the app defaults to Spanish or Chinese when your Windows or browser language matches.

What switches with the language: toolbar and side panels; Settings (every tab, including Help cards, confirm dialogs, and toasts); effect browser; component library; setup wizard; device tree (visibility, rescan, favorites, filters); canvas and component context menus; workspace tabs; status bar; app update notices; startup splash phases; and the first-run Terms of Service summary and buttons.

  • Fix: Changing language no longer clears the device list (the tree is rebuilt instead of wiping dynamic content).
  • Still in English: full Terms of Service legal text; effect, plugin, and catalog names loaded from your disk; some low-level API error strings and OpenRGB SDK diagnostic dumps. Contributors: see `docs/I18N-CONTRACT.md`.
Setup wizard dismiss and new hardware

Closing or skipping the initial setup wizard now warns you when channels still have no components assigned, reminds you that you can run it again from the device panel (magic wand), and will not auto-open again until new hardware is detected — then RGBJunkie asks whether to open the wizard for those devices.

Discord community link

The top toolbar (next to Help and Settings) has a Discord button that opens the official RGBJunkie server invite: discord.gg/ZXkqMPjzcB.

Bug fix: device layout autosave when you move components

Moving strips, fans, or keyboards on the canvas now reliably updates `devices/autosave_device.json` (the layout autosave was not wired for all drag paths). On quit, RGBJunkie flushes device and effect autosave before shutdown colors. If USB or WLED plugins attach a moment after startup, the app re-applies the saved layout so positions are not lost when a row was skipped with “no matching plugin” on the first pass.

Reliable WLED device removal

Removing a row under Settings → Devices → WLED now disconnects that controller from the device list immediately (with confirmation), not only after a separate save. Orphaned WLED plugins are pruned whenever the saved WLED list changes, including during fast hardware rescans that previously left removed devices running.

WLED discovery deduplication

Discover WLED no longer lists the same controller twice when SSDP/ARP reports both `192.168.x.x` and `192.168.x.x:80` — results use one canonical address (port 80 is omitted; other ports are kept).

Bug fix: effect settings and autosave restore the correct library effect

Loading effect autosave could open the wrong entry from the Effect Library (a random slot until you picked the effect again manually). That is fixed. Effect behavior now matches the intended model:

  • `effects/autosave_effect.json` is the only state restored on startup (your last session).
  • Named effect setting files are snapshots: save them when you want a backup, or pick one in the dropdown and use Reload to load it — that updates autosave for the next launch. The dropdown selection is remembered, but startup does not silently re-load an old file over autosave.
  • Live slider and effect changes always save to autosave only (named files are not overwritten on every tweak).
  • Fix: Restores use stable effect ids (gallery id, disk source + path, or display name) instead of trusting a bare `effect_3` list index after the rgbjunkie.com gallery merges or the library order changes.
  • Fix: A local effects identity registry in AppData (`cache/effects_identity_registry_v1.json`) helps match older saves when the catalog changes between sessions.
  • Fix: After the gallery catalog finishes loading, the app re-applies your saved effect so sliders and parameters stay tied to the right HTML effect.
  • Fix: Release builds no longer launch a blank `effect_0` during hardware init before autosave runs — your saved sliders are pushed into the effect iframe after restore (including when the iframe is reused without a full reload).
  • Fix: During startup restore, the effect iframe always reloads so saved sliders apply in release builds (not only when dev reuses a warm iframe).
  • Fix: Built-in effects match across dev (`effects/` in the repo), installed (`Program Files`), and bundled paths using the same `effects/…` folder tail — not only the `.html` file name — so autosave tied to Fan Tracer (and similar) resolves to the same library entry in both modes.
  • Fix: If nothing matches, the effect stays paused instead of defaulting to the first library entry.
  • Diagnostics: On effect autosave load, the app logs the full path to `autosave_effect.json` under `%APPDATA%\RGBJunkie` (override with env `RGBJUNKIE_APP_DATA` if needed). Dev and release read the same file; if settings differ, compare that path in the log or F12 console.
  • Fix: Effect launches are serialized during restore so an early `effect_0` launch cannot strip another effect’s saved slider keys from memory before your effect loads; saved globals are re-applied to the iframe several times after load so Fan Tracer–style effects pick up autosave values.
  • Fix: Effect restore prefers the saved `effectParams` block (your live sliders) over empty placeholders in `effectCache`, so the control panel and preview no longer reset to defaults when an old cache slot matched first.
Privacy Policy page (website)

The RGBJunkie for Windows marketing site now includes a Privacy Policy at `/RGBJunkieApp/privacy/`, linked from the site navigation and footer. It covers website analytics, support reports, downloads, and local desktop app data in plain language.

About / settings copyright

Settings About now shows © 2026 RGBJunkie instead of a personal name.

Friendlier Terms of Service dialog

The first-run agreement screen is smaller and easier to scan: a short plain-language summary stays visible, and the full legal text lives in an expandable Full Terms of Service section. The yellow warning banner and long checkbox wording are gone; buttons are labeled Continue and Exit. Summary copy is warmer and avoids dollar amounts; agreement is described as continuing to use the app.

Quieter diagnostic logs

The app’s background freeze / stall watchdog used to write a `heapJump` line to `freeze-events.txt` every few seconds when the JavaScript heap bounced during normal use (for example after garbage collection). That made the log hard to read when nothing was actually wrong.

Console output for heap jumps was already quiet unless memory stayed very high; this change mainly keeps the on-disk log useful for real investigations.

  • Throttled — At most about one `heapJump` entry per minute under typical churn (still logs sooner if something serious is happening).
  • Smarter detection — A jump is measured from a recent low point, not from the previous 2-second sample, so routine up/down swings are less likely to spam the file.
  • Baseline check — Entries are only written when heap stays meaningfully above its recent 30-second low, not on tiny oscillations around normal levels.

May 8–9, 2026

Plain-language summary of changes users may notice. (Exact shipping date depends on your update channel.)

May 8

Share your effect settings

You can share a link (or similar flow, depending on build) so others can open the same effect configuration. This is meant for presets, support, and showing setups without manually copying every slider.

Cleaner device support

Many device plugins were trimmed to lighting-related behavior so the app stays focused on RGB and control surfaces you actually use. The device list and related data were refreshed so names and entries stay consistent.

General improvements
  • Look and feel — Updated layout and styling in parts of the main window.
  • App icon — Refreshed icons for Windows, shortcuts, and related sizes so the app matches the current branding.
  • Reliability and quality — Under-the-hood work on lighting output, plugins, WLED behavior, color handling, and diagnostics so sessions stay smoother and odd edge cases are less likely.
  • Component library — Many fan, strip, and similar layout parts were touched for consistency and accuracy when you build a desk setup.

May 9

_(These updates are in development builds; they may not all be in every installer until the next release.)_

Workspace and side panels
  • Collapsible columns — The devices list and effects panel can be collapsed to a slim bar so the center workspace (layout + effect preview) gets more room.
  • Peek while collapsed — When a column is collapsed, moving the pointer over the slim bar can temporarily expand it so you can glance at devices or settings without fully pinning the panel open.
  • Smoother peek — Small gaps next to the center area no longer “flicker” the peek panel closed when you move the mouse toward the middle of the screen.
  • Same width — The two side columns are matched in width so the layout feels balanced.
Effect preview and canvas
  • More preview, less empty frame — The dark border around the live effect preview is reduced so the colorful preview uses more of the available space.
  • Softer edge — The outer frame no longer reads as an extra harsh black ring around the preview when the effect doesn’t paint those pixels.
  • Tighter fit — Margins around the preview area were slightly reduced so the canvas uses the window a bit better.
Layout editor
  • No dashed outline — The dotted rectangle around the main layout area was removed so the workspace looks cleaner (the optional grid, when turned on, is unchanged).
Device list
  • Visibility — Device visibility is shown with the familiar eye control again (not a brand logo in that spot).
  • Easier to scan — The device column uses horizontal space a bit better, and row alignment was improved so labels, chevrons, and buttons line up more naturally.

May 6–7, 2026

Color profiles & built-in effects

  • One palette system everywhere — A large set of built-in HTML effects now reads colors from the same Color profiles you manage under Settings → Color profiles (built-in gradients plus your own).
  • Accurate previews — Profile swatches use the real gradient stops from the app, not hard-coded color tables inside each effect.
  • Smarter defaults — Several effects were retuned so their default profile matches the new catalog.

Effect settings UI (Color tab)

  • Profile chooser as a modal gallery — Picking a color profile opens a modal with card-style gradient previews instead of a long plain dropdown.
  • Your profiles firstCustom profiles you created appear in their own section above built-in themes.
  • Jump to profile editor — A control in that modal sends you straight to Settings → Color profiles when you want to add or edit gradients.

Settings → Color profiles

  • Import from Coolors — Paste a Coolors.co share URL or hex values to create a new profile in one step.

Layout, workspace & sidebar

  • Identify hardwareIdentify from the workspace or sidebar helps you match on-screen components to physical devices.
  • Device tree — Summary rows for device groups can collapse again after you open them.
  • Rotated layouts — Moving rotated selections along the workspace edge uses the correct dimensions.

Support & bug reports

  • In-app bug report flow — Send diagnostics with optional note, contact fields, application log, and USB / HID hardware snapshot.
  • Toolbar shortcutReport on the main bar jumps straight to Settings → Logs.

USB hot-plug & Rescan hardware

  • Plug and unplug (Windows) — The app reacts to USB topology changes so devices don’t stay in the sidebar after removal or return without lighting until a restart.
  • Sidebar RescanRescan hardware clears stale HID handles before reloading enumeration, which fixes many “ghost device” and dark-LED cases after replugging.

May 8–9, 2026

Plain-language summary of changes users may notice. (Exact shipping date depends on your update channel.)

May 8

Share your effect settings

You can share a link (or similar flow, depending on build) so others can open the same effect configuration. This is meant for presets, support, and showing setups without manually copying every slider.

Cleaner device support

Many device plugins were trimmed to lighting-related behavior so the app stays focused on RGB and control surfaces you actually use. The device list and related data were refreshed so names and entries stay consistent.

General improvements
  • Look and feel — Updated layout and styling in parts of the main window.
  • App icon — Refreshed icons for Windows, shortcuts, and related sizes so the app matches the current branding.
  • Reliability and quality — Under-the-hood work on lighting output, plugins, WLED behavior, color handling, and diagnostics so sessions stay smoother and odd edge cases are less likely.
  • Component library — Many fan, strip, and similar layout parts were touched for consistency and accuracy when you build a desk setup.

May 9

_(These updates are in development builds; they may not all be in every installer until the next release.)_

Workspace and side panels
  • Collapsible columns — The devices list and effects panel can be collapsed to a slim bar so the center workspace (layout + effect preview) gets more room.
  • Peek while collapsed — When a column is collapsed, moving the pointer over the slim bar can temporarily expand it so you can glance at devices or settings without fully pinning the panel open.
  • Smoother peek — Small gaps next to the center area no longer “flicker” the peek panel closed when you move the mouse toward the middle of the screen.
  • Same width — The two side columns are matched in width so the layout feels balanced.
Effect preview and canvas
  • More preview, less empty frame — The dark border around the live effect preview is reduced so the colorful preview uses more of the available space.
  • Softer edge — The outer frame no longer reads as an extra harsh black ring around the preview when the effect doesn’t paint those pixels.
  • Tighter fit — Margins around the preview area were slightly reduced so the canvas uses the window a bit better.
Layout editor
  • No dashed outline — The dotted rectangle around the main layout area was removed so the workspace looks cleaner (the optional grid, when turned on, is unchanged).
Device list
  • Visibility — Device visibility is shown with the familiar eye control again (not a brand logo in that spot).
  • Easier to scan — The device column uses horizontal space a bit better, and row alignment was improved so labels, chevrons, and buttons line up more naturally.

May 6–7, 2026

Color profiles & built-in effects

  • One palette system everywhere — A large set of built-in HTML effects now reads colors from the same Color profiles you manage under Settings → Color profiles (built-in gradients plus your own).
  • Accurate previews — Profile swatches use the real gradient stops from the app, not hard-coded color tables inside each effect.
  • Smarter defaults — Several effects were retuned so their default profile matches the new catalog.

Effect settings UI (Color tab)

  • Profile chooser as a modal gallery — Picking a color profile opens a modal with card-style gradient previews instead of a long plain dropdown.
  • Your profiles firstCustom profiles you created appear in their own section above built-in themes.
  • Jump to profile editor — A control in that modal sends you straight to Settings → Color profiles when you want to add or edit gradients.

Settings → Color profiles

  • Import from Coolors — Paste a Coolors.co share URL or hex values to create a new profile in one step.

Layout, workspace & sidebar

  • Identify hardwareIdentify from the workspace or sidebar helps you match on-screen components to physical devices.
  • Device tree — Summary rows for device groups can collapse again after you open them.
  • Rotated layouts — Moving rotated selections along the workspace edge uses the correct dimensions.

Support & bug reports

  • In-app bug report flow — Send diagnostics with optional note, contact fields, application log, and USB / HID hardware snapshot.
  • Toolbar shortcutReport on the main bar jumps straight to Settings → Logs.

USB hot-plug & Rescan hardware

  • Plug and unplug (Windows) — The app reacts to USB topology changes so devices don’t stay in the sidebar after removal or return without lighting until a restart.
  • Sidebar RescanRescan hardware clears stale HID handles before reloading enumeration, which fixes many “ghost device” and dark-LED cases after replugging.