github bitbound/ControlR v0.14.1.0
v0.14.1.0 Release

latest releases: v0.19.2.0, v0.18.22.0, v0.17.20.0...
5 months ago

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 WIP on chat UI.
  • 7b5ba81 Update tasks.json
  • b043eb1 WIP on chat UI.
  • 6dc15fe Add User ID display and copy functionality to Settings page
  • 21864f0 Refactor IPC chat response handling and accessor
  • 6527f7c First pass.
  • 6f38916 Update Icons.axaml
  • 2a2c068 Update NavMenu.razor
  • 0b5847b Merged PR 24: Implement single-use logon tokens.
  • 9655ea9 Add Create method to UserController. Add tests.
  • 44ea3c9 Add migrations. Refactor nav menu and PAT page. Integrate PAT with SignInManager.
  • c054521 All tests passing.
  • 613effe Add UserManager to PAT tests.
  • d893aad WIP
  • 835989b Change API Keys UI to Personal Access Tokens.
  • ae1d370 WIP
  • e4fe857 End-to-end tests working.
  • 5feaf84 Update LogonTokenProviderTests.cs
  • 1d1d610 WIP.
  • 3587ae2 Refactor cleanup service.
  • 82ec086 WIP
  • 58b455d WIP on logon controller tests
  • 932d55b Add Microsoft.AspNetCore.Mvc.Testing package.
  • a6e0fad Initial pass at Logon Tokens.
  • 09edb87 Merged PR 23: Add Tenant Settings.
  • b12f324 Change server-side rendering to info color.
  • e784257 Revert mac updater change.
  • c5437f9 Apply tenant settings to remote control request in ViewerHub.
  • 140beeb Update copilot-instructions.md
  • 6d90ca0 Add local IP addresses.
  • 330e637 Refactor update check.
  • b8f3303 Add tenant settings. Add ability to override "notify user" at the tenant level.
  • ee57022 Initial.
  • 490a6ea Merged PR 22: Implement Blazor auto rendering mode.
  • 6b50ee8 Add info for api keys.
  • 0971545 Fix rendering of identity pages.
  • e9bc234 Remove the need for LazyDi. Customize reconnect dialog.
  • 3577220 Implement Blazor Auto.
  • 212afbf Merged PR 21: Implement API keys.
  • ba1a714 Refactor conventions. Add API keys migration.
  • 94cf266 Add EntityBaseConvention
  • d92cbc5 Add device id to all device-access pages.
  • 8880d13 Add API Keys migration. Add custom authn scheme.
  • d3aa7e0 Cleanup.
  • 84e715c Refactor DevicesControllerTests to streamline tenant and user creation; replace manual tenant/user setup with test app helper methods
  • 30d2d1f Refactor authentication and test setup to use UserClaimTypes for TenantId; streamline tenant creation in tests
  • 7aa3658 First pass.
  • 2510297 Merged PR 20: Create separate layout for device access.
  • 0e47fca Merged PR 19: Add remote control for Mac.
  • f01840b Remove background session feature.
  • d07d8ca Update package references to latest versions across multiple projects
  • 14645c1 Merged PR 18: Add background session feature.

This list of changes was auto generated.

Don't miss a new ControlR release

NewReleases is sending notifications on new releases.