Skip to content

Webox v0.1.0-rc2 — Sprint 20 (TUI polish + Provider Catalog)

Pre-release
Pre-release

Choose a tag to compare

@dilitS dilitS released this 25 May 08:49
· 41 commits to main since this release

Webox v0.1.0-rc2 — Release notes

Tag: v0.1.0-rc2 · published 2026-05-25 as a GitHub pre-release.
Type: Release candidate refresh — Sprint 20 (TUI polish + Provider Catalog) ships into the RC channel alongside the new manual-validation harness.

Promote this commit to v0.1.0 (GA) by re-tagging the same SHA after the manual checklist in .cursor/skills/release-check/SKILL.md is fully ticked. No code changes expected between RC2 and GA; the next code-affecting work is on the v0.2 track (Sprint 21 cPanel adapter).


What changed since v0.1.0-rc1

This RC bundles Sprint 20's TUI hardening, the Sprint 19 carry-over Provider Catalog screen, and a brand-new tuistory-driven PTY smoke harness that validates every user-facing change against the actual ./bin/webox binary on every push.

New cockpit surfaces

  • Provider Catalog screen (p from dashboard) — a read-only browser over the Sprint-19 embedded preset registry. Rows are grouped by region (🇵🇱 Poland, 🇪🇺 Europe, 🌍 Global, 🛠 Advanced) with status pills (VERIFIED / CANDIDATE / RESEARCH / DEPRECATED / COMMUNITY) and capability badges (SSH · API · Node · SSL · DB · Logs · Safe Restart · Fixtures). ↑/↓ walks the cursor, Enter/ toggles a deep-dive strip (markets, panel API, restart method, paths, probes, known risks, sources, verification audit trail). c copies a stable plain-text "Webox Provider Briefing" to the OS clipboard (pbcopy / xsel / xclip / wl-copy / clip.exe); on headless servers the failure surfaces an inline remediation hint instead of crashing.
  • Help overlay (? from any surface) — a centred fullscreen modal that lists keybindings sourced from the active surface's footer at render time. The list cannot drift from reality because it is parsed from the same string the chrome already advertises. While the overlay is up, every other key is silently swallowed except ?, Esc, q, Ctrl-C (strict block, matching the host-key modal pattern).

Project Detail tab unstubs

Both v0.2-flagged tabs are now first-class read-only views (no backend I/O, no wizard, no risk of writes):

  • Tab 2 — Environment Diff. A compact table of secrets/registry.json entries: alias, env-var key, last_rotated_at relative time, source backend, stale flag (older than 60 days). Onboarding hint when the project has no entries yet.
  • Tab 3 — Database. A stack-aware connection cheatsheet (mysql / postgres / redis / sqlite) with copy-friendly one-liners, host hint inferred from profile, and a per-stack documentation link.

Standard mode mini-bento

The 100×30 Standard mode now lays out a 4-tile mini-bento (projects + server detail above, CI/CD strip + log strip below) instead of the old dual-tile fallback. Density is now within 5 lines of Ultra at the same width, without compromising the safe-zone Tiny fallback at sub-80×24.

