psadt-deploy-skill 0.32.0 → 0.34.1

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 +33 -34
  2. package/package.json +37 -37
package/README.md CHANGED
@@ -52,7 +52,7 @@ Twelve phases, each owned by a script rather than by prose, so a step either pas
52
52
  | Phase | What happens | Owner |
53
53
  |---|---|---|
54
54
  | **0** Setup | 13 prerequisite checks, GREEN/YELLOW/RED, `-Fix` provisions | `Initialize-PsadtSkill.ps1` |
55
- | **1–2** Intake + research | blocker questions as clickable options; parallel research of version, silent switches, Intune pitfalls | agent (gates 1–2) |
55
+ | **1–2** Intake + research | blocker questions as clickable options; a local-evidence ladder (installed here? binary here? already written down?) answers what it can, and a research agent is dispatched only per question it leaves open | agent (gates 1–2) |
56
56
  | **3** Scaffold | a generator writes launcher + detection + per-run log name + manifest; `New-ADTTemplate` only when none fits | `New-MsiPackage` · `New-BrowserExtensionPackage` · `New-WindowsFeaturePackage` · `New-DriverPackage` |
57
57
  | **4** Customize | all three hooks filled from the research, helpers in the Extensions module | agent |
58
58
  | **5** Pre-flight | 10 checks (encoding, AST parse, v3 cmdlets, structure, detection contract, manifest, log name, driver trust …) → GREEN/RED | `Invoke-PsadtPreflight.ps1` |
@@ -196,7 +196,7 @@ The app's **native installer is always the default**. Everything else is opt-in
196
196
  matrix and the manual portal route: `references/app-registration.md`.
197
197
  - For **Pester tests**: Pester 5+ (`Install-Module Pester -MinimumVersion 5.0 -Scope CurrentUser`)
