@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.7...HEAD
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 v5 is ESM-only with top-level await.
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.7",
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": "^5.0.0",
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": "^18.3.1",
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": "^18.3.31",
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 v5 is ESM-only; the project uses CJS).
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 v5 is ESM-only with top-level await.
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Type declarations for ink v5 (ESM package used via dynamic import).
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".