projmux 0.8.2 → 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,13 +44,13 @@
44
44
  - `make test` also covers AI semantic badge renderer aggregation for window-list, sidebar rows, switch window tabs, popup pane summaries, and pane-border topic badges using prompt-required > response-complete > in-progress priority while preserving blank no-state lanes, response-complete live badge consume on attention clear without idling action-required/progress badges, plus Settings > Appearance AI badge style selection for dot/emoji/off pane-border, Alt-1 sidebar window/preview tabs, and tmux window-status compatibility with dot as the persisted/config fallback.
45
45
  - `make test` also covers AI semantic badge Phase 3 theme-role hardening: `@projmux_ai_badge_kind` storage values and aggregate priority stay unchanged, `minimal` remains a read-time alias for the `off` badge style, progress/success/action-required badge roles stay distinct, permission/input status badges do not use critical red, and critical notify queue severity does not drive live AI status badge colors or desktop notification urgency.
46
46
  - `make test` also covers keybinding surface tier catalog rules, action-centered `keymap.toml` `keys = [...]` multi-alias parsing/writing, quoted internal `Surface:Action` tables, legacy popup action ID aliases, canonical popup toggle names, AI split popup-vs-direct action labels, generated tmux config multi-alias rendering, global/direct conflict detection, surface-scoped native picker command conflict detection, Settings Keybindings list/search/detail surface-aware picker-local labels, compact action-list state copy, flat Keys list/action detail rows, key detail remove/test rows, capture-unavailable Add key direct recorder routing with Advanced typed entry retained on Action detail, recorder Recording/Staged/Confirmed transitions, empty Enter no-op, Esc cancellation, staged candidate replacement, native byte-stream normalization/confirmation/conflict recovery, and one-reader/no-event-leak lifecycle, collapsed Troubleshooting entry copy, Settings delivery diagnostics that split logical key/raw bytes/tmux received key while distinguishing missing, ambiguous, adapter-needed, and delivered states, safe direct key pool and risky/reserved diagnostic-only copy, Projmux-owned Ghostty/Windows Terminal advanced delivery copy, raw escape/CSI-u/xterm modified/UserKey/UserSequence rejection from primary keymap storage, Labs compatibility redirect to the Keybindings root, existing macOS capture/add-key flows, unsafe raw capture, reset behavior, stale guide docs guards, and welcome/runtime footer copy that avoids hardcoded launch-key guides.
47
- - Darwin native-key focused coverage includes portable physical chord parsing for Alt/Option, Control, Control-Option, Shift, letters/digits/navigation/function keys, `darwin && cgo` synthetic event-to-canonical-chord mapping for Option, Control, shifted letters, function keys, and arrows with unmatched/plain event pass-through, shared `keymap.toml` custom-action loading (including `M-a`), focused tmux client discovery, canonical `send-keys -K -c` dispatch through the existing root key table, native Settings Add key capture winning over terminal text encoding, default-on shell startup, `PROJMUX_NATIVE_KEYS=0`/`false` and Settings `[ui].native_keys = false` broker opt-out gates, broker direct no-op behavior, one-time pre-permission consent guidance, and an explicit Linux/Windows/no-CGO shell startup no-op boundary.
47
+ - Darwin native-key focused coverage includes portable physical chord parsing for Alt/Option, Control, Control-Option, Shift, letters/digits/navigation/function keys, `darwin && cgo` synthetic event-to-canonical-chord mapping for Option, Control, shifted letters, function keys, and arrows with unmatched/plain event pass-through, shared `keymap.toml` custom-action loading (including `M-a`), focused tmux client discovery, canonical `send-keys -K -c` dispatch through the existing root key table, native Settings Add key capture winning over simultaneous terminal text/error results after ignoring the activation Enter while the non-Darwin path preserves immediate terminal capture, default-on shell startup, `PROJMUX_NATIVE_KEYS=0`/`false` and Settings `[ui].native_keys = false` broker opt-out gates, broker direct no-op behavior, one-time pre-permission consent guidance, broker-only process replacement after an Accessibility wait so fresh macOS permission state is observed without restarting tmux, preservation of the direct no-server shutdown boundary while permission is pending, and an explicit Linux/Windows/no-CGO shell startup no-op boundary.
48
48
  - `make test` covers the default picker key ownership across catalog, generated tmux config, terminal adapters, setup probes, and native popup close hints: `Alt-4` opens AI Resume as a guaranteed launch default, while `Alt-7` opens the AI split picker as its editable default.
