Skip to content

Releases: keithxc/deskport

DeskPort 0.3.0 — desktop session settings and navigation

Choose a tag to compare

@keithxc keithxc released this 14 Sep 16:07

DeskPort 0.3.0

This stable desktop release brings the session-settings development branch to main.

  • Card-only device browsing, system marks, light/dark themes and per-device streaming settings.
  • Session traffic and duration reporting on macOS and Linux.
  • Fractional-scale client workspace sizing with full HiDPI video frames.
  • More reliable text clipboard observation, including background macOS copies.
  • Responsive connection navigation, input ownership across page replacement, and adaptive resize transitions.

Downloads

macOS Apple Silicon (macOS 26+): Developer ID signed and Apple-notarized DMG and ZIP.
Linux x86_64: DEB (Ubuntu 24.04+/Debian 13+), RPM (Fedora 44), Arch package,
AppImage (glibc 2.39+), client-only Flatpak (Freedesktop Platform 25.08), and Nix.
The native Linux packages and AppImage include a separate Sunshine runtime.
Flatpak does not provide host sharing. See LINUX_PACKAGES.md for installation details.

Windows, Intel Mac, ARM Linux and mobile store packages are not part of the established desktop release matrix.

Verification boundaries

Build, isolated UI and package checks are recorded in the accompanying verification file.
Real streaming, GPU decoding, input permissions, cross-device clipboard and long-session
acceptance remain hardware checks. Publication does not activate installed applications.

Source and pinned component references accompany the release; upstream notices are retained.

DeskPort 0.2.8 — connection and resize flow preview

Choose a tag to compare

@keithxc keithxc released this 14 Sep 13:47

Connection and adaptive-resize preview for macOS arm64 and NixOS x86_64.

  • Open Devices while a connection is being prepared or established without competing for SDL events. Connecting continues in the background, and completion preserves the open device list.
  • Guard duplicate execution and defer continuation/deletion until the session loop and transport cleanup both finish. Removing a pending connection page cancels it; covering it does not.
  • Discard stale queued size work and wait for 500 ms of stable dimensions/scale after drag activity before updating the virtual display. Recheck the retained window before negotiating a new mode.

Validation: isolated macOS/Linux UI and session-state tests, SDL event-ownership regression, retained-window regression, macOS packaging, and NixOS client build/CLI smoke. Public macOS assets pass Developer ID signing, Apple notarization, stapling and extracted-ZIP Gatekeeper verification.

Activate through the consuming Nix configuration. Live tray-during-connect, resize, video/audio/input and clipboard acceptance remains a separate check after manual activation.

Source: 2d55077, on the development branch. This is a prerelease; the main branch and stable release are unchanged.

DeskPort 0.2.7 — device cards, themes and session data

Choose a tag to compare

@keithxc keithxc released this 14 Sep 11:46

DeskPort 0.2.7 development preview brings a simpler device-first interface: cards with OS marks, streaming settings inside each device, and local-only application preferences. The sidebar can show measured session data usage. Theme and accent can follow the system independently or use manual overrides. The app's own icon is used throughout the navigation.

Validated with isolated Mac/Linux UI checks, profile isolation, loopback traffic accounting, binding/clipboard regression and the Linux x86_64 Nix build. See VERIFICATION.txt for the completed distribution checks and measurement boundaries.

This prerelease targets macOS arm64 and the Linux x86_64 Nix package. Activate through your configuration after updating its pin. Live streaming and native system appearance changes still need acceptance after activation.

DeskPort 0.2.6 — background Mac clipboard copies

Choose a tag to compare

@keithxc keithxc released this 14 Sep 10:30

DeskPort 0.2.6 — background Mac clipboard copies

Fixes missed Mac-to-client text copies while DeskPort stays in the background.
Qt Cocoa's clipboard change signal depends on app activation; the host now
checks the native pasteboard change counter on authenticated polls and refreshes
its text snapshot only when changed. Stable clipboard text is not re-encoded.

