Commit Graph

158 Commits

Author SHA1 Message Date
UNITRONIX 26038176eb feat(desktop): add native BetterDesk Desktop core and release path
Introduce the independent Rust + Flutter desktop client with CDAP/RustDesk
session support, packaging via build.py, and tag-triggered Windows/Linux
release artifacts. Align server CDAP desktop interop (view_only, desktop_end,
capabilities), protocol docs, pre-release checklist, version bump rules, and
WAN allowlist for /api/health and /api/server/pubkey.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-20 11:08:29 +02:00
UNITRONIX 100f697260 fix(runtime): pin console to Node 22 during Node 24 regression
Pin production console images and new bare-metal installs to the latest Node 22 LTS patch while the Node 24 cleanup-hook backport is released and validated. Keep better-sqlite3 13.x and avoid a risky statement-lifecycle refactor.

Refs #377

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-19 10:51:00 +02:00
UNITRONIX 7f7479fb88 feat(docker): support PUID/PGID for container app user
Remap betterdesk at entrypoint start so Synology/NAS bind mounts can
match host ownership without Compose user: overrides.

Refs #376

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-19 10:28:39 +02:00
UNITRONIX 628d63328d fix(enrollment): queue viewer-only mobiles in managed mode
Refs #375

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-16 19:39:43 +02:00
UNITRONIX 6677cd6132 fix(installer): clone matching branch from one-line install
Refs #371

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-16 10:20:19 +02:00
UNITRONIX 34ef01e17d fix(security): harden TLS defaults, device auth, and update privileges
Require stricter client/server TLS options, centralize device auth on agent APIs, constrain Linux privileged update helpers, and harden filebrowser path checks with supporting audit notes.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-15 23:28:03 +02:00
UNITRONIX 29d03492fb fix(installer): harden cross-platform lifecycle reliability
Harden native, agent and Docker lifecycle paths with tracked update verification, rollback and preflight checks, safe uninstall semantics, and health verification. Add shared protocol tests, installer CI gates, and lifecycle documentation.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-15 21:50:47 +02:00
UNITRONIX 88d84e8c65 fix(keys): encode RustDesk config QR as reversed deploy string
Match rustdesk://config/ path to Copy deploy string so ServerConfig.decode accepts the QR (#368). Also align MFA otpauth URI with Go (issuer BetterDesk, 20-byte secret) and document Android 1.4.9 deep-link fallback in UI hints.

Refs #368

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-14 06:52:41 +02:00
UNITRONIX 898fcf7b88 feat(org): encrypted peer credential vault for shared address book
Store unattended presets AES-256-GCM in org_peer_credentials (main DB),
admin Set/Clear in Organizations Address Book, runtime inject into
GET /api/ab and Web Remote connect-password auto-fill. Secrets never
persist in shared AB JSON.

