Skip to content

DCS Norway Linux, macOS, and iOS client branding - #7

Draft
Chesster1981 wants to merge 54 commits into
masterfrom
cursor/dcs-norway-linux-macos-ios-3237
Draft

Chesster1981 wants to merge 54 commits into
masterfrom
cursor/dcs-norway-linux-macos-ios-3237

Conversation

@Chesster1981

@Chesster1981 Chesster1981 commented Aug 16, 2026 •

Copy link
Copy Markdown
Owner

Linux and Android now use the same DCS Norway RD Client as Windows. macOS CI/release builds are skipped.

Updates (1.4.15): Windows, Linux, and Android share one update flow. At startup and every hour the client checks GitHub Releases. If a newer version exists, the same Update prompt downloads rustdesk-{version}-{arch}.{exe|deb|apk} and launches the installer. Release aliases keep those rustdesk-* names next to the DCS-named copies. About has no update button.

Expected assets on https://github.com/Chesster1981/RustDesk/releases/tag/1.4.15 :

  • DCS-Norway-RDC-1.4.15-x86_64-install.exe and rustdesk-1.4.15-x86_64.exe
  • DCS-Norway-RDC-1.4.15-aarch64.apk and rustdesk-1.4.15-aarch64.apk
  • DCS-Norway-RDC-1.4.15-x86_64.deb and rustdesk-1.4.15-x86_64.deb

iOS is not published. macOS is not built.

Test plan

  • Same Update prompt on Windows, Linux, and Android when a newer GitHub release exists.
  • Update downloads and launches the platform installer (exe / deb / apk).
  • About has no update button.
  • Release 1.4.15 has both DCS-named and rustdesk-* assets, no .ipa / .dmg.
Open in Web Open in Cursor 

cursoragent and others added 30 commits August 10, 2026 09:36
Prefer Betterdesk alias (then hostname) as the bold peer-card title
with the formatted ID underneath in small text. Place the Hetlebakken
/ DCS Norway emblem to the right of "Control Remote Desktop".

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Move the logo to the top-right of the connection pane at a larger
size, hide the Windows lower-version upgrade status card, and show
Betterdesk display name (alias/display_name/note) in bold instead of
computer hostname on peer cards.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Betterdesk/proxy can return an empty body for /api/currentUser; decoding
it blocked the Devices tab. Keep the local session and skip the noisy
network error UI when JSON is missing or invalid.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Show Betterdesk-friendly labels (alias/note/hostname) in bold on
peer cards with the ID underneath. Vendor hbb_common and use
wrapping subtraction in AddrMangle::decode so debug builds no longer
panic mid-connect on malformed punch payloads.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Use the DCS Norway / Norwegian DCS Community logo pasted by Ole
instead of the earlier placeholder asset.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Remove the Printer settings tab and replace About copyright/website/
privacy links with a short fork attribution for DCS Norway by Chesster.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Legacy/personal address books from Betterdesk store plaintext peer
passwords, but the client only auto-filled shared-book passwords.
Use peer.password for AB connects, look it up for other connect paths,
and keep password across AB cache/push so it is not dropped.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Resolve display names from the address book when local Recent/Fav
alias is empty, and sync AB aliases into peer configs after pull/cache
so cards refresh with Alias/Display Name in bold.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
PeerPayload dropped Betterdesk `alias` from /api/peers/list, so Recent
fell back to hostname. Map alias/display_name, resolve names from AB and
Devices/group, and sync them into local peer configs after pull.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Cap the outbound direct-connect wait at 3 seconds so DCS Norway
setups that cannot punch through fall back to relay sooner.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Persist AB/Devices aliases onto PeerConfig using Recent/Fav peer IDs,
update in-memory peer.alias before clearing account data, and fall back
to PeerConfig when resolving card titles.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
…nect behavior.

Replaces the left ID pane with header, quick-connect bar, Views/Groups/Tags sidebar, and dark RdClient tokens; restores all peer views and carries Access Policy passwords through PeerPayload.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove improper outer Obx (no observables), use setState for section toggles, and wrap the home shell in MyTheme.darkTheme with RdClient surface colors.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove improper outer Obx (no observables), use setState for section toggles, and wrap the home shell in MyTheme.darkTheme with RdClient surface colors.

Co-authored-by: Cursor <cursoragent@cursor.com>
…/settings, or extra peer views.

Keep only Accessible devices with Groups sidebar for a connection-only RustDesk client.

Co-authored-by: Cursor <cursoragent@cursor.com>
…tings.

Puts user info and Login/Logout where the manual connect row was, for a clearer pure-client home.

Co-authored-by: Cursor <cursoragent@cursor.com>
Security is host/incoming-only; Network ID/Relay dialogs now use RdClient dark Theme via OverlayDialogManager.

Co-authored-by: Cursor <cursoragent@cursor.com>
Align top/bottom air with the devices panel and account bar so the Groups card matches surrounding widgets.

Co-authored-by: Cursor <cursoragent@cursor.com>
Avoids duplicate account UI for the pure connection-client shell.

Co-authored-by: Cursor <cursoragent@cursor.com>
Set default APP_NAME to DCS Norway, include app_name in deviceInfo/sysinfo/heartbeat, and ship theme-adaptive RdClient shell plus About branding updates.

