Skip to content

Releases: bitbound/ControlR

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

v0.16.1.0 Release

02 Dec 00:58

Choose a tag to compare

Breaking Changes:

  • The Docker image has moved to bitbound/controlr (used to be translucency/controlr).

Changes:

  • Remote control support on Wayland! 🎉
    • Like Mac, Wayland requires the user to manually consent the first time, then subsequent connections will be automatic (provided they checked the box for it).
  • Added warning text for Mac and Wayland on the remote control page to indicate that the above permissions have not been granted yet (so you know when to expect a prompt on the other end).
    • permissions-not-granted
  • Wayland now has UI on the desktop client that allows customers to grant the permissions in advance.
    • wayland-permissions
  • Added passkey support.
    • Passkeys
  • Windows executables are now digitally signed using a commercial DigiCert certificate.
  • Changed the license to MIT.
    • My hope is that using a permissive license will make it easier for businesses to integrate ControlR and help the project grow.
  • Migrated all workflows from Azure Pipelines to GitHub Actions.
  • Added a Railway template for insanely easy ControlR deployments.
  • Added SMTP test button on the Server Settings page.
  • Added a DisableSendingEmails option to disable Identity emails (forgot password, account confirmation, etc.).
  • Added zooming on desktop with Ctrl + Shift + Mouse Wheel.
  • Improved handling for very large directories in Remote File System.

Full Changelog: v0.15.1.0...v0.16.1.0