@nemus-cli/nemus 0.2.7 → 0.2.9
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
|
@@ -7,6 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.9] - 2026-08-26
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Synced `package-lock.json` to the current version (it had drifted to 0.2.7
|
|
15
|
+
while package.json was 0.2.8, because the ink/React upgrade regenerated the
|
|
16
|
+
lockfile before the version bump).
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- CI guard `scripts/check-lock-version.js` — fails PR CI (and the release verify
|
|
21
|
+
step) if `package-lock.json`'s `version` / `packages[""]` drift from
|
|
22
|
+
package.json, so a stale lockfile can't reach `npm ci` at release time.
|
|
23
|
+
|
|
24
|
+
## [0.2.8] - 2026-08-26
|
|
25
|
+
|
|
26
|
+
### Changed
|
|
27
|
+
|
|
28
|
+
- Upgraded **ink 5 → 7** and **React 18 → 19** (with `@types/react` 19). The
|
|
29
|
+
dashboard TUI renders through the same CJS/ESM bridge (`sidebar.js` does the
|
|
30
|
+
real `await import('ink')`; components receive `Box`/`Text`/`useInput`/`useApp`
|
|
31
|
+
as props). Verified: build, typecheck, 433 unit tests, and a live pty render of
|
|
32
|
+
the dashboard sidebar. No user-facing change.
|
|
33
|
+
|
|
10
34
|
## [0.2.7] - 2026-08-25
|
|
11
35
|
|
|
12
36
|
### Changed
|
|
@@ -171,7 +195,9 @@ Initial open-source release of **Nemus**.
|
|
|
171
195
|
- Automatic retries with backoff on flaky network operations.
|
|
172
196
|
- Optional shell integration (auto-cd on create + quick-navigate helper).
|
|
173
197
|
|
|
174
|
-
[Unreleased]: https://github.com/me-public/nemus/compare/v0.2.
|
|
198
|
+
[Unreleased]: https://github.com/me-public/nemus/compare/v0.2.9...HEAD
|
|
199
|
+
[0.2.9]: https://github.com/me-public/nemus/compare/v0.2.8...v0.2.9
|
|
200
|
+
[0.2.8]: https://github.com/me-public/nemus/compare/v0.2.7...v0.2.8
|
|
175
201
|
[0.2.7]: https://github.com/me-public/nemus/compare/v0.2.6...v0.2.7
|
|
176
202
|
[0.2.6]: https://github.com/me-public/nemus/compare/v0.2.5...v0.2.6
|
|
177
203
|
[0.2.5]: https://github.com/me-public/nemus/compare/v0.2.4...v0.2.5
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* This is a plain .js file (not .ts) to preserve the real dynamic import().
|
|
6
6
|
* TypeScript compiles `await import('ink')` into `require('ink')` in CJS mode,
|
|
7
|
-
* which fails because ink
|
|
7
|
+
* which fails because ink v7 is ESM-only with top-level await.
|
|
8
8
|
*
|
|
9
9
|
* By keeping this as .js, tsc copies it as-is to dist/ and the real
|
|
10
10
|
* import() call is preserved at runtime.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nemus-cli/nemus",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.9",
|
|
4
4
|
"description": "Nemus — a CLI for managing multi-repository workspaces. Create, sync, and operate across dozens of repos with a single command, and wire them up to your favorite coding agent.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"workspace",
|
|
@@ -68,11 +68,11 @@
|
|
|
68
68
|
"cli-progress": "^3.12.0",
|
|
69
69
|
"commander": "^15.0.0",
|
|
70
70
|
"fuzzy": "^0.1.3",
|
|
71
|
-
"ink": "^
|
|
71
|
+
"ink": "^7.1.1",
|
|
72
72
|
"inquirer": "^8.0.0",
|
|
73
73
|
"inquirer-autocomplete-prompt": "^2.0.0",
|
|
74
74
|
"markdown-table": "^3.0.3",
|
|
75
|
-
"react": "^
|
|
75
|
+
"react": "^19.2.8",
|
|
76
76
|
"zod": "^4.3.6"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"@types/inquirer": "^9.0.3",
|
|
81
81
|
"@types/inquirer-autocomplete-prompt": "^2.0.0",
|
|
82
82
|
"@types/node": "^26.3.0",
|
|
83
|
-
"@types/react": "^
|
|
83
|
+
"@types/react": "^19.2.2",
|
|
84
84
|
"ts-node": "^10.9.1",
|
|
85
85
|
"typescript": "^5.9.3",
|
|
86
86
|
"vitest": "^4.1.11"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CI guard: fail if package-lock.json's version fields drift from package.json.
|
|
4
|
+
*
|
|
5
|
+
* A stale lockfile version makes `npm ci` fail at release time (npm errors on a
|
|
6
|
+
* package.json/lock mismatch before build/publish run). This catches the drift
|
|
7
|
+
* in PR CI instead. Checks both the lockfile root `version` and the self entry
|
|
8
|
+
* at `packages[""]`.
|
|
9
|
+
*
|
|
10
|
+
* Usage: node scripts/check-lock-version.js
|
|
11
|
+
* Exit 0 when consistent, 1 (with an ::error:: annotation) otherwise.
|
|
12
|
+
*/
|
|
13
|
+
'use strict';
|
|
14
|
+
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
const path = require('path');
|
|
17
|
+
|
|
18
|
+
function read(file) {
|
|
19
|
+
return JSON.parse(fs.readFileSync(path.join(__dirname, '..', file), 'utf8'));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const pkg = read('package.json');
|
|
23
|
+
const lock = read('package-lock.json');
|
|
24
|
+
|
|
25
|
+
const pkgV = pkg.version;
|
|
26
|
+
const rootV = lock.version;
|
|
27
|
+
const selfV = lock.packages && lock.packages[''] && lock.packages[''].version;
|
|
28
|
+
|
|
29
|
+
const errs = [];
|
|
30
|
+
if (rootV !== pkgV) {
|
|
31
|
+
errs.push(`package-lock.json root version "${rootV}" != package.json "${pkgV}"`);
|
|
32
|
+
}
|
|
33
|
+
if (selfV !== pkgV) {
|
|
34
|
+
errs.push(`package-lock.json packages[""] version "${selfV}" != package.json "${pkgV}"`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (errs.length) {
|
|
38
|
+
console.error('::error::' + errs.join('; '));
|
|
39
|
+
console.error('Fix: run `npm install --package-lock-only` and commit package-lock.json.');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
console.log(`\u2713 package-lock.json version matches package.json (${pkgV})`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared types for ink dashboard components.
|
|
3
3
|
* ink components are passed as props to avoid direct ESM imports
|
|
4
|
-
* (ink
|
|
4
|
+
* (ink v7 is ESM-only; the project uses CJS).
|
|
5
5
|
*/
|
|
6
6
|
import { FC } from 'react';
|
|
7
7
|
import { BoxProps, TextProps, Key } from 'ink';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* This is a plain .js file (not .ts) to preserve the real dynamic import().
|
|
6
6
|
* TypeScript compiles `await import('ink')` into `require('ink')` in CJS mode,
|
|
7
|
-
* which fails because ink
|
|
7
|
+
* which fails because ink v7 is ESM-only with top-level await.
|
|
8
8
|
*
|
|
9
9
|
* By keeping this as .js, tsc copies it as-is to dist/ and the real
|
|
10
10
|
* import() call is preserved at runtime.
|
package/src/types/ink.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Type declarations for ink
|
|
2
|
+
* Type declarations for ink v7 (ESM package used via dynamic import).
|
|
3
3
|
* Provides basic types for the components and hooks we use.
|
|
4
4
|
* Full types live in node_modules/ink/build/index.d.ts but can't be
|
|
5
5
|
* resolved with moduleResolution: "node".
|