spinuptui 0.19.0 → 0.19.1
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 +13 -1
- package/README.md +15 -15
- package/bin/spinuptui.js +0 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,17 @@ versions; such changes are called out here.
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [0.19.1] - 2026-07-08
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- **Finished the SpinupTUI rebrand in the README and cover banner/social-preview
|
|
18
|
+
images.** The v0.19.0 rename swept the CLI banner, header wordmark, and app
|
|
19
|
+
chrome, but missed 14 mid-sentence "Spinup" mentions scattered through the
|
|
20
|
+
README's prose, and the cover banner/social-preview images still spelled out
|
|
21
|
+
"SPINUP" in block-letter art. Both are fixed now; `spinup-sudo` (a Keychain
|
|
22
|
+
service name) and the `spinup-tui` machine key (a literal SSH key identity)
|
|
23
|
+
are unaffected — they're real persisted identifiers, not branding.
|
|
24
|
+
|
|
14
25
|
## [0.19.0] - 2026-07-08
|
|
15
26
|
|
|
16
27
|
### Changed
|
|
@@ -918,7 +929,8 @@ Initial tagged release.
|
|
|
918
929
|
### Notes
|
|
919
930
|
- Read-only release: works with a SpinupWP **Read Only** API token.
|
|
920
931
|
|
|
921
|
-
[Unreleased]: https://github.com/mwender/spinupwp-tui/compare/v0.19.
|
|
932
|
+
[Unreleased]: https://github.com/mwender/spinupwp-tui/compare/v0.19.1...HEAD
|
|
933
|
+
[0.19.1]: https://github.com/mwender/spinupwp-tui/compare/v0.19.0...v0.19.1
|
|
922
934
|
[0.19.0]: https://github.com/mwender/spinupwp-tui/compare/v0.18.0...v0.19.0
|
|
923
935
|
[0.18.0]: https://github.com/mwender/spinupwp-tui/compare/v0.17.0...v0.18.0
|
|
924
936
|
[0.17.0]: https://github.com/mwender/spinupwp-tui/compare/v0.16.1...v0.17.0
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src=".github/assets/banner.png" alt="
|
|
2
|
+
<img src=".github/assets/banner.png" alt="SpinupTUI" width="100%">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">SpinupTUI</h1>
|
|
@@ -110,7 +110,7 @@ Once you're in, the dashboard looks like this:
|
|
|
110
110
|
- **Create & connect a server** — press `c` on the Servers tab to provision a new
|
|
111
111
|
server (DigitalOcean / Vultr / Linode / Hetzner), priced from the provider catalog
|
|
112
112
|
and pre-filled to match a selected server. Then press `V` on any server that
|
|
113
|
-
doesn't yet have a **site at its own hostname** to connect it end to end:
|
|
113
|
+
doesn't yet have a **site at its own hostname** to connect it end to end: SpinupTUI
|
|
114
114
|
writes the DNS A record, creates a
|
|
115
115
|
placeholder "vanity" site, enables HTTPS, hands you off to add your SSH key, and
|
|
116
116
|
publishes a status page — turning a bare server into one you can actually work
|
|
@@ -123,10 +123,10 @@ Once you're in, the dashboard looks like this:
|
|
|
123
123
|
verifies the clone against the source, and finally repoints DNS on your word.
|
|
124
124
|
Runs in the background with a header badge. (See "Cloning a server" below.)
|
|
125
125
|
- **Privileged writes over SSH (sudo + SSH keys)** — the SpinupWP API can't manage
|
|
126
|
-
SSH keys or sudo users, so
|
|
126
|
+
SSH keys or sudo users, so SpinupTUI does it directly. Press `S` on a server to
|
|
127
127
|
**connect sudo** for the session (optionally **remembered in your macOS Keychain**
|
|
128
128
|
so it auto-unlocks next time), then `K` on a site to **grant or revoke** your
|
|
129
|
-
personal key and/or
|
|
129
|
+
personal key and/or SpinupTUI's dedicated machine key — one site or every site on the
|
|
130
130
|
server. (See "Privileged writes over SSH" below.)
|
|
131
131
|
- **Uptime Kuma monitoring** — press `m` on a site to wire it into your own
|
|
132
132
|
[Uptime Kuma](https://github.com/louislam/uptime-kuma) instance (one-time
|
|
@@ -146,7 +146,7 @@ Once you're in, the dashboard looks like this:
|
|
|
146
146
|
(See `docs/uptime-kuma.md` for recipes.)
|
|
147
147
|
- **Site monitoring: fingerprints, a doctor, and a Redis sentinel** — press `M`
|
|
148
148
|
on any site (Servers / Stacks / Search) for the monitoring overlay. `f`
|
|
149
|
-
calibrates a **front-page check**:
|
|
149
|
+
calibrates a **front-page check**: SpinupTUI reads your healthy front page,
|
|
150
150
|
derives a template-identity fingerprint from what WordPress itself stamps
|
|
151
151
|
into the markup (not a headline someone might edit), proves it discriminates,
|
|
152
152
|
and registers a Kuma keyword monitor at your chosen window (5m–1h) — catching
|
|
@@ -155,7 +155,7 @@ Once you're in, the dashboard looks like this:
|
|
|
155
155
|
proven by the server's own `fastcgi-cache` headers) plus a wp-admin door
|
|
156
156
|
probe, diagnosing stale caches and **partial outages** — cached pages fine
|
|
157
157
|
while everything uncached throws 500 (a dead Redis does exactly this) — and
|
|
158
|
-
ending in a copyable runbook. `n` wires **alerts**:
|
|
158
|
+
ending in a copyable runbook. `n` wires **alerts**: SpinupTUI detects the
|
|
159
159
|
notification providers configured in Kuma by name and toggles them per site.
|
|
160
160
|
And servers get a **Redis sentinel**: the heartbeat cron pings Redis every
|
|
161
161
|
minute and reports up/down to its own `{server} redis` monitor.
|
|
@@ -163,7 +163,7 @@ Once you're in, the dashboard looks like this:
|
|
|
163
163
|
- **Completion toasts** — background writes that take a while (a PHP upgrade, a
|
|
164
164
|
server reboot/restart, resolving your fleet's DNS) raise a non-focus-stealing
|
|
165
165
|
toast when they finish, so you're not left guessing after you've moved on.
|
|
166
|
-
- **Release notes** — after
|
|
166
|
+
- **Release notes** — after SpinupTUI updates to a new version, a one-time overlay
|
|
167
167
|
shows what changed (sourced straight from that version's GitHub release —
|
|
168
168
|
no separate feed to maintain). Press `n` in `?` Help to see the current
|
|
169
169
|
version's notes again any time.
|
|
@@ -461,7 +461,7 @@ server's row keeps a spinner).
|
|
|
461
461
|
Everything hangs off one overlay: press `M` on a site in any view (the Servers
|
|
462
462
|
tab also keeps its original `m`). It talks to your own
|
|
463
463
|
[Uptime Kuma](https://github.com/louislam/uptime-kuma) — Kuma watches 24/7 and
|
|
464
|
-
sends the alerts;
|
|
464
|
+
sends the alerts; SpinupTUI creates the monitors *correctly* and diagnoses on
|
|
465
465
|
demand.
|
|
466
466
|
|
|
467
467
|
- **`a` — uptime monitors.** Regular sites get a homepage monitor (up/down +
|
|
@@ -472,7 +472,7 @@ demand.
|
|
|
472
472
|
SpinupWP's default object-cache drop-in, a dead Redis is **fatal (HTTP 500)
|
|
473
473
|
for every request that misses the page cache** — cached pages keep serving
|
|
474
474
|
200, so only the sentinel notices, within a minute.
|
|
475
|
-
- **`f` — the front-page check.**
|
|
475
|
+
- **`f` — the front-page check.** SpinupTUI reads your *healthy* front page,
|
|
476
476
|
derives a template-identity fingerprint from WordPress's own `body_class()`
|
|
477
477
|
output (`class="home`, `page-id-N`, …, falling back to the canonical link),
|
|
478
478
|
validates it against a throwaway search render to prove it discriminates,
|
|
@@ -493,7 +493,7 @@ demand.
|
|
|
493
493
|
pages 200, fresh renders or wp-admin 5xx — Redis or a PHP fatal; visitors
|
|
494
494
|
look fine, admins are broken) · recalibrate (`f` jumps straight there) ·
|
|
495
495
|
down · inconclusive.
|
|
496
|
-
- **`n` — alert wiring.**
|
|
496
|
+
- **`n` — alert wiring.** SpinupTUI detects the notification providers configured
|
|
497
497
|
in your Kuma (by name — Telegram, email, whatever you've set up) and shows
|
|
498
498
|
whether each is attached to this site's monitors (`✓` all / `◐` some / `○`
|
|
499
499
|
none); `⏎` toggles a provider across all of the site's checks at once.
|
|
@@ -520,7 +520,7 @@ id (Account Settings → Server Providers) and saves it — once per provider. T
|
|
|
520
520
|
build fires `POST /servers` and tracks the ~10-minute provision in the background.
|
|
521
521
|
|
|
522
522
|
**Connect it with a vanity site (`V`).** A brand-new server has **no site**, so
|
|
523
|
-
there's nothing to attach an SSH key to and no way for
|
|
523
|
+
there's nothing to attach an SSH key to and no way for SpinupTUI to reach it — empty
|
|
524
524
|
servers are flagged in **amber** in the Servers list. A busy server benefits from
|
|
525
525
|
the same thing (a status page at its own hostname + a site user to hold your key),
|
|
526
526
|
so `V` is offered on **any server that doesn't yet have a site at its own
|
|
@@ -546,11 +546,11 @@ shows where, with `r` to retry or `x` to discard.
|
|
|
546
546
|
## Privileged writes over SSH (sudo & SSH keys)
|
|
547
547
|
|
|
548
548
|
Some things the SpinupWP API simply can't do — it has **no** surface for SSH keys or
|
|
549
|
-
sudo users.
|
|
549
|
+
sudo users. SpinupTUI does them directly over SSH instead, which means these actions use
|
|
550
550
|
**your own SSH access**, not the API token.
|
|
551
551
|
|
|
552
552
|
**Connect sudo (`S`).** Press `S` on a server and enter its SpinupWP **sudo user**
|
|
553
|
-
and that user's **sudo password** once.
|
|
553
|
+
and that user's **sudo password** once. SpinupTUI validates them against the live server
|
|
554
554
|
(`sudo -S -p '' true`) and then holds the password **in memory for the session only**
|
|
555
555
|
— the username persists to config, the password is never written to plaintext config.
|
|
556
556
|
A connected server shows a green `● sudo` badge on its row; `S` again disconnects.
|
|
@@ -568,7 +568,7 @@ A connected server shows a green `● sudo` badge on its row; `S` again disconne
|
|
|
568
568
|
keys into the site user's `authorized_keys`:
|
|
569
569
|
|
|
570
570
|
- **Pick which keys** — any of **your personal keys** (discovered from `~/.ssh/*.pub`
|
|
571
|
-
and your ssh-agent, so you can SSH/SFTP as yourself) and/or
|
|
571
|
+
and your ssh-agent, so you can SSH/SFTP as yourself) and/or SpinupTUI's dedicated
|
|
572
572
|
**`spinup-tui` machine key** (an ed25519 identity generated once into the config dir,
|
|
573
573
|
deliberately **never added to your SpinupWP account** so SpinupWP's key reconciliation
|
|
574
574
|
can't clobber it). Your selection is remembered.
|
|
@@ -589,7 +589,7 @@ migration and **only repoints DNS when you say so**. It needs a **Read/Write tok
|
|
|
589
589
|
over SSH). The steps:
|
|
590
590
|
|
|
591
591
|
1. **Plan** — pick which of the source's sites to clone (all selected by default;
|
|
592
|
-
`space` toggles).
|
|
592
|
+
`space` toggles). SpinupTUI sizes each one live (disk + database) into a payload total
|
|
593
593
|
so you know what you're moving; a concurrency cap protects the busy source.
|
|
594
594
|
2. **Destination** — provision a fresh server pre-matched to the source (reusing the
|
|
595
595
|
`c` flow), or `d` to pick an existing server as the target.
|
package/bin/spinuptui.js
CHANGED
|
File without changes
|