psadt-deploy-skill 0.30.0 → 0.30.2

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 +34 -34
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -352,7 +352,7 @@ psadt-deploy/
352
352
  │ ├─ switch-catalog/ engine defaults + JSON schema (App. L.0)
353
353
  │ ├─ Report-Template.html the fixed dossier template
354
354
  │ └─ app-registration.md THE Graph permission matrix + manual portal route
355
- └─ tests/ Pester suite, 551 tests
355
+ └─ tests/ Pester suite, 552 tests
356
356
  ```
357
357
 
358
358
  Machine-local state lives outside the skill folder:
@@ -434,36 +434,36 @@ 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.0 - 2026-09-14
438
- - **Fixed: the sandbox could not test a heavy package - and it was never the package.** Smart App Control
439
- is enabled in the Windows Sandbox base image while Defender is disabled, so `wintrust` asks the disabled
440
- Defender to rate every signed file and waits ~2 minutes per package. A bootstrapper chaining a dozen MSIs
441
- took 30+ minutes and looked like a hang, three times. Two lines in the guest remove it: the same run then
442
- finished in **5.7 minutes with exit 0**. This also corrects the ADK lesson in Appendix G, which blamed
443
- Defender scanning - Defender was switched off the whole time.
444
- - **Fixed: nothing was visible inside the sandbox.** On this Sandbox build the `LogonCommand` process gets
445
- no console window, so the 0.29.0 heartbeat went to a file nobody could see. There is now a top-most
446
- progress window in the guest, the host mirrors it, and the runner measures whether a console exists at
447
- all. Runs are cancellable with `STOP.txt` (guest shuts itself down in 5 s, no orphaned VM worker), a
448
- failed VM start is no longer reported as "the VM was closed", and a timed-out action captures the guest's
449
- process table and vendor logs before the VM is discarded.
450
- - **Added: `Get-PsadtInstallerEngine.ps1`** - identifies the installer engine from the binary. A definitive
451
- marker always beats a hint, so an install4j installer carrying NSIS branding no longer gets `/S`, which
452
- hangs on its language dialog forever. Reports marker, byte offset and region; an unrecognised file
453
- returns `unknown`, never a guess.
454
- - **Added: `Get-PsadtSwitchCandidates.ps1` + `references/switch-catalog/`** - ranked switch candidates from
455
- 19 engine defaults, offline, before the first web query, with a reason for every miss. It is an ENGINE
456
- catalog, not an application catalog, and **winget stays opt-in** including as a research source.
457
- - **Faster:** staging 481 MB into the guest via `robocopy /MT` (3.6 s to 0.6 s), `-Scenarios` for partial
458
- iteration runs, per-action timeout default 900 s to 600 s. Suite 503 -> 551.
459
- ### 0.29.1 - 2026-09-14
460
- - **Fixed: Phase 5.5 mapped `Remove-MSIApplications` to `Remove-ADTApplication`**, which v4 does not
461
- have - the v4 name is `Uninstall-ADTApplication`. The table's right column is now checked against the
462
- installed toolkit's `FunctionsToExport`.
463
- - **Fixed: Appendix A named 60012 as the v4 deferral code.** 4.1.x exits a deferral with
464
- `UI.DeferExitCode`, default 1602. Deliberately NOT added to the mandatory Intune table - every install
465
- command this skill writes runs `-DeployMode Silent`, where a deferral cannot happen.
466
- - **Fixed: the Phase 4.3 MSI sample** put the `.mst` in `SupportFiles\` and passed an `-ArgumentList`
467
- identical to the config defaults. The `.mst` belongs in `Files\` next to the MSI (`TRANSFORMSSECURE=1`);
468
- extra properties go into `-AdditionalArgumentList`, because `-ArgumentList` REPLACES the defaults.
469
- - **Fixed: README claimed 441 Pester tests** in three places. Suite 501 -> 503.
437
+ ### 0.30.2 - 2026-09-14
438
+ - **Changed: a vendor-specific success code has to be in BOTH lists.** A sandbox step is judged twice, by
439
+ two independent lists that share a parameter name: PSADT's `-SuccessExitCodes` in the launcher decides
440
+ whether the deployment throws, `Invoke-PsadtSandboxTest.ps1 -SuccessExitCodes` decides whether the step
441
+ is painted green. Citrix Workspace Repair returns the documented success code 40032; it went into the
442
+ launcher, the run still came back RED, and three further runs were spent re-editing a launcher that had
443
+ been correct all along. Guide 6.1, Appendix B and Appendix G now say so, and a drift guard keeps the
444
+ documented default equal to the actual one.
445
+ - **Changed: four silent PowerShell traps** added to Appendix B, each of which cost a run here: `@(...)`
446
+ around an EMPTY `Generic.List` throws in 5.1 and 7 alike; `-WindowStyle Hidden` is inherited by the
447
+ child's first window, so a progress GUI runs windowless and looks like a hang; two variables differing
448
+ only in case are the same variable; `-like` against a literal containing `*` matches too much.
449
+ - All 12 applications packaged with 0.30.x are GREEN, Citrix Workspace included. Suite 552 -> 554.
450
+
451
+ ### 0.30.1 - 2026-09-14
452
+ - **Fixed: a scheduled task will not start on battery.** `schtasks /Create` defaults
453
+ `DisallowStartIfOnBatteries` and `StopIfGoingOnBatteries` to TRUE, so on an unplugged laptop the task is
454
+ created, `/Run` returns 0, and it then sits at status **Queued** forever. Every action reported a bare
455
+ timeout that named no cause, and the failure followed the POWER CABLE rather than the package. The task
456
+ is registered from XML now, which also drops the 72-hour execution limit `/Create` imposes.
457
+ - **Fixed: a leftover `WindowsSandboxServer` silently broke every later run** (Windows-Sandbox#124). The
458
+ next sandbox came up and its scheduled tasks never executed, so a different pre-check timed out each
459
+ time and it read as flakiness. Broker-without-VM is now cleared at start instead of being reported as
460
+ "a sandbox is already running", which it is not.
461
+ - **Fixed: the timeout diagnostics answered their own cleanup** - they ran after the task was deleted and
462
+ read the process table through WMI, which is broken in the guest until GuestPrepare repairs it.
463
+ - **Added: an ARP dump whenever detection contradicts the action**, covering both HKLM views and every
464
+ `HKEY_USERS` subtree. It found the trap below in a single run. The progress window now also lists what
465
+ has already passed, with a tick per completed step.
466
+ - **Note: an EXE installer that can install per-user must be forced to per-machine** (App. L.7, BINDING).
467
+ Greenshot 1.3.315 without `/ALLUSERS` installed into the SYSTEM profile and registered under
468
+ `HKEY_USERS\S-1-5-18`; install, uninstall, reinstall and repair all returned exit 0 while an HKLM
469
+ detection rule correctly said "absent". With `/ALLUSERS` the full gate is GREEN. Suite 551 -> 552.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "psadt-deploy-skill",
3
- "version": "0.30.0",
3
+ "version": "0.30.2",
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",