github Devolutions/devolutions-gateway v2025.3.3

2 hours ago

Features

  • webapp: update VNC and RDP clients (#1533) (a09dcf41ea)

    • VNC: Prevent a custom pixel format from being set if Tight JPEG or Tight
      PNG
      is enabled.
    • VNC: Fixed an issue where Zlib encoding was always advertised to the
      server, regardless of the chosen ARD quality.
    • RDP: Fixed an issue where the clipboard data was not sent to the server
      right after the connection.
    • RDP: Fixed the lastSentClipboardData being null in the
      onForceClipboardCallback.
    • RDP: Added human-readable descriptions for RDCleanPath errors.
    • VNC: Update cryptographic libraries for VNC.
  • installer: download public key from DVLS (44aab79ad1)

  • installer: allow CLI generation on release builds (f9665c2759)

  • jetsocat: add concurrent reads support for MCP proxy (#1560) (acf770f5bc) (DGW-314)

    Refactor MCP proxy to support server-initiated messages (notifications,
    progress updates, and server -> client requests) by enabling concurrent
    reads from both client and server.

  • dgw: TLS thumbprint anchoring (#1570) (b3369646bf) (DGW-318)

    Allow "unsecure" TLS if the client provides a thumbprint and the peer
    certificate matches it.

  • agent: implement DVC remote exec detached mode (#1567) (1417db9df6) ([ARC-411](https://devolutions.atlassian.net/browse/[ARC-411](https://devolutions.atlassian.net/browse/ARC-411)))

    Adds fire-and-forget remote execution via the now proto DVC.

    Previously, all execution types (except Run) waited for the process exit
    code and tracked the execution session, but this behavior is not always
    what the user expects. This PR changes that and adds an option to
    specify if fire and forget mode is needed (return result right after
    process is spawned.

  • agent,dgw: add Hub Service auto-updater support (#1557) (330cefef73)

  • dgw: add multi-provider AI Gateway (#1588) (b11f050d36)

    Adds an experimental AI Gateway feature that provides a unified proxy
    for multiple AI provider APIs through Devolutions Gateway. This enables
    centralized API key management, consistent authentication, and
    simplified access to various AI services from a single endpoint.

    Supports seven providers with OpenAI-compatible and
    provider-specific endpoints, featuring transparent proxying, SSE
    streaming support, and flexible configuration through both JSON config
    and environment variables.

    Supported providers:

    • Mistral AI (cloud API)
    • OpenAI (cloud API)
    • Anthropic Claude (cloud API with custom message format)
    • OpenRouter (unified multi-provider API)
    • Azure OpenAI (deployment-based Azure service)
    • Ollama (local, OpenAI-compatible, optional auth)
    • LM Studio (local, OpenAI-compatible, optional auth)

    Requires enable_unstable: true in debug configuration.

  • agent: migrate from productinfo.htm to productinfo.json format (#1591) (aaf515686f)

    Replaces the legacy flat key-value productinfo.htm format with a
    structured JSON format that provides better organization and
    extensibility. The new format supports multiple release channels
    (Current, Beta, Update, Stable) and includes explicit architecture and
    file type metadata.

Improvements

  • jetsocat: detect broken pipe and stop MCP proxy gracefully (#1544) (d3222061e1)

    When the MCP server connection breaks (process died, pipe closed), the
    proxy now detects this and stops forwarding requests instead of
    continuing to fail on each subsequent request.

  • dgw: display the full trace for forward errors (#1550) (e74e57f809)

  • installer: improve debouncer robustness, legibility of port check result (a3f642407c)

  • installer: update localization (eff50da336)

  • dgw: [breaking] switch traffic audit IDs from INTEGER to ULID (#1597) (b443f93f44) (DGW-321)

    Replace INTEGER PRIMARY KEY with 16-byte BLOB (ULID) for traffic audit
    event IDs to avoid overflow issues with persisted, ever-increasing IDs.

    • Auto-detect old INTEGER schema via PRAGMA table_info and reset
      database
    • Store ULIDs as 16-byte BLOBs (lexicographically sortable)
  • agent: improve productinfo.json parsing with lenient error handling (#1595) (75a5879b95)

Bug Fixes

  • webapp: fix TS errors on invalid config (#1532) (fde1c0de12)

  • installer: fix UI at high scaling factors (abbdd6ad65)

  • installer: fix broken hyperlinks (dfa4608d91)

  • installer: fix a (handled) NRE that was nonetheless annoying in debug (25ed8b2c00)

  • installer: avoid crashes on server core (e432ad092e)

  • installer: add missing file to csproj (51fd11088d)

  • installer: UI glitch caused by tab stops (52979494ff)

  • installer: public key action pick up downloaded file (378ffbe915)

  • dgw: fix a bug preventing mstsc to work with the RDP proxy (#1576) (7a0c1f5437)

  • dgw,agent: improve systemd integration (#1549) (0d5239ba1f) (DGW-317)

    Update ceviche to 0.7.0 which improves systemd integration.

    Here is the new strategy:

    • pkg-config detection: We query pkg-config --variable=systemdsystemunitdir systemd
      to get the distribution's preferred location. This works on most modern
      systems that have systemd development packages installed.

    • Fallback probing: If pkg-config is unavailable or doesn't return a
      result, we probe common directories in order:

      • /usr/lib/systemd/system
      • /lib/systemd/system

    This fixes installation issues on RHEL-based distributions where systemd
    units are located in /usr/lib/systemd/system instead of /lib/systemd/system.

Don't miss a new devolutions-gateway release

NewReleases is sending notifications on new releases.