Skip to content

Commit d7c4a30

Browse files
authored
chore(release): prepare for 2026.1.1 (#1734)
1 parent a7bc0e5 commit d7c4a30

10 files changed

Lines changed: 192 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,177 @@
22

33
This document provides a list of notable changes introduced in Devolutions Gateway service, installer and Jetsocat.
44

5+
## 2026.1.1 (2026-04-01)
6+
7+
### Features
8+
9+
- _installer_: warn on, instead of hiding, unvalidated certificates ([#1697](https://github.com/Devolutions/devolutions-gateway/issues/1697)) ([40a4247279](https://github.com/Devolutions/devolutions-gateway/commit/40a424727916c0a27fef6fd6bb3bb1f8e2d0c8f0)) ([DGW-356](https://devolutions.atlassian.net/browse/DGW-356))
10+
11+
When searching for a certificate in the system store we call
12+
`X509Certificate2Collection.Find` with the `validOnly` parameter set to
13+
`true`.
14+
15+
> validOnly
16+
Boolean
17+
true to allow only valid certificates to be returned from the search;
18+
otherwise, false.
19+
20+
The performs basic validation, and only returns valid certificates.
21+
22+
However, the result is confusing for users as they don't realize that
23+
the certificate they are searching for is invalid, they think that the
24+
search isn't working.
25+
26+
Instead, we now return _all_ certificates but if the certificate is
27+
determined to be invalid, we flag it in the UI with a warning icon and a
28+
text explanation.
29+
30+
- _installer_: add a German localization ([cb63344500](https://github.com/Devolutions/devolutions-gateway/commit/cb63344500ef0deed595c4f77a7229a5d3da52a7)) ([DGW-357](https://devolutions.atlassian.net/browse/DGW-357))
31+
32+
- _jetsocat_: add warning field to doctor diagnostic output ([1f8e7a0441](https://github.com/Devolutions/devolutions-gateway/commit/1f8e7a0441880cdfd18715bc3af4761c0ab0a055))
33+
34+
Adds support for surfacing warnings in the doctor tool's diagnostic
35+
output, allowing external tools to distinguish between complete success,
36+
success with warnings, and failure.
37+
38+
The diagnostic JSON output now includes an optional "warning" field, and
39+
the human-readable output displays a warning emoji (⚠️) instead of a
40+
success checkmark (✅) when warnings are present.
41+
42+
This enables better integration with external monitoring and diagnostic
43+
tools that need to detect and report warning conditions even when the
44+
overall diagnostic succeeds.
45+
46+
- _jetsocat_: add SAN and EKU diagnostics to doctor module ([251795b0f5](https://github.com/Devolutions/devolutions-gateway/commit/251795b0f51c09cdedcfb351e0fb9f3c0d882bde)) ([DGW-350](https://devolutions.atlassian.net/browse/DGW-350))
47+
48+
Add certificate extension checks mirroring the gateway's TlsVerifyStrict
49+
validation. Each TLS backend (rustls, openssl, schannel) now runs two new
50+
diagnostics on the end-entity certificate:
51+
52+
- check_san_extension: verifies the Subject Alternative Name extension is present
53+
- check_server_auth_eku: verifies the Extended Key Usage includes serverAuth
54+
55+
- _dgw_: add periodic keyframe forcing for improved seekability ([#1705](https://github.com/Devolutions/devolutions-gateway/issues/1705)) ([9619444aea](https://github.com/Devolutions/devolutions-gateway/commit/9619444aea53cbc9a94c9e712d2fdc581806aef6)) ([DGW-358](https://devolutions.atlassian.net/browse/DGW-358))
56+
57+
- _jetsocat_: detect missing intermediate certificate in doctor ([#1727](https://github.com/Devolutions/devolutions-gateway/issues/1727)) ([ea52ff75ca](https://github.com/Devolutions/devolutions-gateway/commit/ea52ff75ca950e9e8ba8f1e5123a3e05e229dec9)) ([DGW-349](https://devolutions.atlassian.net/browse/DGW-349))
58+
59+
When a TLS server presents only the leaf certificate (or leaf + root CA
60+
but no intermediate), clients fail with an opaque "unknown issuer" error
61+
that is hard to diagnose.
62+
63+
The doctor command now performs a structural analysis of the presented
64+
chain before invoking the trust engine:
65+
66+
- If the chain contains only a leaf and no certificate whose Subject
67+
matches the leaf's Issuer, a warning "an intermediate certificate is
68+
likely missing" is attached to the read-chain diagnostic.
69+
- On chain verification failure (UnknownIssuer /
70+
CERT_TRUST_IS_PARTIAL_CHAIN / CERT_TRUST_IS_UNTRUSTED_ROOT), actionable
71+
help "intermediate certificate is likely missing" is shown instead of
72+
the generic "unknown issuer" message.
73+
- Omitting the root CA (the normal server configuration) does not
74+
trigger the warning.
75+
- Self-signed (root-only) certificates are also not flagged.
76+
77+
- _dgw_: encrypt in-memory credentials at rest with ChaCha20-Poly1305 ([#1689](https://github.com/Devolutions/devolutions-gateway/issues/1689)) ([86775146ed](https://github.com/Devolutions/devolutions-gateway/commit/86775146edd59e0cfae4a017520beb757a6f2b04)) ([DGW-326](https://devolutions.atlassian.net/browse/DGW-326))
78+
79+
Add ChaCha20-Poly1305 encryption for credentials stored in the
80+
credential store. Passwords are encrypted at rest with a randomly generated 256-bit
81+
master key held in a protected page.
82+
83+
The page protection hardening is performed using the best available OS
84+
hardening in a best-effort basis:
85+
86+
- Windows: VirtualLock, guard pages (PAGE_NOACCESS), PAGE_READONLY after
87+
write, WerRegisterExcludedMemoryBlock for WER crash report exclusion.
88+
- Linux: mlock, guard pages (PROT_NONE), PROT_READ after write,
89+
madvise(MADV_DONTDUMP) for core dump exclusion.
90+
- All: zeroize-before-free on drop; plain heap fallback with
91+
zeroize-on-drop on unsupported platforms.
92+
93+
In concrete terms: this protects users from leaking important secrets in
94+
the event of a memory dump captured for debugging purposes.
95+
96+
### Bug Fixes
97+
98+
- _dgw_: fix adaptive frame skipping during EOF waits in session shadowing ([#1678](https://github.com/Devolutions/devolutions-gateway/issues/1678)) ([a1566fd0f9](https://github.com/Devolutions/devolutions-gateway/commit/a1566fd0f94394c992818a0c7ab08a0989ce2f4f)) ([DGW-341](https://devolutions.atlassian.net/browse/DGW-341))
99+
100+
Fixes video playback freezing permanently during live session shadowing.
101+
After brief pauses in the recording stream (e.g., during network hiccups
102+
or slow file writes), the shadow player would stop rendering new frames
103+
entirely, requiring a session restart.
104+
105+
With this fix, shadow sessions now recover gracefully from temporary
106+
recording pauses, maintaining smooth video playback throughout the
107+
session.
108+
109+
- _installer_: prevent issues with deferred properties containing semi-colons ([e031fa32b1](https://github.com/Devolutions/devolutions-gateway/commit/e031fa32b1d094ac26556d867a31d1fd901f316a)) ([DGW-359](https://devolutions.atlassian.net/browse/DGW-359))
110+
111+
- _dgw_: add codec-aware VP9 keyframe detection ([#1702](https://github.com/Devolutions/devolutions-gateway/issues/1702)) ([737b750425](https://github.com/Devolutions/devolutions-gateway/commit/737b7504253c395dd540cc987eda432de8d35792))
112+
113+
Add VP9 keyframe detection alongside existing VP8 support, based on
114+
the VP9 bitstream specification (profiles 0-3). Thread the `VpxCodec`
115+
type through the iterator and block tag layers so keyframe checks use
116+
the correct codec-specific logic. Set `VpxEncoderPreset::BestPerformance`
117+
on the re-encoding encoder for improved throughput during session shadowing.
118+
119+
- _dgw_: improve unified shutdown correctness ([#1703](https://github.com/Devolutions/devolutions-gateway/issues/1703)) ([9e417f9006](https://github.com/Devolutions/devolutions-gateway/commit/9e417f9006cfb1cd986eb9f4d8baa873adac539c))
120+
121+
Replace scattered shutdown mechanisms with a single `tokio::sync::watch`
122+
channel as the source of truth. Handle task now signals `ClientDisconnected`
123+
on client disconnect and uses `select!` on `ws_frame.next()` for shutdown
124+
awareness. Bridge task is aborted on `webm_stream` exit to prevent
125+
`control_task` from hanging indefinitely.
126+
127+
- _dgw_: update cadeau native library to v2026.3.13.0 ([#1708](https://github.com/Devolutions/devolutions-gateway/issues/1708)) ([836bbedbf8](https://github.com/Devolutions/devolutions-gateway/commit/836bbedbf8e31a308055a5c53430ee1d98ed7fcf)) ([DVLS-14057](https://devolutions.atlassian.net/browse/DVLS-14057)) ([DGW-363](https://devolutions.atlassian.net/browse/DGW-363))
128+
129+
- _dgw_: fix service subcommand parsing ([#1710](https://github.com/Devolutions/devolutions-gateway/issues/1710)) ([aa8805aa87](https://github.com/Devolutions/devolutions-gateway/commit/aa8805aa87f7dee287d21b76ce09f98266cdfcd6)) ([DGW-360](https://devolutions.atlassian.net/browse/DGW-360))
130+
131+
- _dgw_: fix minimum glibc version in deb manifest ([#1716](https://github.com/Devolutions/devolutions-gateway/issues/1716)) ([674818a4d0](https://github.com/Devolutions/devolutions-gateway/commit/674818a4d01c09cb3d77c13d5aca48d253886d73)) ([DGW-361](https://devolutions.atlassian.net/browse/DGW-361))
132+
133+
We cross-compile against an ubuntu-18.04 sysroot (via cbake), which
134+
ships glibc 2.27, not 2.31.
135+
136+
- _dgw_: fix RPM webapp directories installed under wrong names ([#1717](https://github.com/Devolutions/devolutions-gateway/issues/1717)) ([1cbb8b9f59](https://github.com/Devolutions/devolutions-gateway/commit/1cbb8b9f59e2a4ef883de35952d7f3adf3c8b22a)) ([DGW-362](https://devolutions.atlassian.net/browse/DGW-362))
137+
138+
fpm installs a source directory *by name* inside the destination when
139+
given a bare directory path. Specifying explicit target paths ensures
140+
webapp/client and webapp/player are consistent with the DEB package.
141+
142+
- _jetsocat_: fix schannel doctor backend ([de4747c937](https://github.com/Devolutions/devolutions-gateway/commit/de4747c937831540a4b61eda56fd7e904e205a8c))
143+
144+
Set end_entity_info in schannel_read_chain for the leaf certificate, so
145+
that cert checks work when loading a chain from a PEM file.
146+
147+
- _dgw_: fix RPM webapp directories installed under wrong names ([#1722](https://github.com/Devolutions/devolutions-gateway/issues/1722)) ([5668b18384](https://github.com/Devolutions/devolutions-gateway/commit/5668b18384a84696db7bca0e574ee41ff5051427)) ([DGW-362](https://devolutions.atlassian.net/browse/DGW-362))
148+
149+
fpm installs a source directory *by name* inside the destination when
150+
given a bare directory path. This is identical to #1717 but targets the
151+
currently active code path found in tlk.ps1.
152+
153+
- _dgw_: reduce log noise for missing recording storage disk ([#1728](https://github.com/Devolutions/devolutions-gateway/issues/1728)) ([cceb72b21f](https://github.com/Devolutions/devolutions-gateway/commit/cceb72b21fb9086a93509719bee3f605c9a63333)) ([DGW-353](https://devolutions.atlassian.net/browse/DGW-353))
154+
155+
When the recording storage disk cannot be found during a heartbeat or
156+
preflight check, only the first occurrence is now logged at WARN.
157+
Subsequent repeated occurrences are downgraded to DEBUG until the disk
158+
becomes available again, at which point the condition can surface at
159+
WARN once more. The recording path is included in the log event for
160+
context.
161+
162+
- _dgw_: support network drives and UNC paths for recording storage space on Windows ([#1729](https://github.com/Devolutions/devolutions-gateway/issues/1729)) ([f2da923b1e](https://github.com/Devolutions/devolutions-gateway/commit/f2da923b1ef4c4cf627b1f562d924f7d9a254218)) ([DGW-354](https://devolutions.atlassian.net/browse/DGW-354))
163+
164+
- _dgw_: use statvfs for recording storage space on Unix ([#1730](https://github.com/Devolutions/devolutions-gateway/issues/1730)) ([b5de812542](https://github.com/Devolutions/devolutions-gateway/commit/b5de812542a8ccc4c5d000fe886edf15f9e12664)) ([DGW-355](https://devolutions.atlassian.net/browse/DGW-355))
165+
166+
Replaces the sysinfo disk-enumeration approach on Linux/macOS with a
167+
direct statvfs(2) call against the configured recording path. This fixes
168+
incorrect or missing space values for network filesystems (NFS,
169+
CIFS/Samba) and any mount point the previous heuristic could not
170+
resolve.
171+
172+
### Build
173+
174+
- _jetsocat_: enable detect-proxy for Windows jetsocat builds ([#1721](https://github.com/Devolutions/devolutions-gateway/issues/1721)) ([d51d0c4cec](https://github.com/Devolutions/devolutions-gateway/commit/d51d0c4cecafc90bef91763a00c094e59d2f3d5a))
175+
5176
## 2026.1.0 (2026-02-23)
6177

7178
### Features

Cargo.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ default-members = [
1717
]
1818

1919
[workspace.package]
20-
version = "2026.1.0"
20+
version = "2026.1.1"
2121

2222
[profile.profiling]
2323
inherits = "release"

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2026.1.0
1+
2026.1.1

crates/devolutions-pedm-shell-ext/AppxManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
1212
IgnorableNamespaces="uap uap2 uap3 rescap desktop desktop4 desktop5 uap10 com">
1313
<Identity Name="DevolutionPEDMShellExtension" ProcessorArchitecture="neutral" Publisher="CN=Devolutions"
14-
Version="2026.1.0.0" />
14+
Version="2026.1.1.0" />
1515
<Properties>
1616
<DisplayName>Devolutions Agent</DisplayName>
1717
<PublisherDisplayName>Devolutions</PublisherDisplayName>

dotnet/DesktopAgent/DesktopAgent.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<AssemblyName>DevolutionsDesktopAgent</AssemblyName>
77
<AssemblyTitle>Devolutions Agent</AssemblyTitle>
88
<LangVersion>latest</LangVersion>
9-
<Version>2026.1.0.0</Version>
9+
<Version>2026.1.1.0</Version>
1010
<Company>Devolutions</Company>
1111
<Copyright>Copyright © 2025</Copyright>
1212
<Product>Devolutions Agent</Product>

fuzz/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package/AgentLinux/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Packaging changelog
22

3+
## 2026.1.1 (2026-04-01)
4+
5+
- No changes.
6+
37
## 2026.1.0 (2026-02-22)
48

59
- No changes.

package/Linux/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Packaging changelog
22

3+
## 2026.1.1 (2026-04-01)
4+
5+
- Fixes the minimum glibc version declared in the Debian package manifest (was 2.31, now correctly 2.27), allowing installation on older distributions such as Ubuntu 18.04.
6+
- Fixes RPM package installing web application directories under incorrect names, making the web interface accessible after installation on RPM-based distributions.
7+
38
## 2026.1.0 (2026-02-22)
49

510
- No changes.

powershell/DevolutionsGateway/DevolutionsGateway.psd1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
RootModule = 'DevolutionsGateway.psm1'
88

99
# Version number of this module.
10-
ModuleVersion = '2026.1.0'
10+
ModuleVersion = '2026.1.1'
1111

1212
# Supported PSEditions
1313
CompatiblePSEditions = 'Desktop', 'Core'

0 commit comments

Comments
 (0)