{
    "latest": "1.0.0-beta.50b",
    "channel": "beta",
    "downloadUrl": "https://forum.lms.leejamesapps.co.uk/download",
    "releasedAt": "2026-07-08T08:35:31Z",
    "notes": "Output Probe overhaul, testing fixes, and a nicer About box.\n\nSTREAMING NO LONGER AUTO-ON. If \"remember streaming state\" is OFF, output now starts OFF at launch instead of always coming up ON (thanks Bob). Turn it on when you're ready, or enable \"remember\" to have it restore your last state.\n\nOUTPUT PROBE — big improvements:\n- Wall view no longer bogs down with lots of universes — the render is now frame-throttled, so it stays smooth whether you're testing 4 panels or 40.\n- Wall view AUTO-FILLS from your Wall Wizard (panel size, columns, rows, start universe, scan order, per-panel wiring) — no more re-typing it, and it stays in sync live.\n- Panels are drawn about half the old size so the whole wall fits comfortably; the ⛶ Fullscreen preview still fills the screen.\n- The Strips (line) view no longer shows underneath the Wall view.\n\nWALL WIZARD — full scan-order coverage. Added the missing wiring orders so every combination of row/column × top/bottom-start × plain/snake is now available (8 in total), grouped by axis with clearer labels. The \"Panel preset\" is now labelled \"Per-panel wiring preset\" so it's clearly separate from the panel-to-panel Scan order.\n\nPATCH — \"Stop all tests\": fixed the buttons staying lit after stopping, and made it instant even with a whole wall under test.\n\nABOUT box: added Mike Walker (Mike's LED Shed) to the credits for all his testing and feedback — cheers Mike!",
    "history": [
        {
            "version": "1.0.0-beta.50b",
            "releasedAt": "2026-07-08T08:35:31Z",
            "notes": "Output Probe overhaul, testing fixes, and a nicer About box.\n\nSTREAMING NO LONGER AUTO-ON. If \"remember streaming state\" is OFF, output now starts OFF at launch instead of always coming up ON (thanks Bob). Turn it on when you're ready, or enable \"remember\" to have it restore your last state.\n\nOUTPUT PROBE — big improvements:\n- Wall view no longer bogs down with lots of universes — the render is now frame-throttled, so it stays smooth whether you're testing 4 panels or 40.\n- Wall view AUTO-FILLS from your Wall Wizard (panel size, columns, rows, start universe, scan order, per-panel wiring) — no more re-typing it, and it stays in sync live.\n- Panels are drawn about half the old size so the whole wall fits comfortably; the ⛶ Fullscreen preview still fills the screen.\n- The Strips (line) view no longer shows underneath the Wall view.\n\nWALL WIZARD — full scan-order coverage. Added the missing wiring orders so every combination of row/column × top/bottom-start × plain/snake is now available (8 in total), grouped by axis with clearer labels. The \"Panel preset\" is now labelled \"Per-panel wiring preset\" so it's clearly separate from the panel-to-panel Scan order.\n\nPATCH — \"Stop all tests\": fixed the buttons staying lit after stopping, and made it instant even with a whole wall under test.\n\nABOUT box: added Mike Walker (Mike's LED Shed) to the credits for all his testing and feedback — cheers Mike!"
        },
        {
            "version": "1.0.0-beta.50a",
            "releasedAt": "2026-07-05T20:13:46Z",
            "notes": "Quick follow-up to 50 — fixes the auto-updater plus a few tester finds.\n\nAUTO-UPDATE FIX. If you were on 49g, your in-app updater didn't offer 50 — a version-numbering quirk meant \"50\" sorted as OLDER than \"49g\", so it was never seen as a new release. 50a fixes the chain, so from here on updates come to you automatically again. (If you're reading this in the update popup, it's already working.)\n\nVIDEO CLEAR + RELOAD. Loading a video, clearing it with the X, then loading the SAME file again could show nothing until you loaded a different file first. Fixed — a cleared video whose decoder the browser had reclaimed is now rebuilt cleanly on reload.\n\n16-BIT WARNING. The Matrix bit-depth setting now warns when you pick 16-bit: most LED pixel controllers (including SmartShow Pro-One) are 8-bit and can't read 16-bit-per-channel pixel data — it doubles your universe count and mangles colours (wrong colours, dropped last pixel). Leave it on 8-bit unless your controller explicitly supports 16-bit pixels.\n\nPER-ROW TEST + STOP. The Output Patch per-row LED test now matches the matrix bit depth, and stopping tests ('Stop all tests', or toggling a row off) reliably blacks the panel out instead of occasionally leaving it stuck on its last test colour."
        },
        {
            "version": "1.0.0-beta.50",
            "releasedAt": "2026-07-05T11:25:20Z",
            "notes": "Tester-feedback batch — thanks Mike, Bob, Bruce and Artis.\n\nGIF PLAYBACK NO LONGER STUTTERS. Running two or more different GIFs at once (e.g. one per channel) used to grind the whole app AND the output down to a crawl and stop the GIFs showing. GIFs are now decoded once and cached per slot, so you can layer several and everything stays smooth.\n\nCUSTOM FONTS LOAD PROPERLY. Some imported fonts silently failed and fell back to a system font (while quietly hammering the CPU retrying every frame). Fonts now load correctly from their embedded data, and a font that genuinely can't load is skipped once instead of retried forever.\n\nMULTI-CONTROLLER FRAME SYNC - the big one for big rigs. ArtSync (Art-Net) and E1.31 Sync (sACN) are now sent when you're using an Output Patch, not just the simple whole-frame mode - so multiple controllers latch each frame together with no tearing across panels. sACN gains a 'Sync transport' choice (follow data / always multicast / always unicast) for gear that only accepts sync one way. The ArtSync tick box now also REMEMBERS its state and actually takes effect (it previously did neither unless you knew to hit a hidden Apply).\n\nART-NET DISCOVERY / POLLING. ArtPoll is now sent as a proper subnet-directed broadcast (e.g. 192.168.1.255) per the Art-Net spec, instead of the limited 255.255.255.255. LMS also now carries its registered Art-Net OEM code.\n\nART-NET INPUT IS EASIER TO SET UP. The Art-Net-in card now shows whether it actually bound the port (and the real error if not - e.g. another app already using 6454), plus a LIVE count of DMX frames received and which universe - so 'Learn Art-Net' problems are obvious at a glance. (Tip: close DMX-Workshop / Jinx first - Windows only hands the port's traffic to one app.)\n\nPROTOCOL SETTINGS TIDIED. Each protocol's status line now shows only the settings that really apply (the misleading per-row IP / universe are gone - those live in the Patch Editor). The redundant sACN 'Target IP' box is removed. Serial DMX now names the connected dongle and lists detected USB ports with a Rescan button.\n\nRADAR / SCAN LINES. Wide scan lines in a single direction now fade cleanly off one edge and in from the other, instead of jumping ('resetting') across the screen.\n\nPATCH EDITOR. New 'Stop all tests' button to switch off every row under test at once, and closing the app now stops any running row test before the blackout so the rig always goes dark. Wall Wizard adds a 'Column-major: bottom to top' scan order.\n\nBUILT-IN MEDIA. The Image and Video effects now include a 'Built-ins' picker with a set of ready-made VJ loops and a 1920x1080 test pattern."
        },
        {
            "version": "1.0.0-beta.49g",
            "releasedAt": "2026-06-19T12:24:54Z",
            "notes": "Today's batch on top of 49f.\n\nSETTINGS FREEZE - properly fixed this time. Opening Settings on any output protocol could FREEZE the output entirely (49f's fix was being blocked by the app's own security policy and never actually ran). The render + Art-Net/sACN output loop now runs off a background worker that always fires, so output stays live and steady while you sit in Settings, Patch Editor or Outputs.\n\nMIX TYPES OVERHAULED. The per-stage Mix dropdown is now grouped into Crossfades / Combine / Stencil & Overlay. New \"Dip to Black\" crossfade (A fades down to black, then B up - a clean cut between two unrelated looks). The doubled Left/Right modes are gone: pick Shape (mask) / Intensity / Overlay once and use the new direction toggle to swap which input drives it. Shape (mask) gains an \"Invert\" tick - cut the shape OUT instead of filling it. Slot + mode labels now spell out Background / Foreground instead of BG / FG.\n\nSHOW MODE BUTTON MENU is now a persistent setup panel. It STAYS OPEN as you change several things on a button (colours, section, preview, bindings) instead of vanishing after every click - with a title bar + X, and Esc / click-away to close. Long menus lay out in two columns so nothing falls off the screen. You can also Learn Art-Net/DMX in straight from the menu now.\n\nSCENE PREVIEWS, per button. The scene thumbnail can now be set globally AND overridden per button (Always show / Never show / follow the global) - preview just the buttons you care about. The keyboard / MIDI / DMX badges now sit ON TOP of the preview, and the same show/hide is mirrored on the Tablet Remote.\n\nHDMI / PROTOCOL CLARITY. HDMI is never locked while streaming; the Open / Update / Close buttons make it obvious which state you're in (Update flashes to confirm it happened). Every protocol's status pill is now colour-coded - green when active/configured, red when not.\n\nART-NET DISCOVER upgrade. The network SCAN now reads each controller's firmware, manufacturer, static-vs-DHCP and gives a Config button to open its web page; it groups controllers that answer with multiple replies (in binding order) and flags IP conflicts.\n\nSACN SYNC (new). E1.31 Synchronization - the sACN equivalent of ArtSync - so multiple sACN controllers latch each frame at the same instant with no tearing. Settings > sACN > \"Sync receivers (E1.31 Synchronization)\" + a sync universe. (Note: Art-Net's device SCAN has no sACN equivalent - sACN receivers don't announce themselves on the network.)\n\nALSO: Webcam and Screen-Capture inputs start noticeably faster and stay warm across scene-swaps instead of cold-starting the camera every time. TPM2.net lost its stray Apply button (it applies live like the other protocols). And a small \"Built by Lee James Apps\" credit now sits under the logo.\n"
        },
        {
            "version": "1.0.0-beta.49f",
            "releasedAt": "2026-06-18T18:37:41Z",
            "notes": "Performance + workflow fixes, and the first build with the new in-app auto-updater.\n\nOUTPUT NO LONGER STUTTERS ON THE SETTINGS / PATCH PAGES - this is the big one. The render + Art-Net/sACN OUTPUT loop used to run off the browser's animation timer, which the heavy Settings page's redraw work was quietly stalling - so your output went jittery whenever you sat on a Settings or Patch Editor page. LMS now drives the loop from a background thread (the same trick that already keeps output running when the app is minimised) on any page that isn't showing a live preview, so output stays rock-steady on Settings, Patch Editor and Outputs. The Builder and Show pages keep the smooth display-synced timer for their previews. (Settings > General > Render rate shows the active 'Tick driver' if you're curious.)\n\nPATCH EDITOR is smoother: adding / deleting / cloning / reordering rows, Fast Patch, footprint edits and matrix-size changes now update just the affected row(s) in place instead of rebuilding the whole table - no more flicker or scroll-jump. It also now behaves like the other Settings tabs: if the Patch Editor was the last place you were, reopening Settings takes you straight back to it.\n\nTABLET REMOTE: scene/chase buttons now fire the instant you press them (press-to-fire, like the desktop Show Mode) instead of waiting for you to lift your finger; and the preview thumbnails no longer get 'grabbed' / pop the save-image menu on a long-press. (Reload the remote page once on your tablet to pick up the update.)\n\nIN-APP AUTO-UPDATER (new): from this build onward, when a new version is out LMS shows a tidy centred popup and can download + install + relaunch the update for you, without leaving the app or visiting the website. This build is the changeover - you'll install 49f the usual way, and future updates can come to you automatically. (Installer version only; the Portable build still updates by download.)"
        },
        {
            "version": "1.0.0-beta.49e",
            "releasedAt": "2026-06-18T15:14:40Z",
            "notes": "Big external-control update, plus output fixes.\n\nEXTERNAL CONTROL IN - you can now drive LMS from a hardware controller end to end. Right-click the Master fader (and the Strobe Hz, Gamma, Fade and X-Fade faders), or any scene / chase / action button, and you will find 'Learn MIDI input' AND 'Learn Art-Net/DMX in'. Move the control you want and it binds. Faders take a MIDI CC or a DMX fader channel and follow it smoothly; buttons fire on any MIDI note or any DMX channel above zero. A new CONTROL BINDINGS table (Settings > External Control > 'View / edit all control bindings...') shows every keyboard, MIDI and Art-Net/DMX assignment in one place, with Learn / Clear on each. If you try to assign an input that is already used elsewhere you now get an 'already assigned - Cancel / Overwrite' prompt.\n\nUSB DMX IN (ENTTEC Pro) - new card in Settings > External Control: read DMX straight off an ENTTEC USB Pro (Mk1/Mk2) plugged into the PC, with no Art-Net node needed. (The cheaper Open DMX USB is output-only and will not work.)\n\nSACN COLOUR ORDER - the proper fix. sACN now declares each universe's true channel count instead of always sending a full 512, so controllers that join universes back-to-back on a port (e.g. SmartShow Pro-One) no longer rotate colours (red as green, green as blue...) on alternate universes. You can drop any per-universe BGR workaround. (The 49d attempt did not fully cover this.)\n\nART-NET LAST PIXEL - Art-Net universes are now padded to a full 512 channels exactly like Jinx, which clears the last-pixel colour drop some controllers showed.\n\nPIXELS CLEAR ON EXIT - quitting the app now blacks out every protocol with a triple zero-frame sweep before the network sockets close, so the rig goes dark on close instead of holding its last look.\n\nTABLET REMOTE - scene buttons now show a live preview thumbnail and a LATCH / FLASH / CHASE label; the Master fader on the remote now also moves the desktop Master fader; the blackout button reads 'BLACKOUT (Latching)'."
        },
        {
            "version": "1.0.0-beta.49d",
            "releasedAt": "2026-06-17T17:13:45Z",
            "notes": "Fixes batch on top of 49c. OUTPUT BLACKOUT ON STOP / EXIT (sACN): when you Stop streaming - or quit the app - sACN now sends its zero-frames to the SAME destination your live stream used (per-row Unicast IP, or loopback), so sACN pixels actually clear instead of holding their last look. Art-Net already did this; sACN was the odd one out. The exit blackout also halts the render loop FIRST, so a final live frame can no longer re-light the rig after the zero-frames. SACN COLOUR ORDER on alternate universes: a panel auto-split across universes where the last slice has an ODD pixel count could come out with rotated colours (red shows as green, green as blue, blue as red) on every second universe over sACN. LMS now pads each sACN universe to a whole, even pixel count exactly like Art-Net, so colours are correct on every universe - you can drop any per-universe BGR workaround. SETTINGS PAGE SMOOTHNESS: opening Settings, or switching between Settings tabs, no longer briefly drops your output frame-rate (a per-frame layout recalculation was thrashing while the Settings page was up). SCENES now CONTINUE instead of restarting from black: re-tapping the scene that is already running, releasing a Flash button, or crossfading to a new scene no longer reboots time-based effects (Expanding Shapes and friends) back to their first frame - the scene carries on from where it was. Chases still restart step-by-step as before. FLOATING HEARTS: fixed a roughly 4-times-a-second brightness pulse as hearts rose (a sub-pixel blending artefact) - hearts now hold a steady brightness while moving. FOOTPRINT MAP DRAG (touch): dragging a tall panel around the matrix map on a touchscreen no longer makes the page bounce/scroll under your finger. UI TEXT SIZE at 1920x1080: the auto-scaling added in 49b was shrinking the whole interface to about 95% on a maximised 1080p window (the title and menu bars take ~55px of height off the fit), making labels smaller than intended. 1080p now renders at a true 100% again, while other resolutions and Windows display-scaling still auto-fit as before."
        },
        {
            "version": "1.0.0-beta.49c",
            "releasedAt": "2026-06-15T04:48:12Z",
            "notes": "Output + Show Mode fixes. ART-NET LAST-PIXEL BLUE FIX: on panels with an ODD pixel count (e.g. 13x13 = 169 px), the very last LED of every universe was missing its blue. 169 x 3 = 507 channels is odd; Art-Net requires an even length so it became 508 = a PARTIAL pixel, and pixel controllers (SmartShow Pro-One etc.) reject a universe that isn't whole RGB triplets - dropping that trailing partial pixel. LMS now pads each universe to a whole-pixel even length (507 -> 510) so the controller always gets complete triplets and the last LED's blue comes through. (Also: RGBW universes now use the full 512 channels - they were capped at 510, which clipped a 128-pixel RGBW universe's last Blue + White.) SACN UNIVERSE 0: switching a patch row from Art-Net to sACN now bumps universe 0 to 1 automatically - sACN has no universe 0. SHOW MODE - INSTANT BUTTONS: latch buttons (scene/chase triggers, plus Blackout / Strobe / Fade / X-Fade) now fire the moment you PRESS them instead of waiting for you to release - much snappier for live use, like a proper lighting desk. Ctrl-drag reorder and right-click menu still work as before."
        },
        {
            "version": "1.0.0-beta.49b",
            "releasedAt": "2026-06-14T12:53:24Z",
            "notes": "Tester-feedback batch. OUTPUT PATCH: Fast Patch now asks before it overwrites an existing patch (centred confirm). Universe numbers are clamped to the legal range (Art-Net 0-32767, sACN 1-63999) so a too-big value can no longer wrap to a negative number, and the boxes are wider to fit them. New read-only Net:Sub:Uni column shows the Art-Net 15-bit address the classic way (Net : Sub-Net : Universe) as a cross-check with your nodes. First-pixel / Pixel-count now have tooltips and Help notes (First pixel is a PIXEL position not a channel; a universe's length is Pixel count x colours, never padded to 512). New per-row Clone button (clones the row below with the universe + position advanced - quick for stacking similar panels). Matrix size (W x H) is now editable right in the Patch Editor toolbar, so you don't have to bounce back to the Matrix tab. sACN: in Multicast mode each row shows its auto-derived 239.255.x.y group (read-only, follows the universe); in Unicast mode each row now sends to its OWN IP. FOOTPRINT EDITOR: if a panel straddles the edge of the matrix (so part of it is clipped) you get a clear warning + a one-click 'Grow matrix to fit' at the bottom of the dialog - deliberately parking a panel fully off in the dead zone no longer nags you. The parking dead-zone is now big enough to drag a whole panel off the grid, and panels re-tile cleanly when dragged back in. REGIONS: the Region Manager now draws regions clamped to the current matrix (matches the wall), so after shrinking the matrix clipped regions show where they really are instead of overflowing or vanishing; clipped regions are flagged. EFFECTS: the Webcam and Screen-Capture inputs now release the device when you switch away - your laptop camera light goes OFF instead of staying on until you quit. Video import accepts many more formats (AVI/WMV/MKV/DivX/MPEG...) - anything not natively playable is auto-converted to MP4 on import. Radar/Scan Lines no longer bleeds its trail into other channels. SHOW MODE: the BLACKOUT/STROBE buttons spell out (Latch) and (Flash) instead of (L)/(F). APP: the UI now auto-scales to fit any screen resolution or Windows display-scaling (it was hand-tuned for 1920x1080 at 100%) - so it looks right whatever your setup."
        },
        {
            "version": "1.0.0-beta.49a",
            "releasedAt": "2026-06-13T12:28:15Z",
            "notes": "HDMI / Screen Output edge fix. The thin bright (white-looking) 1-pixel line some of you saw along the TOP and one SIDE of an LED wall fed over HDMI is gone. Cause: whenever the HDMI output display ran at any Windows scaling other than 100%, the output canvas was being GPU-upscaled and left a 1-pixel seam along its top/left edge - it never appeared in the in-app previews, only on the wall (and never in older GDI apps like Jinx). The HDMI output now renders at the display's true pixel grid (1 canvas pixel = 1 HDMI pixel), so the edge is clean and the picture is a touch crisper. Tip: press the 'd' key on the HDMI output window any time to toggle a small geometry / scaling readout. ALSO IN THIS BUILD: Radar / Scan Lines no longer bleeds its trail into other channels when two Radar slots run at once. Video import now accepts many more formats - AVI, WMV, MKV, DivX, MPG/MPEG, FLV, TS and more - anything your PC cannot play natively is automatically converted to MP4 on import (with a live % progress readout) using the bundled converter, so you are no longer limited to MP4 / WebM."
        },
        {
            "version": "1.0.0-beta.49",
            "releasedAt": "2026-06-12T10:36:34Z",
            "notes": "Big tester-feedback batch. FOOTPRINT EDITOR / MATRIX MAP: you can now arrange panels visually on the matrix map instead of typing X/Y for every one. Drag a single panel, or use the new \"Move: Panel / Row / Column\" toggle (or hold Shift = row, Ctrl = column) to drag a whole aligned row or column of a tiled wall at once. A dim, hatched \"PARKING\" margin now surrounds the matrix - drag panels (or a whole row/column) out there to set them aside while you rearrange, then drag them back; parked pixels simply aren't output, so it's a safe off-air staging area, and it finally gives a full-size wall somewhere to move things to. The map also draws a crisp per-pixel grid (the squares inside a panel count out its pixels), dims uncovered cells so gaps are obvious - a Fast-Patched (linear) matrix now correctly reads as covered rather than a black void - outlines the panel you're dragging in bright cyan so it floats above the rest, and the overlap warning no longer makes the dialog jump as it appears. Snap-to-panel-grid keeps identical panels tiling edge-to-edge with no overlap or gaps. EFFECTS: Copy / Paste an effect between channels - two new icon buttons on each slot. Copy grabs the effect type + speed + invert + all its parameters; Paste drops it into any other channel as a starting point, with no need to save a preset first (both flash a green tick to confirm). Effect Preset fixes: the \"Save As...\" name box now opens ON TOP of the effect window (it was hiding behind it), spellcheck is turned off in that box, the name of a loaded preset now shows in the Preset dropdown so you can see what you've got, and plain \"Save\" (overwrite the loaded preset) now works. Every control in an effect window is now reachable by keyboard (Tab / arrows) with a clear focus ring, so you can dial a look in without the mouse. PERFORMANCE MODE / KIOSK: the per-feature lock checkboxes in Settings now correctly show your saved state after a restart (the BLACKOUT tickbox was wrongly appearing to reset). ALSO BUNDLED FROM THE LAST WORKING BATCH: Art-Net \"Discover devices\" finds controllers on your network and patches them in a click; a latching Test / Identify per patch row stays on until you turn it off so you can walk the rig; the Wall Wizard auto-splits big panels across multiple universes with an HDMI steer once you pass 64 universes; keyboard + MIDI bindings for the Show Mode action buttons (Blackout / Strobe / Fade / X-Fade) with the assigned key shown right on the button; the native File / Help menus are hidden in kiosk mode and \"Lock on next launch\" stays locked across relaunches; a rainbow-chase seam fix in the Border / Frame effect; a wider colour-order dropdown so RGBW etc. isn't clipped; and the Clear Patch dialog now appears centred instead of in the top-left."
        },
        {
            "version": "1.0.0-beta.48a",
            "releasedAt": "2026-06-11T18:05:00Z",
            "notes": "Polish + fixes on top of beta.48. EFFECTS: Floating Hearts are now anti-aliased with smooth motion, have a bigger size range (min 8px, max up to 30px), and the min/max sliders can no longer cross over each other. Confetti Burst no longer dumps a horizontal line of confetti the first time you switch to it (now a proper random trickle). Text effect now defaults to a sensible 30px size instead of the previous huge default. Audio-capable effects in the dropdown are labelled \"(Audio)\" instead of the cryptic \"(A)\". The Border / Frame effect's controls are now grouped (Frame / Colour / Animation). Resetting a slot now also closes its open Edit dialog instead of leaving it hanging. REGIONS: the region outline now lines up exactly with the rendered effect at any matrix size (fixes a left/top \"bleed\" on sizes like 100x90); the Region Manager no longer holds onto a region after you disable it per-channel; Enable / Lock checkboxes tidied (label left, checkbox right). MATRIX + PATCH: the Matrix-tab preview is much bigger and fills the available space, sized to your matrix's aspect ratio with no wasted letterboxing; the Panel Footprint editor's matrix map and dialog are much larger for big multi-panel walls, redraw correctly the moment you open them, and there's a note reminding you a reference image should match the matrix aspect ratio. SHOW MODE: the scene-button LATCH / FLASH label moved to the bottom-left corner so the thumbnail has room to breathe; thumbnails are bigger and grow with the button size; the minimum button width is nudged up a touch. KIOSK / LOCK: the native File and Help menus are now hidden while locked (or when kiosk is armed) so there's no escape hatch; the locked-mode \"Close the app?\" confirm now actually appears (it was rendering behind the full-screen Show Mode); and \"Lock on next launch (kiosk mode)\" is now persistent - the app stays locked across every relaunch until you unlock with the PIN and untick it."
        },
        {
            "version": "1.0.0-beta.48",
            "releasedAt": "2026-06-11T14:00:00Z",
            "notes": "Effect editor overhaul + region / footprint / patch improvements. EFFECT DIALOGS: every effect now opens pre-widened with its sections laid out side by side across the page (sections pack newspaper-style so there are no big gaps); all sections are open by default (your open/closed choices are remembered); value readouts are cleaner (plain numbers, no bubble) and the long help text under controls has been removed to keep things tight. New \"Spread / List\" toggle in the dialog title bar — switch between the multi-column spread and a single stacked list, remembered per machine. REGROUPED: Text effect (Outline now under Appearance, Strobe under Content, matrix Frame its own section), Border / Frame effect split into Frame / Colour / Animation, Sparkle tidied. RADAR / SCAN LINES: new Center X / Center Y sliders move the radar sweep pivot off-centre — set them to a corner for a quarter-sweep. PANEL FOOTPRINT EDITOR (Bob): under the matrix map you can now overlay the live output (dimmed) behind your panel rectangles to see where content lands, and upload a Reference image (venue photo / plan) to loosely map your panels against (saved with the project). PATCH EDITOR: the summary line is now a coverage indicator — shows what % of the matrix is actually patched, warns (amber) about unpatched pixels, footprints that run off the edge of the matrix, and overlapping rows; turns green when the whole matrix is covered. FIXES: region outline now aligns exactly with the rendered effect at any matrix size (fixes a left/top \"bleed\" that grew with position on matrices like 100x90); Region Manager no longer holds onto a region after you disable it per-channel; region Enable / Lock checkboxes laid out cleaner (label left, checkbox right)."
        },
        {
            "version": "1.0.0-beta.47a",
            "releasedAt": "2026-06-10T16:00:00Z",
            "notes": "Bob feedback: Panel Footprint editor — bigger universe labels, brighter selected-row highlight, new Row Jumper dropdown to switch rows without closing dialog (auto-saves edits). Output Probe — Pixel format dropdown (Auto/RGB/RGBW) fixes a 1-byte channel shift that was garbling RGBW colour; new Channels display mode shows each LED's R/G/B/W as separate sub-pixel stripes (the close-up RGB-TV view Bob wanted); Composite mode now mixes W into R/G/B for RGBW. Text effect Motion FX subsystem — Scroll and Motion FX decoupled. Pick any direction (or Static) AND layer 〰 Bob / 🌊 Wave / 💗 Pulse independently. Legacy combined modes auto-migrate at render time."
        },
        {
            "version": "1.0.0-beta.47",
            "releasedAt": "2026-06-10T07:30:00Z",
            "notes": "Effects dialog overhaul + 8 new effects. Grouped modal pattern (emoji section headers, collapsible sections, showWhen-gated params, help lines) applied to ALL 32 effects. NEW: Snow ❄️ (depth-dimmed flakes + wind + accumulation drift), Matrix Rain 💚 (per-column streams + glyph flicker), Lightning Storm ⚡ (jagged forks + atmospheric flash), Audio · Oscilloscope 〰️ (time-domain waveform with Input Gain + Amplitude + AGC + Time zoom + Zero/Peak triggers + Phosphor persistence + Lissajous X-Y stereo mode). Wedding pack: Falling Petals 🌸 (rotating tumble), Floating Hearts 💖 (rising hearts with beat-driven burst), Confetti Burst 🎊 (steady/periodic/beat modes with physics + drag), Bokeh Drift ✨ (drifting Gaussian additive lights — romantic backdrop). Effects dropdown filters internal helpers. Centre brand logo bigger (340→520). CSS fixes for help-text layout on range + bool param rows. audio.js exposes stereo waveform buffers."
        },
        {
            "version": "1.0.0-beta.46",
            "releasedAt": "2026-06-09T12:30:00Z",
            "notes": "Big tester-feedback batch. NEW: Border / Frame effect gains 8 styles (Solid + Chase →/← + Rainbow + Twinkle + Random colour change + Pulse + Two-colour alternate). Same 8 styles available inside Text effect's matrix-edge frame. Project-wide custom font library (★ Custom optgroup in Family dropdown, ⚙ Manage dialog, fonts travel with .lmc, legacy auto-migrate). Text Edit modal redesigned into collapsible Content / Appearance / Motion / Strobe sections. Per-stage mix-mode labels — BG/FG (channel), Upper/Lower (group), Left/Right (main). Send-to toggles now mute patched-path output too (was hardcoded ON, ignoring toggle) — amber warning banner on Patch Editor when a patched protocol's Send-to is off so you never go silently dark. Matrix summary: '(min N universes) · patched M univ.' Output tab renamed 'Protocol Settings' and reordered before Patch Editor. All-protocol blackout on app exit (Art-Net / sACN / DDP / TPM2 / Serial / HDMI sweep zero frames via main-process quit handshake). (A) badge on audio-capable effects in dropdown. Custom-font CSP fix. Twinkle density floor widened to 0.005. Output Apply buttons force-save immediately. Jinx references cleaned from UI + help. Hover-select ESC label revert. New combined Smartshow + LMS logo across app + forum."
        },
        {
            "version": "1.0.0-beta.45c",
            "releasedAt": "2026-06-08T12:30:00Z",
            "notes": "Builder UX + Show Mode polish + brand refresh. Slot labels BG (under) / FG (over) with ⇄ swap button; per-side ⇅ channel-swap between Ch1↔Ch2 and Ch3↔Ch4. Show Mode: big LOCK button replaced by single top-right padlock badge (🔓 open / 🔒 closed); Back-to-Builder collapsed to small text link. Scene-activation phase reset so flash/strobe always boots in ON state on first frame (fixes FLASH-mode hit-or-miss on low-Hz strobed text under blackout). Text + Image effect strobe converted to Hz + Duty %; Image / GIF gains optional Flash trio (default off). ≤1080 viewport compact mode reclaims ~270 px so no more scroll on 1080p laptops; brand-foot logo restored, centred, larger (340 px). New combined SS+LMS logo on Builder + Help + About. About dialog: centred logo + version, transparent overlay, click-outside-to-close, contact cards for Built by Lee + Partner Bobby. App icon swapped to pixel-grid variant. Help: live search (Ctrl+K) + wider layout. Help menu: 'LMS Forum…' (single entry). Fractal: punchier default speeds."
        },
        {
            "version": "1.0.0-beta.45b",
            "releasedAt": "2026-06-07T20:00:00Z",
            "notes": "NEW Border / Frame effect — fills the outer edge of the matrix with a coloured frame (thickness 1-32 px, RGBW). Text effect gets per-character Outline (Outline colour + thickness 0-8 px) AND matrix-edge Border. Pure-black RGBW auto-lifts to (10,10,10) so it survives Over (key black) mix mode threshold."
        },
        {
            "version": "1.0.0-beta.45a",
            "releasedAt": "2026-06-07T17:30:00Z",
            "notes": "Per-feature Performance Mode lockout (Settings → General → Performance Mode PIN card → 8 togglable Show Mode controls). Region preview overflow fix."
        },
        {
            "version": "1.0.0-beta.45",
            "releasedAt": "2026-06-07T13:00:00Z",
            "notes": "Output Settings slim-down + Patch Editor per-row 🔁 Loopback + Patch read-only while streaming + Wall Wizard matrix-resize bug fixed + Pixels/Universe auto-derives + Patch Editor cosmetic polish."
        },
        {
            "version": "1.0.0-beta.44c",
            "releasedAt": "2026-06-06T12:30:00Z",
            "notes": "Multi-panel-rig support batch. 🧱 Wall Wizard generates a tiled-panel patch in one click. 🧱 Output Probe Wall view paints received universes at their physical panel position. Patched-row Disable now sends zeros. Show Mode Gamma slider linked with Builder."
        },
        {
            "version": "1.0.0-beta.44b",
            "releasedAt": "2026-06-06T10:55:00Z",
            "notes": "Show Mode Gamma slider bidirectionally linked with Builder."
        },
        {
            "version": "1.0.0-beta.44a",
            "releasedAt": "2026-06-06T09:40:00Z",
            "notes": "Help → Generate diagnostic log… (structured .txt with version, OS, FPS, GPU, matrix + outputs + mixer + MIDI + console buffer; privacy-clean)."
        }
    ]
}