Second half of the purge (the first covered the persona, AGENTS.md, README.md, and the distillation of the per-host pages). Every remaining identifier is gone: hostname, both LAN addresses, and the Wi-Fi SSID. 34 count-checked substitutions across 22 files — indexes, tool/research pages, the inventory census, the changelog, one generated HTML report, and five managed skills. Facts kept, names dropped: a history entry keeps its four-page listing as a nameless summary, the syslog excerpts keep every timestamp and line, and the census keeps the .zcompdump rows (the zsh version stamps are the useful part, the hostname was not). Deliberately unchanged: install.sh's --host case list and the packages/<hostname>.pkgs filename, where the hostname is the lookup key. Left out of scope by Frank's call: agent/memories/** — past-session records the learn pipeline rewrites. kb-lint: 0 violations. Residual grep for the hostname, its two IPs, and the SSID across omp-docs/ and agent/managed-skills/: no hits.
2.6 KiB
2.6 KiB
name, description
| name | description |
|---|---|
| html-change-report | Generate and open a self-contained dark-theme HTML change report (Keep a Changelog categories + code samples) for a git repo time window; use when Frank asks for a rendered report of recent work. |
HTML change report (Keep a Changelog + review aids)
Produce a self-contained HTML report of repo work in a time window and open it in Firefox.
Data gathering
- Window commits:
git log --since="24 hours ago" --pretty='%h|%ad|%s' --date=format:%H:%M(split on|). - Metrics:
git diff --shortstat <first>^..HEAD, per-area file counts viagit diff --name-only … | awk -F/ '{print $1"/"$2}' | sort | uniq -c | sort -rn. - Bucket commits into phase/theme rows by time-of-day for the timeline table.
Report structure (standard: Keep a Changelog 1.1.0)
- Executive summary (metrics + 3-5 bullets).
- Full commit timeline table, phase-color-tagged (border-left per phase).
git show <hash>command list per theme — Frank uses this for his review pass.- Changes by category: Added/Changed/Fixed/Removed/Security; omit empty categories; cite commit hashes per item. Fixed = old behavior was a bug; Changed = intentional.
- 4-6 notable code excerpts: read real files, pick load-bearing/instructive code, note file:lines + commits + why it matters. HTML-escape everything (
html.escape). - Verification evidence table (what / how / result).
- Incidents & open risks.
- Actions required from Frank (numbered, effort hints).
HTML requirements
- Self-contained: inline CSS only, NO CDNs (must work from file:// offline). Dark theme CSS vars (#1a1b26 bg family works).
- Sticky top nav, section anchors,
<pre class=code><code>blocks, commit hashes as.tagchips. - Build via python (eval kernel): subprocess for git data, string concat for CSS (avoid f-string brace pain), f-strings for rows.
- Literal
{}in HTML text (e.g.fallbackChains: {}) inside an f-string is a SyntaxError — build that fragment by concatenation or double the braces.
Delivery + verification
- Write to
$HOME/Reports/<repo>-<window>-<date>.html(outside repo, tree stays clean; create the dir — on a workstation account that is /home/blank/Reports, on dank hosts /home/dank/Reports). - Validate: python HTMLParser feed (parse errors) + open in headless browser (
writeJSON to xd://browser: open → run withdocument.querySelectorAllcounts) → close tab. Element counts are sufficient proof; a fullPage screenshot of a long report returns a multi-MB raw pixel buffer dump — only screenshot short pages. - Open for Frank:
nohup firefox --new-tab file:///<path> >/dev/null 2>&1 & disown.