Skip to content

Releases: bitbound/ControlR

v0.22.79.0 Release

04 May 19:38
f624abe

Choose a tag to compare

Breaking Changes:

Major Changes:

Quality and bandwidth knobs

There are now auto-quality, manual quality, and bandwidth controls that users can adjust. These were implemented for the Avalonia Viewer too.

Defaults can be set on the User Settings page, and they can also be changed mid-session.

image

Permission pre-flight checks for Mac and Wayland

Security restrictions on Mac and Wayland require the user to explicitly grant permission for remote control to work. The permission flow was previously done inline with the "start remote control" attempt. It made the handshake kind of awkward and unintuitive.

Now there are explicit pre-flight checks and the ability to explicitly request access. It's also more clear now when attempting to start a remote control session, but the permissions still haven't been granted on the other side.

image

Terminal and remote file system for Avalonia Viewer

Implemented the terminal and remote file system features into the native Avalonia Viewer library. They have full feature-parity with the web versions.

image image

Explicit "Include untagged" option on the dashboard

There's now an explicit option to include untagged devices in the scope. If untagged devices are being hidden by the current scope, there's an alert indicator.

image image

Device alias

Added editing controls for the device alias and wired it up to the main grid.

image

Other changes:

  • All binaries embedded in the single-file agent EXE are now signed by hooking into the GenerateSingleFileBundle MSBuild target.
  • Updated MudBlazor from v8.x to v9.x.
  • Added UI automation tests.
  • Made user preferences more ergonomic in the ControlrApi client.
  • Added periodic background cleanup of expired agent installer keys.
  • Added configuration for retention period of installer key usage history.
  • Cleaned up user preferences and tenant settings.
  • Established a pattern for effective preference resolution for preferences that can be overridden by tenant-wide settings.
  • Fixed a clipboard issue on X11.

Full Changelog: v0.21.59.0...v0.22.79.0

v0.21.59.0 Release (Required Update)

07 Apr 19:33
84341f6

Choose a tag to compare

Breaking Changes:

This update is required and can't be skipped! Please read carefully.

This update has temporary agent migration flows that can't be skipped. If this version is skipped (after another is released), agents will not be able to auto-update. I've tried to make the migration seamless, but a reboot or agent reinstall might be required in some cases.

I'm hoping there won't be many more disruptive changes between now and v1.0. However, making these changes now ensures more stability at v1.0 and beyond.

Two major things changed:

  • A separate installer executable now handles installing both the agent and the desktop client.
    • Previously, the agent itself handled the installation. The desktop client was embedded in the agent and was extracted at runtime.
    • This structure allows for proper notarization on Mac and reduces the agent binary size.
  • The "instance ID" is now configurable and defaults to being excluded.
    • An instance id is used on the remote device to differentiate agent installations.
    • It's used in the installation path, logs path, service name, etc.
    • Previously, it defaulted to the agent's hostname (e.g. demo.controlr.app).
    • This is an advanced use case that most people will never need, so this should have never been the default.
    • Now it defaults to being completed omitted and is configurable in Tenant Settings.

What you need to do.

  • After updating, if you want to continue using the same instance ID, go into Tenant Settings and adjust the settings.
    image
  • If you want to use the new defaults and not have an instance ID appended to service names and such, you will need to uninstall existing agents, then do a fresh new install.

Again, I apologize for the inconvenience and will try to keep them to a minimum.

