max / makenotwork
2 files changed,
+11 insertions,
-11 deletions
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | 3 | OTA self-update for [egui](https://github.com/emilk/egui)/eframe desktop apps. | |
| 4 | 4 | ||
| 5 | - | > **Status: 0.0.0 — name reserved, implementation in progress.** This release is a | |
| 5 | + | > **Status: 0.0.0, name reserved, implementation in progress.** This release is a | |
| 6 | 6 | > placeholder; the API is not yet usable. Watch this space. | |
| 7 | 7 | ||
| 8 | 8 | ## What it will do | |
| @@ -10,15 +10,15 @@ OTA self-update for [egui](https://github.com/emilk/egui)/eframe desktop apps. | |||
| 10 | 10 | The egui ecosystem has no dedicated updater (Tauri has `tauri-plugin-updater`; egui | |
| 11 | 11 | has nothing equivalent). This crate fills that gap: | |
| 12 | 12 | ||
| 13 | - | - **Check** — poll a version manifest endpoint. | |
| 14 | - | - **Verify** — check a [minisign](https://jedisct1.github.io/minisign/) signature | |
| 13 | + | - **Check**: poll a version manifest endpoint. | |
| 14 | + | - **Verify**: check a [minisign](https://jedisct1.github.io/minisign/) signature | |
| 15 | 15 | against a public key you supply, before trusting any update. | |
| 16 | - | - **Download** — stream the artifact with progress. | |
| 17 | - | - **Apply** — silent self-replace on Linux/Windows; verified-download-then-open the | |
| 16 | + | - **Download**: stream the artifact with progress. | |
| 17 | + | - **Apply**: silent self-replace on Linux/Windows; verified-download-then-open the | |
| 18 | 18 | signed installer on macOS. | |
| 19 | 19 | ||
| 20 | 20 | Endpoint, public key, and manifest format are **caller configuration**. The crate | |
| 21 | - | ships no server, no embedded keys, and no vendor coupling — it works against any | |
| 21 | + | ships no server, no embedded keys, and no vendor coupling, so it works against any | |
| 22 | 22 | compatible OTA backend (and is designed to be compatible with the Tauri updater's | |
| 23 | 23 | manifest shape, so an existing Tauri update server can serve egui apps too). | |
| 24 | 24 |
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | 3 | The trusted executor: run a typed, capability-gated **step** on a host and | |
| 4 | 4 | **observe** a host, across the tailnet, with the trust model built in. It is the | |
| 5 | - | one primitive under the internal ops suite — **Sando** (server promotion through | |
| 5 | + | one primitive under the internal ops suite: **Sando** (server promotion through | |
| 6 | 6 | gated tiers), **Bento** (app build/sign/notarize/publish), and **ops-agent** | |
| 7 | 7 | (the on-host half). | |
| 8 | 8 | ||
| @@ -10,7 +10,7 @@ MIT licensed. Design spec: `_private/docs/ops-core/executor.md`. | |||
| 10 | 10 | ||
| 11 | 11 | ## Trust root | |
| 12 | 12 | ||
| 13 | - | SSH keys + Tailscale/Headscale are the **only** trust roots — no PKI, no token | |
| 13 | + | SSH keys + Tailscale/Headscale are the **only** trust roots: no PKI, no token | |
| 14 | 14 | service, no secrets manager. Identity comes from the tailnet node (`ops-agent` | |
| 15 | 15 | resolves a caller via `tailscale whois`) and from SSH keys (the `SshExec` | |
| 16 | 16 | transport authenticates exactly as today). `ops-exec` only *maps* that identity | |
| @@ -18,7 +18,7 @@ to capabilities. | |||
| 18 | 18 | ||
| 19 | 19 | ## Shape | |
| 20 | 20 | ||
| 21 | - | - `Executor` — the trait, scoped to one `(host, CapabilitySet)`; held as | |
| 21 | + | - `Executor`: the trait, scoped to one `(host, CapabilitySet)`; held as | |
| 22 | 22 | `Arc<dyn Executor>`. | |
| 23 | 23 | - `run_streaming(&Step, &mut dyn LogSink) -> RunOutput` | |
| 24 | 24 | - `pull` / `push` (rsync, with `SyncOpts`) | |
| @@ -26,9 +26,9 @@ to capabilities. | |||
| 26 | 26 | - `capabilities()` | |
| 27 | 27 | - Transports: `LocalExec`, `SshExec` (this crate); `AgentRpc` (feature `rpc`) | |
| 28 | 28 | talks to a remote `ops-agent`. | |
| 29 | - | - `Step` / `Action` — the typed step vocabulary the capability check gates on. | |
| 29 | + | - `Step` / `Action`: the typed step vocabulary the capability check gates on. | |
| 30 | 30 | `Step::shell(action, "set -e; …")` is the shell idiom. | |
| 31 | - | - `CapabilitySet` — the grant, enforced **twice**: caller-side (the transport | |
| 31 | + | - `CapabilitySet`: the grant, enforced **twice**: caller-side (the transport | |
| 32 | 32 | rejects an ungranted action before dispatch) and agent-side | |
| 33 | 33 | (`CapabilitySet::intersect`, so a host's local grant is the ceiling). | |
| 34 | 34 |