projmux 0.6.0 → 0.6.1
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/docs/agent-workflow.md +1 -1
- package/docs/cli.md +3 -3
- package/docs/configuration.md +11 -5
- package/docs/session-restore.md +9 -15
- package/docs/settings-ia.md +12 -0
- package/docs/statusbar.md +30 -33
- package/package.json +5 -5
package/docs/agent-workflow.md
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
- `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, Notifications root/Desktop notifications/Delivery sources relocation, Delivery sources command-row clipboard copy, and Labs Project Hooks overview-first rows.
|
|
34
34
|
- `make test` also covers Settings > Session State as global settings-only UI with default-off auto-save 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 Labs 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, trust approve continuation, and trust deny/cancel no-session behavior.
|
|
35
35
|
- `make test` also covers `projmux shell` usage without startup selector flags, project-context default target lookup from `PROJMUX_CWD` or nearest project marker, explicit `--session` separation from project-derived defaults, and direct empty attach behavior without shell startup picker/replay.
|
|
36
|
-
- `make test` also covers
|
|
36
|
+
- `make test` also covers manual Session State Save snapshot and restore dry-run preview actions, title-first pane preview labels with legacy snapshot fallback, missing-snapshot messaging, and the absence of the removed statusbar State shortcut.
|
|
37
37
|
- `make test` also covers legacy named-snapshot storage compatibility for `.projmux/layouts/*.toml`, supported interpolation validation, malformed-file list warnings, portable conversion helpers, dry-run conversion to the session-state restore preview with source labels, missing current-session failure, destructive live replay helper behavior with fresh/internal source marking and fresh saved-snapshot cleanup, and the session-state live replay helper that stages windows, moves them by tmux ID, and removes extra live windows.
|
|
38
38
|
- `make test` also covers `projmux ai integrate codex` default hooks install/idempotence/dry-run/removal, compatibility legacy Codex notify mode install/idempotence, dry-run preview, unmanaged `notify = ...` conflict refusal, managed-block removal, catalog-driven Codex hook event installation with local override merging, nested inline Codex hook schema, `[features]` merge/preservation, preservation of unrelated Codex/Claude config and unmanaged hook entries, Settings Codex `/hooks` review notice and tested-version rows, and remove-all behavior for projmux-managed Codex blocks.
|
|
39
39
|
- `make test` also covers `projmux ai ingest codex-hook` event parsing, PermissionRequest critical queue rows with tool/action metadata, Stop info queue rows, UserPromptSubmit busy/no-queue behavior, quiet/no-notify diagnostics for non-firing Codex hook events including override-added catalog events, cataloged hook notification body formatting, hook-active pane marking, topic preservation without hook candidate writes, and mutable resume metadata writes for `@projmux_ai_resume_id`, source, and updated-at.
|
package/docs/cli.md
CHANGED
|
@@ -680,9 +680,9 @@ flags with the top-level `switch` UX:
|
|
|
680
680
|
no configured source. When no source is configured, the direct-set prompt
|
|
681
681
|
starts with `$HOME` as an editable fallback, but `$HOME` is not used as the
|
|
682
682
|
effective root unless saved. `Workdirs` remains separate: those entries are
|
|
683
|
-
additional search roots, not the primary root. Appearance stores
|
|
684
|
-
|
|
685
|
-
|
|
683
|
+
additional search roots, not the primary root. Appearance stores per-surface
|
|
684
|
+
path/git/notify icon decoration as `off` (default), `symbol`, or `emoji` and
|
|
685
|
+
updates the matching live tmux option when available. Labs remains
|
|
686
686
|
available for experimental settings. The About section reads the cached
|
|
687
687
|
update status without network access;
|
|
688
688
|
selecting Check Updates runs `projmux update check`, and Update Now runs
|
package/docs/configuration.md
CHANGED
|
@@ -432,18 +432,24 @@ create sessions or send tmux commands.
|
|
|
432
432
|
|
|
433
433
|
## Decoration Mode
|
|
434
434
|
|
|
435
|
-
Settings > Appearance controls optional
|
|
435
|
+
Settings > Appearance controls optional icon decoration per surface:
|
|
436
436
|
|
|
437
437
|
- `off` is the default and avoids icon-font assumptions.
|
|
438
|
-
- `symbol` restores
|
|
439
|
-
- `emoji` uses emoji decorators
|
|
438
|
+
- `symbol` restores Nerd Font-style folder, git-provider, and bell icons.
|
|
439
|
+
- `emoji` uses emoji decorators. GitHub remotes use a cat-style mark, GitLab
|
|
440
|
+
remotes use a fox-style mark, and other remotes use a generic git branch mark.
|
|
440
441
|
|
|
441
|
-
The saved
|
|
442
|
+
The per-surface saved values live at:
|
|
442
443
|
|
|
443
444
|
```text
|
|
444
|
-
~/.config/projmux/statusbar-decoration
|
|
445
|
+
~/.config/projmux/statusbar-decoration-cwd
|
|
446
|
+
~/.config/projmux/statusbar-decoration-git
|
|
447
|
+
~/.config/projmux/statusbar-decoration-notify
|
|
445
448
|
```
|
|
446
449
|
|
|
450
|
+
The legacy `~/.config/projmux/statusbar-decoration` value is still read as the
|
|
451
|
+
fallback default when a per-surface file is absent.
|
|
452
|
+
|
|
447
453
|
## Rare Tunables
|
|
448
454
|
|
|
449
455
|
These are intended for debugging or local policy, not routine setup:
|
package/docs/session-restore.md
CHANGED
|
@@ -27,22 +27,16 @@ restore` prints the read-only dry-run restore plan for the project snapshot, and
|
|
|
27
27
|
`Delete snapshot` requires a confirmation picker before removing the project
|
|
28
28
|
snapshot. Destructive restore execution remains outside Settings in this slice.
|
|
29
29
|
|
|
30
|
-
Agent panes in Settings
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
Agent panes in Settings and restore dry-run previews show resume metadata
|
|
31
|
+
health next to the pane recipe. `available` means a resume id is present and
|
|
32
|
+
recent enough for replay, `stale` means the stored id exists but the metadata is
|
|
33
|
+
missing or older than the snapshot policy, and `unavailable` means projmux
|
|
34
|
+
cannot safely resume that agent pane from the snapshot. Confidence is derived
|
|
35
|
+
from the metadata source: direct session ids and hook ingest are high
|
|
36
36
|
confidence, transcript/log fallbacks are medium confidence, and missing or
|
|
37
|
-
unknown sources are low or none.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
same read model and CLI behavior:
|
|
41
|
-
|
|
42
|
-
- `Save snapshot` captures the current tmux session, bypassing the autosave debounce
|
|
43
|
-
just like `projmux session-state save`.
|
|
44
|
-
- `Preview restore` prints the dry-run restore plan and does not execute tmux
|
|
45
|
-
replay commands.
|
|
37
|
+
unknown sources are low or none. The old statusbar Session State shortcut has
|
|
38
|
+
been removed; use `Projects > Sessions > State` or the `projmux session-state`
|
|
39
|
+
CLI for inspection/actions.
|
|
46
40
|
|
|
47
41
|
Settings > Session State is global settings only: global auto-save, auto-save
|
|
48
42
|
interval, and storage/retention policy. It does not show the current
|
package/docs/settings-ia.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
This branch finishes the current Settings/onboarding roadmap slice with a
|
|
4
4
|
view-first layout:
|
|
5
5
|
|
|
6
|
+
- Every Settings surface keeps the Global/Project tab strip visible so nested
|
|
7
|
+
pages still show their scope. Detail pages may render the strip as passive
|
|
8
|
+
context when changing tabs from that nested page would skip an explicit Back
|
|
9
|
+
boundary.
|
|
10
|
+
- Settings uses a view-first rule: overview rows open details; details show the
|
|
11
|
+
current state, source, and expected rendered result before offering mutation
|
|
12
|
+
rows. If a detail opens a dedicated `Change` page, that page is mutation-only
|
|
13
|
+
and does not repeat the same read-only view rows.
|
|
6
14
|
- `Settings > Project Picker > Workdirs` is the list/overview entry. Add/remove
|
|
7
15
|
actions live inside that view.
|
|
8
16
|
- `Settings > Project Picker > Project Root` shows effective and saved values
|
|
@@ -33,6 +41,10 @@ view-first layout:
|
|
|
33
41
|
rows such as `Startup command`, `Kube`, and `Environment`; mutation actions
|
|
34
42
|
such as `Set startup command...`, `Clear startup command`, kube edits, and env
|
|
35
43
|
add/remove rows live inside those details.
|
|
44
|
+
- `Settings > Appearance` is view-first. The root opens `Path icon`, `Git icon`,
|
|
45
|
+
and `Notify icon` details. Each detail shows the current mode and off/symbol/
|
|
46
|
+
emoji rendered previews first, and its `Change` page contains only the
|
|
47
|
+
off/symbol/emoji mutation choices.
|
|
36
48
|
|
|
37
49
|
Hooks remain the reference pattern for this IA:
|
|
38
50
|
|
package/docs/statusbar.md
CHANGED
|
@@ -8,13 +8,17 @@ segment only requires one wiring point.
|
|
|
8
8
|
## Layout
|
|
9
9
|
|
|
10
10
|
```
|
|
11
|
-
row 0 [
|
|
11
|
+
row 0 #[range=user|notify] <notify HUD pill> #[norange]
|
|
12
|
+
#[range=user|usage] <usage HUD bar> #[norange]
|
|
13
|
+
row 1 [#S] #{pane_current_path} ⎈ <ctx>/<ns> <git> %H:%M
|
|
12
14
|
└────────── native tmux window list (one entry per window) ──────────┘
|
|
13
|
-
row 1 #[range=user|notify] <notify HUD pill> #[norange] #[range=user|sessionstate]state#[norange]
|
|
14
|
-
#[range=user|usage] <usage HUD bar> #[norange]
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
- Row 0
|
|
17
|
+
- Row 0 splits the line with `#[align=left]` (the pending AI notify
|
|
18
|
+
queue, capped at 80 cells) and `#[align=right]` (usage, capped at 120
|
|
19
|
+
cells). `notify` is the explicit-ack pending queue; live pane attention
|
|
20
|
+
badges are a separate state surface.
|
|
21
|
+
- Row 1 keeps tmux's native `window-status-format` so clicking a tab
|
|
18
22
|
selects the window. The bind uses `if-shell -F
|
|
19
23
|
"#{==:#{mouse_status_range},window}"` to run `select-window -t =`
|
|
20
24
|
natively when the click lands on the window list, so the
|
|
@@ -29,18 +33,15 @@ row 1 #[range=user|notify] <notify HUD pill> #[norange] #[range=user|sessionsta
|
|
|
29
33
|
in `#[range=user|<id>]` ranges and dispatched through the projmux
|
|
30
34
|
handler. The standalone config also wraps the right-side `projmux`
|
|
31
35
|
badge as the `settings` range; the app config renders a compact
|
|
32
|
-
|
|
36
|
+
`` settings chip after the clock. The git segment shows the current
|
|
33
37
|
branch or detached commit,
|
|
34
38
|
then compact state indicators when available: `*` for local changes,
|
|
35
39
|
`+N` for staged entries, and `↑N`/`↓N` for ahead/behind counts. Each
|
|
36
40
|
state token gets its own compact foreground color while preserving the
|
|
37
|
-
existing branch block background.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
explicit-ack pending queue; live pane attention badges are a separate
|
|
42
|
-
state surface. Both
|
|
43
|
-
segments degrade gracefully when the cell budget is tight; see
|
|
41
|
+
existing branch block background. Window tab indexes stay left of each tab,
|
|
42
|
+
and tab titles are centered in a fixed-width trim so long active pane names
|
|
43
|
+
do not resize the status row.
|
|
44
|
+
- Both HUD segments degrade gracefully when the cell budget is tight; see
|
|
44
45
|
[notify-queue.md](notify-queue.md) and [usage-tracking.md](usage-tracking.md)
|
|
45
46
|
for the per-segment tier ladder.
|
|
46
47
|
|
|
@@ -64,7 +65,6 @@ bind-key -n MouseDown1Status if-shell -F "#{==:#{mouse_status_range},window}" \
|
|
|
64
65
|
| `kube` | 0 | `projmux tmux popup-toggle sessionizer` | `prefix s k` |
|
|
65
66
|
| `git` | 0 | `projmux tmux popup-toggle sessionizer` | `prefix s g` |
|
|
66
67
|
| `settings` | 0 | `projmux tmux popup-toggle --client <tty> ai-split-settings` | mouse only; `prefix s s` remains `session` |
|
|
67
|
-
| `sessionstate` | 1 | show a secondary Session State snapshot status and restore preview popup; primary inspection lives under Projects > Sessions > State | `prefix s r` |
|
|
68
68
|
| `usage` | 1 | show a native-framed usage HUD popup from cached usage state | `prefix s u` |
|
|
69
69
|
| `notify` | 1 | `projmux focus --target <newest> --source status-bar --kind segment-click [--client <tty>]`, then ack on focus success | `prefix s n` |
|
|
70
70
|
|
|
@@ -80,11 +80,9 @@ the cached usage state in-process, keeps the existing `projmux usage` CLI
|
|
|
80
80
|
output shape unchanged for external consumers, aligns model/window rows with
|
|
81
81
|
right-aligned numeric values, dims unavailable values, and colors rows at the
|
|
82
82
|
same alert thresholds as the popup: amber at 80% and red at 95%.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
state inspection lives under `Projects > Sessions > State`; global Settings >
|
|
87
|
-
Session State is settings-only.
|
|
83
|
+
Session State inspection lives under `Projects > Sessions > State`; global
|
|
84
|
+
Settings > Session State is settings-only and the statusbar no longer exposes a
|
|
85
|
+
duplicate State button.
|
|
88
86
|
|
|
89
87
|
The path popup uses the native picker frame chrome, a one-line title,
|
|
90
88
|
the full wrapped current path, cheap project/git metadata when available, and
|
|
@@ -95,12 +93,10 @@ does not leave terminal key state behind. The usage popup uses the same
|
|
|
95
93
|
single-payload print and plain Enter-close pattern. It shows the authoritative
|
|
96
94
|
last collect timestamp when present, falls back to the cache file mtime when
|
|
97
95
|
needed, and colors that sync line amber once it is more than 60 seconds old.
|
|
98
|
-
The notification HUD detail surface
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
the fzf header text instead. Selecting a row still focuses and acknowledges
|
|
103
|
-
that notification.
|
|
96
|
+
The notification HUD detail surface (`Alt-2` / `User2`) opens the right-side
|
|
97
|
+
notification popup with newest-first rows and an amber title. When notification
|
|
98
|
+
icon decoration is `symbol` or `emoji`, the bell appears before the title text.
|
|
99
|
+
Selecting a row still focuses and acknowledges that notification.
|
|
104
100
|
|
|
105
101
|
Empty `#{mouse_status_range}` (a click on whitespace) falls through to
|
|
106
102
|
`select-window -t @<mouse_window>` when `--mouse-window` is non-empty,
|
|
@@ -116,7 +112,6 @@ bind-key -T projmux-status n run-shell '#{q:projmux} statusbar click notify'
|
|
|
116
112
|
bind-key -T projmux-status g run-shell '#{q:projmux} statusbar click git'
|
|
117
113
|
bind-key -T projmux-status k run-shell '#{q:projmux} statusbar click kube'
|
|
118
114
|
bind-key -T projmux-status p run-shell '#{q:projmux} statusbar click pwd'
|
|
119
|
-
bind-key -T projmux-status r run-shell '#{q:projmux} statusbar click sessionstate'
|
|
120
115
|
bind-key -T projmux-status s run-shell '#{q:projmux} statusbar click session'
|
|
121
116
|
```
|
|
122
117
|
|
|
@@ -141,8 +136,6 @@ them as `display-message` toasts:
|
|
|
141
136
|
- `settings` popup launch failure: toast `statusbar settings: popup failed`.
|
|
142
137
|
- `pwd` path popup failure: fall back to a short `display-message`
|
|
143
138
|
containing the current path.
|
|
144
|
-
- `sessionstate` popup failure: fall back to a compact snapshot status
|
|
145
|
-
`display-message`.
|
|
146
139
|
- `usage` popup failure: fall back to a compact usage summary
|
|
147
140
|
`display-message`.
|
|
148
141
|
|
|
@@ -160,12 +153,16 @@ emits a deterministic block per segment), regenerate, and re-apply:
|
|
|
160
153
|
projmux tmux apply
|
|
161
154
|
```
|
|
162
155
|
|
|
163
|
-
Settings > Appearance controls
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
156
|
+
Settings > Appearance controls optional icon decoration separately for the
|
|
157
|
+
path/cwd marker, git branch marker, and notification sidebar header. Each row
|
|
158
|
+
can be `off` (default, font-safe), `symbol` (Nerd Font-style folder,
|
|
159
|
+
git-provider, or bell icon), or `emoji`. Git branch decoration follows
|
|
160
|
+
`remote.origin.url`: GitHub remotes use a cat-style mark, GitLab remotes use a
|
|
161
|
+
fox-style mark, and other remotes use a generic git branch mark. Settings also
|
|
162
|
+
updates the matching live tmux option
|
|
163
|
+
(`@projmux_statusbar_decoration_cwd`, `_git`, or `_notify`) when run inside
|
|
164
|
+
tmux. The legacy `~/.config/projmux/statusbar-decoration` and
|
|
165
|
+
`@projmux_statusbar_decoration` remain fallback defaults for older configs.
|
|
169
166
|
|
|
170
167
|
To add a new clickable segment:
|
|
171
168
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projmux",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "tmux project session manager",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/crevissepartners/projmux#readme",
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"LICENSE"
|
|
25
25
|
],
|
|
26
26
|
"optionalDependencies": {
|
|
27
|
-
"@projmux/darwin-arm64": "0.6.
|
|
28
|
-
"@projmux/darwin-x64": "0.6.
|
|
29
|
-
"@projmux/linux-arm64": "0.6.
|
|
30
|
-
"@projmux/linux-x64": "0.6.
|
|
27
|
+
"@projmux/darwin-arm64": "0.6.1",
|
|
28
|
+
"@projmux/darwin-x64": "0.6.1",
|
|
29
|
+
"@projmux/linux-arm64": "0.6.1",
|
|
30
|
+
"@projmux/linux-x64": "0.6.1"
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|
|
33
33
|
"package:npm": "scripts/package-npm.sh",
|