You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Uploading UDP outputs regenerated the universes channel output from scratch
and rescued only two keys (interface, pacingRate) out of the config already
on the FPP, so FPP10's Sending mode was always lost and the global Pacing
setting reverted to FPP's 90Mbps default whenever the rescue did not run -
the pacing carry-forward was gated on the discovered FPP version, which is
zero for an instance whose version probe failed.
Invert it: rebuild the universes output on top of the existing one and
overwrite only the keys xLights owns (type, enabled, timeout, startChannel,
channelCount, universes). The source interface, sending mode, global and
per-controller pacing, and anything a newer FPP adds now carry through
untouched. The internal pacing-authoritative hint is also stripped when the
existing config could not be read, instead of leaking into the upload.
FixesFalconChristmas/fpp#2845
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
| 65 | FPP Connect — Media upload toggle | Header `FPPConnectDialog.cpp:263`; right-click Select All / Deselect All (`MediaPopupMenu``:264`) | 🟡 |`FPPInstanceConfig.uploadMedia``FPPConnectSheet.swift:122`, toggle `:1021`, media path resolved via `document.mediaPath(forXsq:)``:522`. Gap: no bulk select-all/none for the column. |
| 66 | FPP Connect — UDP Out mode | Header `FPPConnectDialog.cpp:265`; None / All / Proxied | ✅ |`UDPOutMode` enum `FPPConnectSheet.swift:142-152` ("None"/"All Controllers"/"Proxied Only"), picker `:1047-1054`, applied via `document.applyConfig(toFPP:settings:progress:)``:463-471`. **2026-08-22:**`FPP::UploadUDPOut` now rebuilds the universes channel output on top of the one already on the FPP, replacing only the keys xLights owns (type/enabled/timeout/startChannel/channelCount/universes) so FPP10's source interface, Sending mode and global + per-controller Pacing survive the upload; shared core, so both platforms get it automatically. |
| 68 | FPP Connect — "Upload Outputs" / cape config | Header `FPPConnectDialog.cpp:267`; right-click Select All / Deselect All (`CapePopupMenu``:433-440`, handler `:442-459`) | 🟡 |`uploadCape``FPPConnectSheet.swift:125` — "Pixel Hat / Cape Outputs - <model>" when `inst.hasCape``:1024-1027`, repurposed as "Upload Controller Config" for non-FPP devices `:1011-1016`. Gap: no Select All / Deselect All. |
161
161
| 69 | FPP Connect — **FSEQ Type picker** | Header `FPPConnectDialog.cpp:269`; the per-instance widget depends on the device family — FPP gets V1 / V2 zstd / V2 Sparse/zstd / V2 Sparse/Uncompressed (`:657-660`) defaulting to **V2 zstd for a `master`-mode instance** and V2 Sparse/zstd otherwise (`:661`); Falcon V4/V5 + PowerDMX get V1 / V2 **zlib** / V2 Sparse/zlib / V2 Sparse/Uncompressed / V2 Uncompressed (`:671-675`, default `:676`); ESPixelStick and Genius are fixed at V2 Sparse/Uncompressed (`:680`) and everything else at V1 (`:682`). The chosen index is mapped to a codec id at upload (`:1382-1392` — FPP passes the index through, Falcon V4/V5 remaps 1→5 and 2→6, every other family is forced to 3), and persisted per-UUID as `FPPConnectUploadFSEQType_*` (`:1721-1726`, `:1771-1773`) | 🟡 | **The earlier missing-status evidence here overstated the impact and is corrected.** iPad discovery admits only `FPP_TYPE::FPP` and `FPP_TYPE::ESPIXELSTICK` — every other family is dropped by an explicit filter in the discovery path (`XLSequenceDocument.mm`, "iPad scope: FPP + ESPixelStick only"), so the claimed Falcon V4/V5 zstd-vs-zlib and Genius/PowerDMX type-2-vs-3 mis-sends were **unreachable**: those devices never enter `_fppInstances` and never receive an upload. Of the original claim only the master-mode case was real, and it is **fixed 2026-08-06**: a plain FPP now gets desktop's per-mode default (V2 zstd for a `master` instance, V2 Sparse/zstd otherwise, `FPPConnectDialog.cpp:661`) instead of always sparse; ESPixelStick keeps 3, which already matched. Remaining gap: no user-facing picker and no per-UUID persistence, so the desktop default is all you get. |
0 commit comments