Skip to content

v0.7.3

Choose a tag to compare

@github-actions github-actions released this 20 Jun 13:36

[0.7.3] - 2026-06-20

Added

  • +multitouch is now an allowed FreeRDP flag — touchscreen / stylus / pen passthrough (#623, thanks @Scratch2xs). Add +multitouch to your extra FreeRDP flags (rdp.extra_flags in winpodx.toml, or the Settings extra-args field) so a touchscreen, drawing tablet, or pen works inside Windows apps — handy for drawing software with no Linux build. It's an input-only toggle, so it joins the FreeRDP flag allowlist with no security trade-off.
  • Optional idle auto-stop to free the VM's RAM (#622, thanks @hermitguo). Settings → Idle Action chooses what the Idle Timeout does when it elapses: Pause (default — freezes the VM, frees CPU, keeps RAM, instant resume) or Stop (frees the VM's RAM; the next launch is a full boot). Off by default — Idle Timeout itself is off by default, and the action stays Pause unless you opt into Stop. (The winpodx interface is already multi-language, also part of this request: Settings → UI Language picks from 8 languages including 中文 / 日本語 / 한국어.)
  • Reverse-open now opens files that live on the Windows VM itself, not just your shared Home (#616, thanks @notnotno). Picking a Linux app from a Windows file's Open with menu used to only work for files under your shared Home (\\tsclient\home); a file on the Windows Desktop or anywhere on C: failed with a confusing "No such file". The guest's C: is now shared to the host over SMB (loopback only) and mounted on demand, so a host app opens the real guest file — and your edits save straight back to it. Delivered entirely at runtime (guest share via the agent + host mount), so install.bat is untouched. Requires kio-fuse on the host (KDE); winpodx doctor warns if it's missing.
  • Debloat disables more telemetry and ad surfaces (#590, thanks @GameSoul7Eugene). The Ads & suggestions item now clears additional ContentDeliveryManager suggestion keys and the rotating lock-screen ads, and the Unnecessary scheduled tasks item disables more pure-telemetry tasks (AitAgent, ProgramInventoryUpdater, CEIP BthSQM, Feedback\Siuf, WindowsAI Copilot/Insights data collection, and the Office telemetry agents). Security- and system-critical tasks (Windows Defender, licensing/activation, certificate services, Windows Update repair, language packs, Windows Hello) are deliberately left untouched so debloat can't break activation, updates, or the IME.

Fixed

  • Dashboard RAM + Disk C: gauges no longer get stuck on "n/a" (#634, thanks @ismikes). Both read from the guest over the agent (CPU is host-side, which is why it kept working), and the quiet poll's timeout was a tight 4s — on a slow or freshly-relaunched guest the read didn't finish in time and both gauges blanked to "n/a". Bumped to a generous 12s (the poll runs off the GUI thread with a re-entrancy guard, so the longer budget never freezes or stacks the dashboard). Same too-tight-timeout class as #619.
  • winpodx app refresh no longer times out at 30s on a slow guest (#619, thanks @KyleSanderson). Discovery enumerates the guest's Start Menu + AppX packages, which on a cold or low-spec guest legitimately runs over a minute — but the CLI capped it at 30s (/exec timed out after 29.0s) while a fresh install discovered fine at the library's own 180s. The timeout is now a single generous default (DEFAULT_DISCOVERY_TIMEOUT = 300s) across every path (provision, app refresh, GUI Refresh); it exists only to bound a genuinely wedged guest, not to cap normal completion. Raise it with winpodx app refresh --timeout for a pathologically slow guest.
  • install.sh --ref <branch> now installs the branch's latest commit on a re-run (#616). It fetched the remote but then checked out the stale local branch ref (and only reset --hard for main), so re-running an update against a feature branch reinstalled whatever was first cloned — a silent no-op. It now checks out origin/<ref>.
  • An update now applies compose-template changes and starts a stopped pod, instead of deferring (#616). install.sh regenerates compose.yaml on every upgrade but recreated the container only when the pod was already running, and skipped the Windows-side apply entirely when the pod was stopped — so guest-side changes shipped by an update silently didn't land until the next manual launch. An update now recreates on a compose change even when stopped, and starts a stopped pod to apply (existing install — no ISO redownload).
  • Removed the USB drive-letter auto-mapper that kept destabilizing the install (#613, #638, thanks @zephir2008 and @ismikes). media_monitor.ps1 tried to surface each USB volume as a drive letter (E:, F:, …), but it could not do so reliably in RemoteApp (RAIL) sessions, and shipping it in the OEM bundle re-triggered the intermittent Windows Defender / rdprrap first-boot install deadlock (fresh installs hung right after the file was copied). It's gone. USB media is still reachable in every session via the \\tsclient\media redirection and the desktop USB shortcut; for a real drive letter or raw block-device access, use USB passthrough. Existing pods have the stale WinpodxMedia autostart entry cleaned up on the next apply-fixes.
  • The usbredirect not found hint now names the right package per distro (#593, thanks @techabsol). Debian/Ubuntu is usbredirect, Fedora is usbredir-tools (plus an Atomic Fedora rpm-ostree form), and openSUSE stays usbredir — the previous message pointed at packages that don't carry the binary.
  • install.bat no longer throws a syntax error reserving the agent URL (#614, thanks @zephir2008). The netsh http add urlacl … sddl=D:(A;;GX;;;WD) line left the SDDL unquoted, so cmd.exe treated its (, ;, and ) as metacharacters and the reservation could fail. The SDDL value is now quoted (sddl="D:(A;;GX;;;WD)").
  • The guest agent recovers from a drifted bearer token instead of staying 401 forever (#615, thanks @zephir2008). The agent reads its token once at boot from a baked copy of C:\OEM\agent_token.txt; if that diverges from the host token, guest_exec / guest_summary (and any authenticated /exec) return HTTP 401 with no way for the agent to fix itself. A new winpodx guest resync-token re-pushes the current token over the FreeRDP channel (which auths with the Windows password, so it works while the agent is 401) and respawns the agent to re-read it. winpodx doctor now auto-runs this when its guest_exec probe hits a 401, then re-checks.

Contributors

Thanks to @notnotno (#616), @hermitguo (#622), @Scratch2xs (#623), @KyleSanderson (#619), @ismikes (#634, #638), @GameSoul7Eugene (#590), @techabsol (#593), and @zephir2008 (#613, #614, #615) for the reports and contributions that drove this release.