@mmmbuto/nexuscrew 0.9.1 → 0.9.2

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,37 @@
2
2
 
3
3
  All notable changes to NexusCrew are tracked here.
4
4
 
5
+ ## 0.9.2 — 2026-08-16 — "Offered and Then Refused"
6
+
7
+ Both defects in this release were found by using the product, not by a test —
8
+ and both were invisible to the suite for the same reason: each test exercised
9
+ one piece in isolation, and neither defect exists in isolation.
10
+
11
+ - **The Desktop engine could be selected but never saved.** It declared
12
+ `command: 'docker'` — a bare name — while engine validation requires an
13
+ absolute path, so it appeared in the list and was rejected on save with
14
+ *"command must be an absolute path"*: a message describing the shape of the
15
+ value instead of saying the command had not been resolved. The path is now
16
+ resolved from `PATH` through `realpath`, which matters because validation
17
+ uses `lstat` and rejects symlinks — and in many installs the first hit on
18
+ `PATH` is exactly that. Where Docker is absent the fallback makes the
19
+ refusal say *"not accessible (ENOENT)"*, naming the real cause.
20
+
21
+ Installations that already had the engine are **repaired**: the backfill
22
+ skips what already exists, so fixing the default alone would have changed
23
+ nothing precisely where the defect was seen. The repair only touches a
24
+ command that is both non-absolute and still named `docker` — an absolute
25
+ path, or a command you changed yourself, is left alone.
26
+
27
+ - **The panel reloaded without pause, leaving no time to interact with it.**
28
+ A panel behind a login was unusable: the sign-in prompt appeared and the
29
+ frame remounted before it could be completed. `route` is an array, so it was
30
+ a new prop on every parent render — and the parent re-renders continuously
31
+ to poll the fleet. With the array among the effect's dependencies, every
32
+ render requested a fresh ticket and remounted the iframe. The dependency is
33
+ now keyed on content, so the panel reopens when the route actually changes
34
+ and not otherwise.
35
+
5
36
  ## 0.9.1 — 2026-08-16 — "What the Guard Was Not Guarding"
6
37
 
7
38
  - **The panel now lives on its own origin, so its JavaScript can no longer