fix: polish transcript rescue and doc drift from review

Guard HOME for set -u in the rescue paths, surface a failed rescue mv
instead of silently dropping the transcript, and never delete the
party dir after a failed save in either close or clean (close now
refuses to delete and exits nonzero on a failed rescue too, matching
clean, since a message promising the transcript survived followed by
rm -rf was a false assurance). Also stop log --stop from announcing a
stop that never started, and sync README's knock/log/write(1) wording
with the actual behavior.
This commit is contained in:
veg 2026-07-11 13:15:52 +00:00
parent 8d10e62779
commit df9c1cb0dc
3 changed files with 38 additions and 6 deletions

View file

@ -13,7 +13,7 @@ Built for small, mutually trusted groups: a hacklab, a tech team, a circle of fr
- POSIX shell (`/bin/sh`)
- `tmux` ≥ 3.3 (for `server-access`) on `$PATH`, or named via `PARTY_TMUX`
- A shared system group. A party is gated on the first of `staff`, `users`, `wheel`, `party` the host belongs to (`--group <name>` or `TMUX_PARTY_GROUP` always win). Boxes where people already share one of those groups need no setup; creating a dedicated `party` group is the fallback recipe. Every host and guest must be a member of whichever group ends up gating the party.
- `write(1)`, optional: used to ping invited guests. Silently skipped when absent.
- `write(1)`, optional: used to ping invited guests and knocking guests. `party invite`'s ping is best-effort, silently skipped when absent; `party knock` depends on it and reports a delivery failure to the caller.
## Install
@ -121,10 +121,10 @@ Three honest caveats, with the full detail in `man party`:
| `party status` | Show the caller's own state: hosting, attached, or idle. |
| `party close` | Tear down the party server and its roster entry. Host-only. |
| `party clean` | Remove the caller's own dead party dirs: crash leftovers whose tmux server is gone. Rescues a non-empty transcript first. |
| `party log [--stop]` | Record the party into its private dir via `tmux pipe-pane` (host only), group-readable. `--stop` ends it. |
| `party log [--stop] [--party <name>]` | Record the party into its private dir via `tmux pipe-pane` (host only), group-readable. `--stop` ends it. |
| `party join [name] [--passive]` | Join a party. Auto-attaches when one is running; picker otherwise. `--passive` attaches read-only to the host's view (watcher mode). Read-only invitees always join passive. |
| `party leave` | Detach and clean up the per-guest session. |
| `party knock <name>` | Ask the host of an invite-only party for an invite (write(1) ping with the exact invite command). |
| `party knock [name]` | Ask the host of an invite-only party for an invite (write(1) ping with the exact invite command). |
| `party role [active\|passive\|switch]` | Flip your clients between guest and host session. No arg prints the current role. |
| `party --help` | Help text. |