Skip to content

Releases: bitbound/ControlR

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

v0.15.1.0 Release

13 Nov 07:14

Choose a tag to compare

Breaking Changes

  • Removed the option for external relay servers.
    • Earlier versions of ControlR were intended to be a horizontally-scaling SaaS product with global relays. That's no longer a design goal, and the focus will be on self-hosting individual instances.
    • This also paves the way for fine-grained permissions, session recording, and potentially other features.

Changes:

  • New color scheme and icons
image
  • New light theme with Auto/Light/Dark toggle.
  • You can now configure the app name that appears in TOTP authenticator apps via the ControlR_AppOptions__AuthenticatorIssuerName environment variable in docker-compose.yml.
  • The DesktopClient is now bundled into the agent and doesn't need to be downloaded at runtime.
  • Improved the IPC authentication between desktop and agent processes.
  • Reimplemented auto-reconnect when the viewer loses connection during remote control (e.g. when logging into Windows).
  • Fixed the screen redraw when switching back to Remote Control from another tool.
  • New Server Alert function for server admins.
  • Reworked auto-update so it no longer requires Cloudflare's cache to be bypassed.
    • Pre-existing agents will still need it bypassed to upgrade from 0.14.x to 0.15.x, but it won't be needed afterward.
  • You can now pan while pinch-zooming on mobile.
  • Improved support for non-US keyboard layouts (though testing so far has been limited).
  • Fixed bug in remote control's display canvas caused by undisposed event handler registrations.
  • Screen is now kept awake during remote control sessions.

Installation

See the readme for instructions on running in Docker.