49
49
  - `make test` also covers welcome revisit policy: legacy welcome state remains readable without suppressing shell entry, Enter continues without storing release skip, `s` stores an update skip for the current latest tag when an update is available, source installs show disabled Upgrade guidance, stale update cache refresh is best-effort, Settings > About > Welcome opens a Settings-native viewer without pending state, and shell prompt display does not schedule a redundant attach popup.
50
50
  - `make test` also covers transport-dependent app tmux defaults for pane/window navigation (`M-Left`/`M-Right`/`M-Up`/`M-Down` and `M-S-Left`/`M-S-Right`) while keeping visible default chords, allowing additive safe plain aliases that do not store or remove the transport defaults, and no UserKey/CSI-u generated fallback.
51
51
  - `make test` also covers direct `projmux ai split --agent <claude|codex|antigravity|shell|selective|resume>` launches, enabled-agent gating for disabled direct launches and disabled saved defaults, `--force-agent` as an explicit direct CLI-only override, selective picker filtering with all-disabled shell fallback guidance, resume picker routing/New delegation/zero-session fallback/Phase 1 fresh fallback contract, config-default preservation, extra args appended to resolved agent executables, managed pane metadata, title watcher startup, layout application, plain shell split behavior, selective picker delegation, invalid direct-agent usage errors, and regressions that direct concrete-agent and saved-default splits create a new pane without probing existing AI pane metadata or selecting an existing pane, including when launched from the current AI pane.
52
52
  - `make test` also covers Settings IA regression guards for `send-noti` visibility in Hooks, no nested Project recipe inside Hooks, Project recipe/AI/Labs view-first detail rows, Appearance Path/Git/Notify icon direct off/symbol/emoji preview selection with no Change page, Notifications root/Desktop notifications/Delivery sources relocation, localized Korean Desktop notifications root/detail chrome without visible English residue, Delivery sources command-row clipboard copy, and Labs Project Hooks overview-first rows.
53
- - `make test` also covers the Linux/WSL live resource status Lab: default-off and atomic saved-value persistence, direct Labs on/off mutation plus live tmux option update, generated app/standalone conditional placement between git and clock, `/proc/stat` first/delta/reset/malformed/overflow and stale-reference handling, `/proc/meminfo` `MemAvailable` semantics, 0–100 clamping, atomic private sample-cache writes, and compact unavailable rendering.
53
+ - `make test` also covers the macOS/Linux/WSL live resource status Lab: default-off and atomic saved-value persistence, direct Labs on/off mutation plus live tmux option update, generated app/standalone conditional placement between git and clock, Linux `/proc/stat` first/delta/reset/malformed/overflow and stale-reference handling, Linux `/proc/meminfo` `MemAvailable` semantics, macOS native Mach CPU tick and free/inactive memory sampling, 0–100 clamping, atomic private sample-cache writes, and compact unavailable rendering.
54
54
  - `make test` also covers AI desktop notification dedupe precedence (env override > Settings saved value > default), Desktop notifications mode persistence through `desktop-notify-mode`, saved-config precedence over live tmux options, `projmux tmux apply` regeneration of `@projmux_desktop_notify_mode`, configured dedupe-window collapse/send behavior, Settings > Notifications AI dedupe preset/custom rows, explicit notify focus consume rules for selected critical rows and older same-pane non-critical AI cleanup, preservation of critical/permission/stop-failure/external/git/k8s rows during bulk cleanup, OS Toast click-to-focus queue consume, WSL Toast protocol handler hidden-launcher registration with `wsl.exe --exec` URI forwarding, and attention clear paths that do not ack the queue.
55
55
  - `make test` also covers AI hook runtime action precedence over catalog defaults, runtime quiet for known Codex notify events, runtime notify for known Claude quiet events, generic in-app-only notify rows for known Codex hook events without specialized handlers, suppression of desktop notification and `send-noti` dispatch on that generic path, separation of runtime hook action from catalog install events, Settings > Notifications hook quiet policy display/write behavior without external install/remove execution, hook desktop notification payload parity with the in-app queue text across the shared OS notification payload, normal/transient OS urgency and expiration for critical AI queue rows, and dormant title/capture fallback gating once a pane is hook-active.
