diff --git a/CHANGELOG.md b/CHANGELOG.md index 0711a1ed..faa76de8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ ## [Unreleased] +### Changed +- _(none yet)_ + +--- + +## [3.5.56] — 2026-08-23 + ### Fixed - **Relay pair timeout when the target is `connType=tcp` but still heartbeats on UDP (#382):** TCP `RegisterPk` (logged-in GUI) stamped `ConnTCP` and later UDP heartbeats did not restore `ConnUDP`. PunchHole/RequestRelay then called `sendToPeer`, which ignored `UDPAddr` and dropped the message (`TCPConn` is never set). The initiator connected to relay; the target never did. Delivery now prefers UDP when `UDPAddr` is set, heartbeats restore `ConnUDP` (without overriding WebSocket), and `"forwarded"` is logged only when a transport accepted the message. Ships via panel update (Go signal restart). Verify: WAN session to a logged-in native target reaches `[relay] Pair established`; server log shows PunchHole/RequestRelay forwarded; no `Pair timeout` for that UUID. - **Registration notifications in UX 3.5:** Pending LAN and managed enrollment requests now update the global badge, appear in the topbar notification center, and refresh the registrations page without opening the tab. The panel event stream has a polling fallback and remains restricted to users with `enrollment.approve`. @@ -3055,3 +3062,4 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). [3.5.53]: https://github.com/UNITRONIX/BetterDesk/compare/v3.5.52...v3.5.53 [3.5.54]: https://github.com/UNITRONIX/BetterDesk/compare/v3.5.53...v3.5.54 [3.5.55]: https://github.com/UNITRONIX/BetterDesk/compare/v3.5.54...v3.5.55 +[3.5.56]: https://github.com/UNITRONIX/BetterDesk/compare/v3.5.55...v3.5.56 diff --git a/Dockerfile b/Dockerfile index cb48a8a0..1df25ba8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -58,7 +58,7 @@ FROM node:22.23.2-alpine3.24 LABEL maintainer="UNITRONIX" LABEL description="BetterDesk — All-in-One (Go Server + Node.js Console)" -LABEL version="3.5.55" +LABEL version="3.5.56" # Install runtime packages (retry for transient DNS failures) RUN apk add --no-cache \ diff --git a/Dockerfile.console b/Dockerfile.console index 5e5d8f99..b78f5eda 100644 --- a/Dockerfile.console +++ b/Dockerfile.console @@ -28,7 +28,7 @@ FROM node:22.23.2-alpine3.24 LABEL maintainer="UNITRONIX" LABEL description="BetterDesk Console - Web Management Panel" -LABEL version="3.5.55" +LABEL version="3.5.56" WORKDIR /app diff --git a/Dockerfile.server b/Dockerfile.server index 5f62d079..b5f3a74e 100644 --- a/Dockerfile.server +++ b/Dockerfile.server @@ -34,7 +34,7 @@ FROM alpine:3.22 LABEL maintainer="UNITRONIX" LABEL description="BetterDesk Server - RustDesk-compatible signal + relay" -LABEL version="3.5.55" +LABEL version="3.5.56" RUN apk add --no-cache \ ca-certificates \ diff --git a/README.md b/README.md index d5687c90..c706f680 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ![License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg) ![Go](https://img.shields.io/badge/Go-1.21+-00ADD8.svg) ![Node.js](https://img.shields.io/badge/Node.js-18+-339933.svg) -![Version](https://img.shields.io/badge/version-3.5.55-brightgreen.svg) +![Version](https://img.shields.io/badge/version-3.5.56-brightgreen.svg) ![Security](https://img.shields.io/badge/Security-TLS%20%2B%20NaCl%20%2B%20TOTP%20%2B%20E2EE-green.svg) ![Database](https://img.shields.io/badge/DB-SQLite%20%2B%20PostgreSQL-blue.svg) ![CDAP](https://img.shields.io/badge/CDAP-v1.0-orange.svg) diff --git a/VERSION b/VERSION index 49f7b7f3..f856db6b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.5.55 +3.5.56 diff --git a/betterdesk-desktop/Cargo.toml b/betterdesk-desktop/Cargo.toml index c51afc82..ff95fe6a 100644 --- a/betterdesk-desktop/Cargo.toml +++ b/betterdesk-desktop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "betterdesk-desktop" -version = "3.5.55" +version = "3.5.56" edition = "2021" description = "Independent BetterDesk Desktop operator client" license = "AGPL-3.0-only" diff --git a/betterdesk-desktop/flutter/pubspec.yaml b/betterdesk-desktop/flutter/pubspec.yaml index 534627a0..13ea00f5 100644 --- a/betterdesk-desktop/flutter/pubspec.yaml +++ b/betterdesk-desktop/flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: betterdesk_desktop description: Independent BetterDesk Desktop operator client. publish_to: "none" -version: 3.5.55+1 +version: 3.5.56+1 environment: sdk: ">=3.4.0 <4.0.0" diff --git a/betterdesk-docker.sh b/betterdesk-docker.sh index de3a6b90..38981589 100644 --- a/betterdesk-docker.sh +++ b/betterdesk-docker.sh @@ -1,7 +1,7 @@ #!/bin/bash #=============================================================================== # -# BetterDesk Console Manager v3.5.55 +# BetterDesk Console Manager v3.5.56 # All-in-One Interactive Tool for Docker # # Features: @@ -28,7 +28,7 @@ set -e # Version -VERSION="3.5.55" +VERSION="3.5.56" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Default paths (can be overridden by environment variables) diff --git a/betterdesk-server/VERSION b/betterdesk-server/VERSION index 49f7b7f3..f856db6b 100644 --- a/betterdesk-server/VERSION +++ b/betterdesk-server/VERSION @@ -1 +1 @@ -3.5.55 +3.5.56 diff --git a/betterdesk-server/internal/productversion/VERSION b/betterdesk-server/internal/productversion/VERSION index 49f7b7f3..f856db6b 100644 --- a/betterdesk-server/internal/productversion/VERSION +++ b/betterdesk-server/internal/productversion/VERSION @@ -1 +1 @@ -3.5.55 +3.5.56 diff --git a/betterdesk.ps1 b/betterdesk.ps1 index a8bd5ac0..7c17e22f 100644 --- a/betterdesk.ps1 +++ b/betterdesk.ps1 @@ -1,7 +1,7 @@ #Requires -RunAsAdministrator <# .SYNOPSIS - BetterDesk Console Manager v3.5.55 - All-in-One Interactive Tool for Windows + BetterDesk Console Manager v3.5.56 - All-in-One Interactive Tool for Windows .DESCRIPTION Features: @@ -110,7 +110,7 @@ param( # Configuration #=============================================================================== -$script:VERSION = "3.5.55" +$script:VERSION = "3.5.56" $script:ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path # Auto mode flags diff --git a/betterdesk.sh b/betterdesk.sh index dd56c0f0..2465acd8 100644 --- a/betterdesk.sh +++ b/betterdesk.sh @@ -1,7 +1,7 @@ #!/bin/bash #=============================================================================== # -# BetterDesk Console Manager v3.5.55 +# BetterDesk Console Manager v3.5.56 # All-in-One Interactive Tool for Linux # # Features: @@ -36,7 +36,7 @@ set -e # Version -VERSION="3.5.55" +VERSION="3.5.56" # Bump when installer control-flow changes must apply mid-session after Update (#219). BETTERDESK_SH_REVISION="20260725-console-start-306" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" diff --git a/docker-compose.quick.macvlan.yml b/docker-compose.quick.macvlan.yml index e8559b9d..f16585b0 100644 --- a/docker-compose.quick.macvlan.yml +++ b/docker-compose.quick.macvlan.yml @@ -34,7 +34,7 @@ services: server: - image: ghcr.io/unitronix/betterdesk-server:${BETTERDESK_IMAGE_TAG:-3.5.55} + image: ghcr.io/unitronix/betterdesk-server:${BETTERDESK_IMAGE_TAG:-3.5.56} container_name: betterdesk-server hostname: betterdesk-server command: ["/usr/local/bin/betterdesk-server", "-mode", "all", "-api-port", "21114", "-key-file", "/opt/rustdesk/id_ed25519"] @@ -76,7 +76,7 @@ services: start_period: 60s console: - image: ghcr.io/unitronix/betterdesk-console:${BETTERDESK_IMAGE_TAG:-3.5.55} + image: ghcr.io/unitronix/betterdesk-console:${BETTERDESK_IMAGE_TAG:-3.5.56} container_name: betterdesk-console # Shares server network stack — panel and RustDesk ports use MACVLAN_IPV4. network_mode: service:server @@ -116,7 +116,7 @@ services: - PGID=${PGID:-10001} - BETTERDESK_UPDATE_MODE=image - BETTERDESK_DOCKER_LAYOUT=split - - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.55} + - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.56} - TZ=${TZ:-UTC} depends_on: # service_started (not healthy): avoids deadlock with auth.db on first boot (#138, #186). diff --git a/docker-compose.quick.single.macvlan.yml b/docker-compose.quick.single.macvlan.yml index 213ed78b..1b721f7b 100644 --- a/docker-compose.quick.single.macvlan.yml +++ b/docker-compose.quick.single.macvlan.yml @@ -32,7 +32,7 @@ services: betterdesk: - image: ghcr.io/unitronix/betterdesk:${BETTERDESK_IMAGE_TAG:-3.5.55} + image: ghcr.io/unitronix/betterdesk:${BETTERDESK_IMAGE_TAG:-3.5.56} container_name: betterdesk hostname: betterdesk volumes: @@ -59,7 +59,7 @@ services: - PGID=${PGID:-10001} - BETTERDESK_UPDATE_MODE=image - BETTERDESK_DOCKER_LAYOUT=single - - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.55} + - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.56} - AUTH_DB_PATH=/app/data/auth.db - INIT_ADMIN_USER=${ADMIN_USERNAME:-admin} - INIT_ADMIN_PASS=${ADMIN_PASSWORD:-} diff --git a/docker-compose.quick.single.yml b/docker-compose.quick.single.yml index 378a26ad..7da9ad3a 100644 --- a/docker-compose.quick.single.yml +++ b/docker-compose.quick.single.yml @@ -5,7 +5,7 @@ # Go server + Node.js console in one container (recommended for all deployments). # # Image tag (aligned with CHANGELOG / git tag): -# Default: 3.5.55 | Rolling: BETTERDESK_IMAGE_TAG=latest +# Default: 3.5.56 | Rolling: BETTERDESK_IMAGE_TAG=latest # # Usage (automated — recommended): # curl -fsSL https://raw.githubusercontent.com/UNITRONIX/BetterDesk/main/install.sh | sudo bash @@ -15,7 +15,7 @@ # docker compose pull && docker compose up -d # # Pin a specific release: -# BETTERDESK_IMAGE_TAG=3.5.55 docker compose up -d +# BETTERDESK_IMAGE_TAG=3.5.56 docker compose up -d # # Web Console: http://localhost:5000 # RustDesk client API: http://localhost:21121 (Go server — all-in-one default port) @@ -35,7 +35,7 @@ services: betterdesk: - image: ghcr.io/unitronix/betterdesk:${BETTERDESK_IMAGE_TAG:-3.5.55} + image: ghcr.io/unitronix/betterdesk:${BETTERDESK_IMAGE_TAG:-3.5.56} container_name: betterdesk hostname: betterdesk ports: @@ -78,7 +78,7 @@ services: - PGID=${PGID:-10001} - BETTERDESK_UPDATE_MODE=image - BETTERDESK_DOCKER_LAYOUT=single - - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.55} + - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.56} - DB_TYPE=${DB_TYPE:-sqlite} - DATABASE_URL=${DATABASE_URL:-} - DB_URL=${DATABASE_URL:-} diff --git a/docker-compose.quick.yml b/docker-compose.quick.yml index 1fd7f140..c0327903 100644 --- a/docker-compose.quick.yml +++ b/docker-compose.quick.yml @@ -38,7 +38,7 @@ services: # BetterDesk Server (Go) — handles signal, relay, and API server: - image: ghcr.io/unitronix/betterdesk-server:${BETTERDESK_IMAGE_TAG:-3.5.55} + image: ghcr.io/unitronix/betterdesk-server:${BETTERDESK_IMAGE_TAG:-3.5.56} container_name: betterdesk-server hostname: betterdesk-server command: ["/usr/local/bin/betterdesk-server", "-mode", "all", "-api-port", "21114", "-key-file", "/opt/rustdesk/id_ed25519"] @@ -96,7 +96,7 @@ services: # BetterDesk Console — Web Management Interface console: - image: ghcr.io/unitronix/betterdesk-console:${BETTERDESK_IMAGE_TAG:-3.5.55} + image: ghcr.io/unitronix/betterdesk-console:${BETTERDESK_IMAGE_TAG:-3.5.56} container_name: betterdesk-console hostname: betterdesk-console ports: @@ -136,7 +136,7 @@ services: - PGID=${PGID:-10001} - BETTERDESK_UPDATE_MODE=image - BETTERDESK_DOCKER_LAYOUT=split - - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.55} + - BETTERDESK_IMAGE_TAG=${BETTERDESK_IMAGE_TAG:-3.5.56} networks: - betterdesk-net depends_on: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 3c8a5293..ee56d03d 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -8,7 +8,7 @@ set -e echo "========================================" echo " BetterDesk Console - Container Startup" -echo " Version: ${BETTERDESK_IMAGE_VERSION:-3.5.55} (Node.js)" +echo " Version: ${BETTERDESK_IMAGE_VERSION:-3.5.56} (Node.js)" echo "========================================" # Public Docker examples use ADMIN_*; the Node.js console seeds from DEFAULT_ADMIN_*. diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 9477c770..8f7d5e8a 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -9,7 +9,7 @@ ensure_betterdesk_user echo "========================================" echo " BetterDesk All-in-One Container" -echo " Version: ${BETTERDESK_IMAGE_VERSION:-3.5.55}" +echo " Version: ${BETTERDESK_IMAGE_VERSION:-3.5.56}" echo "========================================" echo "" echo "Components:" diff --git a/install.sh b/install.sh index 7abf8d09..63dda78d 100755 --- a/install.sh +++ b/install.sh @@ -18,7 +18,7 @@ # --docker | --native Installation mode (default: docker) # --split Legacy two-container layout (server + console images) # --install-dir PATH Install directory (default: /opt/betterdesk) -# --version TAG Docker image tag / release baseline (default: 3.5.55) +# --version TAG Docker image tag / release baseline (default: 3.5.56) # --branch BRANCH Git branch for native install (default: this installer channel) # --relay-mode auto|local|public Relay auto-detection strategy # --relay-servers IP[:port] Fixed relay address (overrides --relay-mode) @@ -46,7 +46,7 @@ BETTERDESK_REPO="${BETTERDESK_REPO:-UNITRONIX/BetterDesk}" # --branch / BETTERDESK_BRANCH. Flip to "main" when releasing this file on main. BETTERDESK_INSTALLER_CHANNEL="dev" BETTERDESK_BRANCH="${BETTERDESK_BRANCH:-$BETTERDESK_INSTALLER_CHANNEL}" -BETTERDESK_VERSION="${BETTERDESK_VERSION:-3.5.55}" +BETTERDESK_VERSION="${BETTERDESK_VERSION:-3.5.56}" BETTERDESK_RAW_BASE="${BETTERDESK_RAW_BASE:-https://raw.githubusercontent.com/${BETTERDESK_REPO}/${BETTERDESK_BRANCH}}" INSTALL_DIR="${INSTALL_DIR:-/opt/betterdesk}" INSTALL_MODE="docker" diff --git a/web-nodejs/package.json b/web-nodejs/package.json index df25109f..a17d9d1a 100644 --- a/web-nodejs/package.json +++ b/web-nodejs/package.json @@ -1,6 +1,6 @@ { "name": "betterdesk-console", - "version": "3.5.55", + "version": "3.5.56", "description": "BetterDesk Console - Professional Web Management Panel for BetterDesk Server", "main": "server.js", "scripts": {