psadt-deploy-skill 0.30.1 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +28 -41
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -434,44 +434,31 @@ The two most recent releases are below. **[CHANGELOG.md](CHANGELOG.md)** carries
434
434
  every release since 0.1.0, and nothing is ever removed from it - this section is a window onto it, not a
435
435
  second copy to keep in sync.
436
436
 
437
- ### 0.30.1 - 2026-09-14
438
- - **Fixed: a scheduled task will not start on battery.** `schtasks /Create` defaults
439
- `DisallowStartIfOnBatteries` and `StopIfGoingOnBatteries` to TRUE, so on an unplugged laptop the task is
440
- created, `/Run` returns 0, and it then sits at status **Queued** forever. Every action reported a bare
441
- timeout that named no cause, and the failure followed the POWER CABLE rather than the package. The task
442
- is registered from XML now, which also drops the 72-hour execution limit `/Create` imposes.
443
- - **Fixed: a leftover `WindowsSandboxServer` silently broke every later run** (Windows-Sandbox#124). The
444
- next sandbox came up and its scheduled tasks never executed, so a different pre-check timed out each
445
- time and it read as flakiness. Broker-without-VM is now cleared at start instead of being reported as
446
- "a sandbox is already running", which it is not.
447
- - **Fixed: the timeout diagnostics answered their own cleanup** - they ran after the task was deleted and
448
- read the process table through WMI, which is broken in the guest until GuestPrepare repairs it.
449
- - **Added: an ARP dump whenever detection contradicts the action**, covering both HKLM views and every
450
- `HKEY_USERS` subtree. It found the trap below in a single run. The progress window now also lists what
451
- has already passed, with a tick per completed step.
452
- - **Note: an EXE installer that can install per-user must be forced to per-machine** (App. L.7, BINDING).
453
- Greenshot 1.3.315 without `/ALLUSERS` installed into the SYSTEM profile and registered under
454
- `HKEY_USERS\S-1-5-18`; install, uninstall, reinstall and repair all returned exit 0 while an HKLM
455
- detection rule correctly said "absent". With `/ALLUSERS` the full gate is GREEN. Suite 551 -> 552.
456
- ### 0.30.0 - 2026-09-14
457
- - **Fixed: the sandbox could not test a heavy package - and it was never the package.** Smart App Control
458
- is enabled in the Windows Sandbox base image while Defender is disabled, so `wintrust` asks the disabled
459
- Defender to rate every signed file and waits ~2 minutes per package. A bootstrapper chaining a dozen MSIs
460
- took 30+ minutes and looked like a hang, three times. Two lines in the guest remove it: the same run then
461
- finished in **5.7 minutes with exit 0**. This also corrects the ADK lesson in Appendix G, which blamed
462
- Defender scanning - Defender was switched off the whole time.
463
- - **Fixed: nothing was visible inside the sandbox.** On this Sandbox build the `LogonCommand` process gets
464
- no console window, so the 0.29.0 heartbeat went to a file nobody could see. There is now a top-most
465
- progress window in the guest, the host mirrors it, and the runner measures whether a console exists at
466
- all. Runs are cancellable with `STOP.txt` (guest shuts itself down in 5 s, no orphaned VM worker), a
467
- failed VM start is no longer reported as "the VM was closed", and a timed-out action captures the guest's
468
- process table and vendor logs before the VM is discarded.
469
- - **Added: `Get-PsadtInstallerEngine.ps1`** - identifies the installer engine from the binary. A definitive
470
- marker always beats a hint, so an install4j installer carrying NSIS branding no longer gets `/S`, which
471
- hangs on its language dialog forever. Reports marker, byte offset and region; an unrecognised file
472
- returns `unknown`, never a guess.
473
- - **Added: `Get-PsadtSwitchCandidates.ps1` + `references/switch-catalog/`** - ranked switch candidates from
474
- 19 engine defaults, offline, before the first web query, with a reason for every miss. It is an ENGINE
475
- catalog, not an application catalog, and **winget stays opt-in** including as a research source.
476
- - **Faster:** staging 481 MB into the guest via `robocopy /MT` (3.6 s to 0.6 s), `-Scenarios` for partial
477
- iteration runs, per-action timeout default 900 s to 600 s. Suite 503 -> 551.
437
+ ### 0.31.0 - 2026-09-14
438
+ - **Added: the guest window shows every phase of the run at once.** Until now it showed one line, the step
439
+ running right now, so a run three phases in looked like one stuck on its first and a failed phase left
440
+ nothing to read. It is a WPF master/detail window now: tick, cross or live marker per phase, and for the
441
+ selected one its exit code, duration, start and end, timeout, detection result and its own transcript.
442
+ Still a separate process polling a file, still passive - it never drives the run and closing it stops
443
+ nothing.
444
+ - **Added: `progress.json` carries a `phases[]` plan derived from `-Scenarios`.** The hardcoded `total = 14`
445
+ it published before was wrong for every partial run, and wrong for the full gate too, which has 15 steps.
446
+ The older top-level fields are unchanged.
447
+ - **Measured in the guest before the port, not after:** WPF loads there under Windows PowerShell 5.1,
448
+ the real XAML parses, and the window paints at render tier 0 with no vGPU - a PNG of it came back out of
449
+ the VM as the proof. New guards in `tests/SandboxProgressUi.Tests.ps1` cover ASCII, parsing, XAML loading
450
+ and the phase plan. Suite 554 -> 569.
451
+
452
+ ### 0.30.2 - 2026-09-14
453
+ - **Changed: a vendor-specific success code has to be in BOTH lists.** A sandbox step is judged twice, by
454
+ two independent lists that share a parameter name: PSADT's `-SuccessExitCodes` in the launcher decides
455
+ whether the deployment throws, `Invoke-PsadtSandboxTest.ps1 -SuccessExitCodes` decides whether the step
456
+ is painted green. Citrix Workspace Repair returns the documented success code 40032; it went into the
457
+ launcher, the run still came back RED, and three further runs were spent re-editing a launcher that had
458
+ been correct all along. Guide 6.1, Appendix B and Appendix G now say so, and a drift guard keeps the
459
+ documented default equal to the actual one.
460
+ - **Changed: four silent PowerShell traps** added to Appendix B, each of which cost a run here: `@(...)`
461
+ around an EMPTY `Generic.List` throws in 5.1 and 7 alike; `-WindowStyle Hidden` is inherited by the
462
+ child's first window, so a progress GUI runs windowless and looks like a hang; two variables differing
463
+ only in case are the same variable; `-like` against a literal containing `*` matches too much.
464
+ - All 12 applications packaged with 0.30.x are GREEN, Citrix Workspace included. Suite 552 -> 554.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "psadt-deploy-skill",
3
- "version": "0.30.1",
3
+ "version": "0.31.0",
4
4
  "description": "Installer for the psadt-deploy Claude Code skill: build, test and deploy PSADT v4.x Intune Win32 packages.",
5
5
  "keywords": [
6
6
  "psadt",