@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 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.13 "Fleet Network")
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, or
29
- off. Route-qualified pins keep priority, while cells can be reordered directly with a mouse,
30
- a dedicated touch handle, or keyboard move controls; the owner-qualified order survives
31
- reloads and is shared by the compact and expanded views. Search covers every visible node
32
- once the combined roster grows beyond eight entries. Desktop chrome and the mobile header
33
- stay fixed while their lists scroll, and the compact version/endpoint/language footer remains
34
- readable on narrow screens.
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; NexusCrew never stores a new secret value. A named variable is read
124
- first from the service environment, then—when present—from the user-owned
125
- `~/.config/ai-shell/providers.zsh`, parsed strictly as assignment data and never sourced or
126
- executed. Only requested names are resolved, and values are never copied into NexusCrew config,
127
- service files or backups. Legacy Z.AI A/P engines remain launch-compatible for existing fleets
128
- but are not provider choices for new engines. Model discovery is used where the CLI/provider
129
- documents it, with a manual model field as the portable fallback.
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.13**. npm **`latest`**, the GitHub tag and the release
448
- assets are promoted from the same verified artifact.
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