Skip to content

PhanesLight v3.7.2

Latest

Choose a tag to compare

@Aloim Aloim released this 04 Sep 18:42

Full platform parity

Every script PhanesLight installs into a project now has both a Windows and a POSIX variant. The ten that were Windows-only join the day-to-day checks that were already on both:

preflight, install-templates, update-preflight, manifest-write, batch-apply, census-diff, scaffold, ledger, repo-manifest, and the hook-ledger-status hook.

Seven of the ten use Node to parse JSON, which costs nothing extra: Claude Code is itself a Node program, the plugin's hooks already dispatch through Node, and cli.js installs on every platform. The nine existing pure-shell scripts stay pure shell.

Defects fixed, none of them caused by the port

  • scaffold, both platforms. The existence pre-checks were untyped, so a file sitting where a directory belongs reported EXISTS, and a directory where a file belongs reported EXISTS. Both platforms behaved identically, which is why no differential test had ever caught it.
  • scaffold, Windows. New-Item -ItemType Directory -Force returns without error and creates nothing when an ancestor is a file, so the script announced CREATED and exited 0 for directories that did not exist.
  • update-preflight, both platforms. The spec sensor was gated differently from the other five gating sensors, so a sensor reporting a delta could still let the verdict reach quiet: true.
  • new-file, both platforms. The DOC DISCIPLINE header written into every generated documentation file now matches the canonical template.

Notes for maintainers

batch-apply and repo-manifest claimed a byte-identical stdout against their POSIX siblings. PowerShell appends CRLF on redirect, so that was never true and could not have been noticed while the siblings did not exist. The stated invariant is now: identical exit code, stdout identical after stripping CR, and every written file byte-identical.

MANIFEST.json declares all six hardcoded list caps. publish.sh gains three guards: manifest and tree agreement, every template stamp at the published version, and a shell parse plus bashism check that refuses outright when dash is absent.

Upgrading: no migration boundary. A POSIX project picks up the ten new scripts through an ordinary /phaneslight:run update.