Co-authored-by: Cursor <cursoragent@cursor.com>
Spaces fail validate_install_app_name ([a-zA-Z0-9-]+), which made Accept and install exit silently.

Co-authored-by: Cursor <cursoragent@cursor.com>
APP_NAME drives the installed basename; install_me now renames rustdesk.exe after copy so desktop shortcuts resolve.

Co-authored-by: Cursor <cursoragent@cursor.com>
Hide printer/UAC install prompts for the connection-only shell, and align About/header copy with DCS Norway branding.

Co-authored-by: Cursor <cursoragent@cursor.com>
Tag builds publish rustdesk-*-x86_64.exe (plus DCS alias); branded clients check Chesster1981 releases and can update from Settings/About.

Co-authored-by: Cursor <cursoragent@cursor.com>
Allow workflow_dispatch release_tag so Windows builds can run from the branding branch before tag-push triggers work.

Co-authored-by: Cursor <cursoragent@cursor.com>
GitHub rejects matrix in job if expressions; select x64-only matrix via fromJSON instead.

Co-authored-by: Cursor <cursoragent@cursor.com>
Avoids invalid matrix expressions in job if / fromJSON conditionals that caused workflow startup failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
Split x64-only TopMost for DCS windows-only; keep Flutter matrix via prepare job outputs.

Co-authored-by: Cursor <cursoragent@cursor.com>
…rkflow startup.

Keep release-version override; call the standard Flutter build reusable workflow.

Co-authored-by: Cursor <cursoragent@cursor.com>
Chesster1981 and others added 12 commits August 11, 2026 17:38
…er alias.

Smoke test confirmed dispatch works; reusable build receives release-version for asset names.

Co-authored-by: Cursor <cursoragent@cursor.com>
Bump default VERSION to 1.4.10 so portable asset names match the release tag.

Co-authored-by: Cursor <cursoragent@cursor.com>
…bs can run.

Reusable flutter-build generate-sbom requires write; default caller token was read-only.

Co-authored-by: Cursor <cursoragent@cursor.com>
Version was bumped in Cargo.toml without updating the lockfile; that caused the matrix failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
Hide Recent/Favorites/Discovered/Address book and Remote ID on mobile,
show only Available devices, reuse AB/API peer passwords on connect,
and apply DCS logos to launcher icons and the home AppBar.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
file_picker 11.x requires a newer Flutter Gradle API and breaks
assembleDebug on the DCS Android toolchain.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Flutter-only local builds crash immediately without librustdesk.so;
this APK includes jniLibs for emulator install via adb.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Note the DCS-Norway-RDC-*-x86_64.apk asset alongside the Windows installer
alias, and how to upload future Android builds to the release tag.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Apply the existing Windows/Android DCS client (Available devices only,
About, branding) to the remaining desktop and Apple targets. Linux and
both macOS architectures share the Flutter desktop shell; iOS shares the
mobile client. Native names, icons, and host-only prompts are updated to
match.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
iPad and iPhone share one unsigned IPA (DCS-Norway-RDC-{version}-ios.ipa)
built from the Flutter iOS client. CI packages Runner.app after
--no-codesign, and a dedicated DCS iOS Release workflow can publish it
without a full desktop matrix.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
cursoragent and others added 2 commits August 16, 2026 14:01
Phones use aarch64. Drop DCS-Norway-RDC-*-x86_64.apk from the
documented release set and skip that ABI on GitHub Releases.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Unsigned IPA requires sideloading, which DCS operators cannot be
expected to do. Drop the DCS iOS Release workflow, skip the iOS CI
job, and remove the IPA from documented GitHub assets.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
cursoragent and others added 10 commits August 16, 2026 18:17
Replace the Hetlebakken patch with the DCS Norway emblem on Windows,
Android, and Linux icons. Home header shows DCS Norway above Remote
Desktop Client on desktop and Android.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Bump the client version and publish GitHub Release aliases for the
operator downloads. Tag builds run DCS Windows Release only.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
That qemu crates.io failure is not a DCS product. Publish aliases
even when the Flutter build reports a failed extra matrix cell.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Replace Windows, Android, and Linux icons with the updated circular
logo and bump the client version for a new GitHub Release.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
GitHub rejected the previous job-level matrix filter as an invalid
workflow, so the 32-bit ARM entry is removed from the matrix instead.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Reusable generate-sbom asks for contents:write; pull_request callers default to read, which made the workflow file invalid at startup.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
DCS ships Windows, Linux, and Android only; the Intel and Apple Silicon runners were consuming Actions time without a product to publish.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
…ners.

The previous knockout treated near-white as background and punched out the sky because the top of the ring is white. Mask the inscribed circle instead, then release 1.4.13.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Remove the About check button; Windows/macOS can install in-app, Linux and Android open the release page. Android now uses the same DCS Releases check.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
The prompt always offers Update. Each platform downloads rustdesk-{version}-{arch}.{exe|deb|apk} and launches the installer. Release aliases keep those rustdesk-* names next to the DCS-named copies.

Co-authored-by: Chesster1981 <Chesster1981@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants