mirror of
https://github.com/jamesstringer90/appsandbox.git
synced 2026-10-22 02:52:49 -05:00
### 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)
52 lines
2.7 KiB
XML
52 lines
2.7 KiB
XML
<Project>
|
|
<!--
|
|
SINGLE SOURCE OF TRUTH for the App Sandbox version.
|
|
|
|
Edit the four numbers below and nothing else. Everything derives from them at build time:
|
|
* every app binary's FileVersion / ProductVersion (via build\version.rc, wired in
|
|
Directory.Build.targets)
|
|
* both drivers' DriverVer (<TimeStamp> in the driver .vcxproj)
|
|
* the release zip name (make-release.ps1)
|
|
* the Microsoft submission + product name (sign-drivers.ps1)
|
|
|
|
MSBuild auto-imports this file into every project in the tree, so no <Import> is needed.
|
|
-->
|
|
<PropertyGroup>
|
|
<AsbVersionMajor>0</AsbVersionMajor>
|
|
<AsbVersionMinor>1</AsbVersionMinor>
|
|
<AsbVersionPatch>3</AsbVersionPatch>
|
|
<AsbVersionRevision>0</AsbVersionRevision>
|
|
|
|
<!-- Derived forms - do not edit. -->
|
|
<AsbVersion>$(AsbVersionMajor).$(AsbVersionMinor).$(AsbVersionPatch).$(AsbVersionRevision)</AsbVersion>
|
|
<AsbVersionComma>$(AsbVersionMajor),$(AsbVersionMinor),$(AsbVersionPatch),$(AsbVersionRevision)</AsbVersionComma>
|
|
<AsbVersionShort>$(AsbVersionMajor).$(AsbVersionMinor).$(AsbVersionPatch)</AsbVersionShort>
|
|
</PropertyGroup>
|
|
|
|
<!--
|
|
The WDK's build-time INF verifier (DPVerifierTask) can't load x86\InfVerif.dll outside the
|
|
Visual Studio build environment, so command-line / CI builds error on it (HRESULT 0x8007007E).
|
|
Skip it there ONLY - VS GUI builds still run it, and the INF is re-verified by Microsoft on
|
|
every submission. $(BuildingInsideVisualStudio) is set to 'true' by the IDE and is empty for
|
|
command-line msbuild.
|
|
-->
|
|
<PropertyGroup Condition="'$(BuildingInsideVisualStudio)' != 'true'">
|
|
<SkipPackageVerification>true</SkipPackageVerification>
|
|
</PropertyGroup>
|
|
|
|
<!--
|
|
Same class of problem as the InfVerif skip above, for ARM64 driver builds.
|
|
ARM64 drivers must be Universal, so the WDK runs ApiValidator on them — but it
|
|
defaults to the x86 ApiExtractor (aitstatic.exe), which cannot read an ARM64 PE
|
|
and fails with exit code 193 (ERROR_BAD_EXE_FORMAT) when cross-building ARM64 on
|
|
a non-ARM64 host (e.g. the x64 dev/CI box). Disable it ONLY for that cross-build
|
|
case: native ARM64 hosts and every x64 build still run it, and Microsoft re-runs
|
|
full API validation on every attestation submission, so nothing ships unchecked.
|
|
(Checks both PROCESSOR_ARCHITECTURE and ...ITEW6432 so an emulated x64 MSBuild on
|
|
an ARM64 host is correctly treated as "host can validate".)
|
|
-->
|
|
<PropertyGroup Condition="'$(Platform)' == 'ARM64' And '$(PROCESSOR_ARCHITECTURE)' != 'ARM64' And '$(PROCESSOR_ARCHITEW6432)' != 'ARM64'">
|
|
<ApiValidator_Enable>false</ApiValidator_Enable>
|
|
</PropertyGroup>
|
|
</Project>
|