Validation adds external-process writes to a unique native named pasteboard
without activation and authenticated clipboard tests with Qt notifications
suppressed, including image/file-to-text recovery. These replace the previous
assumption that in-process Qt clipboard tests cover background external copies.
Tests never read or overwrite the user's general clipboard.

Clipboard content skipping from 0.2.5 and HiDPI/media behavior from 0.2.4 are
unchanged. Native end-to-end acceptance remains after manual activation: copy
text in a Mac application while DeskPort is backgrounded, paste on the client,
then repeat in the opposite direction and after an unsupported image/file copy.

Development prerelease on dev/client-session-settings: signed/notarized macOS
arm64 ZIP/DMG and NixOS x86_64 flake. No stable release or main merge. Fully exit
an old Linux tray instance after switching if it remains alive.

DeskPort 0.2.5 — keep text clipboard sharing active

Choose a tag to compare

@keithxc keithxc released this 14 Sep 10:13

DeskPort 0.2.5 — keep text clipboard sharing active

Unsupported images/files now produce a temporary skipped-copy notice rather than
a persistent warning. Native clipboard read failures no longer bypass channel
polling and reply processing; following text copies can continue in both directions.
The notice explicitly states that text sharing remains active and expires after
five seconds. Authentication and transport errors remain visible.

The 0.2.4 fractional-scale workspace and full HiDPI frame pipeline are unchanged.

Validation covers isolated SDL/Qt non-text offers, host image/file offers, notice
expiry and subsequent bidirectional text without reconnect, plus existing Unicode,
128 MiB bounds, ordering and authenticated transport. Native clipboard behavior
still requires acceptance after manually activating both ends.

Development prerelease: macOS arm64 signed/notarized ZIP/DMG and NixOS x86_64 flake.
No main-branch merge or stable release. On Linux, fully exit an old tray instance
and reopen DeskPort if a system switch installed the new package but left the old
process running. Closing only the remote window does not exit the application.

DeskPort 0.2.4 — fractional-scale workspace preview

Choose a tag to compare

@keithxc keithxc released this 14 Sep 09:34

DeskPort 0.2.4 — fractional-scale workspace preview

A client at 150% previously received a 2x Mac desktop with the same pixel count
as its window, making UI approximately 33% larger. Adaptive sizing now matches
logical desktop space by sending the full 2x backing raster: a 2868x1500 window
at 150% requests 3824x2000 pixels, equivalent to a 1912x1000 Mac desktop.

  • Fractional scales between 1x and 2x use supersampled 2x frames. Native 1x and 2x
    remain pixel-matched; the viewer does not enlarge an undersampled workspace.
  • The capture/encoder pipeline is unchanged: no low-resolution capture or new
    host-side downscale. At 150%, transmitted pixel count increases by about 78%.
    The existing user bitrate ceiling remains respected.
  • Saved window geometry is restored, but the stream size is recomputed so old
    pixel-matched records cannot force the previous oversized desktop on reconnect.
  • Existing 960x540 logical minimum and 7680x4320 backing maximum still apply.
    Above 2x, full drawable detail takes priority over matching logical UI size.

Scope: development-branch prerelease for macOS arm64 (Developer ID signed and
Apple-notarized ZIP/DMG) and NixOS x86_64 via the tagged flake. No stable release
or main-branch merge. Activate both ends manually through mynix.

Validation: isolated geometry/detail invariants across 100%, 125%, 150%, 175%
and 200%, binding/resize and saved-window tests, native builds and distribution
verification. These checks do not establish live visual quality. After activation,
check small English/Chinese text, colored glyphs, repeated resize and reconnect,
and pointer alignment. Fractional filtering and video compression can still
change sharpness; do not equate this preview with a guarantee of pixel-identical
output. Keep 0.2.3 as the rollback reference until hardware acceptance.

References:

Physical size is advisory and is not used to override the selected output mode
or the user's desktop scaling. The Mac virtual-display helper continues to use
its existing private CoreGraphics API with runtime mode validation.

DeskPort 0.2.3 — per-device session settings

Choose a tag to compare

@keithxc keithxc released this 14 Sep 04:53

DeskPort 0.2.3 — per-device session settings

