Commit graph

17 commits

Author SHA1 Message Date
veg
7770289d85 feat: auto-select the gating group; 'party' becomes the fallback
Bare 'party host' now walks staff, users, wheel, party and gates on
the first group the caller belongs to, announcing the pick. Boxes
where people already share a system group need no setup; the curated
'party' group remains the fallback and the explicit --group /
TMUX_PARTY_GROUP paths are unchanged. Caller membership is the only
probe (id -nG, portable everywhere); whether a guest is a member stays
an invite-time warning, where it can actually be answered.
2026-07-11 12:20:35 +00:00
veg
6b94255245 refactor: fold is_party_alive into party_conn_state
One liveness primitive instead of two. The PID argument was a vestige
(format-checked, never probed, since the kill -0 removal); dropping it
means a roster with a garbage SERVER_PID can no longer mask a live
socket in host/moderation/role resolution.
2026-07-11 12:07:13 +00:00
veg
be3fb049d2 style: reword em-dashes; put colons inside bold run-in labels
Punctuation sweep across README, ROADMAP, and the script's comments:
em-dashes become colons, commas, or parentheses; bold list labels take
the colon inside the bold with lowercase text after. Comments only in
the script, no code changes.
2026-07-11 11:57:04 +00:00
veg
938491df1e fix: classify unauthorized by stderr presence, not denial wording
Review flagged the 'access not allowed' substring:
if tmux's denial text drifts while keeping exit 0, unauthorized
connections would classify as ok and the false-joined status/leave
misreporting would silently return. A clean authorized list-clients
writes nothing to stderr (verified 3.3a/3.5a/3.6-SunOS, incl. invited
read-only clients), so rc 0 plus any stderr output now classifies as
unauthorized: no message text consulted. Drift in any direction
degrades to a hidden party, never to a false ok.
2026-07-04 14:03:53 +00:00
veg
b44a3b705f fix: harden party_self_path; pin (U,R) ACL format; widen breakage comments 2026-07-04 10:42:58 +00:00
veg
44b97e9d6b docs: sync usage() and man page with actual CLI surface 2026-07-04 10:26:44 +00:00
veg
587a462e3c fix: read-only invitees auto-join passive
tmux refuses new-session from read-only clients ('client is
read-only'), so an active join for an -r invitee died under set -eu
with a raw tmux error. Detect the R flag on the caller's ACL line in
the existing preflight and fall back to the mirrored view.
2026-07-04 10:00:01 +00:00
veg
f3209e39d1 fix: classify unauthorized tmux connections; stop misreporting membership
tmux answers non-allowlisted users with 'access not allowed' on stderr
and exit 0 for every command (verified 3.3a/3.5a, two users), so
has-session reports any target as existing. party status claimed
uninvited group members were joined, party leave silently 'succeeded',
and party list printed bogus '0 attendee(s)' rows. New party_conn_state
(ok/unauthorized/dead) classifies by message content; list now shows
'invite-only (ask <host>)'.
2026-07-04 09:55:47 +00:00
veg
6cac86bb15 fix: guard non-tty join picker; refuse whitespace PARTY_SOCKET_DIR 2026-07-04 09:50:35 +00:00
veg
0d1b5ef796 fix: exec join attach with quoted args, not an unquoted string 2026-07-04 09:47:04 +00:00
veg
e174226651 fix: quote embedded paths in status-right widget 2026-07-04 09:44:32 +00:00
veg
2ef4eb49ce fix: pin absolute script path in status-right widget
The #() body runs with the tmux server's PATH; a bare 'party' silently
broke the widget for uninstalled or non-standard-prefix hosts.
2026-07-04 09:39:45 +00:00
veg
7d95850461 fix: .party-notify uses PARTY_TMUX, not bare tmux from PATH 2026-07-04 09:25:27 +00:00
veg
fc366f48fa fix: let voice/mute/kick/detach take --party
A host of two or more parties was told 'pass a name' by commands that
accepted no name flag, making moderation impossible. Mirrors the
--party flag invite already had.
2026-07-04 09:14:19 +00:00
veg
9117f73423 fix: track the executable bit on party
The script was committed mode 100644; a fresh clone could not run
./party, and the bats suite fails with EACCES 126 wherever it invokes
"$PARTY_BIN" directly. Makefile installs masked this via install -m 0755.
2026-07-04 08:34:12 +00:00
veg
f06c599ea7 fix: reject '.' and leading '-' in party names
tmux session_check_name() silently rewrites '.' to '_', so a dotted
party name desyncs from its tmux session and every -t lookup fails
(verified on tmux 3.3a through 3.6b). Leading-dash names can never be
addressed through the CLI parsers.
2026-07-04 07:51:38 +00:00
veg
6be0ac1877 Initial pre-release
tmux-party: share a tmux session with people on the same UNIX host.
Single-file POSIX shell (party) with a filesystem + tmux server-access
trust model. See README.md.
2026-06-01 15:31:54 +00:00