Changes:

  • MacOS desktop app is now properly notarized.
  • Organized and published NuGet packages for all the projects referenced internally by the Avalonia Viewer.
  • Refactored display management to make physical/logical coordinates clearer.
  • Reworked the diffing and encoding, so the changes between frames are broken up into smaller regions, sent through a multi-threaded encoding pipeline, then sent in a batch to the viewer.
    • Resulted in higher FPS and lower bytes-per-frame when there are multiple dirty regions across the screen.
  • Added multi-targeting to DesktopClient, allowing access to MacOS APIs via net10.0-macos target, instead of using hard-coded p/invokes.
    • This will make the transition from CoreGraphics to ScreenCaptureKit a lot easier and less brittle.
  • Created a separate installer and reworked the installation and auto-update flows.
  • Reworked MacOS publishing using the new macos tooling, which produces a .app bundle.
  • Added support for Docker Secrets.
  • Added option for whether to use "instance id" for agent installations and ability to customize it per tenant.
    • Instance ID is used to distinguish agent installations and allows for multiple agents from different servers to be installed on the same endpoint machine.
  • Added memory-backed FakeFileSystem implementation of IFileSystem for improved test scenarios.
  • Added alphabetical tag sorting and ability to view only untagged devices.
  • Added autoscroll function to CodeView Blazor component.

Full Changelog: v0.20.88.0...v0.21.59.0

v0.20.88.0 Release

12 Mar 22:19
7fd9557

Choose a tag to compare

Breaking Changes:

  • While not a breaking change for existing servers, the template/example compose file has changed significantly due to support for Docker Secrets.
    • As a result, setup instructions for new instances has changed.
    • Docker Secrets are completely optional, and existing servers using environment variables will continue working.

Changes:

  • Added support for Docker Secrets (see readme)
  • Fixed memory leak in Mac DesktopClient.
  • Fixed (hopefully) an issue that could cause multiple DesktopClients to get launched into the same Windows session in some cases.
  • Added user preferences for default view mode and "open in new tab".
  • Opening a device in the same tab will load faster, since it doesn't have to re-initialize Blazor WebAssembly.
  • After navigating to a device in the same tab, a back button will be available to take you directly back to the dashboard.

Full Changelog: v0.20.86.0...v0.20.88.0

v0.20.86.0 Release

05 Mar 18:00

Choose a tag to compare

Breaking Changes:

Changes:

  • Fixed DesktopClient extraction directory on Linux.
  • Fixed HorizontalAlignment for ThemeButton.
  • Rearranged radio buttons for installer key types.
  • Add $ProgressPreference back into PowerShell install to prevent slow downloads on Windows.

Full Changelog: v0.20.85.0...v0.20.86.0

v0.20.85.0 Release

04 Mar 22:45

Choose a tag to compare

