@mmmbuto/nexuscrew 0.8.25 → 0.8.27
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/CHANGELOG.md +43 -0
- package/README.md +48 -5
- package/frontend/dist/assets/index-CWKyv6KS.js +93 -0
- package/frontend/dist/assets/{index-DqG-mDnV.css → index-xxfypte7.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/version.json +1 -1
- package/lib/cli/doctor.js +113 -0
- package/lib/cli/service.js +3 -1
- package/lib/diagnostics/routes.js +43 -0
- package/lib/diagnostics/store.js +139 -0
- package/lib/fleet/cell-exec.js +17 -2
- package/lib/fleet/managed.js +11 -3
- package/lib/fleet/routes.js +29 -4
- package/lib/mcp/server.js +80 -19
- package/lib/mcp/tools.js +57 -8
- package/lib/nodes/aliases.js +122 -0
- package/lib/proxy/federation.js +26 -2
- package/lib/runtime/env.js +60 -1
- package/lib/server.js +28 -5
- package/lib/settings/routes.js +32 -0
- package/lib/update/manager.js +8 -0
- package/package.json +1 -1
- package/frontend/dist/assets/index-Dov6E_p3.js +0 -91
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,49 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NexusCrew are tracked here.
|
|
4
4
|
|
|
5
|
+
## 0.8.27 — 2026-07-21 — "Portable Control"
|
|
6
|
+
|
|
7
|
+
- Restores Fleet and shell launches on current Android/Termux builds by preserving only a
|
|
8
|
+
validated, owner-safe `libtermux-exec` preload under the active Termux prefix. The related
|
|
9
|
+
Node-shebang workaround now detects the Termux runtime layout even when Node reports Linux.
|
|
10
|
+
- Surfaces stable, sanitized `ENOENT`/`EACCES` client-spawn diagnostics without exposing command
|
|
11
|
+
paths, arguments, environment values or credentials, and adds an actionable `nexuscrew doctor`
|
|
12
|
+
check for the Termux execution bridge.
|
|
13
|
+
- Keeps macOS LaunchAgents rooted at the stable user home rather than the replaceable runtime
|
|
14
|
+
directory, with a blocking doctor check for stale launchd working directories.
|
|
15
|
+
- Adds viewer-local aliases for routed nodes, keyed by stable instance identity and stored in a
|
|
16
|
+
private local file. Aliases change display text only; remote labels, routes, owners and topology
|
|
17
|
+
remain untouched and the mutation is never federated.
|
|
18
|
+
- Adds **Settings → Diagnostics** with bounded, structured, source-redacted records, temporary
|
|
19
|
+
5/15/30/60-minute verbose windows, filtering, pause, export, clear and routed read access.
|
|
20
|
+
Warning and error records remain available while verbose mode is off.
|
|
21
|
+
- Uses the logical Fleet cell name as the visible cell title on mobile, desktop overlays and grid
|
|
22
|
+
tiles, while retaining technical route context only as non-primary metadata.
|
|
23
|
+
- Updates the production lock to `body-parser@1.20.6`.
|
|
24
|
+
- Gate: **931 isolated Node tests** (930 pass / 1 platform skip), **70/70 frontend component
|
|
25
|
+
tests**, production PWA build and zero production dependency vulnerabilities in both dependency
|
|
26
|
+
trees.
|
|
27
|
+
|
|
28
|
+
## 0.8.26 — 2026-07-20 — "MCP Identity"
|
|
29
|
+
|
|
30
|
+
- Makes MCP caller resolution directly diagnosable through the read-only `nc_identity` tool.
|
|
31
|
+
The diagnostic works without a token or resolved session, reports only non-sensitive source
|
|
32
|
+
and presence metadata, and returns stable missing/invalid identity codes with remediation.
|
|
33
|
+
- Keeps identity-gated tools fail-closed while improving their error contract. A missing or
|
|
34
|
+
invalid tmux identity can no longer be mistaken for a transport failure, and `nc_notify`
|
|
35
|
+
continues to degrade safely to an unknown sender.
|
|
36
|
+
- Documents the explicit `env_vars` name allowlist required by clients that clear the MCP stdio
|
|
37
|
+
environment, including the matching repeatable `codex-vl mcp add --env-var NAME` form. Values
|
|
38
|
+
remain outside command arguments and configuration files.
|
|
39
|
+
- Extends `nexuscrew doctor` with a non-failing MCP identity check: PWA-only users receive at
|
|
40
|
+
most an informational warning, while MCP users can see whether `TMUX` or
|
|
41
|
+
`NEXUSCREW_MCP_SESSION` is observable in the current process.
|
|
42
|
+
- Stabilizes the writable-provider-file security fixture across differing CI umasks without
|
|
43
|
+
weakening the production permission check.
|
|
44
|
+
- Gate: **888 isolated Node tests** (887 pass / 1 platform skip), **39/39 frontend component
|
|
45
|
+
tests**, production PWA build and zero production dependency vulnerabilities in both the root
|
|
46
|
+
and frontend dependency trees.
|
|
47
|
+
|
|
5
48
|
## 0.8.25 — 2026-07-19 — "Token Plan"
|
|
6
49
|
|
|
7
50
|
- Adds Alibaba Token Plan Personal as a first-class managed provider for Claude Code,
|
package/README.md
CHANGED
|
@@ -83,6 +83,10 @@ The first run creates the loopback-only runtime, starts it in the background, op
|
|
|
83
83
|
and presents the setup wizard. Later runs reuse the configured service, print a compact status,
|
|
84
84
|
and exit.
|
|
85
85
|
|
|
86
|
+
On Android, `nexuscrew doctor` also verifies the Termux execution bridge used by current app
|
|
87
|
+
builds. NexusCrew carries forward only a validated `libtermux-exec` preload from the active
|
|
88
|
+
Termux prefix; arbitrary loader injection remains excluded from Fleet environments.
|
|
89
|
+
|
|
86
90
|
The preferred port is `41820`. If another process owns it, NexusCrew selects the next free
|
|
87
91
|
loopback port and records the result.
|
|
88
92
|
|
|
@@ -203,7 +207,8 @@ can be changed with pointer drag-and-drop or keyboard controls and is saved auto
|
|
|
203
207
|
|
|
204
208
|
On mobile, locations are independently collapsible and filterable by all, pinned, active, off,
|
|
205
209
|
or technical sessions. The same owner-qualified ordering model is used by compact and expanded
|
|
206
|
-
desktop views.
|
|
210
|
+
desktop views. Managed terminals use the logical Fleet cell name as their visible title; tmux
|
|
211
|
+
session and route identifiers remain technical context rather than the primary heading.
|
|
207
212
|
|
|
208
213
|
<p align="center">
|
|
209
214
|
<img src="docs/img/fleet-mobile.gif" width="420" alt="NexusCrew mobile Fleet view with managed cells and session controls">
|
|
@@ -270,6 +275,10 @@ Their human-readable label has one server-backed source: rename from Settings or
|
|
|
270
275
|
same canonical label appears everywhere without changing the technical route name, node identity,
|
|
271
276
|
credentials, Share state or deck identity.
|
|
272
277
|
|
|
278
|
+
For routed nodes that the current installation does not own, Settings → Nodes offers a local
|
|
279
|
+
alias instead of a remote rename. The alias is private to the viewing installation, follows the
|
|
280
|
+
stable instance identity and never changes or federates the remote label, route or owner.
|
|
281
|
+
|
|
273
282
|
Pairing links contain a short-lived one-time invite and routing fields, but no SSH private key,
|
|
274
283
|
provider key or PWA token. Node and deck identities remain owner-qualified across the network,
|
|
275
284
|
and every routed HTTP or WebSocket request rechecks authorization, hop count and cycle rules.
|
|
@@ -316,6 +325,17 @@ state and manual controls are available in Settings → System; set
|
|
|
316
325
|
On Linux, generated user services use `KillMode=process` so restarting NexusCrew does not stop
|
|
317
326
|
the shared tmux server. Lifecycle commands fail closed when that protection cannot be verified.
|
|
318
327
|
|
|
328
|
+
## Structured diagnostics
|
|
329
|
+
|
|
330
|
+
Settings → Diagnostics shows a bounded in-memory event buffer for the local installation or an
|
|
331
|
+
authorized routed node. Verbose collection is explicit and expires after 5, 15, 30 or 60 minutes;
|
|
332
|
+
operational warnings and errors remain available when verbose mode is off. The view supports
|
|
333
|
+
level/component filtering, pause, autoscroll, copy, JSON export and explicit clear.
|
|
334
|
+
|
|
335
|
+
Records are structured and redacted before storage. Raw terminal content, prompts, command lines,
|
|
336
|
+
environment values, tokens, credentials and filesystem paths are not accepted as diagnostic
|
|
337
|
+
metadata. The buffer is not a reader for service journals or log files.
|
|
338
|
+
|
|
319
339
|
## MCP bridge
|
|
320
340
|
|
|
321
341
|
`nexuscrew mcp` exposes the local authenticated runtime as a dependency-free stdio MCP server.
|
|
@@ -331,11 +351,18 @@ It is intended for AI sessions running inside managed tmux cells.
|
|
|
331
351
|
| `nc_deck` | Discover owner-qualified decks containing the calling tmux session |
|
|
332
352
|
| `nc_cells` | List authorized active and inactive Fleet cells across visible nodes |
|
|
333
353
|
| `nc_send_cell` | Submit bounded text to one exact active cell returned by `nc_cells` |
|
|
354
|
+
| `nc_identity` | Read-only identity diagnostics; callable with no session and no token |
|
|
334
355
|
|
|
335
356
|
Cell delivery uses bracketed paste followed by a separate Enter. A `submitted` receipt confirms
|
|
336
357
|
delivery to the target TUI, not acceptance or completion by its model. There is no silent
|
|
337
358
|
offline queue.
|
|
338
359
|
|
|
360
|
+
`nc_identity` returns only non-sensitive data: the `source` the caller was resolved from
|
|
361
|
+
(`tmux`, `NEXUSCREW_MCP_SESSION`, or `missing`), boolean presence of the identity env vars,
|
|
362
|
+
a stable `code` (`OK`, `NEXUSCREW_MCP_IDENTITY_MISSING`, `NEXUSCREW_MCP_IDENTITY_INVALID`) and
|
|
363
|
+
a remediation hint. It never calls an HTTP API or reads the token, so it works even when the
|
|
364
|
+
identity is missing — use it to diagnose why the identity-gated tools fail closed.
|
|
365
|
+
|
|
339
366
|
Register the bridge in Claude Code:
|
|
340
367
|
|
|
341
368
|
```json
|
|
@@ -349,16 +376,32 @@ Register the bridge in Claude Code:
|
|
|
349
376
|
}
|
|
350
377
|
```
|
|
351
378
|
|
|
352
|
-
Or in Codex / Codex-VL
|
|
379
|
+
Or in Codex / Codex-VL (`env_vars` allowlists variable **names** only — no values are copied
|
|
380
|
+
into the CLI or config file):
|
|
353
381
|
|
|
354
382
|
```toml
|
|
355
383
|
[mcp_servers.nexuscrew]
|
|
356
384
|
command = "nexuscrew"
|
|
357
385
|
args = ["mcp"]
|
|
386
|
+
env_vars = ["NEXUSCREW_MCP_SESSION", "TMUX", "TMUX_PANE"]
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
The equivalent CLI form on a Codex-VL build that supports `--env-var` (allowlist by name, repeated):
|
|
390
|
+
|
|
391
|
+
```text
|
|
392
|
+
codex-vl mcp add nexuscrew \
|
|
393
|
+
--env-var NEXUSCREW_MCP_SESSION \
|
|
394
|
+
--env-var TMUX \
|
|
395
|
+
--env-var TMUX_PANE \
|
|
396
|
+
-- nexuscrew mcp
|
|
358
397
|
```
|
|
359
398
|
|
|
360
|
-
The caller is resolved from its tmux session
|
|
361
|
-
|
|
399
|
+
The caller is resolved, in order, from its tmux session (`tmux display-message -p '#S'`),
|
|
400
|
+
then from the `NEXUSCREW_MCP_SESSION` fallback, then not at all. Codex/Codex-VL launch MCP stdio
|
|
401
|
+
processes with a cleared environment, so those clients must explicitly allowlist the identity
|
|
402
|
+
env vars for the server to observe them; otherwise the identity-gated tools (`nc_ask`, `nc_send_file`,
|
|
403
|
+
`nc_deck`, `nc_send_cell`, `nc_inbox`) stay fail-closed with a stable
|
|
404
|
+
`NEXUSCREW_MCP_IDENTITY_*` code, while `nc_notify` degrades to an unknown sender.
|
|
362
405
|
|
|
363
406
|
## Configuration
|
|
364
407
|
|
|
@@ -411,7 +454,7 @@ See [CHANGELOG.md](CHANGELOG.md) for released changes.
|
|
|
411
454
|
|
|
412
455
|
## Status
|
|
413
456
|
|
|
414
|
-
The current stable release is **v0.8.
|
|
457
|
+
The current stable release is **v0.8.27** on npm and GitHub.
|
|
415
458
|
|
|
416
459
|
## License
|
|
417
460
|
|