@mmmbuto/nexuscrew 0.8.13 → 0.8.15
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 +37 -18
- package/frontend/dist/assets/index-BD-7qEsn.js +91 -0
- package/frontend/dist/assets/index-C-JOkuIc.css +32 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/version.json +1 -1
- package/lib/config.js +10 -0
- package/lib/fleet/builtin.js +97 -16
- package/lib/fleet/cell-exec.js +81 -0
- package/lib/fleet/credentials.js +135 -0
- package/lib/fleet/env-key.js +12 -0
- package/lib/fleet/launch-broker.js +136 -0
- package/lib/fleet/managed.js +74 -11
- package/lib/fleet/routes.js +10 -0
- package/lib/nodes/peering.js +24 -7
- package/lib/nodes/tunnel-supervisor.js +10 -0
- package/lib/nodes/tunnel.js +9 -0
- package/lib/proxy/federation.js +5 -4
- package/lib/server.js +16 -1
- package/lib/tmux/list.js +21 -3
- package/package.json +1 -1
- package/frontend/dist/assets/index-4rNd0SwZ.css +0 -32
- package/frontend/dist/assets/index-DuIR61l-.js +0 -91
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ panes, windows. tmux does the work; the browser is just a faithful client.
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## What it is (v0.8.
|
|
19
|
+
## What it is (v0.8.15 "Steady Link")
|
|
20
20
|
|
|
21
21
|
- Runs a small server on the host where your tmux sessions live.
|
|
22
22
|
- Each attach spawns a real PTY running `tmux attach` and bridges its bytes over a WebSocket
|
|
@@ -25,17 +25,21 @@ panes, windows. tmux does the work; the browser is just a faithful client.
|
|
|
25
25
|
live terminals side by side, draggable dividers, per-tile composer, layout remembered.
|
|
26
26
|
Tiles attach with `ignore-size` so they never resize your real terminals.
|
|
27
27
|
- **Ordered Fleet roster**: desktop and mobile share the same per-location model. Local and
|
|
28
|
-
every Hydra route are independently collapsible and filterable by all, pinned, active,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
every Hydra route are independently collapsible and filterable by all, pinned, active, off,
|
|
29
|
+
or technical. Technical tmux sessions stay out of the normal roster until explicitly shown,
|
|
30
|
+
and every location count reflects the rows actually displayed. Route-qualified pins keep
|
|
31
|
+
priority, while cells can be reordered from the dedicated handle with Pointer Events on
|
|
32
|
+
mouse, touch, or pen, or with keyboard move controls. Reorder highlights the destination,
|
|
33
|
+
scrolls at list edges, commits only on release and can be cancelled without changing the
|
|
34
|
+
saved order. The owner-qualified order survives reloads and is shared by compact and expanded
|
|
35
|
+
views. Desktop chrome and the mobile header stay fixed while their lists scroll, and the
|
|
36
|
+
compact version/endpoint/language footer remains readable on narrow screens.
|
|
35
37
|
- **Attached decks by default**: named workspaces switch as tabs inside the same PWA without
|
|
36
38
|
reloading terminals or losing a pending layout save. Use `↗` only when you want to detach a
|
|
37
39
|
deck into another browser window or monitor. Every Local or remote owner group ends with its
|
|
38
40
|
own compact `+ new`, so the creation destination is explicit and never falls back elsewhere.
|
|
41
|
+
A dedicated handle reorders owner-qualified deck tabs with mouse, touch, pen, or keyboard;
|
|
42
|
+
the order autosaves locally and survives polling, reloads, rename, and deletion.
|
|
39
43
|
- **Federated Hydra inventory**: connect existing NexusCrew installations through the SSH
|
|
40
44
|
configuration you already control and see local, direct, and relayed tmux fleets in one UI.
|
|
41
45
|
Route labels show where every session lives; creation, attach, files, lifecycle and Fleet
|
|
@@ -44,7 +48,10 @@ panes, windows. tmux does the work; the browser is just a faithful client.
|
|
|
44
48
|
link tests SSH, exchanges the one-time invitation, confirms both directions and verifies
|
|
45
49
|
the peer automatically; failures identify the exact connection stage. A device already
|
|
46
50
|
connected to a hub creates invitations through that hub; a standalone hub asks only for
|
|
47
|
-
the SSH address by which the receiving device can reach it.
|
|
51
|
+
the SSH address by which the receiving device can reach it. Readiness uses a real bounded
|
|
52
|
+
deadline instead of exhausting rapid loopback refusals before a slower mobile SSH handshake
|
|
53
|
+
completes. Per-tunnel logs contain safe supervisor lifecycle markers and actionable SSH
|
|
54
|
+
errors, never argv, host aliases, key paths, tokens, or credentials.
|
|
48
55
|
- **Settings and wizard**: manage roles, nodes, token rotation, and service regeneration
|
|
49
56
|
from the UI; the first-run wizard uses the same pairing flow as Settings.
|
|
50
57
|
- **Cell lifecycle from the UI**: the primary `+` creates a managed Fleet cell at Local or
|
|
@@ -59,6 +66,11 @@ panes, windows. tmux does the work; the browser is just a faithful client.
|
|
|
59
66
|
engine mapping and system prompts, then select exactly what to restore. Archives contain
|
|
60
67
|
credential-variable names but never their values, provider keys or runtime session state;
|
|
61
68
|
conflicts and active cells that need a restart are reported explicitly.
|
|
69
|
+
- **Private provider credentials**: each node resolves a required key from its runtime
|
|
70
|
+
environment, compatible user-owned provider files, or an optional local write-only store.
|
|
71
|
+
The PWA can set, replace, or forget a missing key on that exact node without displaying it.
|
|
72
|
+
Values never enter Fleet definitions, backups, API responses, tmux state, process arguments,
|
|
73
|
+
temporary files, or logs.
|
|
62
74
|
- **Rich cards**: last activity, current command, a sanitized one-line preview per session.
|
|
63
75
|
- **Fleet control**: a built-in schema-driven fleet manager handles cells, engines, model
|
|
64
76
|
selection, and boot persistence; an existing external `fleet` CLI can take ownership through
|
|
@@ -120,13 +132,19 @@ The concise provider catalog is scoped per CLI:
|
|
|
120
132
|
GitHub Copilot, OpenRouter, local Ollama, DeepSeek, Z.AI, and a custom provider.
|
|
121
133
|
|
|
122
134
|
Provider credentials are resolved from the selected CLI's native login or from an environment
|
|
123
|
-
variable named in the PWA
|
|
124
|
-
|
|
125
|
-
`~/.config/ai-shell/providers.zsh`,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
variable named in the PWA. A named variable is read first from the service environment, then
|
|
136
|
+
from the optional node-local NexusCrew store, then—when present—from the user-owned
|
|
137
|
+
`~/.config/ai-shell/providers.zsh`, `~/.config/keys/ai.env`, or
|
|
138
|
+
`~/.config/secure/.env`, parsed strictly as assignment data and never sourced or executed.
|
|
139
|
+
The PWA shows only whether the requested name is configured and its source category; a missing
|
|
140
|
+
value can be saved locally in `~/.nexuscrew/credentials.json` under a user-owned `0700`
|
|
141
|
+
directory and `0600` file, or removed again. The store is write-only through the API and is
|
|
142
|
+
never included in config, services, Fleet backups, federation payloads, logs, or responses.
|
|
143
|
+
At launch, secret-bearing environment data crosses a private one-shot Unix socket and reaches
|
|
144
|
+
the CLI by direct process spawn; it never enters tmux environment state, argv, or a temporary
|
|
145
|
+
file. Legacy Z.AI A/P engines remain launch-compatible for existing fleets but are not provider
|
|
146
|
+
choices for new engines. Model discovery is used where the CLI/provider documents it, with a
|
|
147
|
+
manual model field as the portable fallback.
|
|
130
148
|
|
|
131
149
|
Managed engines expose a permission selector both in their definition and in the cell launch
|
|
132
150
|
sheet. New Claude engines (native, Z.AI, Ollama, or custom) default to **Bypass permissions**
|
|
@@ -444,8 +462,9 @@ node bin/nexuscrew.js serve
|
|
|
444
462
|
|
|
445
463
|
## Status
|
|
446
464
|
|
|
447
|
-
The current release candidate is **v0.8.
|
|
448
|
-
|
|
465
|
+
The current release candidate is **v0.8.15**. npm **`latest`** is promoted from the verified
|
|
466
|
+
artifact first; the GitHub tag and release follow the operator field test from the same source
|
|
467
|
+
candidate.
|
|
449
468
|
|
|
450
469
|
## License
|
|
451
470
|
|