@mmmbuto/nexuscrew 0.8.30 → 0.8.31

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 CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  All notable changes to NexusCrew are tracked here.
4
4
 
5
+ ## 0.8.31 — 2026-07-22 — "Safe Identity"
6
+
7
+ - **tmux session naming for dotted cell ids.** tmux silently normalizes `.` to `_`
8
+ in session names, so a cell whose id contains a dot (e.g. `agy.native`) could no
9
+ longer be targeted by its nominal `cloud-<id>` name. Dotted ids now map
10
+ deterministically to a dot-free, collision-free session name (`cloud-v2-…`, 55
11
+ chars); ids without a dot keep the historical `cloud-<id>` name, so the existing
12
+ sessions are never renamed. The real `tmuxSession` for any cell is always
13
+ available from `nc_cells` and the Fleet UI — use that rather than guessing
14
+ `cloud-<Cell>` for dotted ids. Cell launches are now staged (inert placeholder →
15
+ window-local `remain-on-exit` on `@N` → `respawn-pane` on `%N`) so setup and
16
+ early-exit diagnostics use stable tmux object IDs. Any pre-existing legacy
17
+ session is migrated in place via `rename-session -t $N`
18
+ (preserving the session id and the operator's attach).
19
+ - **Agy as a managed primary client** on Linux and macOS (non-Termux), with auth
20
+ delegated to Agy's own local login (no credential store read or copied),
21
+ `standard`/`unsafe` permission policies (`unsafe` adds
22
+ `--dangerously-skip-permissions`, consistent with the other clients),
23
+ free-text model selection, and an optional `--prompt-interactive` prompt passed
24
+ as the last argument. Termux and Windows keep using Agy through `shell.local`
25
+ with a per-cell `agy` command. Added to existing installs by an idempotent,
26
+ non-destructive, platform-aware backfill.
27
+ - **Share revocation now converges as authorization, not availability.** Turning
28
+ Share off persists private intent, withdraws the node from its hub over the
29
+ still-live private forward, and only then replaces the local tunnel without
30
+ its reverse channel. Authorized operational discovery (topology, decks and
31
+ MCP cell directories) removes the owner after the hub acknowledgement, while
32
+ a merely unreachable node remains visible as stale/offline. Partial failures
33
+ remain explicit and are retried with bounded, structured boot diagnostics.
34
+
35
+ - **Selective mobile-UX PR #1 (UI only).** Three client-only behaviours ported
36
+ onto the 0.8.31 candidate, no merge of PR #1:
37
+ - **Optional compact KeyBar.** A new `keybarLayout: "full" | "compact"`
38
+ preference (default `full`) renders a one-row compact bar with an expand
39
+ toggle that temporarily reveals the exact full key set without rewriting
40
+ the stored preference; the tall Enter and `showKeybarEnter=false` (no gap)
41
+ apply to both layouts. Editable in Settings → Input (IT/EN/ES), reset-safe
42
+ and synced across windows; a layout change never remounts xterm or
43
+ reconnects its WebSocket.
44
+ - **Live-DOM composer submit during IME.** Explicit submit reads
45
+ `textareaRef.current.value`, syncs the React draft and sends the visible
46
+ text after newline normalization — preserving the empty no-op, the
47
+ failed-send draft, history, STT and the focus policy.
48
+ - **Alternate-screen scroll as PageUp/PageDown.** A pure bounded plan routes
49
+ writable alternate-screen (vim/less/htop) vertical gestures to raw
50
+ `ESC[5~`/`ESC[6~` PTY input with a page-sized threshold; normal-screen and
51
+ any readonly terminal keep the server-side `scroll-up`/`scroll-down`
52
+ actions. Integrated into both wheel and touch paths without weakening
53
+ double-tap unlock, long-press selection, multi-touch or VirtualKeyboard.
54
+
5
55
  ## 0.8.30 — 2026-07-22 — "Focused Control"
6
56
 
7
57
  - Makes every owner/node name in the top deck bar an explicit expand/collapse control. Newly seen
package/README.md CHANGED
@@ -133,12 +133,13 @@ model, permission policy, optional system prompt, optional Shell command and boo
133
133
  a stopped cell opens the same launch sheet on desktop and mobile, so the effective settings can
134
134
  be reviewed before the process starts.
135
135
 
136
- An **engine** describes how a CLI is launched. Clean installations include five base adapters:
136
+ An **engine** describes how a CLI is launched. Clean installations include these base adapters:
137
137
 
138
138
  - Claude Code
139
139
  - Codex
140
140
  - Codex-VL
141
141
  - Pi
142
+ - Agy — Linux and macOS only (auth delegated to Agy's local login; `standard`/`unsafe` permission policies). On Android/Termux use the Shell adapter with a per-cell `agy` command.
142
143
  - Shell
143
144
 
144
145
  The provider catalog is scoped to the selected CLI rather than to a machine-specific setup:
@@ -240,8 +241,12 @@ The two-row mobile key bar can also show a full-height Enter key beside Page Up/
240
241
  interactive terminal choices can be confirmed without opening the software keyboard. By default,
241
242
  key-bar and speech-to-text actions keep that keyboard closed, while a nearby double tap inside the
242
243
  terminal explicitly opens it. **Settings → Input** can change the terminal gesture, hide the Enter
243
- key, or allow key-bar and voice actions to retain the keyboard. These preferences are browser-local
244
- and are synchronized between open NexusCrew windows for the same origin.
244
+ key, or allow key-bar and voice actions to retain the keyboard. The key bar also has a
245
+ **compact** layout (one row with an expand toggle that temporarily reveals the full key set
246
+ without changing the preference), and alternate-screen TUIs (vim/less/htop) receive vertical
247
+ gestures as raw Page Up/Page Down while normal and readonly terminals keep server-side scroll.
248
+ These preferences are browser-local and are synchronized between open NexusCrew windows for
249
+ the same origin.
245
250
 
246
251
  The input composer can expand for longer prompts. Each owner-qualified tmux cell keeps its own
247
252
  draft, size preference and bounded prompt history in the current browser, including safe
@@ -278,9 +283,19 @@ need direct SSH reachability to one another.
278
283
 
279
284
  Reverse ports are reserved across active and pending pairings, probed before use and protected
280
285
  by a persistent uniqueness check. Share is stored as desired state: failed activation rolls back
281
- to private, while a failed deactivation remains private and is reconciled after restart. A stale
282
- same-name peer or a late allocation collision returns an actionable conflict instead of silently
283
- creating a duplicate record or consuming the invitation.
286
+ to private. Deactivation first saves private intent, then asks the hub to withdraw the node over
287
+ the still-live private forward, and only after that acknowledgement removes the reverse channel.
288
+ If the hub cannot acknowledge the revocation, Settings refreshes to the saved private state and
289
+ shows that hub reconciliation is still pending; bounded boot retries continue without claiming
290
+ that remote removal already completed. A stale same-name peer or a late allocation collision
291
+ returns an actionable conflict instead of silently creating a duplicate record or consuming the
292
+ invitation.
293
+
294
+ Private pairing is administrative inventory, not operational publication. A paired client can
295
+ remain listed as **private** in Settings so it can be reconnected or shared again, but it is absent
296
+ from routable topology, owner/deck bars and MCP cell/deck discovery. Temporary loss of reachability
297
+ does not revoke consent: an authorized node remains visible as stale/offline until a successful
298
+ authoritative refresh either restores it or confirms its withdrawal.
284
299
 
285
300
  The Share control reports desired publication separately from verified tunnel reachability. If a
286
301
  detached process survives an upgrade with stale `-R` arguments, **Reconnect and reconcile** applies
@@ -490,7 +505,7 @@ See [CHANGELOG.md](CHANGELOG.md) for released changes.
490
505
 
491
506
  ## Status
492
507
 
493
- The current stable release is **v0.8.30** on npm and GitHub.
508
+ The current stable release is **v0.8.31** on npm and GitHub.
494
509
 
495
510
  ## License
496
511