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
31
party.1
31
party.1
|
|
@ -16,6 +16,10 @@
|
|||
.Nm
|
||||
.Cm clean
|
||||
.Nm
|
||||
.Cm log
|
||||
.Op Fl -stop
|
||||
.Op Fl -party Ar name
|
||||
.Nm
|
||||
.Cm join
|
||||
.Op Ar name
|
||||
.Op Fl -passive
|
||||
|
|
@ -142,6 +146,23 @@ Host-only.
|
|||
Remove the caller's own dead party directories: crash leftovers whose
|
||||
tmux server no longer answers.
|
||||
Never touches live parties, other users' directories, or symlinks.
|
||||
.It Cm log Op Fl -stop Op Fl -party Ar name
|
||||
Record the party into
|
||||
.Pa log
|
||||
inside the per-party directory (host only), via
|
||||
.Xr tmux 1
|
||||
.Ic pipe-pane .
|
||||
The file is group-readable so any attendee can grab a copy.
|
||||
Starting and stopping is announced to everyone attached.
|
||||
Panes opened after logging starts are not captured until
|
||||
.Cm log
|
||||
is re-run; output is raw (ANSI escapes included, read with
|
||||
.Ql less -R ) .
|
||||
.Fl -stop
|
||||
ends recording.
|
||||
.Cm close
|
||||
rescues a non-empty transcript to the host's home directory before
|
||||
removing the party directory.
|
||||
.It Cm join Op Ar name Op Fl -passive
|
||||
Join a party.
|
||||
With no
|
||||
|
|
@ -314,6 +335,11 @@ every read, not trusted from the file.
|
|||
Auto-generated helper that fans
|
||||
.Cm display-message
|
||||
out to every attached client on join/leave.
|
||||
.It Pa ${PARTY_SOCKET_DIR}/party-${USER}:${NAME}.d/log
|
||||
Transcript written by
|
||||
.Cm log ;
|
||||
removed with the party directory unless rescued by
|
||||
.Cm close .
|
||||
.El
|
||||
.Sh EXIT STATUS
|
||||
.Bl -tag -width Ds
|
||||
|
|
@ -493,6 +519,11 @@ has no equivalent of
|
|||
The watcher boundary is set at
|
||||
.Cm join Fl -passive
|
||||
time and is fixed for the life of that client.
|
||||
.Pp
|
||||
Every member of the party's group can read a
|
||||
.Cm log
|
||||
transcript, since the per-party directory is the perimeter, including
|
||||
group members who were never invited.
|
||||
.Sh SEE ALSO
|
||||
.Xr tmux 1 ,
|
||||
.Xr screen 1 ,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue