projmux 0.4.7 → 0.4.8
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
CHANGED
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
actions, and `focus` dispatch diagnostics for session fallback, unresolved
|
|
38
38
|
targets, window fallback, pane fallback, explicit id failures, and
|
|
39
39
|
notify-only fallback.
|
|
40
|
-
- Picker focused unit coverage includes backend-neutral picker item/action mapping, fzf adapter output, native title-focused filtering, numeric selection, shared close actions, saved picker backend config, Settings Labs backend switching, environment override precedence, compact multi-line metadata gutters aligned to the project-name column, proportional native scrollbar thumb rendering, fixed split-preview and sidebar list viewports with scrollbar tracks, preview tab/control normalization before width clipping, optional native frame titlebars, titled native Alt-1 sidebar chrome, statusbar-preserving sidebar popup height, native-only compact project sidebar popup sizing, and notify sidebar popup sizing that preserves the fzf minimum/ratio baseline.
|
|
40
|
+
- Picker focused unit coverage includes backend-neutral picker item/action mapping, fzf adapter output, native title-focused filtering, numeric selection, shared close actions including raw and CSI-u Ctrl-X native custom actions, saved picker backend config, AI picker title chrome and stable search-key ordering, Settings title chrome and root section order, Settings Labs backend switching, environment override precedence, compact multi-line metadata gutters aligned to the project-name column, proportional native scrollbar thumb rendering, multiline partial next-item row rendering with rendered-row scrollbar units, fixed split-preview and sidebar list viewports with scrollbar tracks, native mouse down/follow-drag/release behavior, preview tab/control normalization before width clipping, optional native frame titlebars without same-line rule fill, titled native Alt-1 sidebar chrome, statusbar-preserving sidebar popup height, native-only compact project sidebar popup sizing, and notify sidebar title/popup sizing that preserves the fzf minimum/ratio baseline.
|
|
41
41
|
- `make test-integration`: Docker-backed Linux integration smoke with real `tmux`, `fzf`, `git`, and `stty`; covers `doctor`, tmux config print/install/apply, and notify queue CRUD against isolated HOME/XDG paths.
|
|
42
42
|
- `make test-install-smoke`: Docker-backed source install smoke; covers `make install`, atomic binary replacement, `tmux apply` against a live `projmux` socket, and post-install notify queue initialization.
|
|
43
43
|
- `make test-e2e`: Docker-backed real-tmux workflow smoke for session/pane setup, app config sourcing, reply-state notify reconciliation, focus notify fallback, and status notify rendering with contextual project/state/agent badges. Host-only terminal, WSL, macOS, and GUI notification behavior remains outside Docker; see [docs/testing.md](testing.md).
|
package/docs/cli.md
CHANGED
|
@@ -403,7 +403,7 @@ flags with the top-level `switch` UX:
|
|
|
403
403
|
- `attach auto [--keep=N] [--fallback=home|ephemeral]` — auto-attach to
|
|
404
404
|
the most recent session, with bounded retention and a fallback policy.
|
|
405
405
|
- `settings` — interactive configuration UI for the project picker, AI
|
|
406
|
-
splits,
|
|
406
|
+
splits, Appearance mode, Project Root management, the
|
|
407
407
|
switcher's saved workdirs list, Labs, and About/Update status. In Project
|
|
408
408
|
Picker, `Project Root` manages the saved
|
|
409
409
|
primary root (`~/.config/projmux/projdir`) and displays whether the effective
|
|
@@ -411,7 +411,7 @@ flags with the top-level `switch` UX:
|
|
|
411
411
|
no configured source. When no source is configured, the direct-set prompt
|
|
412
412
|
starts with `$HOME` as an editable fallback, but `$HOME` is not used as the
|
|
413
413
|
effective root unless saved. `Workdirs` remains separate: those entries are
|
|
414
|
-
additional search roots, not the primary root.
|
|
414
|
+
additional search roots, not the primary root. Appearance stores
|
|
415
415
|
`~/.config/projmux/statusbar-decoration` as `off` (default), `symbol`, or
|
|
416
416
|
`emoji` and updates the live tmux option when available. Labs stores
|
|
417
417
|
`~/.config/projmux/picker-backend` as `native` (default) or `fzf` and updates
|
package/docs/configuration.md
CHANGED
|
@@ -102,7 +102,7 @@ failure handling.
|
|
|
102
102
|
|
|
103
103
|
## Decoration Mode
|
|
104
104
|
|
|
105
|
-
Settings >
|
|
105
|
+
Settings > Appearance controls optional status and picker decoration:
|
|
106
106
|
|
|
107
107
|
- `off` is the default and avoids icon-font assumptions.
|
|
108
108
|
- `symbol` restores the Nerd Font-style folder, GitHub, and bell icons.
|
|
@@ -80,8 +80,10 @@ The fzf compatibility surface for the native engine is tracked in
|
|
|
80
80
|
separators reach the right border like fzf.
|
|
81
81
|
- Native frames can render an optional picker-owned titlebar row below the top
|
|
82
82
|
border when `picker.Options.Title` is set; empty titles keep the default frame
|
|
83
|
-
unchanged.
|
|
84
|
-
|
|
83
|
+
unchanged. Non-empty titles use a distinct neutral titlebar surface with rule
|
|
84
|
+
fill and a divider row separating the title section from the search/content
|
|
85
|
+
section. The native Alt-1 project sidebar uses this for a
|
|
86
|
+
`Projects` titlebar.
|
|
85
87
|
- Native width/truncation uses terminal cell width for Korean/CJK text, emoji,
|
|
86
88
|
and combining marks instead of raw rune count, so localized project names and
|
|
87
89
|
decorated notify headers do not push the right frame border out of alignment.
|
|
@@ -91,9 +93,9 @@ The fzf compatibility surface for the native engine is tracked in
|
|
|
91
93
|
multi-line card gaps share the same `projmuxpicker` separator primitive for a
|
|
92
94
|
more consistent native surface.
|
|
93
95
|
- Native interactive mode enables SGR mouse reporting while the alternate screen
|
|
94
|
-
is active. Primary
|
|
95
|
-
mouse wheel moves selection up/down, and reporting is disabled
|
|
96
|
-
screen restore.
|
|
96
|
+
is active. Primary mouse down focuses the row under the cursor, primary mouse
|
|
97
|
+
up applies it, mouse wheel moves selection up/down, and reporting is disabled
|
|
98
|
+
again during screen restore.
|
|
97
99
|
- When terminal size detection is unavailable, native picker falls back to a
|
|
98
100
|
conservative 80x24 terminal instead of assuming a wider surface. Interactive
|
|
99
101
|
tmux popups still use the detected popup size when `stty size` is available.
|
|
@@ -42,12 +42,12 @@ native picker engine and is not a public dependency-policy change.
|
|
|
42
42
|
| `--print-query` accept-query mode | typed settings path prompts | Covered | `Options.AcceptQuery`; `TestNativeRunnerAcceptsTypedQuery` |
|
|
43
43
|
| query cursor editing | typed settings path prompts | Covered | Left/Right, Ctrl-A/E, Delete, Backspace, Ctrl-U/W query editing plus visible prompt cursor; `TestNativeInteractiveEditsTypedQueryAtCursor`; `TestNativeInteractiveSupportsQueryLineEditingKeys`; `TestNativeInteractiveCtrlUDeletesBeforeCursor`; `TestNativePromptLineRendersQueryCursor` |
|
|
44
44
|
| terminal arrow key variants | interactive selection in tmux/docker | Covered | CSI, SS3/application cursor, modified CSI tests; app TTY `/dev/tty` fallback; raw TTY EOF polling keeps split ESC sequences from leaking into the query |
|
|
45
|
-
| mouse support | optional fzf mouse picker interaction | Partially covered | native enables SGR mouse reporting in interactive alternate-screen mode, primary
|
|
45
|
+
| mouse support | optional fzf mouse picker interaction | Partially covered | native enables SGR mouse reporting in interactive alternate-screen mode, primary mouse down focuses the clicked row, primary mouse up applies it, and wheel input moves selection; drag gestures remain outside this POC; `TestNativeInteractiveSelectsOnMouseRelease`; `TestNativeInteractiveMouseDownOnlyFocuses`; `TestNativeInteractiveIgnoresMouseReleaseBeforeDown`; `TestNativeInteractiveSupportsMouseWheelSelection`; Docker no-fzf e2e clicks the AI settings row under a PTY |
|
|
46
46
|
| fzf navigation keys | interactive selection in searchable lists | Covered | native maps CSI-u `Ctrl-J` plus `Ctrl-N` to down and `Ctrl-P`/`Ctrl-K` to up when not claimed by a custom action; raw LF remains Enter for PTY compatibility; `TestNativeInteractiveSupportsFZFNavigationKeys` |
|
|
47
47
|
| alternate-screen lifecycle | fzf fullscreen picker screen restore | Covered | native frame updates and screen exit return to column 0 before terminal control sequences, screen exit resets styles plus clears the alternate buffer from the home cursor before restore, and real TTY restores get a short settle window before caller handoff; `nativeScreenEnter`; `TestNativeInteractiveUsesAlternateScreen`; `TestRenderFullFrameUpdateAlwaysHomesAndWritesFrame` |
|
|
48
48
|
| frame content width | fzf border inner width | Covered | `ContentLayout` uses the frame inner width so separators and rows reach the right border; `TestRendererContentLayoutUsesFrameInnerWidth` |
|
|
49
49
|
| tmux popup frame interaction | native picker popups launched through `popup-toggle` | Covered for native backend popups | `popup-toggle` passes tmux `display-popup -B` when `PROJMUX_PICKER_BACKEND=native`, so the native picker owns the visible frame instead of double-drawing with the tmux popup border; native Alt-1 uses a compact native-only minimum while fzf keeps the previous project sidebar minimum; Alt-1/Alt-2 sidebar heights reserve two bottom statusbar rows; Alt-2 notify sidebar keeps the fzf-like `24%` / min `64` baseline; `TestAppRunTmuxPopupToggleUsesBorderlessPopupForNativeBackend`; `TestSessionizerSidebarWidthKeepsFZFMinimum`; `TestSidebarPopupHeightLeavesStatusbarRows`; `TestNotifySidebarWidthMatchesFZFBaseline`; `TestAppRunTmuxPopupToggleKeepsNotifySidebarFZFSizingForNative` |
|
|
50
|
-
| optional native titlebar | native picker popup frame | Covered for empty-title compatibility and opt-in titles | `picker.Options.Title`; `RenderFrameWithTitle`; `ContentLayoutWithTitle`; empty titles keep the prior frame unchanged, non-empty titles render in a picker-owned
|
|
50
|
+
| optional native titlebar | native picker popup frame | Covered for empty-title compatibility and opt-in titles | `picker.Options.Title`; `RenderFrameWithTitle`; `ContentLayoutWithTitle`; empty titles keep the prior frame unchanged, non-empty titles render in a picker-owned section below the top border with neutral titlebar background, rule fill, and a divider above search/content, and the native Alt-1 project sidebar opts into `Projects`; `TestRendererRenderFrameWithTitleKeepsDefaultWhenTitleEmpty`; `TestRendererRenderFrameWithTitleUsesTitlebarRow`; `TestRendererContentLayoutWithTitleReservesTitlebarRow`; `TestNativeInteractiveRendersOptionalTitlebar`; `TestSwitchCommandNativeSidebarSetsTitle` |
|
|
51
51
|
| redraw flicker/top clipping | keyboard navigation in exact-height tmux popup | Partially covered | native redraws use synchronized updates plus coalesced row diffs after the first frame, skip unchanged frames, render frame diffs before sidebar focus commands, frame rendering avoids trailing bottom-border CRLF, and screen exit clears the alternate buffer before restore; `TestNativeInteractiveWrapsRedrawsInSynchronizedUpdates`; `TestFrameUpdateRendererSkipsUnchangedFrame`; `TestFrameUpdateRendererCoalescesEachFrameUpdate`; `TestRendererRenderFrameUsesCRLFRowsForRawTTY`; `TestNativeInteractiveUsesAlternateScreen` |
|
|
52
52
|
|
|
53
53
|
## Native Surface Architecture
|
|
@@ -118,8 +118,8 @@ native picker engine and is not a public dependency-policy change.
|
|
|
118
118
|
gap, and consecutive bonuses. Very large `query * row` matrices intentionally
|
|
119
119
|
fall back to the greedy scorer to avoid pathological memory use. Search-keyed
|
|
120
120
|
app pickers preserve fzf's `--disabled` reload order instead of score-sorting.
|
|
121
|
-
- Mouse support is intentionally narrow in this POC: primary
|
|
122
|
-
clicked row,
|
|
121
|
+
- Mouse support is intentionally narrow in this POC: primary mouse down focuses
|
|
122
|
+
the clicked row, primary mouse up applies it, and wheel input moves selection.
|
|
123
123
|
Drag gestures and the full fzf mouse grammar are follow-up work.
|
|
124
124
|
- The public doctor/docs dependency policy is tracked separately from picker
|
|
125
125
|
backend selection. Native is the default picker backend, while fzf remains an
|
package/docs/statusbar.md
CHANGED
|
@@ -134,7 +134,7 @@ emits a deterministic block per segment), regenerate, and re-apply:
|
|
|
134
134
|
projmux tmux apply
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
-
Settings >
|
|
137
|
+
Settings > Appearance controls the optional decoration mode used by
|
|
138
138
|
the path, git branch, and notification sidebar header. The persisted enum lives at
|
|
139
139
|
`~/.config/projmux/statusbar-decoration`; valid values are `off` (default,
|
|
140
140
|
font-safe), `symbol` (Nerd Font-style folder/GitHub/bell icons), and `emoji`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projmux",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.8",
|
|
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.4.
|
|
28
|
-
"@projmux/darwin-x64": "0.4.
|
|
29
|
-
"@projmux/linux-arm64": "0.4.
|
|
30
|
-
"@projmux/linux-x64": "0.4.
|
|
27
|
+
"@projmux/darwin-arm64": "0.4.8",
|
|
28
|
+
"@projmux/darwin-x64": "0.4.8",
|
|
29
|
+
"@projmux/linux-arm64": "0.4.8",
|
|
30
|
+
"@projmux/linux-x64": "0.4.8"
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|
|
33
33
|
"package:npm": "scripts/package-npm.sh",
|