feat: party log records a group-readable transcript
tmux pipe-pane on every pane of the party session, appending into <party dir>/log (0640, party group) so any attendee can grab a copy. Start and stop are announced to everyone attached; close rescues a non-empty transcript to the host's home before removing the dir. Panes opened later are picked up by re-running party log (a pane_pipe check keeps already-piped panes single-piped, since tmux's pipe-pane -o toggles an existing pipe closed rather than skipping it). Raw output, escapes included. Close polls the transcript for size stability before rescuing it, since a cross-filesystem mv is copy+unlink and could otherwise drop bytes still draining from the pipe-pane writers.
This commit is contained in:
parent
a011e4b03c
commit
aea7ef58b6
5 changed files with 229 additions and 7 deletions
|
|
@ -100,6 +100,7 @@ Three honest caveats, with the full detail in `man party`:
|
|||
- On ACL-enabled filesystems (ZFS, HFS+/APFS), inherited ACLs can override the mode bits, so the FS gate is best-effort. The auth gate still holds.
|
||||
- A party's *existence* is not hidden the way *attaching* is. That confidentiality rides on the FS gate.
|
||||
- Active guests share one tmux server, where any write-capable invitee is trusted by design. Invite read-only (`-r`) if you do not trust that far.
|
||||
- `party log`'s transcript is group-readable, not invitee-readable: any member of the party's group can read it, including group members who were never invited.
|
||||
|
||||
## Status
|
||||
|
||||
|
|
@ -120,6 +121,7 @@ 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. |
|
||||
| `party log [--stop]` | 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). |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue