dkulp
Full time elf
2026.10 — May 31, 2026
Enhancements
- cybercop23 — Add State effect on SubModels. Ensure only nodes that are part of the SubModel are lit. Same node-index translation on Faces effect if using Faces effect on a SubModel.
- derwin12 — Sketch effect path management: multi-select, Delete key, Move Up/Down buttons, per-path description labels, and a description text editor (#5871).
- scott — FPP discovery now uses mDNS on Windows (native windns.h DNS-SD) in addition to the existing broadcast/multicast ping.
- heffneil — Replace Model: new dialog replaces multiple models at once with a filtered, checkbox list of targets (fixes #4462).
- dkulp — Convert Incompatible Videos now encodes near-lossless when the source was a high-quality video, near lossles.
- heffneil — Show Face/State/SubModel/Node count badges on the Model pane
- cybercop23 — Add right-click option to hide unused submodels when expanding a model row
- cybercop23 — Add EffectPreset to the restore options
- cybercop23 — Add include submodel opton to the Duplicate effect
- cybercop23 — Add vendor copyright disclaimer to bottom of Model Download dialog
- derwin12 — Add "Per Model Default" layout option to model groups so effects using the Default render style automatically render per-model on that group (#4125).
- heffneil — Add Bulk Edit Rotate X / Y / Z to the Layout tab right-click menu.
- heffneil — Layout copy/paste: smarter placement of the duplicate and only the new copy is selected after paste (#6192).
- derwin12 — Select Effects panel results are now sorted by time (#6389).
- derwin12 — FPP Connect upload now also calls SetInputUniversesBridge so inputs match the Controller upload path (#2747).
- derwin12 — Import Mapping switched back to checkboxes for lyric tracks; remembers the show-timeline setting (#6403).
- jessica12ryan — RenderProgressDialog now stays on top of other windows (#6404).
- scott — Custom color picker: skip duplicate colors in the recent colors list.
- dkulp — macOS: include MetricKit crash diagnostics in packaged log uploads; clean up older MetricKit data.
Bug Fixes
- cybercop23 — Importing a multi-model xmodel file now preserves @model:N and >Model:N start-channel references instead of resetting them to absolute channels.
- derwin12 — Package Log Files: fix duplicate primary log in zip; rolled log now included.
- derwin12 — Fix lasso selection corrupting State/Faces effect values (#5783)
- derwin12 — Better handle multi chord MIDI tracks (#6434)
- Neil — Fix edit display elements eye-icon for HiDPI (#5015)
- dkulp — macOS: Provide other attempts to open Lua Script editor
- dkulp — macOS: Package Sequence to a location outside any persistent bookmark (e.g. Desktop) no longer fails — the in-progress zip is now written to the system temp dir and atomically moved into the user-chosen path.
- dkulp — macOS: Videos AVFoundation can't decode (e.g. lossless H.264 / High 4:4:4 at small sizes) now fall back to FFmpeg at load instead of grinding for hours per-frame during render.
- dkulp — Render: the render tree now rebuilds whenever any model is added/replaced/ deleted (ModelManager generation counter), so it can never hand a freed model to the renderer; PixelBuffer::GetColors also bounds-checks node channel writes (mirroring SetColors) and sequence-data reallocation is skipped if an in-flight render can't be drained first — fixes render crashes when models or the channel count change mid-render.
- dkulp — Stem separation: lock the UI down (render-style) while inference runs and refuse re-entry, so the sequence can't be closed and a second pass can't start mid-run — fixes a crash on a freed model in the worker thread.
- dkulp — Manage Media "Bulk Find" now extracts the filename from Windows-style (backslash) paths when run on macOS/Linux, so images authored on Windows are matched and relinked instead of always reporting "not found".
- derwin12 — Fix hidden timing tracks reappearing when another timing track is expanded or collapsed (#6424)
- dkulp — Fix 3D Objects (Image/Mesh/Gridlines/Terrain/Ruler) handle picking on the Layout tab — selecting, dragging, and center-handle tool cycling now work again after the DragSession refactor.
- derwin12 — Renaming a preview now updates all pick lists and the View menu (fixes #6430).
- derwin12 — Fix pivot point for rotating multiple objects (#6418)
- dkulp — Fix drag-and-drop of Video/Pictures/Glediator/Shader files onto the effect grid losing the filename
- dkulp — macOS: Video effect now renders rawvideo MOV files (rgb24/bgr24/rgba/bgra)
- derwin12 — Fix imports for both old and new xmodel formats (Layout import, Node Select Grid, SubModels dialog) (#6411).
- derwin12 — Re-Map Custom Model now handles the new xmodel format (#6397, #6400).
- derwin12 — PolyLine division-by-zero produced NaN coords that crashed the macOS depth sort (#6407).
- derwin12 — Fix the model preview for PolyLine with Drops (#6208).
- derwin12 — Various crashes seen in submitted logs: harden Model/ModelManager null guards, TwinklyOutput error handling, and main-frame model lookups (#6402).
- derwin12 — Color picker crashes and timeline startup crashes (#6387).
- derwin12 — Fix hangs in the Face/State Definition dialogs on large models (#6374).
- derwin12 — Shockwave effect: end time no longer exceeds the effect end time (#6398).
- derwin12 — Text effect: fix multi-line "color per word" rendering (#6393).
- derwin12 — Shape effect: fix browse-button enable/disable logic (#6390).
- derwin12 — SubModels dialog: extra comma appearing after the wxSplit→Split switch because of empty-string handling differences (#6377).
- derwin12 — Don't flag embedded images as missing in the sequence checker (#6378).
- derwin12 — Color picker swatch panel: full repaint on resize fixes artifacts (#6376).
- AlexB — Keep individual start channels when importing models (#6384).
- AlexB — Fix vendor catalog download issues — surface errors and use longer timeouts for the large-file fetches (#6381).
- dkulp — Avoid creating and destroying wxCursor objects on every mouse move across the grid canvases, color/value curve dialogs, and assist panels.
- dkulp — macOS: fix waveform cursor memory leak (cursors were never released).
- dkulp — Fix top macOS crash in Model:
isplayModelOnWindow when a freshly-placed model is rendered before its node coords are populated.
- dkulp — Fix Windows crash in xlOGL3GraphicsContext::drawPrimitive when the vertex accumulator is null/wrong-type (seen in the Waveform render path).
- dkulp — PixelBufferClass::reset now guards against a null model pointer and logs the caller instead of crashing; also AbortRender at the remaining model-mutation entry points (FinalizeModel, paste, group create/clone, LOR / channel-map imports, controller rename / IP change / delete) so render jobs can no longer race a model add or start-channel rewrite. Addresses the long-standing ModelGroup::CheckForChanges off-main-thread crashes.
- dkulp — Fix Windows crash in LayoutPanel::FinalizeModel when a download / progress dialog pumped events and re-entered FinalizeModel against a freed _newModel. Added a re-entrancy guard and a Reset() cleanup for show-folder loads.
- dkulp — Fix crash when an OBJ mesh file fails to parse or contains no geometry; the mesh draw path now skips LoadBuffers instead of dereferencing an empty tinyobj attrib (xlGLMesh::LoadBuffers, xlMetalMesh::LoadBuffers).
xLights is available for download from https://github.com/xLightsSequencer/xLights/releases/ for Windows/Linux and from the App Store for Mac.
Issue tracker: https://github.com/xLightsSequencer/xLights/issues
Video tutorials: https://videos.xlights.org
xLights user manual: https://manual.xlights.org/xlights/
If you have encountered a specific issue, developers ask that you submit details to the xLights GitHub repository.
For requests for general help among peers, consider starting a new forum thread: https://auschristmaslighting.com/forums/xlights-xschedule.61/post-thread