Breaking Changes:

  • The Kiota-generated API client in ControlR.ApiClient has been completely replaced with a custom-made version.
  • Rollback to previous server version isn't fully supported.
    • UserPreferences and PersonalAccessTokens will be lost if server is downgraded back to previous version.
    • This is due to having their tenant relationship removed, leaving only the user relationship (i.e. they should follow the user regardless of tenant they're in).

Changes:

  • Rebuilt ControlR.ApiClient to allow better reuse of DTOs and interfaces.
  • Added Physical/Virtual/Auto keyboard input modes.
  • Mac binaries are now signed with a real Apple developer cert (notarization will follow soon).
  • Added mouse cursor transfer on Mac.
  • Fixed an issue with scaled displays on Mac and Wayland.
  • Added ability to set custom Postgres port and database name.
  • Created ControlR.Viewer.Avalonia, which is a cross-platform NuGet package containing a native Avalonia control for the viewer. This allows for embedding the ControlR viewer in Avalonia desktop applications.

Avalonia Viewer

Screencast_20260304_120113.webm

Full Changelog: v0.19.2.0...v0.20.85.0

v0.19.2.0 Release

27 Jan 00:47
06a6cd3

Choose a tag to compare

Changes:

  • Added navigation and pages/views to the DesktopClient.
    • Active connections are now show, with the ability to disconnect a viewer.
    • This is a work-in-progress. More functionality will be added later.
image
  • Improved privacy screen.
    • The black screen is opened in a higher Z band (UiAccess), allowing it to cover the Start menu.
    • Temporarily disable Aero Peek feature during remote control, which can override UiAccess.
  • Various minor refactors and fixes.

Full Changelog: v0.18.22.0...v0.19.2.0

v0.18.22.0 Release

13 Jan 00:37

Choose a tag to compare

Okay, I have to admit, I'm super excited about this update! I've personally wanted a few of these features for a long while, but just never had the time to work on them.

I'm also filling out the roadmap, so there's a lot of exciting stuff coming!

Please keep an eye out for issues with the label feedback_requested, since I'm hoping to gather a sufficient amount of user feedback before making some of these implementation decisions. There are a few on there already! 🙂

Breaking Changes:

  • Not exactly breaking, but the docker-compose file was updated with new properties related to Aspire (the server logs/metrics dashboard).
    • There is a new extension field and YAML anchor at the top: x-aspire-public-url: &aspirePublicUrl "http://localhost:18888"
    • The ControlR service uses this new anchor and the existing Aspire token anchor:
      # The access token for the Aspire Dashboard, where server logs and telemetry can be viewed.
      ControlR_AspireDashboard__Token: *aspireToken

      # The public URL for the Aspire Dashboard's web interface.
      ControlR_AspireDashboard__PublicWebUrl: *aspirePublicUrl
  • Together, these allow ControlR to launch you directly into the Aspire interface.
  • The Aspire service also uses the new anchor.
  aspire:
    image: mcr.microsoft.com/dotnet/aspire-dashboard:13.1
    # ... existing code...
    environment:
      Dashboard__Frontend__BrowserToken: *aspireToken
      Dashboard__Frontend__PublicUrl: *aspirePublicUrl

Changes:

  • Added view-only mode, which is changeable before and during remote control.
  • New zoom controls while in "Scale" view mode (used to be called "Original").
  • Added "follow cursor" option while in Scale view mode.
    • The viewport will auto-pan/scroll as your cursor reaches the edges.
  • Added virtual layout representation of remote screens.
  • Added "privacy screen" feature. (Windows only. Blacks out the remote physical monitor.)
  • Added "block user input" feature. (Windows only.)
  • Added remote log streaming.
  • Icon no longer appears in the dock on MacOS when Desktop Client is minimized to tray.

New Features Video:

(Obviously, you can't see the privacy screen, since you'd need to be looking at the physical monitor.)

features.mp4

Full Changelog: v0.17.20.0...v0.18.22.0

v0.17.20.0 Release

31 Dec 22:07

Choose a tag to compare

Changes:

  • Moved VNC relay to the Device Access layout (see screenshot).
  • Added "Connect", "Disconnect", and "Test" buttons for VNC relay.
  • Relaced deprecated MSBuild-based API client generation with Kiota.
  • Published new API client to NuGet.
  • Fixed multi-monitor pointer coordinates on Wayland.
  • Added authn and authz support to websocket relay to supplement the access tokens.
  • Replaced IPC protocol with StreamJsonRpc + MessagePack formatter.
  • Minor fixes and refactors.
image

Full Changelog: v0.16.28.0...v0.17.20.0

v0.16.28.0 Release

13 Dec 01:32
68af265

Choose a tag to compare

Changes:

  • Fixed API calls during server-side rendering by conditionally switching to backend service implementations.
  • Fixed chat responses due to mishandled async response type in IPC library.
  • Allow MaxFileTransferSize to override multipart body length limit.
    • This applies to file upload API endpoint.

Full Changelog: v0.16.22.0...v0.16.28.0

v0.16.22.0 Release

11 Dec 22:28

Choose a tag to compare

Changes:

  • Added management of Installer Keys.
  • Added option to encrypt Data Protection keys using X509 certificate.
  • Added EnableNetworkTrust option for easier forwarded headers configuration when the service is only reachable via trusted proxy.
  • Added endpoint for file uploads to device.
  • Switched to global WASM as the default render mode.
  • Added WASM bundle download % to the loading indicator.
  • Refactored Mac's permission granting flow to align with Wayland's.
  • Allow Wayland permissions to be re-granted (e.g. after display changes).
  • Marshal screen frames as MemoryView in Blazor's JS interop for improved performance and memory utilization.
  • Various cleanup and refactoring.

Full Changelog: v0.16.1.0...v0.16.22.0