projmux 0.4.2 → 0.4.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.
- package/README-ko.md +19 -16
- package/README.md +64 -79
- package/package.json +5 -5
package/README-ko.md
CHANGED
|
@@ -82,7 +82,8 @@ projmux shell
|
|
|
82
82
|
- [Go 1.24+](https://go.dev/dl/) — binary 설치/빌드에 필요.
|
|
83
83
|
- [tmux](https://github.com/tmux/tmux/wiki/Installing) **≥ 3.4** — workspace 런타임. 이전 버전은 `display-popup -T` 등 projmux 가 사용하는 기능이 없습니다.
|
|
84
84
|
- [fzf](https://github.com/junegunn/fzf#installation) **≥ 0.55** — popup/sidebar picker. 멀티라인 피커가 `--marker-multi-line`, `--gap-line`, `--highlight-line` 을 사용하며 모두 0.55 까지 도입됐습니다.
|
|
85
|
-
-
|
|
85
|
+
- `bash`, `zsh`, `sh` 같은 Unix shell — `projmux shell` 이 만드는 앱 tmux
|
|
86
|
+
설정은 절대 경로 `$SHELL` 을 사용하고, 없으면 `/bin/sh` 로 fallback 합니다.
|
|
86
87
|
- [git](https://git-scm.com/downloads) — branch/status segment.
|
|
87
88
|
- `stty` — POSIX 터미널 제어, `projmux setup` 에서 사용. macOS/Linux 기본 시스템에 이미 포함, Windows 호스트에선 해당 없음.
|
|
88
89
|
- [kubectl](https://kubernetes.io/docs/tasks/tools/) — 선택, Kubernetes status segment 사용 시에만.
|
|
@@ -114,16 +115,17 @@ projmux version
|
|
|
114
115
|
|
|
115
116
|
### 선택: `PROJMUX_PROJDIR`
|
|
116
117
|
|
|
117
|
-
`PROJMUX_PROJDIR` 은 projmux 가 picker/탐색에서
|
|
118
|
-
루트입니다. 설정하지 않으면 projmux
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
`PROJMUX_PROJDIR` 은 명시적으로 설정했을 때 projmux 가 picker/탐색에서 사용할
|
|
119
|
+
primary 프로젝트 루트입니다. 설정하지 않으면 projmux 는 canonical repo root 를
|
|
120
|
+
가정하지 않습니다. 탐색은 pin, 살아 있는 session, saved workdirs, 그리고 존재할
|
|
121
|
+
때만 참고하는 약한 common-folder probe(`~/source`, `~/work`, `~/projects`,
|
|
122
|
+
`~/src`, `~/code`) 를 사용합니다.
|
|
121
123
|
|
|
122
124
|
```sh
|
|
123
|
-
export PROJMUX_PROJDIR="
|
|
125
|
+
export PROJMUX_PROJDIR="/your/path"
|
|
124
126
|
```
|
|
125
127
|
|
|
126
|
-
`~/.zshrc`
|
|
128
|
+
`~/.bashrc`, `~/.zshrc` 또는 사용 중인 shell rc 파일에 한 줄 추가하면 됩니다. 첫 실행
|
|
127
129
|
이후에는 `~/.config/projmux/projdir` 에 memoize 되므로, 이후 env 가 없어도 같은
|
|
128
130
|
루트가 유지됩니다.
|
|
129
131
|
|
|
@@ -134,7 +136,7 @@ prepend 됩니다. saved 파일에는 primary 만 memoize 됩니다.
|
|
|
134
136
|
|
|
135
137
|
```sh
|
|
136
138
|
# Linux/macOS — primary repo + 보조 검색 root
|
|
137
|
-
export PROJMUX_PROJDIR="
|
|
139
|
+
export PROJMUX_PROJDIR="/main/repos:/srv/work/repos"
|
|
138
140
|
```
|
|
139
141
|
|
|
140
142
|
#### 최초 설치 시 projdir 지정
|
|
@@ -217,12 +219,13 @@ PROJMUX_PROJDIR="/main/repos:/secondary/repos" projmux upgrade # Linux/macOS
|
|
|
217
219
|
## 프로젝트 탐색 방식
|
|
218
220
|
|
|
219
221
|
`projmux switch`는 pinned directory, 현재 살아 있는 tmux session, 발견된
|
|
220
|
-
project root를 합쳐 후보를 만듭니다.
|
|
221
|
-
`~/work`, `~/projects`, `~/src`, `~/code
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
222
|
+
project root를 합쳐 후보를 만듭니다. 명시적인 검색 root 가 없으면 기본 탐색은
|
|
223
|
+
존재하는 경우 `~/source`, `~/work`, `~/projects`, `~/src`, `~/code` 같은 약한
|
|
224
|
+
common-folder probe 를 참고합니다. canonical `~/source/repos` root 는 가정하지
|
|
225
|
+
않습니다. `projmux settings`의 `Project Picker > Add Project...`는 filesystem
|
|
226
|
+
root를 depth 3까지 스캔하므로 약한 probe 밖의 프로젝트도 picker 후보로 추가할
|
|
227
|
+
수 있습니다. 세션 이름은 정규화된 디렉터리 경로에서 만들어지므로 같은 프로젝트는
|
|
228
|
+
다시 실행해도 같은 tmux 세션으로 연결됩니다.
|
|
226
229
|
|
|
227
230
|
탐색 root를 영구적으로 커스터마이즈하려면 Project Picker 섹션의 다음 항목을
|
|
228
231
|
사용하세요:
|
|
@@ -253,8 +256,8 @@ projmux는 새 tmux 세션을 만들 때마다 선택적 사용자 스크립트
|
|
|
253
256
|
|
|
254
257
|
| 변수 | 용도 |
|
|
255
258
|
| --- | --- |
|
|
256
|
-
| `PROJMUX_PROJDIR` | 현재 shell 의
|
|
257
|
-
| `PROJMUX_MANAGED_ROOTS` | 콜론 구분 검색 root 목록. saved/
|
|
259
|
+
| `PROJMUX_PROJDIR` | 현재 shell 의 명시적 primary 프로젝트 루트. OS-native PATH 형식 multi-value 지원: 첫 항목이 primary repo root (saved 파일에 memoize), 이후 항목은 managed-roots 검색 목록 앞에 prepend. |
|
|
260
|
+
| `PROJMUX_MANAGED_ROOTS` | 콜론 구분 검색 root 목록. saved/heuristic 목록보다 우선. |
|
|
258
261
|
| `PROJMUX_NOTIFY_HOOK` | AI desktop notification 을 내장 sender 대신 받는 외부 실행 파일. |
|
|
259
262
|
| `PROJMUX_USAGE_STATE_DIR` | AI 사용량 snapshot 캐시 디렉터리. 기본값은 `<state>/projmux/usage`. Dropbox/iCloud 같은 동기화 위치를 가리키게 하면 여러 머신 사이에서 authoritative 사용량을 공유할 수 있다. |
|
|
260
263
|
| `PROJMUX_USAGE_DEBUG` | 비어 있지 않으면 `projmux status usage` 의 adapter 오류를 swallow 하지 않고 stderr 로 surface 한다. |
|
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,14 +134,13 @@ 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
|
|
@@ -173,13 +168,15 @@ projmux shell
|
|
|
173
168
|
```
|
|
174
169
|
|
|
175
170
|
projmux owns this tmux server, its generated config, status bar, and popup
|
|
176
|
-
bindings.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
171
|
+
bindings. Cooperative terminals get `Alt-1`..`Alt-5` immediately, with no
|
|
172
|
+
terminal config. The left status badge shows the current project name; the
|
|
173
|
+
right side shows path, kube segment, git segment, and clock.
|
|
174
|
+
|
|
175
|
+
If a key does not fire, run `projmux setup` outside tmux to see which
|
|
176
|
+
sequences your terminal swallows. For supported terminals, preview the
|
|
177
|
+
fallback with `projmux init [terminal]`, then apply it with
|
|
178
|
+
`projmux init [terminal] --apply` (auto-detects when no terminal is given).
|
|
179
|
+
Dotfiles users on multi-machine setups should pass
|
|
183
180
|
`--allow-symlink` or `--config <path>` to make their intent explicit. Full
|
|
184
181
|
flow and the manual CSI-u fallback are in
|
|
185
182
|
[Terminal Keybindings](docs/keybindings.md).
|
|
@@ -190,50 +187,37 @@ for the supported versions.
|
|
|
190
187
|
|
|
191
188
|
## Upgrading
|
|
192
189
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
190
|
+
The Settings About screen is the normal interactive update surface: it shows
|
|
191
|
+
cached release status, installer source, Check Updates, Update Now, and
|
|
192
|
+
release notes. The startup update prompt uses the same cache and never reaches
|
|
193
|
+
the network.
|
|
194
|
+
To refresh the cached release status manually, run:
|
|
196
195
|
|
|
197
196
|
```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
|
|
197
|
+
projmux update check
|
|
204
198
|
```
|
|
205
199
|
|
|
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
|
-
```
|
|
200
|
+
Use Settings > About > Update or `projmux update apply` to update through the
|
|
201
|
+
detected installer. See [Upgrading](docs/upgrading.md) for npm, Go, GitHub
|
|
202
|
+
Release, and source-checkout details.
|
|
220
203
|
|
|
221
204
|
## Usage
|
|
222
205
|
|
|
223
206
|
Day-to-day, projmux is driven by tmux keybindings inside `projmux shell` — see
|
|
224
207
|
[Terminal Keybindings](docs/keybindings.md). For the full CLI surface (pins,
|
|
225
|
-
preview state, status helpers,
|
|
208
|
+
preview state, status helpers, updates, etc.), run `projmux help` or
|
|
226
209
|
`<command> --help`.
|
|
227
210
|
|
|
228
211
|
## How It Finds Projects
|
|
229
212
|
|
|
230
213
|
`projmux switch` combines pinned directories, live tmux sessions, and discovered
|
|
231
|
-
project roots.
|
|
232
|
-
as `~/source`, `~/work`, `~/projects`, `~/src`,
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
214
|
+
project roots. When no explicit search roots are configured, discovery uses
|
|
215
|
+
weak common-folder probes such as `~/source`, `~/work`, `~/projects`, `~/src`,
|
|
216
|
+
and `~/code` if they exist; it does not assume a canonical `~/source/repos`
|
|
217
|
+
root. `projmux settings` also has `Project Picker > Add Project...`, which
|
|
218
|
+
scans filesystem roots up to depth 3 so projects outside the weak probes can be
|
|
219
|
+
added to the picker. Session names are derived from normalized directory paths,
|
|
220
|
+
so a project keeps the same tmux session name across launches.
|
|
237
221
|
|
|
238
222
|
For permanent search-root customization, the Project Picker section also
|
|
239
223
|
includes:
|
|
@@ -264,8 +248,8 @@ and troubleshooting.
|
|
|
264
248
|
|
|
265
249
|
| Variable | Purpose |
|
|
266
250
|
| --- | --- |
|
|
267
|
-
| `PROJMUX_PROJDIR` |
|
|
268
|
-
| `PROJMUX_MANAGED_ROOTS` | Colon-separated list of search roots. Overrides the saved/
|
|
251
|
+
| `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. |
|
|
252
|
+
| `PROJMUX_MANAGED_ROOTS` | Colon-separated list of search roots. Overrides the saved/heuristic list. |
|
|
269
253
|
| `PROJMUX_NOTIFY_HOOK` | External executable that receives AI desktop notifications instead of the built-in sender. |
|
|
270
254
|
| `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
255
|
| `PROJMUX_USAGE_DEBUG` | When non-empty, surfaces adapter errors from `projmux status usage` to stderr instead of swallowing them. |
|
|
@@ -316,6 +300,7 @@ More documentation:
|
|
|
316
300
|
- [Statusbar](docs/statusbar.md)
|
|
317
301
|
- [Notify queue](docs/notify-queue.md)
|
|
318
302
|
- [Usage tracking](docs/usage-tracking.md)
|
|
303
|
+
- [Upgrading](docs/upgrading.md)
|
|
319
304
|
- [Hooks](docs/hooks.md)
|
|
320
305
|
- [Migration Plan](docs/migration-plan.md)
|
|
321
306
|
- [Repo Layout](docs/repo-layout.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projmux",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "tmux project session manager",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/crevissepartners/projmux#readme",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"LICENSE"
|
|
23
23
|
],
|
|
24
24
|
"optionalDependencies": {
|
|
25
|
-
"@projmux/darwin-arm64": "0.4.
|
|
26
|
-
"@projmux/darwin-x64": "0.4.
|
|
27
|
-
"@projmux/linux-arm64": "0.4.
|
|
28
|
-
"@projmux/linux-x64": "0.4.
|
|
25
|
+
"@projmux/darwin-arm64": "0.4.4",
|
|
26
|
+
"@projmux/darwin-x64": "0.4.4",
|
|
27
|
+
"@projmux/linux-arm64": "0.4.4",
|
|
28
|
+
"@projmux/linux-x64": "0.4.4"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
31
|
"package:npm": "scripts/package-npm.sh",
|