App Sandbox 0.1.8
### Added
- Choose a specific GPU when creating or editing a VM on Windows, with automatic fallback if that GPU becomes unavailable.
Thanks to @TejasPersonal, @Mungr3ss and @JasonSTX for requesting this ([#109](https://github.com/jamesstringer90/appsandbox/issues/109)), and @trevmlt for documenting the multi-GPU problem and a workaround ([#110](https://github.com/jamesstringer90/appsandbox/issues/110)).
### Fixed
- Preserve VM MAC addresses across restarts on Windows and macOS, allowing router address reservations to keep working.
Thanks to @kurokawaikki for identifying the changing MAC addresses ([#92](https://github.com/jamesstringer90/appsandbox/issues/92)).
- Keep automatic login enabled and prevent password expiry for newly created Windows VMs on Windows and macOS hosts.
Thanks to @macg4dave for reporting unexpected login prompts ([#133](https://github.com/jamesstringer90/appsandbox/issues/133)).
- Fix network setup failures when starting multiple VMs at the same time on Windows.
- Reduce unexpected SSH port changes on Windows by retrying the saved port, with clearer failure messages.
- Fix missing network drivers in newly created Windows VMs on macOS.
Thanks to @YiwenLu-yiwen for reporting the failed download and confirming the workaround ([#107](https://github.com/jamesstringer90/appsandbox/issues/107#issuecomment-5689676123)).
App Sandbox 0.1.7
### Added
- NVIDIA DLSS support in compatible Vulkan games running in Windows VMs on x64 Windows hosts.
Thanks to @darkjezza for reporting this ([#139](https://github.com/jamesstringer90/appsandbox/issues/139)).
- A dedicated VM settings dialog on Windows and macOS, and a clearer snapshot and branch manager on Windows.
### Fixed
- Corrected GPU and network information on macOS and removed unsupported network options.
App Sandbox 0.1.6
### Added
- Native NVIDIA OpenGL and Vulkan support in Windows VMs on x64 Windows hosts, including 32-bit games and applications.
**Special thanks to @Poldino95 for figuring out why NVIDIA's native graphics drivers weren't working inside VMs and demonstrating working solutions. Their detailed research provided the foundation for these improvements.** ([#130](https://github.com/jamesstringer90/appsandbox/pull/130), [#131](https://github.com/jamesstringer90/appsandbox/pull/131))
Thanks also to @N1qro for reporting Vulkan game launch failures ([#73](https://github.com/jamesstringer90/appsandbox/issues/73)).
- NVIDIA DLSS support in compatible 64-bit games running in Windows VMs on x64 Windows hosts.
Thanks again to @Poldino95 for identifying what prevented DLSS from working and demonstrating the solution ([#129](https://github.com/jamesstringer90/appsandbox/pull/129)), and @Giraffe886 for raising this ([#98](https://github.com/jamesstringer90/appsandbox/issues/98)).
### Fixed
- Improved OpenGL and Vulkan support for Intel and AMD GPUs in Windows VMs by using their native graphics drivers, including supplying missing AMD driver files.
- Fixed Ubuntu 26.04.1 VMs getting stuck during installation.
Thanks to @EzYDark for diagnosing the package compatibility problem and proposing a fix ([#120](https://github.com/jamesstringer90/appsandbox/pull/120)).
- Fixed Firefox failing to launch in newly created Ubuntu VMs.
Thanks to @EzYDark for identifying the cause and proposing a fix ([#120](https://github.com/jamesstringer90/appsandbox/pull/120)).
- Fixed package update errors in newly created Ubuntu VMs caused by leftover installation-disc sources.
App Sandbox 0.1.4
- **Windows 11 (ARM64) VMs on macOS.** On an Apple Silicon Mac, App Sandbox can
now create and run Windows 11 ARM guests -- previously a macOS host could only
run macOS guests. The Windows guest gets its own display window, keyboard and
mouse, sound, clipboard (including copying files to and from your Mac),
one-click SSH, and networking, and is built from a Windows 11 ARM64 ISO you
provide. It runs on a self-contained virtual-machine engine bundled with the
app, and the guest agent and drivers are downloaded (code-signed) when you
create the VM, so no test-signed components ship inside App Sandbox.
- **Non-ASCII usernames and passwords now work when creating a VM through the
scriptable API.** Characters outside plain ASCII (for example Chinese) arrive
from the API JSON-escaped; App Sandbox stored the escape sequences literally
instead of decoding them, so a VM created via the API with such a credential
would reject the login. They are now decoded correctly. (The desktop app was
unaffected.)
- **The virtual display now recovers if it gets disabled in the guest.** The
guest agent kept trying to restart the App Sandbox display driver -- which
can't re-enable a disabled device -- so the picture never came back; it is now
re-enabled and recovers.
- Various stability and bug fixes across the Windows and macOS components.
- **Windows VMs on macOS are not GPU-accelerated.**
- **x64 (emulated) apps in ARM Windows VMs don't get the OpenGL fix** -- the Mesa
driver shipped on ARM is ARM64-only; native ARM64 apps get full GPU OpenGL.
(carried over from 0.1.2)
- **ARM Linux (Ubuntu 26.04 LTS) guests do not work -- on ARM, Windows is the
only working guest** (Ubuntu 26.04's arm64 kernel churns BPF JIT memory and
never reaches the desktop). (carried over from 0.1.2)
### Added
- **Headless mode with a scriptable HTTP/JSON API (Windows + macOS).** Launch
App Sandbox with `--headless` to run a single-owner background daemon exposing
a loopback HTTP/JSON API that mirrors the GUI: create, start, shut down, edit,
and delete VMs; manage snapshots, branches, and templates (Windows); read SSH
connection info; subscribe to a live event stream; and open or close a VM's
display window -- all from a script. Ships a dependency-free Python SDK,
runnable examples, and a cross-platform test suite (bundled in the release
package under headless-api/, alongside the app). Launching normally (no
`--headless`) is unchanged.
- **One-click SSH key login.** With the SSH server enabled, the new "Deploy SSH
key" option installs an App Sandbox key into the guest (Windows, Linux, and
macOS) so the GUI's SSH button and the SDK connect without a password.
### Fixed
- **Excessive GPU usage while viewing a Windows VM.** The display window was
redrawing as fast as it could -- presenting ~2,100 frames a second and holding
the host GPU near 90% even on a static screen. It now redraws only when the
picture changes (plus a small safety refresh), dropping to the real frame rate
(~30-60 fps) with no added latency.
- **A graceful shutdown could report a false error.** On a busy guest, a
shutdown that actually succeeded could surface as a failure; shutdown and
restart now report success once the request is delivered and confirm it by the
guest exiting.
- **The headless daemon now cleans up its VMs when it exits**, instead of
leaving them running with no owner.
- **macOS: text fields no longer autocorrect or autocapitalize** VM names,
usernames, paths, and snapshot names as you type.
- Various stability and bug fixes across the Windows, macOS, and Linux
components.
### Known issues
- **Create VMs one at a time.** Creating several at once can race on the
disk-image build/staging step, causing a build to fail and the VM to be
removed; create them sequentially.
- **x64 (emulated) apps in ARM Windows VMs don't get the OpenGL fix** -- the
Mesa driver shipped on ARM is ARM64-only; native ARM64 apps get full GPU
OpenGL. (carried over from 0.1.2)
- **ARM Linux (Ubuntu 26.04 LTS) guests do not work -- on ARM, Windows is the
only working guest** (Ubuntu 26.04's arm64 kernel churns BPF JIT memory and
never reaches the desktop). (carried over from 0.1.2)
### Added
- **Windows on ARM (ARM64).** App Sandbox now runs on ARM64 Windows PCs and can
create **ARM Windows 11 VMs with GPU-PV** — paravirtualized GPU acceleration in
the guest.
### Fixed
- **Hardware OpenGL in Windows VMs.** OpenGL apps in the guest were stuck on
Windows' GDI Generic software renderer (OpenGL 1.1) — apps needing OpenGL 4.3+
(e.g. Blender) refused to start. The old approach selected Microsoft's OpenGLOn12
driver via an AppInit DLL, but Windows disables AppInit DLLs when Secure Boot is
on — and App Sandbox runs guests with Secure Boot on by default — so it never
engaged (and even when it did, Windows' opengl32 dropped the GPU driver across the
virtual GPU's render/display split). App Sandbox now installs the Mesa OpenGL
driver directly into the guest, taking Windows' broken opengl32 out of the path,
so apps get real GPU-accelerated OpenGL 4.6 (or software 4.6 with no GPU) — with
Secure Boot left on.
- **New VMs could fail to start with an odd memory size.** HCS (Windows' Host
Compute Service) requires VM memory to be a multiple of 2 MB; the suggested
default (half the host RAM) or a manually entered value could be odd (e.g. 7991 MB)
and fail to start. RAM is now rounded to an even value in the suggested default,
the create form, and inline edits.
- **New Sandbox dialog no longer closes by accident.** Selecting text in a field
and releasing the mouse outside the dialog no longer dismisses it.
- Various stability and bug fixes across the Windows, macOS, and Linux components.
### Known issues
- **x64 (emulated) apps in ARM Windows VMs don't get the OpenGL fix.** The Mesa
driver shipped on ARM is ARM64-only, so emulated x64 apps fall back to the old
renderer; native ARM64 apps get full GPU OpenGL.
- **ARM Linux (Ubuntu 26.04 LTS) guests do not work in this release — on ARM,
Windows is the only guest that works.** Ubuntu 26.04's arm64 kernel constantly
churns BPF JIT memory, which makes the kernel boot extremely slowly and never
reach the Ubuntu desktop. On a Qualcomm Snapdragon X1-Plus (ASUS A14) using 25H2,
the guest never came up and the App Sandbox agent never came online.
Build, EV-sign, Microsoft attestation-sign, and package AppSandbox for
Windows on ARM with feature parity to x64 except the vTPM and guest-state
isolation (neither is supported by ARM Windows HCS). Target architecture is
resolved at compile time (ASB_IS_ARM64 in disk_util.h); the supported pairing
is x64 build/host/guest and ARM64 build/host/guest, so one flag drives every
architecture decision. x64 behavior is unchanged throughout.
Runtime:
- hcs_vm.c: omit SecuritySettings (vTPM + GuestStateOnly isolation) on ARM;
Secure Boot is retained.
- disk_util.c: emit the arch token in every autounattend/unattend
processorArchitecture attribute; on ARM, bypass the Win11 Setup hardware
checks via the HKLM\SYSTEM\Setup\LabConfig keys across all VM-creation
paths; select the arch-correct OpenSSH Server MSI.
- d3dlayers.c / agent.c: resolve, download, and stage the arm64 D3D mapping
layers for GPU-PV; stage the Vulkan ICD manifest under the arch-neutral
name dzn_icd.json.
Build and release pipeline:
- AppSandbox.sln: add the missing AppSandboxPackage Release|ARM64 Build.0 so
the VS GUI actually runs sign+package for the ARM64 config.
- AppSandboxPackage.vcxproj: run make-release.ps1 for Release on x64 or ARM64,
passing -Platform $(Platform).
- make-release.ps1 / sign-drivers.ps1: -Platform ARM64 selects bin\Release-ARM64,
the ARM64 attestation profile, and the AppSandbox-<ver>-win-arm64.zip name.
Sanitize LIB before Add-Type so the .NET Framework C# compiler does not fail
(CS1668) on the non-existent atlmfc\lib\ARM64 path the VS ARM64 build adds to
LIB.
- Directory.Build.props: disable ApiValidator only when cross-building ARM64 on
a non-ARM64 host (the x86 ApiExtractor cannot read ARM64 PEs); Microsoft
re-runs full API validation on every attestation submission.
- Package.vcxproj: stage the vendored ARM64 devcon.exe into the ARM64 drivers
output, mirroring the x64 devcon copy.
- vendor/devcon/arm64/devcon.exe: add the vendored ARM64 devcon.exe, un-ignored
in .gitignore mirroring the existing vendor/webview2/arm64 precedent.
Single edit to the version source of truth (Directory.Build.props:
AsbVersionPatch 0->1). Windows binaries (via build/version.rc) and the macOS
app/framework (via the build-time stamp from Directory.Build.props) both build
as 0.1.1; release zips become AppSandbox-0.1.1-{win-x64,mac-arm64}.zip.
YubiKey-gated signing/packaging driven from the VS Release|x64 build:
- make-release.ps1 / sign-drivers.ps1: EV-sign all binaries + driver
.sys/.dll, submit drivers to Microsoft for attestation in parallel,
deposit the returned MS-signed drivers into bin\Release\drivers, and
build a flat AppSandbox-<ver>-x64.zip. Token presence is detected via
WinSCard + a silent NCrypt key-open, so an unplugged or unrelated card
never triggers an "insert smart card" dialog; no token => test-sign
only, no packaging.
- AppSandboxPackage.vcxproj runs it as a post-build step.
- Directory.Build.props/targets + build/version.rc: single-source version
stamped into every binary and into the driver INFs (StampInf).
- VDD INF: pull WUDFRd via Include/Needs + Win11 decoration to pass
infverif /h for Partner Center submission.
- Default new Windows VMs to Test Mode off (shipped drivers are MS-signed).
- SIGNING.md documents the git-ignored partner-center.local.json that you
must create with the Entra API secrets for driver attestation.
Partner Center credentials stay in git-ignored tools/sign/*.local.* files.