Refs #367

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-10 22:18:39 +02:00
UNITRONIX 7394c3d37a feat(agent): enhance Support Agent with Wails UI and multi-codec support
- Added support for Wails as the default GUI, allowing for a branded HTML shell while maintaining legacy Fyne UI behind a build tag.
- Implemented multi-codec negotiation for remote desktop sessions, enabling the selection of codecs such as VP8, VP9, AV1, H264, and H265 based on hardware capabilities.
- Updated build scripts to facilitate the new UI and codec features, ensuring proper functionality across platforms.
- Fixed issues with console visibility during desktop capture and improved error handling for missing OpenGL dependencies.
2026-08-09 20:58:39 +02:00
UNITRONIX c9f7ae5006 fix(agent): hide console windows for PowerShell commands and improve GDI screenshot capture
- Updated PowerShell command invocations to use `-WindowStyle Hidden` to prevent visible console windows during clipboard operations and other commands.
- Implemented GDI-based screenshot capture to eliminate the need for PowerShell, reducing console window spamming during desktop capture.
- Enhanced error handling for missing OpenGL DLLs and ensured complete Mesa DLL set is shipped with the agent to prevent startup issues.
- Updated build scripts to ensure proper installation of required tools and dependencies for Windows builds.
2026-08-09 20:44:12 +02:00
UNITRONIX 1bc16efe8f fix(agent): enhance Support Agent profile handling and branding backup
- Implemented logic to reissue incomplete or expired signed Support Agent profiles during rebuilds, preventing operators from getting stuck in retry loops.
- Updated `build.sh` to handle the absence of `branding.pub` more gracefully, ensuring it doesn't fail on fresh workspaces.
- Refactored branding functions to utilize a dedicated support profile service, improving code organization and maintainability.
- Added tests to verify the correct behavior of version injection and support profile validity checks.
2026-08-06 21:08:42 +02:00
UNITRONIX f06fb597e1 fix(console): share SQLite handle and bump better-sqlite3 for Node 24 (#353)
Avoid parallel better-sqlite3 connections that race N-API cleanup hooks after event-bus connect; defer build workers until listen settles.
2026-08-06 01:17:04 +02:00
UNITRONIX ed96e94806 refactor(agent): enhance session management and input handling
- Updated session control mechanisms to ensure proper handling of remote input and clipboard operations.
- Introduced session authorization checks to validate operator permissions before starting desktop sessions.
- Improved input injection logic to prevent unauthorized access during active sessions.
- Added new capabilities for managing session flags and controls, ensuring a more robust and secure desktop experience.
- Enhanced error handling and logging for better traceability of session-related actions.
2026-08-06 00:50:02 +02:00
UNITRONIX 1b240543bd feat(auth): implement SQLite auth consolidation and admin password validation
- Added functionality for safely consolidating legacy auth.db into the selected SQLite database, with options for dry runs and rollbacks.
- Introduced command-line flags for SQLite auth consolidation, including backup directory and rollback options.
- Enhanced admin interface security by requiring a password when the admin port is enabled, preventing unauthorized access.
- Updated related tests to ensure proper handling of admin password requirements and relay authorization logic.
2026-08-05 23:49:42 +02:00
UNITRONIX 667664cd47 fix(peer): implement FindAllByIP for outbound initiator authorization
Add FindAllByIP method to retrieve all peers sharing the same public IP, enabling safe fallback for authorization when exact ip:port is unavailable. Update related logic in requireAuthorizedInitiator to handle single live peer scenarios and prevent identity inheritance in ambiguous cases. Adjust tests to cover new functionality and edge cases.
2026-08-05 22:42:22 +02:00
UNITRONIX cace557dfc fix(signal): block same-NAT pending outbound initiator impersonation
Authorize PunchHole/RequestRelay by exact ip:port, TCP session, token, or panel proxy — not bare FindByIP — so unapproved enrollment clients cannot inherit an approved peer identity. Refs #302
2026-08-03 23:15:22 +02:00
UNITRONIX 992ba235f7 feat: enhance Support Agent capabilities and documentation
- Added support for various remote control features in the Support Agent, including file transfer, in-session chat, remote audio, and control actions (lock/restart).
- Introduced capability flags for incoming session features, allowing for more granular control over permissions.
- Updated documentation to reflect the new Support Agent functionalities and connection resilience improvements, including fallback mechanisms for API endpoints.
- Enhanced the build process with optional branding sealing and improved error handling for Docker configurations.
2026-08-03 06:47:22 +02:00
UNITRONIX 9e9230b467 docs: update CHANGELOG for Help panel overhaul and tutorial removal
The Help panel now replaces guided tours with a right-side panel displaying project supporters and GitHub sponsorship links. The previous tutorial features, including spotlight tutorials and the floating help FAB, have been removed. Additionally, updates to the sponsors update process and relevant documentation have been made to reflect these changes.
2026-08-01 23:58:15 +02:00
UNITRONIX ec5b7f7d1f fix: update UX 3.5 topbar to be theme-invariant
The topbar now maintains a consistent dark chrome appearance regardless of the selected light or dark theme. This change ensures better readability and user experience across themes. Adjustments made in CSS and related documentation to reflect this behavior.
2026-08-01 23:32:59 +02:00
UNITRONIX e1fbed1762 docs: clarify BetterDesk login does not bypass peer password (#285)
Correct Access Policy / device-group docs so operators know AB ACL is visibility-only; unattended access still needs a target permanent password.
2026-08-01 21:53:18 +02:00
UNITRONIX 6ce1cc3747 docs: clarify desktop WebSocket Mode vs server WS-only (#344)
Add operator checklist, hostname split, and verify steps so reporters are not pointed at 3.4.2 for desktop WSS-only.
2026-08-01 21:45:39 +02:00
UNITRONIX 49a84e10af Merge origin/main into release/3.5.4-hotfix 2026-08-01 16:56:23 +02:00
UNITRONIX 1408f904f3 fix(security): Address Book ACL filter and legacy role CHECK migration (#342)
Restrict GET /api/ab peers/tags to device-group scope and migrate upgraded
SQLite users tables off the pre-Phase-52 role CHECK so console sync works.
Refs #342.
2026-08-01 16:53:18 +02:00
UNITRONIX abe0d52fe4 chore: refresh EOL runtimes and patch non-agent dependencies
Move Docker/CI/installers to Node 24 and Go 1.26 images, bump Alpine server runtime, apply safe npm/Go patch updates, migrate SNMP to pysnmp, and document deferred majors.
2026-08-01 09:19:42 +02:00
UNITRONIX 28893f8117 fix(mesh): emit stable 96-hex MeshID in download.msh (Fixes #336)
Replace the hardcoded 40-char MeshID placeholder with a persisted per-group SHA-384 id so MeshAgent no longer fails with bad size on panel-downloaded .msh files.
2026-07-31 22:11:55 +02:00
UNITRONIX 8956ec653d feat(console): label optional UX 3.5 shell switch as Beta
Keep classic as the default production chrome. Mark the opt-in switcher
with a BETA badge/tooltip and show a topbar chip while UX 3.5 is active.
2026-07-31 20:12:42 +02:00
UNITRONIX 6a1806b8f3 chore: sync main 3.4.3 into dev (#302 enrollment hardening)
Bring stable signal outbound gate hardening (initiator_pending_enrollment),
Web Remote SignedId verify, and open-issue hotfixes onto dev while keeping
the 3.4.13 development version baseline.
2026-07-31 19:48:44 +02:00
UNITRONIX 7ff1222b94 docs(proxy): clarify Web Remote vs native WSS paths (Refs #329)
Never route /ws/rendezvous to Go :21118; document /ws/relay collision and Close 1000 framing mismatch.
2026-07-31 07:05:36 +02:00
UNITRONIX 0189bcb25f fix(auth,signal): OIDC user.info, viewer-only outbound, Docker channel UX
RustDesk 1.4.x ignored OIDC auth-query success without user.info (#326).
TCP RegisterPk IP bind + client login token restore service-off outbound
without weakening managed pending rejection (#327/#302). Document Caddy
WSS/308 and clarify GHCR channel is image-tag based (#294/#299).

Refs #302 #304 #314 #315 #319 #320 #321 #323 #325 #326 #327 #294 #299
2026-07-30 19:10:44 +02:00
UNITRONIX 59e14f7576 fix(mesh): PEM web cert hash and MESH_WEB_CERT_FILE for reverse proxy (Fixes #321)
MeshAgent behind TLS-terminating proxies was rejected with bad web cert hash when Go hashed TLS_CERT incorrectly (raw PEM) or used an internal cert instead of the public LE cert agents see.
2026-07-29 19:15:23 +02:00
UNITRONIX a749827ae0 fix(signal): restore Web Remote after enrollment outbound gate (Refs #313)
Accept PunchHole/RequestRelay from PANEL_SIGNAL_PROXY_CIDRS (default loopback) so panel-proxied Web Remote works again without weakening #302.
2026-07-28 06:46:17 +02:00
UNITRONIX 2e3ec3dd9a Refine UX 3.5 shell performance and styling
- Transitioned to solid surfaces in UX 3.5, disabling glass/blur effects for improved performance.
- Enhanced sidebar resizing with pointer capture and requestAnimationFrame for smoother interactions.
- Fixed sidebar font jumping in Settings/Updates and reduced theme toggle lag for immediate application.
- Updated documentation to reflect changes in UX 3.5 behavior and styling adjustments.
2026-07-26 21:56:55 +02:00
UNITRONIX 93ed72fa10 Enhance UX 3.5 shell performance with smoother sidebar resizing and improved overlay behavior
- Implemented pointer capture and requestAnimationFrame for smoother sidebar resizing.
- Disabled glass blur during drag-resize to enhance performance.
- Updated sidebar and drawer overlay styles for better visibility and interaction.
- Improved documentation to reflect changes in sidebar behavior and performance optimizations.
2026-07-26 21:41:41 +02:00
UNITRONIX fbcc93dd77 fix(signal): restore Web Remote after enrollment outbound gate
Accept PunchHole/RequestRelay from PANEL_SIGNAL_PROXY_CIDRS (default loopback) so panel-proxied Web Remote works again without weakening #302. Also default Docker AIO NTP/billing env vars (#299).

Refs #302
2026-07-26 19:53:55 +02:00
UNITRONIX 206b988a75 Add FreeBSD Tier 3 community notes and example rc.d scripts.
Document manual build path for #310 without claiming installer or CI binary support.
2026-07-26 10:37:28 +02:00
UNITRONIX ae46c69e66 feat(ux): reintroduce classic UI alongside optional UX 3.5 shell
- Default console shell is now the classic icon rail + flyout, with UX 3.5 available via navbar switch.
- Fixed visibility issues in UX 3.5, ensuring main content is displayed correctly under branding wallpaper.
- Updated documentation to reflect changes in UI shell options and theme management.
- Enhanced language support for new UI shell switch options across multiple languages.

This update improves user experience by providing a choice between classic and modern UI shells.
2026-07-26 10:16:51 +02:00
UNITRONIX 393b86b858 fix(ux): resolve branding wallpaper visibility issues in UX 3.5
- Adjusted z-index properties for the console shell and main content to ensure visibility over the branding wallpaper.
- Updated CSS to maintain proper stacking context, preventing text from being obscured by the wallpaper.
- Enhanced documentation to clarify changes related to stacking and branding wallpaper behavior.

This update addresses user feedback regarding visibility issues in the UX 3.5 interface.
2026-07-26 10:14:21 +02:00
UNITRONIX 261a7fcd78 fix(ux): resolve light theme issues and enhance theme management
- Fixed light theme to correctly apply the blue topbar and ensure text colors are consistent with the selected theme.
- Updated theme management to persist the selected theme and its corresponding palette across sessions.
- Enhanced documentation to clarify theme color mappings and behavior.
- Introduced built-in theme palettes for light and dark modes to streamline theme application.
- Improved CSS variable handling for better theme integration in the UI.

This update addresses user feedback regarding theme inconsistencies and improves overall theme functionality.
2026-07-26 10:09:54 +02:00
UNITRONIX cbf72ca1e3 feat(ux): introduce UX 3.5 with new console shell and theme options
- Added UX 3.5 as the default console shell, featuring a full-list sidebar, topbar, and customizable themes (Dark/Light/Custom).
- Updated documentation to reflect the new UX 3.5 shell.
- Removed legacy Desktop Mode and Beta 3.1 styles, ensuring a streamlined user experience.
- Enhanced language support for new theme options across multiple languages.
- Fixed OIDC client login issues by proxying callback URLs to the Go API.

This update improves the overall user interface and experience, aligning with modern design standards.
2026-07-26 09:54:46 +02:00
UNITRONIX 59b3f93d46 fix(oidc): proxy panel callback so RustDesk SSO leaves Waiting (#304)
Panel Redirect URLs on :5000/:5443 used to 404, so auth-query never completed. Proxy the callback to Go, validate the path in Settings, and document the fix.
2026-07-25 08:43:16 +02:00
UNITRONIX b476621be8 feat(auth): OIDC login for stock RustDesk desktop clients (#304)
Advertise oidc providers via login-options and add /api/oidc/auth + auth-query, reusing panel IdP config to issue client sessions.
2026-07-24 21:06:08 +02:00
UNITRONIX cdf950130a fix(docker): repair fresh install path for GHCR and single layout (#299)
Sync install.sh image pin with VERSION, fix split DB_PATH/SQLITE_READONLY, resolve AIO container for password reset, and write bootstrap files as betterdesk under cap_drop.
2026-07-24 18:07:20 +02:00
UNITRONIX 8ecfd2a38b fix(signal): block outbound sessions from unapproved initiators
Require a live registered initiator on PunchHole/RequestRelay, and an approved DB peer in managed/locked modes, so pending enrollment cannot bypass quarantine. Refs #302
2026-07-24 07:03:37 +02:00
UNITRONIX 96660c2452 fix(signal): recognize HttpProxyRequest after secure TCP (#296)
Schema stopped at field 26 so field-27 HttpProxyRequest left Union nil and closed the session; reply not-supported instead of opaque unhandled type.
2026-07-22 20:58:24 +02:00
UNITRONIX 088109612d fix(oidc): resolve IdP authorize URL server-side (#298)
Stop browser-redirecting SSO to internal BETTERDESK_API_URL (localhost).
2026-07-22 17:58:27 +02:00
UNITRONIX 8cf8350629 fix(security): harden WSS proxy trust and exact-key initiator delivery (Refs #276)
Require TRUSTED_PROXIES before honoring X-Forwarded headers, and deliver async PunchHole/RelayResponse via ip:port wsPunchConns so shared-NAT peers do not get the wrong signed PK.
2026-07-22 06:46:57 +02:00
UNITRONIX 04160cc4b2 fix(relay): reject mixed WSS and native TCP relay sessions (#290)
Prevent framing desync crashes by refusing WebSocket↔native pairs at relay
pairing and returning a clear Protocol mismatch RefuseReason from signal.
2026-07-21 17:45:04 +02:00
UNITRONIX 0b82160592 fix(console): persist Public Client Endpoints across Docker recreate (#291)
Store PUBLIC_* on the console-data volume so panel settings survive compose recreate; keep Compose env override and .env mirror for IaC and bare-metal.
2026-07-21 17:32:43 +02:00
UNITRONIX 9d8354188a fix(auth): improve LDAP UX and SQLite password backfill (Refs #260)
Copy panel password hashes into missing Go users on SQLite dual-DB so RustDesk client login matches the console; clarify LDAP sub-tab discoverability and provider-bound hints.
2026-07-20 23:44:58 +02:00