26 Commits

Author SHA1 Message Date
UNITRONIX ffe907e73a fix(web-remote): guest page 500 and cookie hijack (Refs #274)
Safe EJS bootstrap for /remote/guest; panel session wins over stale guest cookie.
2026-07-20 23:29:52 +02:00
UNITRONIX f357f903eb feat(remote): implement display settings dropdown with grid layout
- Added new CSS styles for a responsive display settings dropdown, enhancing usability with a grid layout.
- Updated HTML structure to organize dropdown items into sections for better clarity and accessibility.
- Removed redundant JavaScript calls to close dropdowns on item selection, streamlining interaction.
2026-07-07 21:46:06 +02:00
UNITRONIX c18276f9de feat(remote): update toolbar handle and drawer styles for improved interaction
- Enhanced CSS for the toolbar handle and drawer, adding new styles for expanded and collapsed states.
- Updated HTML structure to reposition the toolbar handle for better accessibility and user experience.
- Improved transition effects for smoother visibility during interactions, including adjustments to padding and margins.
2026-07-06 22:06:25 +02:00
UNITRONIX 8ed6ce457f feat(remote): enhance toolbar functionality and styling
- Updated CSS for the toolbar handle and drawer, improving transitions and visibility during interactions.
- Refined JavaScript to manage the toolbar's expanded and collapsed states, including new aria attributes for accessibility.
- Introduced a drawer-pulling effect for smoother user experience when toggling the toolbar.
- Adjusted HTML structure to support new features and ensure proper functionality of the toolbar components.
2026-07-06 22:00:08 +02:00
UNITRONIX 863c60a147 feat(remote): enhance toolbar notch visibility and animations
- Introduced new CSS styles for the toolbar notch to improve visibility and animations during user interactions.
- Updated JavaScript functions to manage the toolbar notch's visibility based on session states and user actions.
- Refined the toolbar's expanded state with smoother transitions and animations for a better user experience.
- Adjusted the HTML structure to ensure the toolbar notch is correctly initialized and styled.
2026-07-06 21:51:29 +02:00
UNITRONIX 7dcbb8a578 feat(remote): update toolbar UI and functionality
- Adjusted the positioning of the toolbar notch and refined the droplet handle for better visual alignment.
- Enhanced the toolbar's expanded state with new animations and improved responsiveness.
- Removed redundant code for toolbar pinning and streamlined the toggle functionality.
- Updated the HTML structure to ensure the toolbar handle is correctly positioned and functional.
- Improved CSS styles for better user experience and visual consistency.
2026-07-06 21:46:33 +02:00
UNITRONIX eb8a0732d5 feat(audit): align with RustDesk 1.4.8 and update language files
- Conducted an audit against upstream RustDesk tag 1.4.8, confirming no breaking changes to the wire format.
- Implemented various fixes including client version string, supported encoding handshake, and multi-session handling.
- Updated language files for Arabic, Czech, Danish, German, English, and Spanish to reflect new UI elements and messages.
- Enhanced clipboard and file transfer functionalities to match upstream behavior.
2026-07-06 21:15:43 +02:00
UNITRONIX 34fa96723d feat: add keyboard mode selection and reset functionality
Implement keyboard mode options (Legacy, Map, Auto) and a reset keyboard feature in the remote viewer. Update UI to include buttons for selecting keyboard mode and resetting the keyboard state, enhancing user control over remote input settings. Update localization files for new strings across multiple languages.
2026-07-04 23:19:14 +02:00
UNITRONIX 693fd3157e Add session picker UI and localization support
Implement a session picker overlay for selecting devices, including a search feature and navigation for folders, groups, and tags. Update localization files for multiple languages to include new session picker strings. Enhance the session tab bar with slim and expandable card designs for better user experience.
2026-06-30 22:01:17 +02:00
UNITRONIX 241f9ba2b9 fix: Web Remote file transfer via dedicated FILE_TRANSFER relay (#217)
Opens a separate relay session for the file manager, adds a RustDesk-style
transfer modal, and cleans up rdclient toolbar/fullscreen UX.

Refs #217
2026-06-24 19:54:20 +02:00
UNITRONIX 8c1e73ac0b feat(i18n): enhance localization with new mobile navigation and input modes
Added new localization entries for multiple languages, including mobile navigation labels and input modes (touch, touchpad, keyboard, special keys). This update improves user experience by providing comprehensive support for mobile users and ensuring consistent messaging across various languages.
2026-06-21 00:21:36 +02:00
UNITRONIX 2e01955f6c feat(rdclient): enhance desktop client with server validation, LAN discovery, and settings management
- Introduced server URL validation via `GET /api/bd/server-info` and `probe_server_url`.
- Added LAN discovery capabilities using UDP and optional mDNS for local network panel detection.
- Implemented a local settings window for managing URL, TLS settings, and user preferences.
- Enhanced dashboard with a unified sidebar and improved scrolling behavior.
- Updated documentation and pre-release checklist to reflect new features and requirements.
2026-06-14 21:12:41 +02:00
UNITRONIX 01fcdc4aea feat(billing): implement billing and time synchronization module
Added a new billing service and time synchronization functionality to the server. This includes the creation of billing packages, contracts, and sessions, along with necessary database migrations. Updated API endpoints for billing management and integrated billing checks into signal handling. Enhanced configuration options for billing parameters and added localization support for billing-related messages.
2026-06-07 14:35:22 +02:00
UNITRONIX 53c969fc58 feat(rdclient): collapsible floating toolbar + independent browser tab
Redesign the web remote toolbar into a RustDesk-style floating pill. The compact handle (move / fullscreen / expand) is always visible and the action pill no longer auto-opens on hover - it expands only on an explicit click of the expand button. The left handle drags the toolbar horizontally along one axis. The 'back to devices' control is now a button that closes the script-opened rdclient tab (re-focusing the opener) instead of navigating this tab to /devices, which previously spawned duplicate web-panel tabs. closeSession uses the same returnToDevices() helper. Adds move_toolbar/toggle_menu i18n keys (EN/PL/ZH) and an updated cross-platform feature matrix.

This commit was made possible thanks to Insolve.
2026-05-31 19:40:34 +02:00
UNITRONIX 87a914432f feat(rdclient): add GPU video codec selector + default Best quality
Add a codec selector (Auto/VP9/AV1/H264/VP8/H265) to the remote viewer display menu so users can request a GPU-friendly codec from the peer. setCodec() re-advertises SupportedDecoding abilities with the chosen prefer codec via OptionMessage and forces a fresh keyframe. Browser decode abilities are probed (VideoDecoder.isConfigSupported) and unsupported codecs are disabled in the menu and advertised honestly at login. Raise default image quality from Balanced to Best at both client-creation sites and pause adaptive auto-quality once the user makes a manual quality/codec choice so it no longer overrides them.

This commit was made possible thanks to Insolve.
2026-05-31 05:18:54 +02:00
UNITRONIX 4eed88673c fix(updates): atomic binary replace + accurate modal status
- deployServerBinary: use rename(2) for atomic replace, fixes ETXTBSY
  when target Go binary is busy (Linux kernel handles inode swap).
  Falls back to copyFileSync on cross-device rename or non-Linux.
  Windows: rename target out of the way first, then move new in.
- settings.js: mark 'server' phase as error when build succeeded but
  deploy failed (was incorrectly marking 'done' from build alone).
- settings.js: completion modal now shows error title, error message
  and pre-formatted stderr when serverDeploy.success === false.
- i18n: added complete_with_errors, modal_done_with_errors_title in
  en/pl.
2026-04-26 01:23:18 +02:00
UNITRONIX 2bfa1f3d7c Log requests, sanitize login, network & XSS fixes
Add broad request logging in auth middleware and more granular debug logs for login handling (JSON decode errors and non-password login fields) to aid troubleshooting. Trim and sanitize username/password on the web login route and log whitespace/empty username cases and missing credentials. Extend isSameNetwork logic to treat loopback ↔ private-IP pairs as same network (covers local server → LAN target cases). Fix remote viewer templates to avoid inline string interpolation by injecting device data via JSON and setting DOM textContent (prevents XSS and EJS injection); also minor formatting/alignment tweaks in role handler comments/structs.
2026-04-11 19:07:03 +02:00
UNITRONIX 45e5fda9d0 Implement RBAC v52, org scoping and assorted fixes
Adds a full Phase-52 RBAC implementation and multiple server/frontend fixes. Key changes: new auth/permissions.go with 28 granular permissions and DefaultRolePermissions, expanded 7-role hierarchy and helpers in auth/roles.go, JWT org context and GenerateOrgToken, requirePermission/requireOrgMembership middlewares (Go + Node.js), DB schema & adapter changes for role_permissions and is_server_admin, org role boundary checks and peer org scoping, and guards for last-admin demotion and self-demotion. Also: TCP EOF/connection-reset log filtering in signal/relay servers, improved startup banner port display, KEYS_PATH auto-detect warning, CSS hover/transition layout fixes, admin password race mitigation, ID-change ghost peer cleanup, added Tauri ACL schema files, and a new RBAC_PHASE52.md doc. Misc: numerous web-nodejs i18n, CSS, JS and route updates and an updated .github/copilot-instructions.md timestamp/summary.
2026-04-10 23:40:55 +02:00
UNITRONIX ca33cf3919 fix: #93 EJS template error, #90 modal z-index, #95 org select, #75 kebab menu overflow
- remote.ejs + remote-viewer.ejs: Replace EJS tag inside JS template literal
  with JS interpolation to fix 'Could not find matching close tag' error (#93)
- variables.css: Increase z-index layers (modal:1000, toast:1100, tooltip:1200)
  so modals always appear above device detail panel (#90)
- policies.js: Fix API endpoint /api/panel/organizations -> /api/panel/org
  to correctly load organizations in policy dropdown (#95)
- devices.js: Fix kebab menu positioning - force reflow before measuring
  offsetHeight, add dynamic max-height constraint for viewport bounds (#75)
2026-04-08 23:55:03 +02:00
UNITRONIX dd0889e3d6 Add SessionManager; update docs, i18n & CI
Introduce a SessionManager for relay-based remote sessions in the Tauri MGMT client: new SessionCommand API, start/stop/session input routing, clipboard/recording/quality controls, and notification read/dismiss state. Wire AppState with new mutexes and show main window on startup. CI: add SBOM generation (anchore) and Trivy vulnerability scan steps. Misc: change console Docker DB path, large README/CHANGELOG updates (chat E2E, unattended access/WOL, i18n expansion, CDAP/SDK docs), and many web-nodejs assets/locales/routes/views/services and server-side changes.
2026-04-05 13:42:07 +02:00
UNITRONIX bbf839754e Harden bd-mgmt, API key, and WS security
Add multiple security hardenings across the server and web console: enforce proof-of-possession for /ws/bd-mgmt using Ed25519-signed headers with timestamp/nonce and replay protection (public key binding, canonicalization, storage, verification, and tests); remove legacy API key query param and config-table fallback in favor of scoped api_keys (migrate bootstrap key into api_keys); tighten WebSocket origin handling for relay and signal servers to allow only localhost origins by default unless an explicit allowlist is set; update auth middleware public paths and test helpers to use X-API-Key header; add ensureScopedAPIKey migration and related helpers; add a GitHub Secret Scan workflow and an audit report. Misc: propagate audit logging on bd-mgmt connect/disconnect and validate enrollment public keys during device register.
2026-03-29 01:48:14 +01:00
UNITRONIX 843298daf4 Add Web Remote UI, multi-session tabs & crypto
Introduce a Web Remote experience with multi-session management, UI and security improvements.

Highlights:
- Add i18n keys for web_remote, new_connection, device_id_placeholder and http_warning across locales.
- UI/CSS: replace single viewer with session/tab UI, session tab bar, HTTP/security banners, toolbar repositioning and numerous style additions for multi-tab sessions and warnings.
- devices.js: add a Web Remote action and use BroadcastChannel to attempt adding a session to an existing remote page (fallback to opening a new tab).
- remote.js: large refactor to support multiple concurrent RDClient sessions (SessionInfo), tab creation/switching/closing, shared toolbar syncing, session lifecycle management, reconnect logic and autoplay/overlay handling.
- rdclient: security and robustness enhancements:
  - rdclient/crypto.js: add Ed25519 SignedId verification (verifySignedId, _hexToBytes) and expose signatureVerified metadata.
  - rdclient/client.js: log severity changes, emit encryption/signature warnings, verify server-signed IdPk to detect MITM, expose renderer cursor readiness via events, and reduce stall detection thresholds / quicker recovery.
  - rdclient/renderer.js: notify when remote cursor image is ready so CSS can hide local cursor.
  - rdclient/video.js: improved MSE health checks, dynamic buffer trimming, JMuxer reinitialization for stuck pipelines, switch timing to ~60fps timestamps, and more aggressive playback catch-up behavior.

These changes improve UX for web remote sessions, add security verification against server-signed identity, and make video playback and recovery more robust.
2026-03-28 20:04:49 +01:00
UNITRONIX af28d0d766 Add draggable zone borders, access policies, WOL fix, i18n 2026-03-28 00:08:42 +01:00
UNITRONIX 1e2047c033 BetterDesk 3.0.0 Alpha 2026-03-24 00:26:25 +01:00
UNITRONIX 447c22af48 SELinux volume helper, folder fixes, Synology docs
Add create_data_directory helper to prepare Docker data volumes with proper permissions and optional SELinux (svirt_sandbox_file_t) support, and use it in install/migrate flows with user guidance on failures. Add comprehensive SYNOLOGY_INSTALLATION.md with Synology/Portainer/container-manager/docker-compose setup, firewall, troubleshooting and update instructions. Update DB adapters (SQLite/Postgres) to treat device_folder_assignments as the single source of truth: clear assignments on folder delete, stop writing folder_id into peer table, and make getUnassignedDeviceCount resilient by trying 'peers' then 'peer' schemas and returning -1 on error. Minor UI tweaks: add console.error on folder assignment failure and add WIP banners/margin adjustments to remote viewer pages.
2026-03-13 00:45:53 +01:00
UNITRONIX 12d195ff78 Release v2.3.0: Node.js console & security
Bump to v2.3.0 and switch to Node.js web console as the primary console (Flask deprecated). Add comprehensive security and feature updates: CSRF protection, session-fixation prevention, timing-safe auth, WebSocket auth, TOTP 2FA, operator/admin roles, address-book sync, desktop connect (URI handler), and SSL certificate configuration in installers. Introduce a dedicated RustDesk Client API (WAN port 21121) and related web-nodejs middleware, routes, views, protos, and client JS (rdclient) plus vendor libs. Add developer tooling and scripts (dev_modules), update hbbs-patch-v2 Rust sources, README and changelog/docs, and ignore Node.js artifacts in .gitignore.
2026-02-22 03:44:00 +01:00