Commits:

  • 59ae473 Update sponsors logo.
  • 5db3b8e Revert test value.
  • 2fc11a8 Add contrast text resources to Avalonia.
  • 20597e8 Update readme.
  • bbfd8b7 Update screenshots.
  • 8641f1e Fix ChatTitle binding.
  • 970673e Auto-close PRs (for now). (#7)
  • b7abe30 Add ViewerName to ChatSession and improve message change handling
  • 590b997 Refactor ChatSession in DesktopClient.
  • 1662c5e Update Welcome.razor
See More
  • c898c52 Update Welcome.razor
  • 6f480e9 Move GetServerStats to controller. (#6)
  • e7adf18 Implement IAppEnvironment interface for environment detection and update RemoteDisplay and JsInteropableComponent for improved touch handling and JS module import.
  • db0182f Update test.yml
  • 66e5932 Add forceKeyFrame parameter to CaptureDisplay method for full frame captures
  • 2b1cc48 Wait until after first render to request key frame.
  • 1e8c590 Add missing MessagePackObject attribute.
  • ce2aed0 Detect and shut down duplicate DesktopClients on Windows.
  • b877e09 Implement keyboard state reset for X11 and macOS; enhance key tracking in RemoteDisplay
  • 49125b5 Track modifier key state.
  • 31b38f4 Refactor SKRect and Rectangle conversions in SkiaSharpExtensions and update DesktopCapturer and ImageUtility to use SKRect for improved consistency
  • d2f64fe Remove unused IDesktopClientUpdater dependency and enhance update check with cancellation token support
  • d8c625f Merge branch 'main' of github.com:bitbound/ControlR-Private
  • 8738a12 Refactor AgentHeartbeatTimer and related services for improved heartbeat management and connection handling
  • a35aa10 Default to Dark theme on Windows (#4)
  • 6c1057e Update GetFrameDirtyRects for API changes.
  • a3f77c6 Remove TokenUiAccess.
  • f1b4233 Update packages.
  • 13e5f82 Rework input simulation. (#3)
  • f100869 Update AGENTS.md
  • 5fa682e Reimplement dispose is RemoteDisplay's js, using mutation observer.
  • f4180d9 Rework theme and apply it to DesktopClient. (#2)
  • c1fa013 Update icns path.
  • 975a8d2 Merged PR 39: Refactor input simulation to consider both KeyboardEvent.key and KeyboardEvent.code.
  • e6cd498 Merge pull request #1 from bitbound/claude/design-welcome-component-011CUqhFUe6FSpoXV24XzQya
  • 002f351 Adjust welcome screen and connection indicator.
  • ca79976 Move CSS to component-scoped file
  • b45ef47 Enhance Welcome.razor component with modern design
  • e4353b6 Rename icons in wwwroot.
  • 5dce1ef Remove "sendKeyPress" js interop method. No longer needed.
  • d664d64 Update demo server url.
  • d3d009e Merged PR 38: Create new theme and dark/light toggle.
  • d221e92 Add LoggedInUserProvider.
  • 0dff950 Refactor: Replace duplicate logic for retrieving logged-in users with ILoggedInUserProvider across services. Add ILoggedInUserProvider dependency injection where necessary.
  • 899e62a Enhance session handling in DesktopClientWatcherLinux to ignore closing and display manager sessions
  • 86bbac3 Merged PR 37: Add the ability to create a server-wide alert banner.
  • 01a38c6 Rework VIewrHub.
  • 3378da2 Change license from GPLv3 to AGPLv3
  • 389674d Extract IDesktopClientFileVerifier.
  • d96636b Refactor IpcClientAuthenticatorTests to use consistent mock variable names
  • 045485e Fix constructor params in test.
  • f2c638f Merged PR 36: Add IPC client authentication mechanisms.
  • 7566fb1 Allow 2 parallel SignalR messages per client.
  • adfc463 Merged PR 35: Re-implement automatic viewer reconnects.
  • a396817 Observe cancellation tokens.
  • 2530b2a Fix task return.
  • 20460ba Merged PR 34: Modify agent update to avoid need for Cloudflare cache bypass.
  • 3b15f25 Move Copilot instrucitons to AGENTS.md
  • 13b32dd Refactor.
  • 81e339b Add controlr-network back in for deterministic gateway IP to add to ControlR options.
  • 1a99e30 Add screen wake lock on the browser during remote control.
  • b1d9871 Toggle fullscreen on whole document so popovers are visible.
  • 085424f Zoom out when pinch-zoom transitions from scaled to original.
  • 8b6cb86 Merged PR 33: Extract DeviceAccessHub from ViewerHub to separate SignalR connections.
  • d73fc39 Refactor image utility calculations for clarity; add MaybeDisposable extension for conditional disposal management.

This list of changes was auto generated.

v0.14.88.0 Release

14 Oct 11:22

Choose a tag to compare

Installation

See the readme for instructions on running in Docker.

Changes:

  • Fixed the incorrect calculation of file upload progress.

Commits:

  • 6d563e6 Merged PR 32: Fix file upload calculation.
  • 037cb84 Update docker gateway ip in docker-compose.

This list of changes was auto generated.

v0.14.83.0 Release

12 Oct 00:29

Choose a tag to compare

Installation

See the readme for instructions on running in Docker.

BREAKING CHANGE:

The mount location changed for the latest release of postgres. This has been reflected in ControlR's docker-compose file.

Postgres 18 was just recently released, and is now the pinned version in ControlR. You will need to migrate your database to use version 18, or you can continue using version 17 by replacing latest with 17 for the postgres image tag in your ControlR compose file.

Please see these notes on the Postgres image readme.

Changes:

  • Added end-to-end streaming for file transfers to minimize buffering on the server.
  • Added new file upload UI.
  • Added an "up one level" button to the file manager.
  • Added support for concurrent uploads and downloads.
  • Added Content-Length header for downloads so browser will show total size and progress %.
  • Added --device-id as an optional parameter for the install command.
  • Fixed encoding of Content-Disposition header for file downloads from the file manager.
  • Pinned the Postgres image at v18.
image

Commits:

  • 2ecb149 Add important notes to Deploy page.
  • a5b9b30 Update README to reflect demo server URL
  • dbc8e23 Add to global usings.
  • 8aec516 Use ContentDispositionHeaderValue.SetHttpFileName for setting the header for file downloads.
  • 311a205 Merged PR 31: Improve file manager experience.
  • 7eb3ec6 Refactor file transfer and display management logic
  • 82778bb Refactor variable names for clarity and improve error messaging
  • db1795f Refactor display-related classes and improve code readability
  • 704bccc Update excluded drive prefixes to remove trailing slashes
  • a141f2d Change test configuration from Release_Windows to Release

This list of changes was auto generated.

v0.14.61.0 Release

27 Sep 23:11

Choose a tag to compare

Installation

See the readme for instructions on running in Docker.

Changes:

  • Added remote control support for Ubuntu/Mint running X11 (Wayland not yet supported)
  • Screen capturing refactoring and slight performance improvements
  • More state on the remote control page has been added to singleton state store, allowing state to persist between page navigations
brave_sJ6G7S1gmp.mp4

Commits:

  • ce3604c Merged PR 30: Refactor metrics.
  • 7b27c05 Merged PR 29: Add remote control for X11 on Ubuntu.
  • dea93f5 Merged PR 28: Refactor screen capturing APIs.
  • 9747ecb Cleanup.
  • d030ada Add DesktopUiProcessId to ChatResponseHubDto and ChatResponseIpcDto; update related classes for process ID handling
  • 0902866 Refactor chat response handling to return success status and improve logging. Update FileSystem component css.

This list of changes was auto generated.

v0.14.3.0 Release

06 Sep 17:37

Choose a tag to compare

Installation

See the readme for instructions on running in Docker.

Fixes:

  • Fixed a bug with file system navigation file the data grid.

Changes:

  • 1bafdf4 Refactor directory navigation from data grid.

This list of changes was auto generated.

v0.14.2.0 Release

01 Sep 22:49

Choose a tag to compare

Installation

See the readme for instructions on running in Docker.

Fixes:

  • Fixed an issue where concurrent chat sessions were failing to open a new window on the desktop side.

Changes:

  • 1e56b29 Fix chat session ID population.

This list of changes was auto generated.

v0.14.1.0 Release

31 Aug 23:55

Choose a tag to compare

Installation

See the readme for instructions on running in Docker.

Changes

New Device Access Page

Remote control and remote access features now pop out into a new tab, with a new layout focused on that individual device. This was implemented to support new tools and the ability to integrate with other solutions.

overview

Desktop UI

A desktop UI app has been added, which will appear as a system tray icon in each user session. This UI was required to support native macOS remote control (shown below) and chat. Toast notifications have also been implemented in it.

It's built with AvaloniaUI and supports localization.

This required changing some communication patterns on Windows as well.

explorer_H8aq87dYqq

Native macOS Remote Control

Native remote control has been implemented on macOS. Accessibility and Screen Recording permissions are required, and each user will be prompted to enable them on first run.

The app is signed with an ad-hoc certificate, and security settings may prevent it from running on some systems. It's unlikely that I'll pay for a developer account/certificate, so this probably won't change.

Currently, a user must log in before remote control will work. This may or may not change in the future. I'm not sure if I'll be able to get it to work with an ad-hoc certificate.

mac-permissions-ui.mp4

Chat

Basic chat functionality has been implemented. Like remote control sessions, you're able to select which OS session you want to target on the remote computer.

chat.mp4

Remote File Manager

A remote file manager has been implemented.

image

Personal Access Tokens and API Spec

You can now create Personal Access Tokens (PATs) for use with integrations, automation, scripts, and such.

The OpenAPI spec is now published with each release (ControlR.Web.Server.json in the below Assets). This file can be used to automatically generate clients in any language.

pat-creation.mp4

Desktop Preview

You can now get a preview image of the desktop before deciding whether or not to start remote control.

desktop-preview.mp4

Tenant-Level Settings

There's now a page for enforcing settings at the tenant level. Currently, the only option is to enforce whether or not the remote user is notified at the start of remote control sessions.

image

Logon Tokens

Logon tokens, which can be acquired using the above PATs, are single-use, time-limited tokens that can be used to authenticate a browser session to access a single device.

Below is an example of using logon tokens to integrate with Remote Desktop Manager.

FeETKBqjz7.mp4

Blazor Auto Rendering

ControlR uses a .NET UI framework called Blazor. It's capable of rendering either server-side only (which was the case with Remotely), client-side only (via WebAssembly), or dynamically selecting one (called Auto mode). Since the WebAssembly bundle can be large compared to other frameworks like React or Vue, the first load can take too long on a slow connection. After the initial download, though, the resources are cached and will load quickly on subsequent visits.

This is where Auto comes in. On that first load, it will see that the WebAssembly resources haven't been downloaded yet, and it will automatically switch to server-side rendering. This results in an instant load on the first visit. While using the app via server-side rendering, the WebAssembly bundle will download in the background.

Once downloaded, the next full page refresh will cause the app to switch over to WebAssembly.

ControlR was previously only using WebAssembly and would present a "Loading" indicator until the WebAssembly bundle was fully downloaded. Now it uses Auto mode. You'll see a different-colored connection icon and tooltip when it's using server-side rendering.

image

Testing Utilities

New unit and functional test helpers have been added under \Tests\ControlR.Web.Server.Tests\Helpers\.

Commits:

  • 81d1bfd Don't allow tenant admin role to supercede logon token device scope.
  • 0338173 Update readme.
  • 78167a7 Add new Blazor WebAssembly debug configurations and update render mode in development settings
  • 9569dc4 fix: Correct icon reference and update file system row click handling to navigate on selection
  • 29969cd feat: Update file system grid row click handling and improve logging
  • 8d4e192 Use Win32Interop to get username for chats on Windows.
  • 62c35bd feat: Implement directory creation and path validation features
  • 7da8559 Add explicit file name to DownloadFile.
  • 3a60a1d Only call BuildAvaloniaApp once per process.
  • 6377cde Enhance path normalization logic for cross-platform compatibility
See More
  • 6171585 Change log file share option.
  • d3725af Cleanup.
  • 7914dd8 Adjust layout of dialogs.
  • fb000a2 Move string to Localization.
  • 6fc8312 Show "You" on desktop side of sent messages.
  • 105752e Add DeepWiki badge.
  • 3490438 Harden logon token authentication with additional time and scope restrictions.
  • fffaf8e Fix controller name.
  • a0c6331 Add search functionality to file system component
  • cac3c24 Separate TestApp and TestServer for clarity.
  • 7bbde34 Remove extra render.
  • 2207102 Adjust root drives returned.
  • 9e06675 Add support for client-to-server streaming in IInvocationHandler and ProxyInvocationHandler
  • 0bf4999 Checkpoint on file system streaming methods.
  • 2a63123 Cleanup.
  • 0458e62 Cleanup.
  • cf4abe8 Add Pager.
  • 2e44041 Cleanup.
  • 2b3ebce Update default.yml
  • 3c91a1a Refactor chat state management and enhance IPC handling; update build command in CI pipeline
  • fdaaea6 Add license expression to NuGet package.
  • 3450272 Upload API client NuGet.
  • be1969d Add API client project.
  • be167d0 Merged PR 27: Implement file manager.
  • f06505c Use file system abstraction.
  • 058bda6 Prompt for file overwrite.
  • cf22759 Add ability to create directories.
  • 8eba7a8 Upload, download, and delete working.
  • 0e45c53 Checkpoint.
  • 6bed99d Add file operations.
  • 5401bf2 Fix overflow.
  • 5316f45 Add navigation via grid row click.
  • e18ee95 Add navigation bar.
  • 04ff97a Make tree view resizable.
  • c512264 Cleanup.
  • 1957c35 Refactor node expansion.
  • d22d41c Checkpoint.
  • b080ec9 Add Page.
  • cf6af35 Merged PR 26: Add desktop preview feature.
  • ba542e6 Finish desktop preview.
  • 84f06f0 Checkpoint.
  • 8682a13 Checkpoint.
  • 28ad2a1 Checkpoint.
  • 4735a53 Checkpoint.
  • f868fb6 Merged PR 25: Implement chat.
  • 262e8b7 Fix chat window styling.
  • dab9043 WIP on Chat UI.
  • 6e32241 End-to-end chat messages working.
  • 994cd31 Create StateBase and ChatState.
  • 9a6c526 Improve toaster.
  • 8c9c98a Add localization support in desktopclient common.
  • dd6e857 WIP on chat UI.
  • 4c93604 WIP on chat UI.
  • 2b1a3ed...
Read more