Commit Graph

209 Commits

Author SHA1 Message Date
UNITRONIX 602c4e798b fix(docker): preserve secrets on hardened bind mounts
Refs #424

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-26 03:02:17 +02:00
UNITRONIX ee913ea910 fix(docker): serialize split admin bootstrap
Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-26 02:25:51 +02:00
UNITRONIX cd0ba866c0 fix(ui): optimize responsive Settings navigation
Align Settings tab density and header spacing with the UX 3.5 mobile shell through 1024px. Add UI contracts for sticky behavior, horizontal scrolling, compact breakpoints, and hash tab scrolling.

Refs #396

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-26 02:16:06 +02:00
UNITRONIX 5fd8ed9082 feat(attestation): customize server badge labels
Add persistent Server Attestation badge title and tier labels with branding-aware rendering, localized fallbacks, and protected configuration endpoints. Include validation, public display sanitization, UI controls, and regression tests.\n\nRefs #394\n\nThanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-25 10:59:44 +02:00
UNITRONIX 856002d389 fix(split-docker): unlock connection strategy settings
Allow the split console to read and write the P2P, relay, NAT, and initiator policy through the Go server's shared database API. Apply validated changes atomically at runtime, keep native systemd and compose paths unchanged, and cover the flow with regression tests and Docker image checks.

Refs #432

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-25 00:04:22 +02:00
UNITRONIX 1ad08cfe6f fix(ui): allow LDAP/OIDC user group assignment
Refs #436

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-24 23:35:17 +02:00
UNITRONIX 49efd640c1 fix(web-remote): prevent mobile canvas flicker
Avoid resetting the canvas during visual viewport scroll events and only resize when the rendered viewport dimensions actually change. This prevents transient black bars while interacting with the remote desktop on tablets.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-24 23:30:09 +02:00
UNITRONIX e7e1bf31f0 fix(relay): preserve empty RustDesk raw frames
Accept valid zero-length BytesCodec frames in the Node and Go raw relay paths while continuing to reject empty protobuf control frames. This keeps native and mixed relay transports compatible with RustDesk peers and empty raw payloads.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-24 22:48:02 +02:00
UNITRONIX 717630d26c fix(web-remote): auto-tune mobile RDClient sessions
Add automatic mobile codec, FPS, touch, lifecycle, and relay diagnostics while preserving the HTTP H.264 fallback. Avoid opening file-transfer relays during the initial session and document the HTTPS/HTTP behavior.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-24 22:36:49 +02:00
UNITRONIX d514ffc18b feat(devices): queue reversible desktop connection mode
Operators can switch a BetterDesk Desktop client between normal and incoming-only. The command is stored per device and delivered only inside the signed telemetry envelope.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-22 08:40:08 +02:00
UNITRONIX e1bd92a7e4 fix(docker): hot-reload billing clock settings in split deployments
Persist panel-managed NTP settings in the Go server database and apply them without requiring systemd or host Docker access in split image deployments. Keep native restart behavior and make failed restart transactions dismissible in the UI.

Refs #431

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-20 17:26:32 +02:00
UNITRONIX 854d291c3c Complete BetterDesk Support generator workflow 2026-09-19 18:53:19 +02:00
UNITRONIX 6339e11ac9 fix(ui): remove unsupported appearance icons
Use a supported folder icon and a CSS-only disclosure chevron so the profile header never renders icon names as text.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-19 11:15:22 +02:00
UNITRONIX fd4ba9c5e5 fix(ui): render appearance disclosure icon
Use the self-hosted Material Symbols font for the profile disclosure chevron.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-19 11:09:33 +02:00
UNITRONIX 36da8a112d fix(update): preserve explicit config file extensions
Prevent the console repair scan from turning JSON requires into .json.js download paths.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-19 11:04:49 +02:00
UNITRONIX 76540745e3 feat(settings): simplify appearance configuration
Remove appearance live previews, centralize theme palettes, and standardize the responsive settings layout.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-19 11:00:34 +02:00
UNITRONIX 78edc5eaf4 feat: add BetterDesk management capabilities
Add allowlisted configuration management, permission diagnostics, safe service control, and repair workflows across native and Docker installers. Integrate panel capability checks with broker-backed writes and rollback, and document/test the lifecycle contract.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-18 20:45:57 +02:00
UNITRONIX 0301dc7f0f fix(docker): normalize split server database path
Ensure custom split deployments without an explicit DB_URL use the same absolute volume-backed SQLite path as credential bootstrap. Preserve DB_PATH and PostgreSQL DATABASE_URL overrides, and cover the entrypoint contract with a regression test.

Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-18 20:25:34 +02:00
UNITRONIX 47e3d2ce47 feat(console): coordinate service restarts and login metadata
Coordinate restart-required settings changes through authenticated, reversible transactions and synchronize legacy user last-login timestamps. Include the completed locale updates and restart-flow UI/service changes.

