Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Phase log 63: second rename sweep, Apache-2.0, README and CHANGELOG rewrite, demo server and screenshots, CI hardening

Date: 2026-10-09. Version 0.42.1 (not bumped by the agent). Phases 1-42 done, next phase 43.

Goal

User asked, in order: (a) rename every remaining old name to UnENVerse and migrate his own usage; (b) README without private artefacts, beginner-first, no "What is not finished"; history table -> CHANGELOG.md generated from handoffs; (c) Apache-2.0; (d) drop the casual writing style; (e) fix the persistent GitHub CI failures; (f) build a fake demo server, screenshots (one hero shot), and market the tool.

Done (evidence)

  1. Rename sweep (script over git ls-files, skipping the session records/, review/, ADR bodies, Cargo.lock): io.envvault->io.unenverse (tauri identifier, CLI path, nodes/catalogue/pool), envvault*->unenverse* (storage keys, test dirs, ICS UIDs @unenverse, CXF markers _unenverse_type), .envv.json->.unv.json, state dir envv->unv, ENVV_->UNV_, envv-->unv- temp names, JS helpers __unvBulkToggle etc., lib name env_vault_lib->unenverse_lib, Tauri package unenverse, release asset names unv-<ver>-<platform>, ENVVAULT_VERSION->UNV_VERSION. vault_core::compat and the dotenv ENVV_ fallback deleted. Deliberately kept (existing signed/chained data or backups): envv-node-v1, envv-hub-v1, envv-approval-v1, envv-history-v2, envvault/entropy/v1, ENVVBAK1, ENVVARC1. Changing them needs a data migration (history chain re-hash, re-enrol nodes, old backups unreadable); offer it only if wanted.
  2. Licence: LICENSE replaced by the official Apache-2.0 text (curl from apache.org), NOTICE added, license fields in package.json, vscode-extension, tauri.conf, 4 Cargo.toml, image label.
  3. README rewritten: short description, long overview, feature table, tour with screenshots, quick start; user guide first, security/build/development/CI last; removed "What is not finished", "How it got here", Phase references, private-acceptance wording, "Lint is at zero". CHANGELOG.md generated by a script from handoff 1-60 (session-scratchpad chlog.py; filters first-person lines) plus a hand-written 0.42.x section; it is in .prettierignore.
  4. Demo + screenshots: tools/demo/seed.py (fake vault via the unv CLI against a throwaway server: 29 entries across the common providers and kinds, 3 projects, 12 categories, users alice/bob/ci-bot, classes Developers/Operators, permission expressions), tools/demo/shots_demo.py, tools/demo/run.sh (starts unv-demo on :18743, seeds, runs the real app in the viewer container over --network host). Output Screenshots/*.png; hero is Screenshots/unenverse.png (1920x1200). tools/viewer/shots.py crop now SHOT_CROP env. No secret-shaped literal is committed: issuer prefixes are assembled from parts and values are random at run time.
  5. CI: unv-server/tests/nodes_e2e.rs waits for last_polled (Windows race), history.rs snapshot test sleeps between saves (timing under load), cargo fmt applied everywhere (the Ubuntu failure was import order after the rename), scripts/preflight.sh + npm run preflight + .githooks/pre-commit mirror CI's gates.
  6. Verification: cargo test --workspace 707 passed; npm run check 1497 passed; fmt/clippy clean for unv-cli.

Not done / traps

  • Nothing pushed; no CI run observed for these changes.
  • Peer comment lines (# name) of the live wg0.conf are not produced by the exporter.
  • Old ghcr packages deleted by the user; git remote url change was left to the user.
  • The CHANGELOG is machine-compiled from session notes; wording is uneven for older entries.
  • VS Code extension settings keys are now unenverse.* (users must re-set them).
  • cargo clean -p envvault (wrong package) once deleted 33 GB of target; use the four-package clean in phase log 62.

Addendum: unv node install (same day)

  • New unv-cli/src/node_install.rs + NodeCmd::Install in main.rs (agent side, exempt in capabilities.json next to node enroll). plan() builds a Vec<Step> (run / write file / install binary / enrol) that is printed by --plan and executed by execute(); 9 unit tests, including a round trip of the generated node.toml through NodeConfig::parse.

  • Known limits: syncconf does not re-run PostUp/PostDown, so those edits need a manual systemctl restart wg-quick@wg0; a failed reload is visible in systemd, not to the node; Linux/systemd only; the executor was exercised only through --plan and unit tests, NOT against a real host. Re-install uses systemctl restart unv-node.

  • Result: wg0 in_sync, file sha = vault render, unv-reload-wg0.service Result=success, tunnel handshakes fresh, 2 peers. Reload takes about 3 s per run (wg syncconf of a 10 KB config).

  • Note: /etc/wireguard/wg0.conf was mode 644 (world-readable, contains PrivateKey) before and after; the node preserves the mode. Recommend chmod 600 (the ACL for unv-node survives; root wg-quick still reads).

  • The # peer name comment lines of the live file are gone (the exporter does not write them).

10 line(s) about the maintainer's own machines were left out of this page.