Repository navigation
Releases
Releases · PepperDash/Essentials
v3.1.0
v3.1.0-feature-uc-engine-return-to-teams.1
3.1.0-feature-uc-engine-return-to-teams.1 (2026-11-09)
Features
- mobile-control: switch back to Teams from the UC Engine's Mobile Control frame (69c3e05)
v3.0.1-fix-1551-set-manual-mode-noop.1
v3.0.0
3.0.0 (2026-11-06)
Bug Fixes
- [EWP-8320] tighten secure secrets provider limits and failure handling (5d1eb4d)
- add error handling when saving debug settings (426ef4a)
- address review on the routing graph messenger (b26bed6)
- adjust installation steps for prerequisites based on environment detection (7bd3ccd)
- apply appdebugfilter, Debug level fixes, guard missing versiports (2ef8d92)
- avoid enumeration issues by copying current source keys and handling nulls (32311dd)
- core-ssh: re-check program-stopping flag under the connect lock and serialise Disconnect with Connect (5b6cef0)
- core-ssh: stop reconnect loop during stopprog and handle null inner exception on connect (e425b05), closes #1469 #1468
- core: bridge, join map, IO and comm fixes (a2d1655)
- core: close reconnect/disconnect races in GenericUdpClient and tie cleanup to the failed socket (4993cd2)
- correct device key reference in LevelControl property (830e207)
- correct malformed error message (695ab00)
- correct PhoneHookState (digital 72) feedback description (dff50ea)
- Correct typo in LevelControlListItem class name (cd89cf1)
- correct UserInterfaces type and initialize TouchpanelWrapperApp in VersionData constructor (4403e91)
- Correctly retrieve package ID from assembly metadata for version checks (af7411f)
- culture-independent appdebugfilter keys; skip server queue without serverUrl (ea454dd)
- deps: update SSH.NET to 2026.0.0 to resolve vulnerabilities (734b426)
- devjson: make escape expansion opt-in and enable it only for console input (396d78a)
- devjson: unescape \r \n \t \ and \xHH in string and byte[] parameters (205875e)
- disambiguate DirectorySelectRow (101) and feedback (104) descriptions (72c948e)
- do not require state these devices cannot report (8721b85)
- Downgrade setup-dotnet action version to v5 for compatibility (e818c9c)
- emit named routing slots under both inputSlots/outputSlots and inputs/outputs keys (23ffa73)
- ensure midpoint-to-sink map is built after tie lines are loaded in ControlSystem (1c891a0)
- feedback update for current lighting scene (cb7970b)
- find the shared SSL certificate in the room's user folder on Virtual Control (de9a292)
- format constructor for IDeviceInfoProviderMessenger for improved readability (be545bb)
- guard against empty Version in configured-but-not-loaded package passthrough (4a366a5)
- guard CecPortController against null StreamCec, add ScreenLift automation opt-outs, ignore null message fields (7d32eac), closes #1448
- guard the deferred CEC subscription with a lock (1e0cab6)
- handle null routes in ExecuteRoutes to prevent silent failures (f6187d5)
- improve port forwarding logic and error handling in RoutingFeedback session (a18f780)
- keep console help text within the 79-byte Crestron limit (406488c)
- keep route descriptors when routing feedback can't rebuild them (09baf13), closes #1496
- keep stream poll requests out of the request log (2c44d8b)
- keep the pluginissues console help under Crestron's 79-byte limit (8335e16)
- let GenericQueue and StringResponseProcessor run off a processor (66e9fd1), closes #1553
- log exceptions as an Error entry plus a Verbose stack trace (778d60d)
- log when a COM port was already registered (318038b)
- logging: make appdebug levels consistent and fix appdebugfilter parsing (9996272)
- make RouteDescriptorCollection thread-safe (0ee16d5)
- make the recording capabilities independent rather than derived (f8692f7)
- mc: answer codec preset and camera status before the codec connects (ab4eb88), closes #1501
- mc: cap per-client transmit queues and stop leaking a raced queue (f800126)
- mc: include every in-tree status reply in an aggregated batch (6bea780)
- mc: never broadcast a tech PIN validation result (943dd31)
- mc: per-client queues check the socket state instead of pinging (56f9e0f)
- mc: post each codec camera selection once (4333d68)
- mobile-control: address review on the UC Engine controller (372ff57)
- mobile-control: allow a config without serverUrl (bc0f010)
- mobile-control: force panels to re-download the app (26ce99d)
- mobile-control: make secure direct server actually start on 4-Series (fea0e40)
- mobile-control: serve correct MIME types for app static assets (b7b4b56)
- null-safe CodecInfo access in AudioCodecBaseMessenger (1a5db87)
- per-hold locking and fresh heartbeat timers in PressAndHoldHandler ([d94305c](d94305cb0de5...
v3.0.0-rc.26
3.0.0-rc.26 (2026-11-06)
Bug Fixes
Features
- support adding devices and loading config off a processor (0d4b5a6)
v3.0.0-rc.25
v3.0.0-rc.24
v3.0.0-fix-1553-queues-off-processor.1
3.0.0-fix-1553-queues-off-processor.1 (2026-11-06)
Bug Fixes
- add error handling when saving debug settings (426ef4a)
- address review on the routing graph messenger (b26bed6)
- adjust installation steps for prerequisites based on environment detection (7bd3ccd)
- apply appdebugfilter, Debug level fixes, guard missing versiports (2ef8d92)
- avoid enumeration issues by copying current source keys and handling nulls (32311dd)
- core-ssh: re-check program-stopping flag under the connect lock and serialise Disconnect with Connect (5b6cef0)
- core-ssh: stop reconnect loop during stopprog and handle null inner exception on connect (e425b05), closes #1469 #1468
- core: bridge, join map, IO and comm fixes (a2d1655)
- core: close reconnect/disconnect races in GenericUdpClient and tie cleanup to the failed socket (4993cd2)
- correct device key reference in LevelControl property (830e207)
- correct malformed error message (695ab00)
- correct PhoneHookState (digital 72) feedback description (dff50ea)
- Correct typo in LevelControlListItem class name (cd89cf1)
- correct UserInterfaces type and initialize TouchpanelWrapperApp in VersionData constructor (4403e91)
- Correctly retrieve package ID from assembly metadata for version checks (af7411f)
- culture-independent appdebugfilter keys; skip server queue without serverUrl (ea454dd)
- deps: update SSH.NET to 2026.0.0 to resolve vulnerabilities (734b426)
- devjson: make escape expansion opt-in and enable it only for console input (396d78a)
- devjson: unescape \r \n \t \ and \xHH in string and byte[] parameters (205875e)
- disambiguate DirectorySelectRow (101) and feedback (104) descriptions (72c948e)
- do not require state these devices cannot report (8721b85)
- Downgrade setup-dotnet action version to v5 for compatibility (e818c9c)
- emit named routing slots under both inputSlots/outputSlots and inputs/outputs keys (23ffa73)
- ensure midpoint-to-sink map is built after tie lines are loaded in ControlSystem (1c891a0)
- feedback update for current lighting scene (cb7970b)
- find the shared SSL certificate in the room's user folder on Virtual Control (de9a292)
- format constructor for IDeviceInfoProviderMessenger for improved readability (be545bb)
- guard against empty Version in configured-but-not-loaded package passthrough (4a366a5)
- guard CecPortController against null StreamCec, add ScreenLift automation opt-outs, ignore null message fields (7d32eac), closes #1448
- guard the deferred CEC subscription with a lock (1e0cab6)
- handle null routes in ExecuteRoutes to prevent silent failures (f6187d5)
- improve port forwarding logic and error handling in RoutingFeedback session (a18f780)
- keep console help text within the 79-byte Crestron limit (406488c)
- keep route descriptors when routing feedback can't rebuild them (09baf13), closes #1496
- keep stream poll requests out of the request log (2c44d8b)
- keep the pluginissues console help under Crestron's 79-byte limit (8335e16)
- let GenericQueue and StringResponseProcessor run off a processor (66e9fd1), closes #1553
- log exceptions as an Error entry plus a Verbose stack trace (778d60d)
- log when a COM port was already registered (318038b)
- logging: make appdebug levels consistent and fix appdebugfilter parsing (9996272)
- make RouteDescriptorCollection thread-safe (0ee16d5)
- make the recording capabilities independent rather than derived (f8692f7)
- mc: answer codec preset and camera status before the codec connects (ab4eb88), closes #1501
- mc: cap per-client transmit queues and stop leaking a raced queue (f800126)
- mc: include every in-tree status reply in an aggregated batch (6bea780)
- mc: never broadcast a tech PIN validation result (943dd31)
- mc: per-client queues check the socket state instead of pinging (56f9e0f)
- mc: post each codec camera selection once (4333d68)
- mobile-control: address review on the UC Engine controller (372ff57)
- mobile-control: allow a config without serverUrl (bc0f010)
- mobile-control: force panels to re-download the app (26ce99d)
- mobile-control: make secure direct server actually start on 4-Series (fea0e40)
- mobile-control: serve correct MIME types for app static assets (b7b4b56)
- null-safe CodecInfo access in AudioCodecBaseMessenger (1a5db87)
- per-hold locking and fresh heartbeat timers in PressAndHoldHandler (d94305c)
- plugins: identify duplicate assemblies by their real name and don't proces...
v3.0.0-feature-EWP-8320-secure-storage-secrets.5
3.0.0-feature-EWP-8320-secure-storage-secrets.5 (2026-11-06)
Features
- [EWP-8320] refuse a secure write that would take the Data Store past 95% (fcf856e)