[3.3.0] — 2026-06-12
Stable production release on main (merged from dev). Ships via Settings → Updates on the Stable channel, or betterdesk.sh / betterdesk.ps1 option 2 / docker compose pull for GHCR. Panel update creates a pre-update backup by default. No database migration or manual SQL step is required.
Added
- Organization shared address book (#190) — admins maintain a shared contact list per organization (Organizations → Address Book). Entries merge into each member's RustDesk address book on
GET /api/abwhen sharing is enabled; personal entries stay private. - Organizations → Device Groups tab — readout of device groups and user groups linked to the organization (
team_id), with shortcuts to Devices → Groups and one-click org-scoped group creation. - Docker MACVLAN quick-start (#186) —
docker-compose.quick.macvlan.ymlplus upgrade notes in DOCKER_QUICKSTART.md. Usesservice_started(notservice_healthy) and127.0.0.1API/WS env when the console usesnetwork_mode: service:server. betterdesk-show-admin-credentialshelper (#195) — re-execs asbetterdeskto read.admin_credentialson hardened images (cap_drop: ALL). Bundled in all Docker images; documented in README, install.sh, and Docker troubleshooting.
Fixed
- Stale update warning banner (#192) — Settings → Updates no longer keeps showing stale
EACCESerrors after a successful external update (betterdesk.sh,betterdesk.ps1,betterdesk-docker.sh, or GHCRdocker compose pull). Non-critical root-owned file failures are filtered; the banner clears when the installed SHA matches the target. Native install/update now copiesVERSIONinto the console directory (Settings reads semver fromVERSIONorpackage.json). - CodeQL / security hardening — OIDC discovery blocks private/link-local DNS; branding SVG/CSS multi-pass sanitization; same-origin restrictions on desktop iframe routes and
Utils.api(); confined filesystem helpers; upload rate limits; type-safe device file API parsing. CodeQL config documents intentional exclusions. - Go server product version in Docker builds —
BETTERDESK_PRODUCT_VERSIONbuild arg embeds semver in the Go binary (Settings → Server Information matches panel version after image update).
Changed
- Alpha desktop clients (
betterdesk-mgmt,betterdesk-agent-client) temporarily untracked from git to reduce Dependabot / CI noise. - Version bump automation uses
scripts/bump-version.js --list-paths(includes Go server VERSION files and MACVLAN compose).
Upgrade notes (operators)
| Topic | Action |
|---|---|
| Native / panel update | Settings → Updates → Stable → Check for updates → Install. Allow Go server rebuild/restart when prompted. |
| Docker | docker compose pull && docker compose up -d after release; use betterdesk-show-admin-credentials instead of cat as root. |
| MACVLAN (#186) | Switch to docker-compose.quick.macvlan.yml or set depends_on: service_started, DB_PATH=/app/data/db_v2.sqlite3, 127.0.0.1 for API/WS. |
| Stale update banner (#192) | Update to 3.3.0+ or once: rm -f <console-path>/data/.last_update_result.json and restart console. |
What's Changed
- Release 3.3.0 — stable production merge from dev by @UNITRONIX in #196
Full Changelog: v3.2.0...v3.3.0