Mouse semantics

  • Layout-aware left-click. From the dashboard, a click anywhere inside the Projects tile drills into Project Detail; clicks on status bar / footer / empty space are silent no-ops (no more accidental focus loss).
  • From Project Detail, a body click returns to the dashboard. Tab is a new alias for the same back-navigation (matches the new help overlay's listed binding).

Footer / chrome hints

  • Per-surface footers (projectdetail, projectwizard, initwizard, resumewizard, importpreview, catalog) carry context-specific keybindings instead of the old global hint. The chrome no longer advertises the never-implemented [/] command palette.
  • Focus-mode footer (when a tile is locked via Tab) shows focus: <tile> · [PgUp/PgDn] scroll panel · [Esc] release.
  • Bento UltraPlus's deep-dive strip placeholder is gone — the mode now uses the same 4-band layout as Ultra at higher resolutions until a real deep-dive tile lands in v0.2.
  • Bento Tiny fallback's misleading [r] to redraw hint is replaced with Resize to ≥ 100×24 to unlock cockpit.

Manual smoke harness

  • make smoke-test. New scripts/manual-test/ Node 24+ project drives ./bin/webox --mock through every Sprint 20 user-facing change via tuistory (Playwright-for-terminals): 5 scenarios × 34 assertions × ~83 s wall-clock end-to-end. Scenarios cover bento mode flipping on resize, help overlay strict-block routing, Provider Catalog navigation + clipboard, Project Detail tab navigation including the Tab back-nav alias, and layout-aware mouse clicks (status bar no-op, Projects tile drill, body-click back). Artefacts: 17 text snapshots + REPORT.md under docs/screenshots/sprint-20/manual/.
  • CI integration. New advisory job smoke-tui in .github/workflows/ci.yml runs the harness on every push / PR (Ubuntu, Node 24, pinned actions/setup-node@48b55a0 SHA). The job is continue-on-error: true and excluded from ci-summary.needs until we accumulate a few weeks of green runs; on every run it uploads the manual snapshots + REPORT.md as the smoke-tui-<sha> artefact (14-day retention) so reviewers can diff the rendered terminal output without re-running the suite locally. Makefile::smoke-test pins VERSION=smoke-test via sub-make so snapshots stay deterministic between commits.

Tooling

  • cmd/screenshot/main.go — new development tool that programmatically renders tui.Model to a deterministic frame for documentation work. Replaces the ad-hoc probe.go scripts used during Sprint 20.

Quality bars met

Gate Status Threshold
Tests passing (make test -race) ✅ green All packages
Coverage (make cover-check) ✅ ≥ 80 % ≥ 70 % global
Lint (golangci-lint v2) ✅ 0 issues 0 issues
Vulnerability scan (govulncheck) ✅ clean 0 known CVEs
Bento render perf (make bench-check) ✅ < 5 ms/op ≤ 5 000 000 ns/op
CI bundle (make ci) ✅ green Full pipeline
Manual smoke (make smoke-test) ✅ 5/5 scenarios, 34/34 assertions n/a yet

Documentation

Known limitations (unchanged from rc1)

  • One verified provider only. Adapters for cPanel, DirectAdmin, CyberPanel are scaffolded but not implemented. Sprint 21 ships the cPanel adapter foundation (read-only UAPI client + SSH fallback + webox doctor cpanel); creation flows land in Sprint 22.
  • Asciinema demo + static dashboard.png not yet recorded (Sprint 21 TASK-21.6).
  • EN landing body still in PL — head/meta translated; body pass in Sprint 21 TASK-21.5.
  • No Homebrew tap / go install published yet — lands with the GA promotion.

Upgrade notes

If you tried v0.1.0-rc1:

  1. git pull && make build — that's it. No config migration, no schema change, no flag rename.
  2. From the dashboard, press ? to see the new help overlay. Press p to open the Provider Catalog. Press Enter on a project, then 2 and 3 to see the new Env Diff / Database tabs. Press Tab from any tab to return to the dashboard.

If you skipped rc1 entirely:

  1. git clone https://github.com/dilitS/webox.git && cd webox && make build
  2. ./bin/webox --mock to explore the cockpit with synthetic data.
  3. ./bin/webox (without --mock) launches the init wizard for your first profile.

Security

  • License: Apache License 2.0 (unchanged).
  • Disclosure: SECURITY.md — coordinated disclosure via private GitHub Security Advisories.
  • No new dependencies on the runtime side. The smoke harness is dev-only (scripts/manual-test/) and never imported by the production binary; it ships nothing into release artefacts.

Credits

In addition to the rc1 credits:

  • remorses / tuistory — Playwright-for-terminals. Made the manual smoke harness possible inside a normal CI minute budget.
  • Sprint 20 reviewers for catching the dashboard footer drift and the v0.2-flagged tab alert noise during pre-release walkthroughs.

Next: v0.1.0 GA promotion or v0.2.0 track

When the manual checklist in .cursor/skills/release-check/SKILL.md is ticked, promote this commit to GA:

git tag v0.1.0 v0.1.0-rc2
git push origin v0.1.0

The GA promotion adds: cosign signature, SLSA provenance, GoReleaser-built multi-arch binaries (darwin/arm64, darwin/amd64, linux/amd64, linux/arm64), Homebrew tap PR, and the v0.1.0 retrospective.

The next code-affecting work is on the v0.2.0 track — Sprint 21 starts the cPanel adapter foundation in parallel with public-launch prep (README EN final, asciinema demo, cPanel test account onboarding). See docs/sprints/sprint-21-cpanel-adapter-prep.md.