Refs #426

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-18 18:26:42 +02:00
Knienartowicz 30585a8bc7 fix(panel): persist connection mode via privileged systemd drop-in
Panel runs as betterdesk and cannot rewrite /etc/systemd/system/*.service.
Write ALLOW_SHARED_NAT_INITIATOR and related flags through the fixed root
broker into a service.d drop-in so Settings no longer fails with EACCES.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-18 10:29:26 +02:00
Knienartowicz be17b3077e fix(updates): harden Go binary rebuild version and backup path
Prefer console-local VERSION/package.json for ldflags so a stale root-owned
/opt/VERSION cannot pin rebuilt binaries to an old semver. Fall back binary
backups to a writable data dir when /opt/rustdesk denies bak writes (EACCES).

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-18 10:18:35 +02:00
UNITRONIX 01d8037bcd feat(signal): restrict outbound RustDesk sessions
Add opt-in OPERATOR_ONLY_OUTBOUND enforcement for PunchHole and RequestRelay, including live role checks, decision auditing, panel RBAC, settings, documentation, and regression tests.\n\nRefs #425\n\nThanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-17 17:18:50 +02:00
UNITRONIX d03129cf8f feat(security): integrate reviewed contributor fixes on dev
Integrate focused, reviewed contributor fixes on dev: bounded transport framing, live peer-ID rename, explicit enrollment precedence, lazy file-transfer compatibility, focused tests, and provenance/attribution documentation.

Refs #346

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-17 03:44:18 +02:00
UNITRONIX 75a77a368e fix(docker): align auth stores and remove withdrawn agent builds
Make split Compose services use one explicit primary SQLite database and forward admin credentials to both Go and Node.js. Remove Docker and installer CI dependencies on withdrawn agent source trees, and add regression coverage for Docker build contexts and bootstrap mappings.

Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-16 13:09:51 +02:00
UNITRONIX 8f6fb91ea4 fix(panel): address first-testing UX feedback from #424
Make UX 3.5 the only default shell, fix appearance-profile duplication selection, and give authenticated Settings reads their own rate-limit budget so normal console use stops hitting 429s.

Refs #424

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-16 07:10:50 +02:00
UNITRONIX 0161fc5fc8 feat(signal): require login for stock initiators
Implement opt-in account-bound initiation for stock RustDesk clients, including strict token enforcement, panel configuration, tests, documentation, and translations.

Refs #414

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-15 17:32:57 +02:00
UNITRONIX cead414395 fix(updates): build server locally from minimal sources
Remove GitHub prebuilt server binary delivery from panel updates. Fetch only required source subtrees for the selected commit and compile the Go server locally while preserving existing deployment and rollback behavior.

Refs: panel update local build path

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-13 21:59:44 +02:00
UNITRONIX 07c571e038 fix: stabilize BetterDesk heartbeat and device details 2026-09-13 21:38:39 +02:00
UNITRONIX 4207a56ea4 ci: restore dev action checks
Remove stale version-bump paths, eliminate Gitleaks false positives, and update vulnerable console dependencies.\n\nThanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-13 21:37:13 +02:00
UNITRONIX 6f3df2ac5b fix: keep WAN heartbeat stable 2026-09-13 18:17:45 +02:00
UNITRONIX bcc7b4d42c fix: expose public bootstrap routes 2026-09-13 17:36:27 +02:00
UNITRONIX 5d4baad6d1 fix: stabilize BetterDesk API and support installer 2026-09-13 12:54:08 +02:00
UNITRONIX 3cb8549074 fix(updates): make server binary delivery resilient
Retry rejected GitHub artifact credentials safely, fall back to one local Go build, and suppress expected panel reconnect noise during console restarts.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-12 23:19:57 +02:00
UNITRONIX 321dbc1dfe feat: support FPS modes in web sessions 2026-09-12 18:50:06 +02:00
UNITRONIX 32ac37da7b fix(web): enlarge BetterDesk B mark in favicon and logo slots
Default tab icon used thin lines; the PNG mark is letterboxed so the B looked tiny in the rail and browser chrome. Prefer a large B favicon and object-fit cover on icon slots.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-11 15:16:44 +02:00
UNITRONIX 5132061851 Merge branch 'dev' of https://github.com/UNITRONIX/BetterDesk into dev 2026-09-11 12:24:36 +02:00
UNITRONIX 28aed5efbf fix(generator): show leftover download pages so they can be deleted
After the Support Generator migration, older pages stayed reachable at /d/:slug but vanished from the list, so the name stayed reserved. List leftover bundles (including when the ALPHA module is not installed) with revoke/delete only.

Refs #412

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-11 12:24:24 +02:00
Knienartowicz 03c33ed655 fix(rdclient): align web connect with server connection policy
Honor PunchHole Failure=#405 even when relay_server is set; inject /api/health connection snapshot into /remote for timeouts; keep force_relay and bump BetterDesk-Web/1.4.9.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-09 11:47:25 +02:00
UNITRONIX 01aebf597c Replace CDAP Support Agent generator with BetterDesk Support templates
Install Client generator templates from GitHub, inject custom.txt for incoming-only builds, and remove the Go Support Agent pipeline.
2026-09-07 01:29:41 +02:00
UNITRONIX cef2ab7c8e fix(signal): close shared-NAT RelayResponse gaps and add opt-in initiator
Correlate RelayResponse via pending UUID/initiator store and panel CIDRs;
stop FindByIP ticket misdelivery. Opt-in ALLOW_SHARED_NAT_INITIATOR for
stock multi-device CGNAT without peer identity inheritance.

Refs #399

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-09-03 21:25:50 +02:00
UNITRONIX d1e31c0c26 feat(generator): allow custom download portal product label
Operators can override or hide download.product_* on the public
download page via bundle branding without rebuilding installers.

Refs #386

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-29 21:58:03 +02:00
UNITRONIX d4a74350a8 fix(docker): guard against split-volume stale auth.db (#385)
Detect partial volume wipes that leave legacy auth.db in /app/data while
/opt/rustdesk was reset, which broke panel login despite a fresh
.admin_credentials file. Fail fast with a clear error, remove empty orphan
auth.db on fresh installs, and document compose ADMIN_PASSWORD mapping.

Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-25 23:22:06 +02:00
UNITRONIX b3973c4991 fix(docker): make split admin bootstrap atomic
Prevent concurrent Go and console startup from generating mismatched admin passwords, and keep fresh Docker authentication on the centralized SQLite store.

Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-25 02:13:40 +02:00
UNITRONIX 0bfecddd00 fix(docker): sync bootstrap admin password between Go and console (#385)
Fresh Docker installs without ADMIN_PASSWORD generated two different random
passwords: Go wrote /opt/rustdesk/.admin_credentials while the panel
authenticated against auth.db seeded by Node.js. Pre-bootstrap a shared
password in entrypoints before supervisord / server start.

Refs #385

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-24 15:08:35 +02:00
UNITRONIX 780cfb6660 fix(users): implement missing ensureUserGuid for strategy assignment
Refs #384

setUserStrategyAssignment and getUserStrategyGuid called ensureUserGuid in dbAdapter but the helper was never implemented, causing TypeError and generic Server error on every user create/update. Add SQLite and PostgreSQL helpers plus integration tests.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-24 14:25:23 +02:00
UNITRONIX bc70224ce6 fix(updates): unblock install button when Go can be bootstrapped
Preflight no longer blocks panel updates when the console can install a vendored Go toolchain automatically. Add proactive preflight banners, i18n, and clearer install UX in Settings.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-23 22:24:25 +02:00
UNITRONIX d7a2fe6562 fix(security): harden update restore and notification CSRF
Protect backup restores and session-authenticated notification writes from unsafe state changes, while clearing CodeQL false positives without weakening intentional TLS pinning.

Refs CodeQL alerts #297-310

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-23 21:08:05 +02:00
UNITRONIX 2eec0d2ceb feat(update): use commit-bound Go server artifacts
Prefer verified GitHub Actions or exact Release binaries during native updates, with checksum validation and local compilation fallback. Defer Support Agent source synchronization and rebuild queueing until after the console restart.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-23 20:56:45 +02:00
UNITRONIX f354e83a14 fix(console): surface registration notifications and stabilize relay delivery
Expose pending LAN and managed enrollment requests in the UX 3.5 notification center, synchronize badges through authenticated panel events with polling fallback, and refresh the registrations view automatically. Also include the pending relay transport fixes already present in the working tree.

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-23 15:27:13 +02:00
UNITRONIX 25618caac1 fix(console): fail closed on missing peer/strategy scope writers
Reject POST/PATCH /api/users before mutating when peer grant or strategy
assignment DB methods are absent; return refreshed scope on PATCH; warn
on unknown peerIds; add facade parity and scope regression tests.

Refs #380

Thanks: INSOLVE (Honorary); Marco Jakobs (@jacotec); MyNameisStitch (@MyNameisStitch); Redspin (@playerumpknow)
2026-08-22 01:17:41 +02:00