spinuptui 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -11,6 +11,86 @@ versions; such changes are called out here.
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [0.21.0] - 2026-07-09
15
+
16
+ ### Added
17
+ - **`spinuptui ssh <domain>`** — non-interactive CLI subcommand for external
18
+ tooling (e.g. an incident-diagnostics agent that's handed only a domain).
19
+ Resolves the domain to its site/server, builds the SSH target, and runs a
20
+ live connectivity probe, returning JSON with a classified failure reason
21
+ (site not found, ambiguous domain match, server has no IP, key not
22
+ granted, token rejected, etc.) when it can't connect.
23
+ - **`spinuptui incidents <domain>` / `--all`** — surfaces Uptime Kuma's
24
+ down/up incident history as JSON, scoped to sites SpinupTUI manages
25
+ monitoring for. `--all` sweeps every such site over a single Kuma
26
+ connection; `--hours` sets the lookback window (default 24). Pairs with
27
+ `spinuptui ssh` for an external agent's discover → access → report loop.
28
+ - **Server-wide PHP-fatal sentinel monitor.** Fixes a real monitoring blind
29
+ spot: SpinupWP's page cache keeps serving `/` even while PHP is fataling on
30
+ anything the cache doesn't already have, so the existing health/fingerprint
31
+ monitors can sleep through a real outage (confirmed against a 2026-07-07
32
+ incident that went undetected for 54 of its 68 minutes). A root-level cron
33
+ (one per server, added via the monitoring overlay's repair flow once sudo
34
+ is connected — same place the Redis sentinel is set up) tails every site's
35
+ error/debug logs each minute for new `PHP Fatal error` lines and reports
36
+ up/down to a single new Kuma push monitor, with the actually-affected
37
+ site domain(s) carried in the down message. Surfaces automatically in
38
+ `spinuptui incidents --all`.
39
+ - **Cache-bypass monitor, opt-in per site.**
40
+ Closes the other half of the page-cache blind spot: a wedged PHP-FPM pool
41
+ that never logs a fatal is invisible to both the plain health monitor and
42
+ the new fatal sentinel above, since nginx serves the cache without ever
43
+ touching PHP-FPM. This registers an ordinary Kuma HTTP monitor with a
44
+ `Cookie: wordpress_no_cache=1` header — the same page-cache bypass
45
+ `siteDoctor.ts` already uses — so it actually exercises PHP on every check
46
+ (verified live: `fastcgi-cache-bypass-reason: COOKIE`). Deliberately opt-in
47
+ (not automatic) and defaults to a 1h check window (30m/1h/2h/4h/6h
48
+ choices), since forcing a real render costs the site something, unlike the
49
+ cache-served health/fingerprint checks — meant for sites with an actual
50
+ history of this failure mode, not the whole fleet.
51
+
52
+ ### Changed
53
+ - **Site/server monitoring overlay rebuilt as a full-screen two-pane browser**
54
+ (`m` in the sites pane), replacing the small centered popover. A narrow
55
+ left list of the site's monitor kinds (with a live status dot) sits next
56
+ to a wide detail pane showing whichever one is selected — its one-line
57
+ definition, a longer explanation of the actual mechanism, live status, and
58
+ how to act on it. Grew out of real confusion testing the popover version:
59
+ six monitor kinds across two site contexts didn't fit legibly in a 68-col
60
+ box, and a separate glossary overlay left the explanation disconnected
61
+ from live status. Also **collapses the per-kind action keys into one `a`**
62
+ that acts on whichever monitor is currently highlighted (front page
63
+ selected → calibration picker; cache bypass selected → its picker;
64
+ anything else → register/repair) — fewer keys to remember now that the
65
+ detail pane shows which monitor you're acting on. The overlay also gained:
66
+ a passive "Alerts: …" header line (fetched once per open, not polled) so
67
+ notification wiring is visible without pressing `n`; `o` to deep-link
68
+ straight to the selected monitor's own page in Uptime Kuma; and `x` to
69
+ remove the front-page or cache-bypass monitor (confirm-gated) — scoped to
70
+ just those two kinds, since the other four re-derive themselves
71
+ automatically on the next repair and would silently reappear.
72
+ - **The header's fleet-wide "N monitors down" badge now names the domain(s)**
73
+ (falling back to a bare count once there are too many to list) and points
74
+ at the Search tab to find them, instead of an unactionable number with no
75
+ way to tell which site it means.
76
+
77
+ ## [0.20.1] - 2026-07-08
78
+
79
+ ### Changed
80
+ - **README rewritten for readability.** It had grown to 857 lines of dense,
81
+ multi-paragraph feature bullets — hard to skim for someone landing on the
82
+ repo. Added a screenshot gallery (real Dev Mode captures of all five main
83
+ tabs), condensed the Features list to one-liners, and moved all 13 deep-dive
84
+ "how it works" sections into their own pages under `docs/` (linked from the
85
+ README's short pointer paragraphs). No content was removed, only relocated;
86
+ `RELEASING.md`'s "Keep the README current" checklist is updated to match the
87
+ new house style.
88
+ - **Dev Mode's example fleet scaled up** from 4 servers / 6 sites to 12
89
+ servers / ~80 sites / 19 events, generated deterministically (same fleet
90
+ every run) with a realistic spread of EOL Ubuntu/PHP, Standard WP/Bedrock/
91
+ non-WP sites, disabled HTTPS, and missing backups — mainly so the new
92
+ screenshots (and any future ones) show a fleet worth looking at.
93
+
14
94
  ## [0.20.0] - 2026-07-08
15
95
 
16
96
  ### Added
@@ -979,7 +1059,9 @@ Initial tagged release.
979
1059
  ### Notes
980
1060
  - Read-only release: works with a SpinupWP **Read Only** API token.
981
1061
 
982
- [Unreleased]: https://github.com/mwender/spinupwp-tui/compare/v0.20.0...HEAD
1062
+ [Unreleased]: https://github.com/mwender/spinupwp-tui/compare/v0.21.0...HEAD
1063
+ [0.21.0]: https://github.com/mwender/spinupwp-tui/compare/v0.20.1...v0.21.0
1064
+ [0.20.1]: https://github.com/mwender/spinupwp-tui/compare/v0.20.0...v0.20.1
983
1065
  [0.20.0]: https://github.com/mwender/spinupwp-tui/compare/v0.19.1...v0.20.0
984
1066
  [0.19.1]: https://github.com/mwender/spinupwp-tui/compare/v0.19.0...v0.19.1
985
1067
  [0.19.0]: https://github.com/mwender/spinupwp-tui/compare/v0.18.0...v0.19.0