Commit Graph
10 Commits
Author SHA1 Message Date
James Stringer af241cdaf3 Bump version to 0.1.8
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)).
2026-09-15 21:55:30 -04:00
James Stringer c654b940d0 Bump version to 0.1.7
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.
2026-09-14 22:49:27 -04:00
James Stringer 3480763be3 Bump version to 0.1.6
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.
2026-09-13 20:28:37 -04:00
James Stringer 594d323ffe Bump version to 0.1.5
App Sandbox 0.1.5

### Added

- Choose where VM disks are stored when creating a sandbox on Windows or macOS, including on another drive. Requested in [#12](https://github.com/jamesstringer90/appsandbox/issues/12), [#24](https://github.com/jamesstringer90/appsandbox/issues/24), [#38](https://github.com/jamesstringer90/appsandbox/issues/38), [#68](https://github.com/jamesstringer90/appsandbox/issues/68), and [#71](https://github.com/jamesstringer90/appsandbox/issues/71).
- Automatic mouse capture for games and 3D applications in Windows and Ubuntu VMs.
- Keyboard shortcut capture and audio mute controls in the Windows VM viewer's title bar menu on macOS.

### Fixed

- Improved international keyboard input and fixed keyboard layout setup in newly created Ubuntu VMs. [#76](https://github.com/jamesstringer90/appsandbox/issues/76)
- Fixed host input methods intercepting typing and language-switching shortcuts when keyboard shortcut capture is enabled on Windows. [#116](https://github.com/jamesstringer90/appsandbox/issues/116)
- Fixed incorrect mouse positioning when changing display scaling inside Windows VMs. [#111](https://github.com/jamesstringer90/appsandbox/pull/111)
- Fixed distorted text cursors in the Windows viewer at high DPI scaling settings.
- Fixed copying text from Ubuntu Terminal to the host clipboard.
- Fixed NVIDIA driver-profile errors preventing games such as Counter-Strike 2 from starting. Addresses the NVIDIA profile error in [#73](https://github.com/jamesstringer90/appsandbox/issues/73).
- Fixed Windows installation images being incorrectly detected as English on non-English hosts. [#84](https://github.com/jamesstringer90/appsandbox/issues/84)
- Fixed NAT internet connectivity in Windows VMs with localized network adapter names. [#79](https://github.com/jamesstringer90/appsandbox/issues/79), [#84](https://github.com/jamesstringer90/appsandbox/issues/84)
- Fixed external networking failing after saving adapter names containing non-English characters. [#94](https://github.com/jamesstringer90/appsandbox/issues/94)
- Fixed saved NAT addresses being lost when VMs shut down.
- Fixed Windows VMs created from templates using the template's disk size instead of the size selected during creation.
- Fixed saved snapshots being modified when starting a VM after deleting a branch.
- Fixed snapshot controls remaining visible after all snapshots and branches were deleted.
- Fixed Windows installation getting stuck when the username matches the VM name. [#103](https://github.com/jamesstringer90/appsandbox/pull/103)
- Improved VM creation checks for invalid usernames and missing passwords.
- Fixed VM table columns shifting when switching operating systems in the creation window.
2026-09-09 21:18:10 -04:00
James Stringer 2d9eae869a Bump version to 0.1.4
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)
2026-06-30 20:57:07 -04:00
James Stringer df0e2532e0 Bump version to 0.1.3
### 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)
2026-06-11 22:03:47 -04:00
James Stringer 5674a4c66d Bump version to 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.
2026-06-07 15:25:42 -04:00
James Stringer 717c5b5148 Add ARM64 (Windows on ARM) support
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.
2026-06-04 19:00:27 -04:00
James Stringer b56c67bd25 Bump version to 0.1.1
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.
2026-06-01 21:48:24 -04:00
James Stringer c986d092bf Add EV + Microsoft-attestation driver signing and release packaging
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.
2026-05-31 22:21:09 -04:00