198
198
  - **Optional (recommended): the [superpowers](https://github.com/obra/superpowers) plugin** — if installed,
199
- the research fan-out and the reviewer gate use it. Not required: without it the skill falls back to the
199
+ the gated research fan-out and the reviewer gate use it. Not required: without it the skill falls back to the
200
200
  native Agent tool and `/code-review`, and nothing in the workflow depends on the plugin.
201
201
 
202
202
  ## Installation
@@ -434,35 +434,34 @@ 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.32.0 - 2026-09-15
438
- - **Fixed: the dossier now reads the sandbox verdict instead of asking for it.** `New-PsadtReport.ps1`
439
- took identity, artefacts and return codes from the manifest but not the test result, so without a
440
- hand-built `-Metadata SystemTest` it printed "the SYSTEM test was not run (no evidence)" on packages
441
- whose gate was GREEN. It reads `results.sandboxTest.resultPath` now and **judges** the rows: an action
442
- that exits 0 while the detection rule disagrees is a fail, not a pass - that combination is the
443
- signature of a per-user install. A caller-supplied `SystemTest` still wins, and an unreadable
444
- result.json keeps the honest "not run" default.
445
- - **Fixed: the guest progress window hung off the right edge** of the sandbox desktop, taking the TIMEOUT
446
- and DETECTION columns with it. Sized against the work area and positioned explicitly now; verified in
447
- the guest.
448
- - **Changed: a fourth BINDING trap in App. L.7** - re-running the installer over an existing install is
449
- not a safe repair. Measured on JetBrains PyCharm 2026.2.2 as SYSTEM: `/S` over an existing install of
450
- the same version never returned (killed at 603 s, no child process, no error), while Install and
451
- Reinstall on a clean machine both exited 0. Repair is an explicit uninstall followed by an install.
452
- - PyCharm 2026.2.2 (908 MB, the largest package built with this skill) then passed the full gate GREEN.
453
- Suite 572 -> 576.
454
-
455
- ### 0.31.0 - 2026-09-14
456
- - **Added: the guest window shows every phase of the run at once.** Until now it showed one line, the step
457
- running right now, so a run three phases in looked like one stuck on its first and a failed phase left
458
- nothing to read. It is a WPF master/detail window now: tick, cross or live marker per phase, and for the
459
- selected one its exit code, duration, start and end, timeout, detection result and its own transcript.
460
- Still a separate process polling a file, still passive - it never drives the run and closing it stops
461
- nothing.
462
- - **Added: `progress.json` carries a `phases[]` plan derived from `-Scenarios`.** The hardcoded `total = 14`
463
- it published before was wrong for every partial run, and wrong for the full gate too, which has 15 steps.
464
- The older top-level fields are unchanged.
465
- - **Measured in the guest before the port, not after:** WPF loads there under Windows PowerShell 5.1,
466
- the real XAML parses, and the window paints at render tier 0 with no vGPU - a PNG of it came back out of
467
- the VM as the proof. New guards in `tests/SandboxProgressUi.Tests.ps1` cover ASCII, parsing, XAML loading
468
- and the phase plan. Suite 554 -> 569.
437
+ ### 0.34.1 - 2026-09-16
438
+ - **Changed: SKILL.md now names `-TrustedPublisherCert` at Phase 6**, with `-Scenarios` for iteration and
439
+ `STOP.txt` for cancelling. 0.34.0 documented the certificate in phase 6.1 only, because the control
440
+ plane had 55 bytes of headroom against its 5000-token budget - the wrong trade for a failure that is
441
+ expensive and silent, since an agent that never opens 6.1 repeats the 25-minute timeout blind. Room was
442
+ made the way the budget test prescribes: `rule:author-version-changelog` and `rule:start-menu-only`
443
+ moved to `references/conventions.md`, which already carried their full text and which SKILL.md routes
444
+ to. Both are editorial rules - their failure costs a doc edit or a stray desktop icon, not a
445
+ deployment. Control plane 17348 / 17500 bytes, headroom 55 -> 152. Suite 624, unchanged.
446
+
447
+ ### 0.34.0 - 2026-09-16
448
+ - **Added: `-TrustedPublisherCert` on `Invoke-PsadtSandboxTest.ps1`.** An installer that stages a
449
+ third-party driver raises the Windows "install device software?" prompt unless the signer is already in
450
+ `TrustedPublisher` - and in the guest that prompt is **invisible**, because every action runs as SYSTEM
451
+ through a scheduled task and draws nothing on the desktop. The installer waits for an answer nobody can
452
+ give and the phase burns its whole timeout, looking exactly like a slow installer. Pass the `.cer` and
453
+ the harness imports it during GuestPrepare, the same thing an Intune `RootCATrustedCertificates` profile
454
+ does on the fleet. Measured on Time-Access 3010 / EDIsecure: **25 minutes of timeout versus 43 seconds**.
455
+ The import uses `certutil` (`Import-Certificate` returns `E_ACCESSDENIED` in the guest even when
456
+ elevated) and is **verified by reading the store back** - a failed import is indistinguishable from a
457
+ successful one when only the return value is logged, and that cost a full run.
458
+ - **Fixed: the elapsed timer in the guest window stopped counting.** It rendered `progress.json` verbatim,
459
+ but `Update-Ui` returns early when that file has not changed - right for the phase list, fatal for a
460
+ clock, and phases that are not an action wait loop never rewrite the file at all (GuestPrepare alone can
461
+ sit there for 90 seconds). The one element whose job is to prove the run is alive was frozen exactly
462
+ when that gets asked. It now ticks on the window's own 1s timer and re-syncs on every file value.
463
+ - **Fixed: the heartbeat was up to 20 seconds stale** - the guest wrote every 10s and the host read every
464
+ 10s, and the two stacked. Both are 1s now; the console line and transcript keep the coarser beat so
465
+ phase boundaries stay legible.
466
+ - Phase 6.1 now documents cancelling with `STOP.txt` (killing the process orphans `vmmemWindowsSandbox`
467
+ and blocks every further run) and scoping with `-Scenarios` while iterating. Suite 624, unchanged by this release - the new behaviour is guarded by the existing sandbox-harness and progress-UI tests.
package/package.json CHANGED
@@ -1,37 +1,37 @@
1
- {
2
- "name": "psadt-deploy-skill",
3
- "version": "0.32.0",
4
- "description": "Installer for the psadt-deploy Claude Code skill: build, test and deploy PSADT v4.x Intune Win32 packages.",
5
- "keywords": [
6
- "psadt",
7
- "psappdeploytoolkit",
8
- "intune",
9
- "win32",
10
- "claude-code",
11
- "claude-skill",
12
- "packaging"
13
- ],
14
- "homepage": "https://github.com/pt1987/claude-code-psadt-skill#readme",
15
- "bugs": {
16
- "url": "https://github.com/pt1987/claude-code-psadt-skill/issues"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "git+https://github.com/pt1987/claude-code-psadt-skill.git"
21
- },
22
- "license": "MIT",
23
- "author": "Patrick Taubert, PHAT Consulting GmbH",
24
- "type": "module",
25
- "bin": {
26
- "psadt-deploy-skill": "bin/install.mjs"
27
- },
28
- "files": [
29
- "bin"
30
- ],
31
- "engines": {
32
- "node": ">=18"
33
- },
34
- "os": [
35
- "win32"
36
- ]
37
- }
1
+ {
2
+ "name": "psadt-deploy-skill",
3
+ "version": "0.34.1",
4
+ "description": "Installer for the psadt-deploy Claude Code skill: build, test and deploy PSADT v4.x Intune Win32 packages.",
5
+ "keywords": [
6
+ "psadt",
7
+ "psappdeploytoolkit",
8
+ "intune",
9
+ "win32",
10
+ "claude-code",
11
+ "claude-skill",
12
+ "packaging"
13
+ ],
14
+ "homepage": "https://github.com/pt1987/claude-code-psadt-skill#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/pt1987/claude-code-psadt-skill/issues"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/pt1987/claude-code-psadt-skill.git"
21
+ },
22
+ "license": "MIT",
23
+ "author": "Patrick Taubert, PHAT Consulting GmbH",
24
+ "type": "module",
25
+ "bin": {
26
+ "psadt-deploy-skill": "bin/install.mjs"
27
+ },
28
+ "files": [
29
+ "bin"
30
+ ],
31
+ "engines": {
32
+ "node": ">=18"
33
+ },
34
+ "os": [
35
+ "win32"
36
+ ]
37
+ }