56
56
  - `make test` also covers Settings > Session State as global settings-only UI with default-off auto-save, Sidebar startup picker relocation/compatibility, and no window/pane tree, Settings > Project > Session State project-derived identity plus project auto-save override/effective source rows and distinct Save latest snapshot / Save named snapshot labels, closed-project save disabled reasons, named snapshot portable path conversion, project/global auto-save precedence, Projects > Sessions > State read-only latest/named snapshot overview with window/pane cwd/recipe/agent-resume health, user-facing `projmux session-state` status/save/delete/restore dry-run actions including explicit manual save bypass of disabled autosave and agent resume status/confidence preview, and Project open sidebar startup coverage for Session State opt-in `Start project`, default-off empty creation, Latest snapshot, Named snapshot, Empty session, Back, saved-at row metadata, existing-session skip, startup-before-trust ordering, detached sidebar open continuation before client-scoped separate trust popup handoff without sidebar inline trust UI, trust approve continuation, and trust deny/cancel no-session sidebar refresh behavior.
package/docs/cli.md CHANGED
@@ -297,10 +297,11 @@ projmux status resources
297
297
  age, and `+<extras>`. Window/pane ids remain routable metadata but are not
298
298
  displayed in the compact HUD. Degrades through width tiers; default
299
299
  `--max-width` is `200` runes.
300
- - `resources` — Linux/WSL aggregate `CPU N% MEM N%` from `/proc/stat` and
301
- `/proc/meminfo`. CPU needs two invocations to establish a delta and renders
302
- `--` for the first sample. WSL reports the Linux guest/VM view. Unsupported
303
- platforms and unreadable procfs data produce no error output.
300
+ - `resources` — macOS/Linux/WSL aggregate `CPU N% MEM N%`. Linux uses
301
+ `/proc/stat` and `/proc/meminfo`; macOS uses native Mach host statistics.
302
+ CPU needs two invocations to establish a delta and renders `--` for the first
303
+ sample. WSL reports the Linux guest/VM view. Unsupported platforms and
304
+ unreadable system metrics produce no error output.
304
305
 
305
306
  ## statusbar
306
307
 
