projmux 0.8.3 → 0.9.0
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.
- package/README-ko.md +2 -2
- package/README.md +6 -5
- package/docs/agent-workflow.md +25 -15
- package/docs/ai-agent-shortcuts.md +25 -0
- package/docs/architecture.md +30 -8
- package/docs/cli.md +243 -74
- package/docs/configuration.md +71 -11
- package/docs/globalization.md +1 -1
- package/docs/hooks.md +68 -25
- package/docs/install.md +2 -2
- package/docs/keybindings.md +22 -15
- package/docs/native-picker-no-fzf-poc.md +5 -5
- package/docs/native-picker-parity.md +7 -5
- package/docs/notify-queue.md +4 -3
- package/docs/npm-distribution.md +2 -2
- package/docs/operational-diagnostics.md +80 -0
- package/docs/resource-attribution.md +132 -0
- package/docs/session-restore.md +31 -6
- package/docs/settings-ia.md +54 -14
- package/docs/statusbar.md +24 -6
- package/docs/testing.md +1 -1
- package/docs/tmux-surface-inventory.md +108 -774
- package/docs/usage-tracking.md +47 -28
- package/package.json +5 -5
package/docs/settings-ia.md
CHANGED
|
@@ -11,6 +11,10 @@ view-first layout:
|
|
|
11
11
|
current state, source, and expected rendered result before offering mutation
|
|
12
12
|
rows. If a detail opens a dedicated `Change` page, that page is mutation-only
|
|
13
13
|
and does not repeat the same read-only view rows.
|
|
14
|
+
- Every rendered non-empty row value is classified as navigation, actionable,
|
|
15
|
+
or passive information/disabled state and is mapped to a closed owner-loop
|
|
16
|
+
contract before rendering. An unowned value is a Settings error; Enter on a
|
|
17
|
+
passive row is consumed as a no-op.
|
|
14
18
|
- `Settings > Project Picker > Workdirs` is the list/overview entry. Add/remove
|
|
15
19
|
actions live inside that view.
|
|
16
20
|
- `Settings > Project Picker > Project Root` shows effective and saved values
|
|
@@ -35,7 +39,7 @@ view-first layout:
|
|
|
35
39
|
rows as always-visible sections.
|
|
36
40
|
- Terminal delivery remediation lives outside Settings primary flow. The
|
|
37
41
|
supported order is `projmux shell` first, then `projmux setup`, then
|
|
38
|
-
`projmux
|
|
42
|
+
`projmux setup terminal` for supported terminal adapters.
|
|
39
43
|
- Rows that cannot safely be edited still stay visible. Mark diagnostic-only
|
|
40
44
|
rows with the delivery path and reason instead of hiding them or turning them
|
|
41
45
|
into unsupported editable keys. Transport-dependent rows stay visible with
|
|
@@ -57,9 +61,10 @@ view-first layout:
|
|
|
57
61
|
`[theme]` is never resolved or shown here.
|
|
58
62
|
- `Settings > Notifications` owns notification delivery IA. Desktop notification
|
|
59
63
|
mode, AI desktop notification dedupe duration, delivery source diagnostics,
|
|
60
|
-
AI hook quiet policy
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
and AI hook quiet policy live together without mixing mutation boundaries.
|
|
65
|
+
The in-app queue is consumed from the statusbar/sidebar, not from a standalone
|
|
66
|
+
Settings row. `PROJMUX_NOTIFY_HOOK` override presence is folded into Delivery
|
|
67
|
+
sources summary/detail instead of appearing as a separate root row.
|
|
63
68
|
- `Settings > Notifications > Desktop notifications` owns the desktop
|
|
64
69
|
notification mode. The detail choices are `none`, `notify`, and `raise`.
|
|
65
70
|
- `Settings > Notifications > AI notification dedupe` owns the duplicate
|
|
@@ -67,10 +72,10 @@ view-first layout:
|
|
|
67
72
|
the effective source; `PROJMUX_TMUX_NOTIFY_DEDUPE_SECONDS` remains the top
|
|
68
73
|
override. The tmux bell fallback keeps its fixed 5 second window.
|
|
69
74
|
- `Settings > Notifications > Delivery sources` shows Codex hooks, Claude, and
|
|
70
|
-
tmux producer diagnostics
|
|
71
|
-
Settings copies command text only;
|
|
72
|
-
notify wiring. The legacy Codex notify
|
|
73
|
-
Settings.
|
|
75
|
+
tmux producer diagnostics, the effective desktop sender override state, and
|
|
76
|
+
copyable install/remove/dry-run commands. Settings copies command text only;
|
|
77
|
+
it does not install or remove external notify wiring. The legacy Codex notify
|
|
78
|
+
source is intentionally omitted from Settings.
|
|
74
79
|
- `Settings > Notifications > Hook quiet policy` shows Codex/Claude hook
|
|
75
80
|
runtime action values and writes only
|
|
76
81
|
`${XDG_CONFIG_HOME:-$HOME/.config}/projmux/ai-hook-actions.json`. It does not
|
|
@@ -78,13 +83,17 @@ view-first layout:
|
|
|
78
83
|
- `Settings > Session State > Sidebar startup picker` controls the Alt-1
|
|
79
84
|
project-open startup selector. The saved file remains
|
|
80
85
|
`${XDG_CONFIG_HOME:-$HOME/.config}/projmux/sidebar-startup-picker`.
|
|
81
|
-
- `Settings > Labs`
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
- `Settings > Labs` contains only Live system resources and Project Hooks.
|
|
87
|
+
Keybindings live at `Settings > Keybindings`; Labs has no visible or hidden
|
|
88
|
+
keybindings redirect. Native is the only picker backend, so Labs does not
|
|
89
|
+
render picker source/backend information.
|
|
84
90
|
- `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
|
|
86
|
-
updates live tmux state when toggled, and renders unavailable on
|
|
87
|
-
platforms.
|
|
91
|
+
for the macOS/Linux/WSL lower-status-row `CPU N% MEM N%` segment. It defaults
|
|
92
|
+
off, updates live tmux state when toggled, and renders unavailable on
|
|
93
|
+
unsupported platforms. CPU and memory use fixed independent semantic
|
|
94
|
+
thresholds (CPU warning/critical at 70/90; memory at 75/90); the toggle does
|
|
95
|
+
not expose threshold customization. WSL values describe the Linux guest/VM
|
|
96
|
+
view.
|
|
88
97
|
- `Settings > Labs > Project Hooks` is overview-first. The Labs root opens the
|
|
89
98
|
overview, and the on/off mutation rows live one level deeper.
|
|
90
99
|
- `Settings > AI Settings` is view-first. The root contains `Default split
|
|
@@ -106,6 +115,37 @@ view-first layout:
|
|
|
106
115
|
`ko-KR`. When `auto` is active it must show the detected source (`LC_ALL`,
|
|
107
116
|
`LC_MESSAGES`, `LANG`, or fallback). Unsupported locale tags must remain
|
|
108
117
|
visible as warnings and fall back to `en-US`.
|
|
118
|
+
- Global root descriptions keep ownership explicit: Appearance owns language,
|
|
119
|
+
AI badge style, and status/notification icon decoration; Theme owns presets,
|
|
120
|
+
color tokens, and font hints. About describes only the surface it retains.
|
|
121
|
+
- `Settings > About` is intentionally compact: Version, Source, update
|
|
122
|
+
status/actions (including Latest, Update state, Installer, and Release notes
|
|
123
|
+
when available), Welcome, and Quit. It does not reproduce static key,
|
|
124
|
+
terminal, dependency, terminal-emulator, or documentation guides. Key
|
|
125
|
+
delivery discovery lives in `projmux setup`, supported terminal remediation
|
|
126
|
+
in `projmux setup terminal`, read-only dependency/runtime diagnostics in
|
|
127
|
+
`projmux doctor`, and broader orientation in Welcome and maintained docs.
|
|
128
|
+
- Without an actionable project context, the Project surface renders one
|
|
129
|
+
passive context-guidance row instead of repeating the same disabled reason
|
|
130
|
+
for Trust, Hooks, Project recipe, and Effective merge view. With project
|
|
131
|
+
context, those four rows and Session State retain their existing actions.
|
|
132
|
+
|
|
133
|
+
Settings mutation feedback follows one transient contract. The next picker
|
|
134
|
+
frame inserts one passive `Feedback` row after Back; the row uses the catalogued
|
|
135
|
+
`settingsNoopValue`, so Enter cannot create an unknown action. Selecting another
|
|
136
|
+
navigation/action clears the old row before that operation runs, and a handled
|
|
137
|
+
result replaces it. The inventory includes AI defaults/enabled agents/resume
|
|
138
|
+
limits, notification modes/dedupe/hook policy, Appearance and locale choices,
|
|
139
|
+
Labs toggles, project roots/workdirs/pins, project hooks/recipe/trust, Theme,
|
|
140
|
+
Session State, direct keybinding reset/remove/toggle operations, and About
|
|
141
|
+
update apply/check. Typed validation and staged apply failures stay in the
|
|
142
|
+
popup instead of being visible only on stdout/stderr.
|
|
143
|
+
|
|
144
|
+
The generic feedback inventory deliberately excludes Welcome, Quit,
|
|
145
|
+
read-only hook/effective/notification diagnostics, Session State preview, and
|
|
146
|
+
key capture/probe/diagnostic bodies. Those flows own a viewer, confirmation, or
|
|
147
|
+
multi-step output surface; only an actual Settings write at their boundary is
|
|
148
|
+
eligible for transient mutation feedback.
|
|
109
149
|
|
|
110
150
|
Hooks remain the reference pattern for this IA:
|
|
111
151
|
|
package/docs/statusbar.md
CHANGED
|
@@ -69,10 +69,19 @@ 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,
|
|
73
|
-
off, and updates with tmux's existing five-second status interval.
|
|
74
|
-
|
|
75
|
-
|
|
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
|
+
CPU and memory are host-scoped telemetry, not pane, window, project, or
|
|
75
|
+
session attribution. Each value has an independent semantic style: CPU is
|
|
76
|
+
normal below 70%, warning at 70–89%, and critical at 90% or above; memory is
|
|
77
|
+
normal below 75%, warning at 75–89%, and critical at 90% or above. Normal and
|
|
78
|
+
unavailable (`--`) values use the secondary status-text role, warnings use
|
|
79
|
+
the warning role, and critical values use the bold critical role. Styling one
|
|
80
|
+
value never promotes the other value.
|
|
81
|
+
Linux CPU is the aggregate delta from `/proc/stat`; memory is
|
|
82
|
+
`(MemTotal - MemAvailable) / MemTotal` from `/proc/meminfo`. macOS CPU uses
|
|
83
|
+
the aggregate Mach host tick delta; memory is total physical memory minus
|
|
84
|
+
free and inactive pages. The first CPU
|
|
76
85
|
sample renders `CPU --%` until a second counter sample exists. WSL values are
|
|
77
86
|
the Linux guest/VM view, not whole-Windows host utilization. The generated
|
|
78
87
|
tmux condition prevents the status subprocess from running while the Lab is
|
|
@@ -80,6 +89,10 @@ row 1 [#S] #{pane_current_path} ⎈ <ctx>/<ns> <git> CPU 12% MEM 41%
|
|
|
80
89
|
re-enabling after a pause starts at `CPU --%` instead of showing a long-term
|
|
81
90
|
average. Missing or malformed procfs data degrades to `--` or an empty segment
|
|
82
91
|
without producing a tmux error popup.
|
|
92
|
+
The complete live segment is wrapped in `#[range=user|resources]...#[norange]`.
|
|
93
|
+
Clicking it opens the same canonical client-scoped `resource-inspector`
|
|
94
|
+
popup as the `Resources:Open` keybinding action. Disabling the Lab hides only
|
|
95
|
+
the segment; it does not disable a custom action or `projmux resources`.
|
|
83
96
|
- The settings chip keeps its label padding inside the `settings` range
|
|
84
97
|
and inside the chip background. The compact app chip renders `` with
|
|
85
98
|
the extra right-side icon padding painted by the same background, while
|
|
@@ -110,6 +123,7 @@ bind-key -n MouseDown1Status if-shell -F "#{==:#{mouse_status_range},window}" \
|
|
|
110
123
|
| `kube` | 0 | `projmux tmux popup-toggle sessionizer` | `prefix s k` |
|
|
111
124
|
| `git` | 0 | `projmux tmux popup-toggle sessionizer` | `prefix s g` |
|
|
112
125
|
| `settings` | 0 | `projmux tmux popup-toggle --client <tty> ai-split-settings` | mouse only; `prefix s s` remains `session` |
|
|
126
|
+
| `resources` | 0 | `projmux tmux popup-toggle --client <tty> resource-inspector` | mouse or custom `Resources:Open`; no default key |
|
|
113
127
|
| `usage` | 1 | show a native-framed usage HUD popup from cached usage state | `prefix s u` |
|
|
114
128
|
| `notify` | 1 | `projmux focus --target <newest> --source status-bar --kind segment-click [--client <tty>]`, then ack on focus success | `prefix s n` |
|
|
115
129
|
|
|
@@ -134,10 +148,14 @@ hard-truncate path still closes with `#[default]` so later status segments do
|
|
|
134
148
|
not inherit notification styling. That dotless narrow fallback applies only to
|
|
135
149
|
the queued notify segment, not to the separate window-list live attention badge.
|
|
136
150
|
`usage` opens a native-framed detail HUD for the compact usage bar. It reads
|
|
137
|
-
the cached usage state in-process
|
|
138
|
-
output shape unchanged for external consumers, aligns model/window rows with
|
|
151
|
+
the cached usage state in-process and aligns model/window rows with
|
|
139
152
|
right-aligned numeric values, dims unavailable values, keeps stale sync/age
|
|
140
153
|
metadata muted, and colors only threshold values: amber at 80% and red at 95%.
|
|
154
|
+
Antigravity rows keep conversation-local `context` separate from account
|
|
155
|
+
`quota/<exact upstream bucket ID>` rows; the popup displays an absolute reset
|
|
156
|
+
when provided and otherwise the exact optional relative reset seconds. Opaque
|
|
157
|
+
bucket IDs are escaped for terminal/tmux safety and are never assigned a
|
|
158
|
+
`5h`/`weekly` cadence.
|
|
141
159
|
Session State inspection lives under `Projects > Sessions > State`; global
|
|
142
160
|
Settings > Session State is settings-only and the statusbar no longer exposes a
|
|
143
161
|
duplicate State button.
|
package/docs/testing.md
CHANGED
|
@@ -77,7 +77,7 @@ Observe:
|
|
|
77
77
|
- `Alt-1` through `Alt-5` report `OK plain`. These are the guaranteed
|
|
78
78
|
zero-config launch defaults.
|
|
79
79
|
- If a guaranteed key reports `MISS timeout`, preview a supported terminal
|
|
80
|
-
mapping with `projmux
|
|
80
|
+
mapping with `projmux setup terminal ghostty` or `projmux setup terminal windows-terminal`,
|
|
81
81
|
apply it with the same command plus `--apply`, restart that terminal if
|
|
82
82
|
required, and rerun `projmux setup --timeout 10s`.
|
|
83
83
|
- Optional direct aliases and transport-dependent chords may be reported by
|