@projmux/darwin-arm64 0.4.3 → 0.4.5
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.md +78 -79
- package/bin/projmux +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,6 +7,9 @@ sidebar navigation, generated keybindings, status metadata, and AI-pane
|
|
|
7
7
|
attention signals. It can run as its own tmux app (`projmux shell`) or install
|
|
8
8
|
the same behavior into your existing tmux server.
|
|
9
9
|
|
|
10
|
+
[](https://www.npmjs.com/package/projmux)
|
|
11
|
+
[](https://github.com/crevissepartners/projmux/actions/workflows/ci.yml)
|
|
12
|
+
|
|
10
13
|
[한국어 README](README-ko.md)
|
|
11
14
|
|
|
12
15
|
## Why projmux
|
|
@@ -29,26 +32,6 @@ for a daily terminal workspace:
|
|
|
29
32
|
self-contained tmux app, or install the generated snippet into your normal
|
|
30
33
|
tmux server.
|
|
31
34
|
|
|
32
|
-
## What's new in 0.4
|
|
33
|
-
|
|
34
|
-
- **`projmux setup` / `projmux init`** — diagnose terminal key delivery,
|
|
35
|
-
then auto-merge the right CSI-u bindings into Ghostty or Windows
|
|
36
|
-
Terminal configs.
|
|
37
|
-
- **`projmux doctor`** — runtime dependency report with minimum-version
|
|
38
|
-
enforcement (tmux 3.4, fzf 0.55).
|
|
39
|
-
- **`projmux focus`** — unified switch-client dispatch shared by the
|
|
40
|
-
AI reply-ready flow and the status-bar notify click.
|
|
41
|
-
- **Persistent notify queue** — `projmux notify push|list|ack|reconcile`
|
|
42
|
-
with TTL, severity, source, and target metadata. See
|
|
43
|
-
[notify-queue.md](docs/notify-queue.md).
|
|
44
|
-
- **Authoritative usage tracking** — `projmux usage` reads Claude's
|
|
45
|
-
OAuth usage endpoint and Codex's local rollout `rate_limits`. See
|
|
46
|
-
[usage-tracking.md](docs/usage-tracking.md).
|
|
47
|
-
- **Two-line clickable status bar** — row 0 keeps the native window
|
|
48
|
-
list (click a tab to switch), row 1 splits a notify HUD pill (left)
|
|
49
|
-
and a usage HUD bar (right). Both segments degrade gracefully on
|
|
50
|
-
narrow status budgets. See [statusbar.md](docs/statusbar.md).
|
|
51
|
-
|
|
52
35
|
## What It Does
|
|
53
36
|
|
|
54
37
|
- Creates or switches to tmux sessions from project directories.
|
|
@@ -81,10 +64,14 @@ Open the app once, then use its generated tmux bindings to:
|
|
|
81
64
|
|
|
82
65
|
## Requirements
|
|
83
66
|
|
|
84
|
-
- [
|
|
67
|
+
- [Node.js](https://nodejs.org/) and npm — required for the recommended npm
|
|
68
|
+
install path.
|
|
69
|
+
- [Go 1.24+](https://go.dev/dl/) — required only when installing with
|
|
70
|
+
`go install` or building from source.
|
|
85
71
|
- [tmux](https://github.com/tmux/tmux/wiki/Installing) **≥ 3.4** — the workspace runtime. Earlier versions miss `display-popup -T` and other features projmux depends on.
|
|
86
72
|
- [fzf](https://github.com/junegunn/fzf#installation) **≥ 0.55** — interactive popup/sidebar pickers. The multiline picker uses `--marker-multi-line`, `--gap-line`, and `--highlight-line`, which landed by 0.55.
|
|
87
|
-
-
|
|
73
|
+
- A Unix shell such as `bash`, `zsh`, or `sh` — `projmux shell` uses your
|
|
74
|
+
absolute `$SHELL` for the generated app config, falling back to `/bin/sh`.
|
|
88
75
|
- [git](https://git-scm.com/downloads) — branch/status metadata.
|
|
89
76
|
- `stty` — POSIX terminal control, used by `projmux setup`. Already shipped by every macOS / Linux base system; not applicable on Windows hosts.
|
|
90
77
|
- [kubectl](https://kubernetes.io/docs/tasks/tools/) — optional, only for the Kubernetes status segment.
|
|
@@ -92,40 +79,49 @@ Open the app once, then use its generated tmux bindings to:
|
|
|
92
79
|
Desktop notifications: Linux uses `notify-send`; WSL routes Windows toasts via
|
|
93
80
|
`powershell.exe`. Override either with `PROJMUX_NOTIFY_HOOK`.
|
|
94
81
|
|
|
95
|
-
Run `projmux doctor` any time to verify
|
|
96
|
-
tmux/fzf meet the minimum supported versions.
|
|
82
|
+
Run `projmux doctor` any time to verify runtime dependencies are on `PATH`
|
|
83
|
+
and that tmux/fzf meet the minimum supported versions. Terminal key delivery
|
|
84
|
+
is diagnosed separately with `projmux setup`.
|
|
97
85
|
|
|
98
86
|
## Install
|
|
99
87
|
|
|
100
88
|
```sh
|
|
101
|
-
|
|
89
|
+
npm install -g projmux
|
|
102
90
|
```
|
|
103
91
|
|
|
104
|
-
|
|
105
|
-
|
|
92
|
+
npm installs a small Node.js shim plus the matching platform binary package
|
|
93
|
+
for Linux and macOS on x64 or arm64. The shim marks the install as npm-managed
|
|
94
|
+
so `projmux update` and the Settings About screen can use the right upgrade
|
|
95
|
+
path.
|
|
96
|
+
|
|
97
|
+
Verify:
|
|
106
98
|
|
|
107
99
|
```sh
|
|
108
|
-
|
|
100
|
+
projmux version
|
|
109
101
|
```
|
|
110
102
|
|
|
111
|
-
|
|
103
|
+
If npm is not a fit for your machine, install with Go:
|
|
112
104
|
|
|
113
105
|
```sh
|
|
114
|
-
projmux
|
|
106
|
+
go install github.com/crevissepartners/projmux/cmd/projmux@latest
|
|
115
107
|
```
|
|
116
108
|
|
|
109
|
+
This drops the binary in `$(go env GOBIN)` (when set) or `$(go env GOPATH)/bin`
|
|
110
|
+
(default `~/go/bin`). Make sure that directory is on your `PATH`.
|
|
111
|
+
|
|
117
112
|
### Optional: `PROJMUX_PROJDIR`
|
|
118
113
|
|
|
119
|
-
`PROJMUX_PROJDIR` is the
|
|
120
|
-
discovery. It is optional
|
|
121
|
-
|
|
122
|
-
`~/source
|
|
114
|
+
`PROJMUX_PROJDIR` is the primary project root projmux uses for picker and
|
|
115
|
+
discovery when you explicitly configure it. It is optional; when unset,
|
|
116
|
+
projmux does not assume a canonical repo root. Discovery still uses pins, live
|
|
117
|
+
sessions, saved workdirs, and weak common-folder probes (`~/source`, `~/work`,
|
|
118
|
+
`~/projects`, `~/src`, `~/code`) when they exist.
|
|
123
119
|
|
|
124
120
|
```sh
|
|
125
|
-
export PROJMUX_PROJDIR="
|
|
121
|
+
export PROJMUX_PROJDIR="/your/path"
|
|
126
122
|
```
|
|
127
123
|
|
|
128
|
-
Add the line to `~/.zshrc
|
|
124
|
+
Add the line to `~/.bashrc`, `~/.zshrc`, or your shell's rc file. The resolved value is
|
|
129
125
|
memoized to `~/.config/projmux/projdir` after first use, so later shells keep
|
|
130
126
|
the same root even without the env var.
|
|
131
127
|
|
|
@@ -138,20 +134,28 @@ search list, so they participate in discovery just like
|
|
|
138
134
|
|
|
139
135
|
```sh
|
|
140
136
|
# Linux/macOS — primary repo + secondary search root
|
|
141
|
-
export PROJMUX_PROJDIR="
|
|
137
|
+
export PROJMUX_PROJDIR="/main/repos:/srv/work/repos"
|
|
142
138
|
```
|
|
143
139
|
|
|
144
|
-
#### Set the project root
|
|
140
|
+
#### Set the project root during setup
|
|
145
141
|
|
|
146
142
|
```sh
|
|
147
|
-
PROJMUX_PROJDIR=/your/path
|
|
148
|
-
PROJMUX_PROJDIR=/your/path projmux tmux apply
|
|
143
|
+
PROJMUX_PROJDIR=/your/path projmux shell
|
|
149
144
|
```
|
|
150
145
|
|
|
151
146
|
The first invocation that sees the env var writes
|
|
152
147
|
`~/.config/projmux/projdir`, so later shells without the env var still
|
|
153
148
|
resolve the same root.
|
|
154
149
|
|
|
150
|
+
You can also manage the saved value interactively with
|
|
151
|
+
`projmux settings > Project Picker > Project Root`. That screen shows the
|
|
152
|
+
effective primary root and source (`PROJMUX_PROJDIR`, `@projmux_projdir`,
|
|
153
|
+
saved, or not configured), shows when a saved value is shadowed by env/tmux,
|
|
154
|
+
and lets you set a path directly, use the current project context, or clear the
|
|
155
|
+
saved value. When no Project Root is configured, the direct-set prompt starts
|
|
156
|
+
with `$HOME` as an editable fallback; it is not treated as the effective root
|
|
157
|
+
until you save it.
|
|
158
|
+
|
|
155
159
|
### From source
|
|
156
160
|
|
|
157
161
|
```sh
|
|
@@ -173,13 +177,15 @@ projmux shell
|
|
|
173
177
|
```
|
|
174
178
|
|
|
175
179
|
projmux owns this tmux server, its generated config, status bar, and popup
|
|
176
|
-
bindings.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
bindings. Cooperative terminals get `Alt-1`..`Alt-5` immediately, with no
|
|
181
|
+
terminal config. The left status badge shows the current project name; the
|
|
182
|
+
right side shows path, kube segment, git segment, and clock.
|
|
183
|
+
|
|
184
|
+
If a key does not fire, run `projmux setup` outside tmux to see which
|
|
185
|
+
sequences your terminal swallows. For supported terminals, preview the
|
|
186
|
+
fallback with `projmux init [terminal]`, then apply it with
|
|
187
|
+
`projmux init [terminal] --apply` (auto-detects when no terminal is given).
|
|
188
|
+
Dotfiles users on multi-machine setups should pass
|
|
183
189
|
`--allow-symlink` or `--config <path>` to make their intent explicit. Full
|
|
184
190
|
flow and the manual CSI-u fallback are in
|
|
185
191
|
[Terminal Keybindings](docs/keybindings.md).
|
|
@@ -190,54 +196,46 @@ for the supported versions.
|
|
|
190
196
|
|
|
191
197
|
## Upgrading
|
|
192
198
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
199
|
+
The Settings About screen is the normal interactive update surface: it shows
|
|
200
|
+
cached release status, installer source, Check Updates, Update Now, and
|
|
201
|
+
release notes. The startup update prompt uses the same cache and never reaches
|
|
202
|
+
the network.
|
|
203
|
+
To refresh the cached release status manually, run:
|
|
196
204
|
|
|
197
205
|
```sh
|
|
198
|
-
projmux
|
|
199
|
-
projmux upgrade --ref @v0.2.0 # pin a specific tag
|
|
200
|
-
projmux upgrade --ref @main # track a branch
|
|
201
|
-
projmux upgrade --target /usr/local/bin/projmux # replace another path
|
|
202
|
-
projmux upgrade --no-apply # skip 'projmux tmux apply'
|
|
203
|
-
projmux upgrade --dry-run # print the steps only
|
|
206
|
+
projmux update check
|
|
204
207
|
```
|
|
205
208
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
Pass a new project root inline to atomically switch the binary and the saved
|
|
211
|
-
projdir in one step:
|
|
212
|
-
|
|
213
|
-
```sh
|
|
214
|
-
PROJMUX_PROJDIR=/new/path projmux upgrade
|
|
215
|
-
|
|
216
|
-
# Multi-path also works; only the primary entry is persisted to the saved file.
|
|
217
|
-
PROJMUX_PROJDIR="/main/repos:/secondary/repos" projmux upgrade # Linux/macOS
|
|
218
|
-
# Windows: PROJMUX_PROJDIR="C:\main\repos;C:\secondary\repos"
|
|
219
|
-
```
|
|
209
|
+
Use Settings > About > Update or `projmux update apply` to update through the
|
|
210
|
+
detected installer. See [Upgrading](docs/upgrading.md) for npm, Go, GitHub
|
|
211
|
+
Release, and source-checkout details.
|
|
220
212
|
|
|
221
213
|
## Usage
|
|
222
214
|
|
|
223
215
|
Day-to-day, projmux is driven by tmux keybindings inside `projmux shell` — see
|
|
224
216
|
[Terminal Keybindings](docs/keybindings.md). For the full CLI surface (pins,
|
|
225
|
-
preview state, status helpers,
|
|
217
|
+
preview state, status helpers, updates, etc.), run `projmux help` or
|
|
226
218
|
`<command> --help`.
|
|
227
219
|
|
|
228
220
|
## How It Finds Projects
|
|
229
221
|
|
|
230
222
|
`projmux switch` combines pinned directories, live tmux sessions, and discovered
|
|
231
|
-
project roots.
|
|
232
|
-
as `~/source`, `~/work`, `~/projects`, `~/src`,
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
223
|
+
project roots. When no explicit search roots are configured, discovery uses
|
|
224
|
+
weak common-folder probes such as `~/source`, `~/work`, `~/projects`, `~/src`,
|
|
225
|
+
and `~/code` if they exist; it does not assume a canonical `~/source/repos`
|
|
226
|
+
root. `projmux settings` also has `Project Picker > Add Project...`, which
|
|
227
|
+
scans filesystem roots up to depth 3 so projects outside the weak probes can be
|
|
228
|
+
added to the picker. Session names are derived from normalized directory paths,
|
|
229
|
+
so a project keeps the same tmux session name across launches.
|
|
237
230
|
|
|
238
231
|
For permanent search-root customization, the Project Picker section also
|
|
239
232
|
includes:
|
|
240
233
|
|
|
234
|
+
- `Project Root` - set, change, or clear the saved primary root. This is the
|
|
235
|
+
one root used as the primary project context; env `PROJMUX_PROJDIR` and tmux
|
|
236
|
+
`@projmux_projdir` override the saved value until unset. If no root is
|
|
237
|
+
configured, the direct-set prompt pre-fills `$HOME` so the picker remains
|
|
238
|
+
usable without inventing an implicit saved root.
|
|
241
239
|
- `+ Add Workdir...` - append a single directory to the saved workdirs list.
|
|
242
240
|
- `Workdirs` - review and remove saved workdirs. The same picker also surfaces
|
|
243
241
|
any active `PROJMUX_MANAGED_ROOTS` / `TMUX_SESSIONIZER_ROOTS` env values as
|
|
@@ -264,8 +262,8 @@ and troubleshooting.
|
|
|
264
262
|
|
|
265
263
|
| Variable | Purpose |
|
|
266
264
|
| --- | --- |
|
|
267
|
-
| `PROJMUX_PROJDIR` |
|
|
268
|
-
| `PROJMUX_MANAGED_ROOTS` | Colon-separated list of search roots. Overrides the saved/
|
|
265
|
+
| `PROJMUX_PROJDIR` | Explicit primary project root for the current shell. Accepts an OS-native PATH-style multi-value: the first entry is the primary repo root (memoized to `~/.config/projmux/projdir`), and any additional entries are prepended to the managed-roots search list. |
|
|
266
|
+
| `PROJMUX_MANAGED_ROOTS` | Colon-separated list of search roots. Overrides the saved/heuristic list. |
|
|
269
267
|
| `PROJMUX_NOTIFY_HOOK` | External executable that receives AI desktop notifications instead of the built-in sender. |
|
|
270
268
|
| `PROJMUX_USAGE_STATE_DIR` | Override directory for the AI-usage snapshot cache. Defaults to `<state>/projmux/usage`. Point this at a synced location (Dropbox, iCloud Drive, etc) to share authoritative usage between machines. |
|
|
271
269
|
| `PROJMUX_USAGE_DEBUG` | When non-empty, surfaces adapter errors from `projmux status usage` to stderr instead of swallowing them. |
|
|
@@ -316,6 +314,7 @@ More documentation:
|
|
|
316
314
|
- [Statusbar](docs/statusbar.md)
|
|
317
315
|
- [Notify queue](docs/notify-queue.md)
|
|
318
316
|
- [Usage tracking](docs/usage-tracking.md)
|
|
317
|
+
- [Upgrading](docs/upgrading.md)
|
|
319
318
|
- [Hooks](docs/hooks.md)
|
|
320
319
|
- [Migration Plan](docs/migration-plan.md)
|
|
321
320
|
- [Repo Layout](docs/repo-layout.md)
|
package/bin/projmux
CHANGED
|
Binary file
|