@@ -780,10 +780,12 @@ CPU/memory segment on the lower status row. The saved global value is:
780
780
  ```
781
781
 
782
782
  Accepted values are `off` (default) and `on`. The feature is available on
783
- native Linux and WSL. It reads Linux procfs directly without launching `top`,
784
- `free`, PowerShell, or another metrics process. In WSL the values describe the
785
- Linux guest/VM view, not total Windows host utilization. The CPU delta cache is
786
- internal state at
783
+ macOS, native Linux, and WSL. Linux reads procfs directly; macOS reads Mach host
784
+ statistics and `hw.memsize`. Neither path launches `top`, `vm_stat`, `free`,
785
+ PowerShell, or another metrics process. On macOS, available memory is free plus
786
+ inactive pages, matching the reclaimable-memory intent of Linux
787
+ `MemAvailable`. In WSL the values describe the Linux guest/VM view, not total
788
+ Windows host utilization. The CPU delta cache is internal state at
787
789
  `${XDG_STATE_HOME:-~/.local/state}/projmux/live-resources-sample.json`.
788
790
  CPU reference samples older than 30 seconds are ignored and replaced on the
789
791
  next refresh.
@@ -79,7 +79,9 @@ modified chords from the configured keybinding catalog, never plain-text
79
79
  typing; physical Option needs the event tap because terminals may convert it
80
80
  before tmux can see it; and capture plus tmux injection stay on the local
81
81
  machine. The broker then waits for approval and enables the event tap
82
- automatically; the tmux session does not need to be restarted.
82
+ automatically. While it is waiting, it replaces only its background broker
83
+ process so macOS permission changes are observed with fresh process state; the
84
+ tmux session does not need to be restarted.
83
85
 
84
86
  Native macOS delivery remains on by default. To prevent the broker from
85
87
  starting—and therefore prevent the Accessibility prompt—turn off **Native
@@ -106,8 +108,12 @@ On Darwin, Settings > Keybindings > Add key keeps racing native modified-key
106
108
  capture against the existing controlling-TTY capture. This lets Press a key
107
109
  store a new physical Option, Control, Control-Option, or Shift-modified chord
108
110
  before the terminal turns it into text; ordinary keys still use the portable
109
- TTY path. The Darwin transport lifecycle, Accessibility policy, and event
110
- mapping are unchanged by the Linux/WSL recorder described below.
111
+ TTY path. The activation Enter is ignored as a recorder control, and a short
112
+ Darwin-only preference window lets the native physical chord win when the
113
+ terminal's translated bytes arrive at the same time. Linux, WSL, and Windows
114
+ keep their existing immediate terminal-capture ordering. The Darwin transport
115
+ lifecycle, Accessibility policy, and event mapping are unchanged by the
116
+ Linux/WSL recorder described below.
111
117
 
112
118
  ## Discoverable Actions
113
119
 
@@ -82,9 +82,9 @@ view-first layout:
82
82
  visible Labs row. The hidden compatibility action redirects to the
83
83
  `Settings > Keybindings` action list, not to a diagnostic default.
84
84
  - `Settings > Labs > Live system resources` is a direct global on/off toggle
85
- for the Linux/WSL lower-status-row `CPU N% MEM N%` segment. It defaults off,
86
- updates live tmux state when toggled, and renders unavailable on unsupported
87
- platforms. WSL copy identifies the values as the Linux guest/VM view.
85
+ for the macOS/Linux/WSL lower-status-row `CPU N% MEM N%` segment. It defaults
86
+ off, updates live tmux state when toggled, and renders unavailable on
87
+ unsupported platforms. WSL values describe the Linux guest/VM view.
88
88
  - `Settings > Labs > Project Hooks` is overview-first. The Labs root opens the
89
89
  overview, and the on/off mutation rows live one level deeper.
90
90
  - `Settings > AI Settings` is view-first. The root contains `Default split
package/docs/statusbar.md CHANGED
@@ -69,10 +69,12 @@ row 1 [#S] #{pane_current_path} ⎈ <ctx>/<ns> <git> CPU 12% MEM 41% 
69
69
  and tab titles are centered in a fixed-width trim so long active pane names
70
70
  do not resize the status row.
71
71
  - `Settings > Labs > Live system resources` adds the compact `CPU N% MEM N%`
72
- segment between git and the clock on Linux and WSL. It is global, default
73
- off, and updates with tmux's existing five-second status interval. CPU is the
74
- aggregate delta from `/proc/stat`; memory is
75
- `(MemTotal - MemAvailable) / MemTotal` from `/proc/meminfo`. The first CPU
72
+ segment between git and the clock on macOS, Linux, and WSL. It is global,
73
+ default off, and updates with tmux's existing five-second status interval.
74
+ Linux CPU is the aggregate delta from `/proc/stat`; memory is
75
+ `(MemTotal - MemAvailable) / MemTotal` from `/proc/meminfo`. macOS CPU uses
76
+ the aggregate Mach host tick delta; memory is total physical memory minus
77
+ free and inactive pages. The first CPU
76
78
  sample renders `CPU --%` until a second counter sample exists. WSL values are
77
79
  the Linux guest/VM view, not whole-Windows host utilization. The generated
78
80
  tmux condition prevents the status subprocess from running while the Lab is
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "projmux",
3
- "version": "0.8.2",
3
+ "version": "0.8.4",
4
4
  "description": "tmux project session manager",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/crevissepartners/projmux#readme",
@@ -28,9 +28,9 @@
28
28
  "package:npm:pack": "scripts/package-npm.sh --pack"
29
29
  },
30
30
  "optionalDependencies": {
31
- "@projmux/linux-x64": "0.8.2",
32
- "@projmux/linux-arm64": "0.8.2",
33
- "@projmux/darwin-x64": "0.8.2",
34
- "@projmux/darwin-arm64": "0.8.2"
31
+ "@projmux/linux-x64": "0.8.4",
32
+ "@projmux/linux-arm64": "0.8.4",
33
+ "@projmux/darwin-x64": "0.8.4",
34
+ "@projmux/darwin-arm64": "0.8.4"
35
35
  }
36
36
  }