This development prerelease lets each saved device retain its own picture, audio,
keyboard, mouse and controller preferences. Open Settings from the device menu.
Saved changes apply after reconnecting; active sessions keep their original settings.

  • Clients negotiate audio capture, remote input and macOS smart workspace behavior
    with the authenticated host at launch/resume. View-only sessions disable host input
    dispatch as well as local input capture.
  • Session controls are collected on the client; redundant host audio and smart
    workspace toggles are removed. Host setup retains local service and permission controls.
  • The tray menu has a Reconnect action separate from Restart. Reconnect preserves
    the remote application and loads the selected device's saved preferences.
  • Hosts without the session-settings capability reject unsupported audio-off or
    view-only requests with an upgrade message rather than silently ignoring them.

Scope: signed and Apple-notarized macOS arm64 ZIP/DMG, plus NixOS x86_64 through
this tag's flake. The stable release and main branch are unchanged. Matching mobile
client work is on its development branch and is not included in these desktop assets.

Build and isolated regression checks cover profiles, lifecycle, clipboard policy,
translations and native compilation. Live audio/input, reconnect continuity and
per-device behavior still require verification after manually activating both ends.
See session settings for the inventory and acceptance checklist.

DeskPort 0.2.2 — clipboard and resize follow-up

Choose a tag to compare

@keithxc keithxc released this 13 Sep 15:41

This prerelease raises paired text clipboard sharing to 128 MiB of UTF-8 and removes two redundant controller discovery passes during adaptive window resizing.

  • Both upgraded devices negotiate the larger text limit. An older peer retains its 1 MiB limit; unsupported content is rejected without truncation.
  • Unchanged clipboard contents are no longer repeatedly read or Base64-encoded. Large message framing scans only newly received bytes.
  • Resize continuation skips temporary GUI controller navigation and the unmapped-controller warning probe. Real input initialization and hotplug remain enabled.
  • First-render submission logs now retain the frame's actual dimensions, and input initialization has separate timing markers.

Scope: signed/notarized macOS arm64 ZIP/DMG and the NixOS x86_64 package via this tag's flake. No other distribution packages are included. Corresponding source includes pinned submodules.

The companion mynix installer migrates rollback apps into .noindex and unregisters those backup entries to prevent duplicate application search results.

Native post-upgrade timing, clipboard performance and input/audio acceptance remain to be measured. Large text transfer is memory-backed and can temporarily consume several times the text size. See docs/CLIPBOARD.md, docs/PERFORMANCE.md and VERIFICATION.txt.

DeskPort 0.2.1 — adaptive resize preview

Choose a tag to compare

@keithxc keithxc released this 13 Sep 14:55

DeskPort 0.2.1 is a prerelease for CPU measurement and faster adaptive resolution transitions. It retains the existing host/helper process boundaries and stop/resume protocol.

  • Reduce stable-window settling from 900 to 300 ms and select the latest retained-window size before resuming.
  • Verify virtual display modes immediately, then confirm stability after 100 ms; retain bounded retries and rollback. Avoid reapplying an already matching OS mode.
  • Wake the display-control worker on requests instead of polling every 50 ms.
  • Reuse successful decoder probe results within one initialization only, with exact codec/dimension/display keys. Real decoder initialization and fallback remain.
  • Avoid redundant full-frame transition-spinner painting.
  • Add CPU sampling and resize stage diagnostics. First render submission is not physical scanout or input readiness.

Validation: macOS build, 21 binding / 15 UI / 8 service / 26 host-lifecycle checks and 30 retained-window transitions; Linux Nix build, CLI / 15 UI / 8 service checks and 30 retained-window transitions. Both target system configurations built successfully. GitHub CI passed. macOS Developer ID signatures, application/DMG notarization and tickets, and extracted-ZIP Gatekeeper checks passed. See VERIFICATION.txt for the limits of these checks.

CPU reduction and end-to-end resize P95 have not yet been established by controlled live A/B testing. P2 static-frame/display-queue changes, P3 video-only reconfiguration and P4 process consolidation are deferred.

