feat(views): prune stale session keys with local-only bookkeeping (Phase 4)
New pruning.py sidecar module with load_pruning_state / save_pruning_state. The sidecar lives at ~/.config/muxplex/pruning.json and is NEVER in SYNCABLE_KEYS — bookkeeping is per-device, not federated. prune_stale_keys(settings, live_keys, *, pruning_state, grace_seconds, now) drops keys from hidden_sessions and view.sessions after they have been missing past the configurable grace period (default 24h, syncable via stale_key_grace_hours). Wired into _run_poll_cycle as step 14 with try/except so failures never abort the cycle. The prune ACTION (settings change) syncs normally via existing LWW; the bookkeeping does not. 24 new tests pass; total muxplex/tests/ = 1263 passed.
This commit is contained in:
@@ -247,6 +247,7 @@ All settings are stored in `~/.config/muxplex/settings.json`.
|
||||
| `sort_order` | `manual` | Session ordering: `manual`, `alphabetical`, `recent` |
|
||||
| `hidden_sessions` | `[]` | Sessions hidden from the dashboard |
|
||||
| `views` | `[]` | Named session views for grouping and filtering sessions |
|
||||
| `stale_key_grace_hours` | `24.0` | Hours before a session key absent from all live sessions is pruned from views/hidden_sessions (syncable; per-device bookkeeping is local-only) |
|
||||
| `window_size_largest` | `false` | Auto-set tmux `window-size largest` on connect |
|
||||
| `auto_open_created` | `true` | Auto-open newly created sessions |
|
||||
| `new_session_template` | `tmux new-session -d -s {name}` | Command template for creating sessions |
|
||||
|
||||
Reference in New Issue
Block a user