v0.7.3
[0.7.3] - 2026-06-20
Added
+multitouchis now an allowed FreeRDP flag — touchscreen / stylus / pen passthrough (#623, thanks @Scratch2xs). Add+multitouchto your extra FreeRDP flags (rdp.extra_flagsinwinpodx.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 onC:failed with a confusing "No such file". The guest'sC: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), soinstall.batis untouched. Requires kio-fuse on the host (KDE);winpodx doctorwarns if it's missing. - Debloat disables more telemetry and ad surfaces (#590, thanks @GameSoul7Eugene). The Ads & suggestions item now clears additional
ContentDeliveryManagersuggestion keys and the rotating lock-screen ads, and the Unnecessary scheduled tasks item disables more pure-telemetry tasks (AitAgent,ProgramInventoryUpdater, CEIPBthSQM,Feedback\Siuf,WindowsAICopilot/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 refreshno 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 withwinpodx app refresh --timeoutfor 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 onlyreset --hardformain), so re-running an update against a feature branch reinstalled whatever was first cloned — a silent no-op. It now checks outorigin/<ref>.- An update now applies compose-template changes and starts a stopped pod, instead of deferring (#616).
install.shregeneratescompose.yamlon 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.ps1tried 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\mediaredirection and the desktop USB shortcut; for a real drive letter or raw block-device access, use USB passthrough. Existing pods have the staleWinpodxMediaautostart entry cleaned up on the nextapply-fixes. - The
usbredirect not foundhint now names the right package per distro (#593, thanks @techabsol). Debian/Ubuntu isusbredirect, Fedora isusbredir-tools(plus an Atomic Fedorarpm-ostreeform), and openSUSE staysusbredir— the previous message pointed at packages that don't carry the binary. install.batno longer throws a syntax error reserving the agent URL (#614, thanks @zephir2008). Thenetsh http add urlacl … sddl=D:(A;;GX;;;WD)line left the SDDL unquoted, socmd.exetreated 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 newwinpodx guest resync-tokenre-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 doctornow auto-runs this when itsguest_execprobe 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.