WINDO ships a single installer (windo_install.ps1) as the source of truth: it embeds the profile windo function, PSReadLine block, runner, and self-update script text.
- One file to copy and run elevated on target machines.
- Bootstrap downloads that file from GitHub and executes it from disk.
From the repo root:
./tools/build.ps1This runs tools/Validate-Windo.ps1 (AST parse of shipped scripts plus normalized published-installer checksum checks for the root installer and current version snapshot when present). No installer file is modified.
CI also runs:
tools/Test-WindoLogic.ps1— integrity-level logic (src/windo/snippets/IntegrityLevels.ps1), stats time filter (src/windo/snippets/StatsTimeFilter.ps1), and effective env helpers (src/windo/snippets/WindoConfigEffective.ps1)tools/Invoke-PSScriptAnalyzer.ps1— Error-severity rules on shipping scripts plustools/Encode-ChildExec.ps1(requiresPSScriptAnalyzermodule)
To reduce monolithic edit risk without changing the install contract:
- Keep published artifacts as today:
windo_install.ps1at repo root. - Optionally maintain fragments under
src/windo/(seesrc/windo/README.md). Snippets are not loaded by the installer automatically. - Optional concat (review only):
tools/build.ps1 -Concatwrites a single text file underout/joiningsrc/windo/snippets/*.ps1for diff review. It does not replacewindo_install.ps1; maintainers merge by hand. - Validation: run
tools/Validate-Windo.ps1ortools/build.ps1in CI and before tagging.
No build step is required for end users.
- Canonical raw URLs for bootstrap and
windo upgradeuse the repository branch namedExodus(GitHub default). Legacy env valuesGenesis,Genisis, andPrometheusnormalize toExodus. - After changing
windo_install.ps1, updatechecksums/installer.sha256with the published installer SHA256 (uppercase hex, one line). Use the helper so Windows checkout line endings do not produce a stale hash:./tools/Sync-InstallerChecksum.ps1 - v3.2.7+:
bootstrap.ps1and_windo_verify_installer_sha256_optionalcompare the downloaded installer’s hash to the first 64 hex characters found in the fetched checksum file (so BOM, extra whitespace, orsha256sum-style lines still verify). The canonical file remains a single 64-character uppercase line. - v3.2.8+:
tools/Validate-Windo.ps1also validates the currentversions/vX.Y.Z/checksums/installer.sha256when that snapshot exists. windo_runner.ps1embedsWindoRunner.ChildExecC# via base64. Source:src/windo/snippets/ChildExec.cs. Regenerate the base64 string withtools/Encode-ChildExec.ps1, paste intowindo_runner.ps1, then re-sync the$RunnerContentblock inwindo_install.ps1(same file content aswindo_runner.ps1).bootstrap.ps1cannot dot-source repo helpers; keep it self-contained or duplicate small logic intentionally.
After you bump $WindoVersion in windo_install.ps1 and refresh checksums/installer.sha256 (see above), generate a frozen tree for that tag:
./tools/Sync-VersionSnapshot.ps1 -Version 3.2.3This writes versions/v3.2.3/ (example) with the installer, checksum, top-level README.md, SECURITY.md, CHANGELOG.md, docs/*.md (including json-schema.md, build.md, modules-and-extras.md, framework-wave.md, ai-bridge.md, v5-roadmap.md), brand/Enterprise/, and extras/ (including samples/hello). Use it before publishing a release so the repo carries a point-in-time copy with branch-resolved canonical URLs.
Structured command output uses a shared envelope (schemaVersion 3.0 on current installs; 2.6 on older v2.x profiles). See docs/json-schema.md.
- Implement the shape in
windo_install.ps1(single source of truth for the embeddedwindofunction). - Document new or changed
payloadfields indocs/json-schema.md— command name in the envelope, per-subcommand tables, andpayload.exitCodesemantics. - Extend
tools/Test-WindoLogic.ps1with cheap static markers if the change is easy to regress (string presence of critical fields or section headings). - Release / PR: include a short note in the PR or release checklist that
docs/json-schema.mdwas updated (or explicitly “no JSON shape change”) so reviewers can diff the doc alongsidewindo_install.ps1.
Optional: grep _emit_json in windo_install.ps1 when auditing which commands emit JSON (including export after Compress-Archive when --json is set).