Compare commits

2 Commits

Author SHA1 Message Date
Julien Calixte
4ac285715f chore: add some help from so for Sequoia command 2026-07-14 17:00:31 +02:00
Julien Calixte
22e6c1b1b2 docs(installer): mark slice 4 (install.sh + release) done; hosting resolved 2026-07-14 16:01:00 +02:00
4 changed files with 20 additions and 5 deletions

4
installer/Cargo.lock generated
View File

@@ -176,6 +176,7 @@ dependencies = [
"crossterm_winapi",
"derive_more",
"document-features",
"filedescriptor",
"mio",
"parking_lot",
"rustix",
@@ -1408,10 +1409,11 @@ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
[[package]]
name = "typoena-installer"
version = "0.1.0"
version = "0.1.1"
dependencies = [
"anyhow",
"base64",
"crossterm",
"ratatui",
]

View File

@@ -1,9 +1,14 @@
[package]
name = "typoena-installer"
version = "0.1.0"
version = "0.1.1"
edition = "2024"
[dependencies]
anyhow = "1.0.103"
base64 = "0.22.1"
ratatui = "0.30.2"
# Force crossterm's poll(2)-based event reader. The default `mio` backend uses
# kqueue on macOS, which cannot register `/dev/tty` (the controlling-terminal
# device) — so a `curl … | sh` launch, where fd0 is /dev/tty rather than a pty
# slave, fails with "Failed to initialize input reader". `use-dev-tty` polls.
crossterm = { version = "0.29", features = ["use-dev-tty"] }

View File

@@ -68,8 +68,8 @@ prompt macOS) · `remote`, `pat` ← typed (PAT never derived).
## Open items (not blocking the current slices)
- **Hosting** — where the CLI binary lives for the `curl | sh` download (Gitea
release vs typoena.dev static asset). Dev runs via `cargo run` meanwhile.
- ~~**Hosting**~~RESOLVED: public GitHub release on `jcalixte/typewriter`
(`installer-v0.1.0`); `install.sh` pulls from `releases/latest/download`.
- **Non-macOS** — Linux/Windows later; slice work is macOS-first.
- **Clone target** — cloning ~hundreds of MB directly onto FAT via a reader;
measure, and fall back to clone-to-temp-then-copy if it's too slow.
@@ -92,4 +92,10 @@ prompt macOS) · `remote`, `pat` ← typed (PAT never derived).
runs on a worker thread streaming progress. Verified: card detection on real
hardware and clone + seed + conf via `--list-cards` / `--dry-run-sd`. Full
interactive run + real write/eject await a blank card + a TTY.
4. **install.sh + release/hosting**checksums, polish.
4. **install.sh + release/hosting**DONE 2026-07-14. Universal macOS binary
(lipo arm64+x86_64, stripped) published as a public GitHub release on
`jcalixte/typewriter`, tag `installer-v0.1.0`, with a `.sha256` sidecar.
`typoena.dev/install.sh` (in the [[typoena-site]] repo): Darwin guard → curl
binary + sidecar from `releases/latest/download``shasum -c` verify → `exec
… </dev/tty`. Verified end-to-end (mirror, live release, full typoena.dev
chain). The interactive TUI run + real card write/eject still await a TTY.

View File

@@ -152,6 +152,8 @@ fn gh_login() -> Option<String> {
fn active_wifi_ssid() -> Option<String> {
// The Wi-Fi device on a Mac is usually en0; ask networksetup for its SSID.
// Didn't work, but this command did for me:
// networksetup -listpreferredwirelessnetworks en0 | grep -v '^Preferred networks on' | head -1 | xargs
let out = Command::new("networksetup")
.args(["-getairportnetwork", "en0"])
.output()