This prerelease targets only macOS arm64 (mm4) and NixOS x86_64 (pk4). The Mac ZIP/DMG is notarized. The NixOS package is built from the v0.2.1 flake; the consumer configuration pins the exact source revision, and its package/system build has completed. No AppImage, DEB, RPM, Arch, Flatpak or other platform packages are distributed. This prerelease does not replace 0.2.0 as the latest stable release.

Upgrading an older Apple Development-signed installation to the Developer ID distribution can require renewed Screen Recording/Accessibility authorization. Keep a separate maintenance connection and the previous release available.

See docs/PERFORMANCE.md for measurement commands and the live acceptance matrix. Pairing state is preserved.

DeskPort 0.2.0 — installable desktop release

Choose a tag to compare

@keithxc keithxc released this 13 Sep 13:18

DeskPort 0.2.0 — installable desktop release

DeskPort now provides downloadable desktop packages with bundled viewer
dependencies and an optional Sunshine host. This release carries forward the
device binding, automatic connection ports, clipboard text sharing and persistent
desktop sessions from 0.1.14.

Downloads

Download Supported target Includes host
DeskPort-0.2.0-macos-arm64.dmg / .zip Apple Silicon, macOS 26+ Yes, with native virtual display
deskport_0.2.0-1_amd64.deb Ubuntu 24.04+, Debian 13+ Yes
deskport-0.2.0-1.x86_64.rpm Fedora 44 Yes
deskport-0.2.0-1-x86_64.pkg.tar.zst Current Arch Linux Yes
DeskPort-0.2.0-x86_64.AppImage Linux x86_64, glibc 2.39+ Yes
DeskPort-0.2.0-client-x86_64.flatpak Linux x86_64, Freedesktop Platform 25.08 Client only

On Mac, open the DMG and drag DeskPort into Applications. All bundled executable
code has Developer ID signatures; Apple accepted the app and DMG for notarization.
Tickets are stapled, and Gatekeeper accepts the DMG and the app extracted from
the ZIP. Hosting still requires the user's Screen Recording and Accessibility
permissions. Existing installations signed with the old development identity may
need those permissions granted again.

Linux packages include a private Qt/media runtime. Native package managers resolve
the remaining system dependencies. The AppImage retains its original file path
for login startup. Flatpak uses session-bus ownership for window activation and
recovers from forced termination without stale sandbox PID locks.

See the Linux installation guide and
macOS guide for commands and first-use permissions.
Nix users can run nix run github:keithxc/deskport/v0.2.0.
Verify release assets against SHA256SUMS.txt.

Validation and limits

Release checks cover Apple signing/notarization/stapling/Gatekeeper, the Linux Nix
build and CLI smoke, isolated UI/service checks, clean package installation on
Ubuntu 24.04, Debian 13, Fedora 44 and Arch, AppImage execution, and Flatpak GUI
startup, duplicate activation and forced-exit recovery. Packaged viewer and host
checks use separate state; no personal pairing or stream is used for acceptance.

These checks do not establish hardware decode performance, all desktop permission
flows, unattended restart or long-session reliability. Linux hosting still needs
appropriate capture/input access, including /dev/uinput; the installer does not
silently grant privileged device access or replace standalone Sunshine services.
Flatpak does not provide hosting or desktop login service integration. Reachable
LAN/VPN connectivity is required; DeskPort does not provision an Internet tunnel.

There are no Windows/ARM Linux packages, App Store builds, AUR entries or Flathub
listing in this release. Sunshine and related component source integration is
recorded for future work and is not implemented here. Future iOS/iPadOS/macOS
store and Android client work remains separate.

Source, build instructions and pinned dependencies are in this release's Git tag;
see bundled components for upstream source and notices.
Existing 0.1.14 release assets remain unchanged. Publishing 0.2.0 does not replace
any running installation.

The source archive includes all viewer submodules, original Sunshine source,
initialized macOS host submodules and DeskPort patches. See SOURCE_ARCHIVE.txt
and SOURCE_REVISIONS.json inside it for scope and pinned revisions.