@mmmbuto/nexuscrew 0.9.25 → 0.9.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 +16 -5
- package/bin/nexuscrew.js +20 -1
- package/frontend/dist/assets/index-KTiUwAV1.js +167 -0
- package/frontend/dist/assets/{index-CprIQlC5.css → index-ir61K1bH.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/version.json +1 -1
- package/package.json +2 -2
- package/frontend/dist/assets/index-DzCo6cJc.js +0 -93
package/CHANGELOG.md
CHANGED
|
@@ -2,12 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NexusCrew are tracked here.
|
|
4
4
|
|
|
5
|
-
## 0.9.
|
|
5
|
+
## 0.9.27 — 2026-09-14
|
|
6
6
|
|
|
7
|
-
- **
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
- **The terminal counts columns the way tmux and glibc do.** Emoji and East Asian wide characters take two cells, so the glyphs after a wide character are no longer stale on phones; the terminal can also paint through a GPU (WebGL) renderer, with the DOM renderer as the floor and a GPU/DOM switch in the terminal bar to compare the two.
|
|
8
|
+
- **The update banner never announces the version that is already running.** A served interface newer than the loaded bundle gets one silent, cache-bypassing reload and then a diagnostic banner (interface loaded vs interface served); a newer package on disk asks for a node restart instead of offering a reload that cannot help; a banner the user closes stays closed for the same versions; a second reload guard lives in the URL, so a storage that accepts a write and loses it at the next load cannot loop.
|
|
9
|
+
- **The star (pin, then live designation) is in the compact cell selector too.** One implementation now serves the home, the desktop sidebar and the selector, with the same cycle, labels and tap target.
|
|
10
|
+
- **The published entrypoint starts on Android/Termux, where `/usr/bin/env` does not exist.** `bin/nexuscrew.js` is a shell/JavaScript polyglot: it finds node next to the launcher first, then in `PATH`, and fails with a clear message and exit 127 when neither exists.
|
|
11
|
+
- **A deck of this node opens by its owner-qualified URL too.** A new tab on `/deck/<node>/<name>` used to show an empty grid, and the tab could not save: the two ids of the same local deck (the local one and the owner-qualified one) are now resolved in one place by every lookup.
|
|
12
|
+
- **The bundle version gate is line-agnostic and provable.** It works for 0.10 and beyond instead of being tied to the current release line, and it has cases that show a stale bundle failing.
|
|
13
|
+
|
|
14
|
+
## 0.9.26 — 2026-09-13
|
|
15
|
+
|
|
16
|
+
- rebuilt the frontend bundle for the shipped version (the 0.9.25 package carried a 0.9.24 bundle, so the UI kept showing the update banner); the publish gate now fails when the bundle version differs from the package version.
|
|
17
|
+
|
|
18
|
+
## 0.9.25 — 2026-09-13
|
|
19
|
+
|
|
20
|
+
- **Deprecated on npm**: the published package shipped a 0.9.24 bundle, so the
|
|
21
|
+
UI kept announcing an update that was already running; superseded by 0.9.26.
|
|
11
22
|
|
|
12
23
|
- **MCP identity reads the verified binding metadata first (fail-closed).**
|
|
13
24
|
`nexuscrew mcp` now evaluates the `NEXUSCREW_VERIFIED_*` metadata delivered
|
package/bin/nexuscrew.js
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
|
-
#!/
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
':' //; d=$(dirname "$0"); if [ -x "$d/node" ]; then exec "$d/node" "$0" "$@"; fi; n=$(command -v node) || { echo "nexuscrew: node not found next to the launcher or in PATH" >&2; exit 127; }; exec "$n" "$0" "$@"
|
|
3
|
+
//: <<'0;'
|
|
2
4
|
'use strict';
|
|
5
|
+
// This file is TWO languages at once, and it has to be: the shebang `#!/bin/sh`
|
|
6
|
+
// exists on Android as well, while `#!/usr/bin/env node` only resolves when the
|
|
7
|
+
// Termux extension that rewrites /usr/bin/env happens to be loaded (a boot
|
|
8
|
+
// script or a tmux session started elsewhere does not load it — measured:
|
|
9
|
+
// "/bin/sh: .../usr/bin/nexuscrew: No such file or directory").
|
|
10
|
+
//
|
|
11
|
+
// Line 2 is the trick: `':'` is the sh no-op and a JavaScript string, and the
|
|
12
|
+
// rest of the line is a sh statement inside a JavaScript comment. It execs the
|
|
13
|
+
// same file with node, so the rest of this file is ordinary JavaScript and
|
|
14
|
+
// `bin/nexuscrew.js` stays the single entrypoint npm links and Windows shims.
|
|
15
|
+
//
|
|
16
|
+
// node is resolved where it actually lives next to a launcher: `$PREFIX/bin`
|
|
17
|
+
// on Termux and `.../bin` under nvm both keep `node` and `nexuscrew` in the
|
|
18
|
+
// same directory, which is the node the launcher was installed with. PATH is
|
|
19
|
+
// the fallback, and `$0` is used as given — `dirname` of a symlink is already
|
|
20
|
+
// the right directory, and `readlink -f` is not portable.
|
|
3
21
|
// The normal product surface is the PWA. `nexuscrew` starts it in background;
|
|
4
22
|
// `nexuscrew show` starts it when needed and opens it.
|
|
5
23
|
const { dispatch } = require('../lib/cli/commands.js');
|
|
@@ -11,3 +29,4 @@ Promise.resolve(dispatch(process.argv.slice(2)))
|
|
|
11
29
|
process.stderr.write(`nexuscrew: ${String((e && e.message) || e)}\n`);
|
|
12
30
|
process.exitCode = 1;
|
|
13
31
|
});
|
|
32
|
+
0;
|