Skip to content

Commit 93ecc78

Browse files
committed
Update CHANGELOG for version 2.5.0, adding new commands and structured output options. Enhance CONTRIBUTING.md with validation instructions for PowerShell scripts. Revise README.md to clarify command functionalities and reporting features. Bump installer version to 2.5.0 in windo_install.ps1.
1 parent 194a2e1 commit 93ecc78

10 files changed

Lines changed: 341 additions & 7 deletions

File tree

.github/workflows/validate.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Validate PowerShell
2+
on:
3+
push:
4+
branches: [ Genisis, main ]
5+
pull_request:
6+
branches: [ Genisis, main ]
7+
jobs:
8+
validate:
9+
runs-on: windows-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- name: Validate syntax
13+
shell: pwsh
14+
run: ./tools/Validate-Windo.ps1

CHANGELOG.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,23 @@ All notable changes to WINDO are documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

7+
## [2.5.0] - 2026-04-01
8+
9+
### Added
10+
11+
- **Operator UX:** `windo help`, `windo last`, `windo stats`, `windo history [-n N]`, `windo report [-o path]` (local HTML audit summary under `%USERPROFILE%\Documents\windo\` by default).
12+
- **Structured output:** append `--json` or `-Json` to `version`, `doctor`, `integrity`, `verify`, `log`, `stats`, `history`, and `last` for script-friendly output.
13+
- **Trust / visibility:** explicit access-denied hints after failed runs; timeout path suggests checking tasks and installer (`_suggest_if_denied`).
14+
- **Maintainability:** `tools/Validate-Windo.ps1` (AST parse all shipping scripts), `docs/build.md` (modularization direction), `docs/branding.md` (admin-focused logo guidance), `.github/workflows/validate.yml`.
15+
16+
### Changed
17+
18+
- Installer and embedded `windo` function version **2.5.0**; usage text and last-command exclusions updated for new subcommands.
19+
20+
### Security
21+
22+
- No change to the elevation model (scheduled tasks, RunLevel Highest), DPAPI logging, hash chain, or manifest semantics. HTML/JSON outputs may contain sensitive command text; operators must handle files accordingly.
23+
724
## [2.4.0] - 2026-04-01
825

926
### Added
@@ -29,5 +46,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
2946

3047
- Baseline described in repository history and under `versions/v2.3.0/`.
3148

49+
[2.5.0]: https://github.com/l28bit/windo/compare/v2.4.0...v2.5.0
3250
[2.4.0]: https://github.com/l28bit/windo/compare/v2.3.0...v2.4.0
3351
[2.3.0]: https://github.com/l28bit/windo/releases/tag/v2.3.0

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,7 @@ Submit a pull request with:
2323
- clear description
2424
- testing notes
2525
- security considerations
26+
27+
## Validation
28+
29+
Before opening a PR that changes PowerShell scripts, run ools/Validate-Windo.ps1 in PowerShell 7 (local) or rely on the GitHub Actions workflow.

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,13 @@ The canonical install snippet is also kept in `docs/releases/README_INSTALL_UPDA
6565

6666
| Command | Purpose |
6767
|--------|---------|
68+
| `windo help` | Short usage reference. |
6869
| `windo <command…>` | Elevate and run the command via the task bridge. |
6970
| `windo !!` | Re-run the last stored elevated command. |
71+
| `windo last` | Show the last stored command text (no execution). |
72+
| `windo stats` | Summarize the encrypted audit log (counts, optional avg duration). |
73+
| `windo history [-n N]` | Compact recent commands (default last 50). |
74+
| `windo report [-o path]` | Write a local HTML audit report (default under `Documents\windo\`). |
7075
| `windo self-update` | Trigger the self-update scheduled task (repairs task actions). |
7176
| `windo version` | Version, paths, hashes, task presence. |
7277
| `windo doctor` | Paths, tasks, logs, quick health. |
@@ -75,6 +80,8 @@ The canonical install snippet is also kept in `docs/releases/README_INSTALL_UPDA
7580
| `windo log -n N` | Show last N log entries (decrypted). |
7681
| `windo cleanup [-w]` | Back up log to `.pwsh_secure`, clear active log, remove pending req/res JSON. Optional `-w` is accepted for compatibility and ignored. |
7782

83+
Append **`--json`** or **`-Json`** to supported commands (`version`, `doctor`, `integrity`, `verify`, `log`, and the commands above where noted) for structured output suitable for scripts and ticketing.
84+
7885
---
7986

8087
## PSReadLine keybindings (v2.4.0+)
@@ -101,6 +108,17 @@ See [`SECURITY.md`](SECURITY.md) for expectations and reporting.
101108

102109
---
103110

111+
112+
## Reporting and automation
113+
114+
- **`windo report`** produces a **local HTML** summary (paths, integrity status, recent audit lines). Treat reports as **sensitive**; they may echo elevated command text.
115+
- **`--json` / `-Json`** on `doctor`, `integrity`, `version`, `verify`, `log`, `stats`, `history`, and `last` helps pipe output into monitors, tickets, or CMDB without scraping host-colored text.
116+
- **`windo stats`** / **`windo history`** give fast situational awareness without full `log` verbosity.
117+
118+
- Maintainer notes: [`docs/build.md`](docs/build.md) (modularization path), [`docs/branding.md`](docs/branding.md) (logo direction).
119+
120+
---
121+
104122
## Execution flow
105123

106124
```text

RELEASE_HELPER_v2.5.0.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Release helper — v2.5.0
2+
3+
## Checklist
4+
5+
1. `windo_install.ps1` has `$WindoVersion = "2.5.0"` and header matches.
6+
2. Run `tools/Validate-Windo.ps1`; CI runs `.github/workflows/validate.yml`.
7+
3. Smoke: elevated `.\windo_install.ps1`, then `. $PROFILE`, `windo help`, `windo doctor --json`, `windo report`, `windo stats`.
8+
4. Tag `v2.5.0` after merge.
9+
10+
## New in 2.5.0
11+
12+
- `last`, `stats`, `history`, `report`, `help`
13+
- JSON output on key diagnostics
14+
- HTML report, access-denied hints, timeout hint
15+
- `tools/Validate-Windo.ps1`, `docs/build.md`, `docs/branding.md`

docs/branding.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Branding direction (WINDO)
2+
3+
WINDO targets **administrators and operators**. Visual identity should feel:
4+
5+
- **Deliberate** — not playful; no cartoon mascots.
6+
- **Technical** — monospace-adjacent, clear hierarchy, high contrast.
7+
- **Trustworthy** — restrained palette (slate / graphite / one accent such as steel blue or amber for warnings only).
8+
9+
## Logo
10+
11+
Suggested evolution from current SVG assets:
12+
13+
- **Mark**: abstract **shield** or **stile** shape (elevation / gate), or a minimal **W** formed by two crossing strokes suggesting a bridge.
14+
- **Wordmark**: "WINDO" in a neutral grotesk or semi-mono; avoid novelty display fonts.
15+
- **Color**: dark background variants for README banners; light background for docs.
16+
17+
Apply changes to `assets/windo-logo.svg` and `assets/windo-banner.svg` in a dedicated design pass; keep file sizes small for raw GitHub viewing.
18+

docs/build.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Build / modularization (WINDO)
2+
3+
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.
4+
5+
## Current model
6+
7+
- One file to copy and run elevated on target machines.
8+
- Bootstrap downloads that file from GitHub and executes it from disk.
9+
10+
## Direction for modular sources (future)
11+
12+
To reduce monolithic edit risk without changing the install contract:
13+
14+
1. Keep **published** artifacts as today: `windo_install.ps1` at repo root.
15+
2. Optionally maintain fragments under `src/` (e.g. `src/windo/ProfileWindo.ps1`) that are **concatenated** by a small `tools/Build-WindoInstaller.ps1` into `windo_install.ps1` before release.
16+
3. **Validation**: run `tools/Validate-Windo.ps1` in CI and before tagging.
17+
18+
No build step is required for end users; a build is only for maintainers who choose to split sources.
19+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Release notes — WINDO v2.5.0
2+
3+
## Summary
4+
5+
v2.5.0 strengthens **operator experience**, **visibility**, and **repository hygiene** while keeping the same elevation model: **choose elevation before execution.**
6+
7+
## New commands
8+
9+
| Command | Description |
10+
|--------|-------------|
11+
| `windo help` | Short usage reference. |
12+
| `windo last` | Show last stored command (no run). |
13+
| `windo stats` | Aggregate stats over the DPAPI audit log. |
14+
| `windo history [-n N]` | Compact history (default N=50). |
15+
| `windo report [-o path]` | Local HTML audit report. |
16+
17+
## JSON output
18+
19+
Append `--json` or `-Json` to supported commands for structured output: `version`, `doctor`, `integrity`, `verify`, `log`, `stats`, `history`, `last`.
20+
21+
## Hints
22+
23+
After failures that look like **access denied** (or task timeout), WINDO may print a short, **non-silent** hint to run `windo doctor` or re-run the installer elevated—without auto-elevating your shell.
24+
25+
## Upgrade
26+
27+
Run the installer elevated (`bootstrap` or `windo_install.ps1`), then `. $PROFILE`. Verify with `windo help` and `windo doctor`.

tools/Validate-Windo.ps1

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Validate WINDO repo scripts (syntax). Run from repo root: ./tools/Validate-Windo.ps1
2+
$ErrorActionPreference = "Stop"
3+
$root = Split-Path $PSScriptRoot -Parent
4+
$files = @(
5+
"bootstrap.ps1",
6+
"windo_install.ps1",
7+
"windo_runner.ps1",
8+
"windo_self_update.ps1"
9+
)
10+
$ok = $true
11+
foreach ($f in $files) {
12+
$p = Join-Path $root $f
13+
if (!(Test-Path $p)) { Write-Warning "Missing: $f"; $ok = $false; continue }
14+
$err = $null
15+
$null = [System.Management.Automation.Language.Parser]::ParseFile($p, [ref]$null, [ref]$err)
16+
if ($err) {
17+
Write-Host "FAIL $f" -ForegroundColor Red
18+
$err | ForEach-Object { Write-Host $_.ToString() }
19+
$ok = $false
20+
} else {
21+
Write-Host "OK $f" -ForegroundColor Green
22+
}
23+
}
24+
if (-not $ok) { exit 1 }
25+
Write-Host "Validate-Windo: all checks passed." -ForegroundColor Cyan

0 commit comments

Comments
 (0)