novahiz 0.8.0 → 0.8.1
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 +15 -0
- package/README.md +11 -7
- package/dist/commands/upgrade.js +7 -3
- package/package.json +1 -1
- package/src/commands/upgrade.ts +7 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.8.1] - 2026-10-10
|
|
9
|
+
|
|
10
|
+
Patch: `novahiz upgrade` always reported "up to date" on the npm channel.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **`novahiz upgrade` reads the published version again**
|
|
15
|
+
(`src/commands/upgrade.ts`): the `npm view` call ran with `stdio: "ignore"`,
|
|
16
|
+
which makes `spawnSync` return `stdout: null` — `latest` was always empty,
|
|
17
|
+
`compareVersions(local, "")` always won, and the command printed
|
|
18
|
+
`up to date (npm latest: )` even when a newer release existed, so `--apply`
|
|
19
|
+
could never trigger. The call now captures stdout (`"pipe"`), with a
|
|
20
|
+
regression test spawning `npm --version` locally (no network). Inherited
|
|
21
|
+
since 0.7.1.
|
|
22
|
+
|
|
8
23
|
## [0.8.0] - 2026-10-09
|
|
9
24
|
|
|
10
25
|
Minor release: total Impeccable coverage on the design roadmap, a repair
|
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
> **Couche d'application sans dépendance pour les agents de code IA** — classe les prompts, attribue des roadmaps d'exécution, bloque les éditions non sûres tant que les bonnes skills ne sont pas chargées, et persiste les décisions d'une session à l'autre — tout cela de façon déterministe, sans appel de modèle.
|
|
4
4
|
|
|
5
|
-
17 catégories,
|
|
5
|
+
17 catégories, 94 skills, 13 gate rules, 8 MCP providers — tout déterministe, tout local, tout JSON.
|
|
6
6
|
|
|
7
|
-
> **Version 0.
|
|
7
|
+
> **Version 0.8.0** — publiée sur npm (`npm install -g --allow-scripts=novahiz novahiz` installe et configure tout : core, plugin, agent, skills packs et Playwright MCP). `CHANGELOG.md` et `scripts/` sont dans le tarball.
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
┌──────────────────────────────────────────────────────────────────────────┐
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
└─ tier, skills ──────│ └─ block : charger les skills nommées, retry une fois
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
**17 catégories**, **
|
|
38
|
+
**17 catégories**, **94 skills**, **13 gate rules**, **8 MCP providers** — tout déterministe, tout local, tout JSON.
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
@@ -66,7 +66,7 @@ npm antérieur à 11.16 exécute les scripts par défaut : `npm install -g novah
|
|
|
66
66
|
Puis vérifiez :
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
novahiz doctor # Santé :
|
|
69
|
+
novahiz doctor # Santé : 17 checks (22 avec --deep)
|
|
70
70
|
novahiz classify "fix the auth bug"
|
|
71
71
|
```
|
|
72
72
|
|
|
@@ -197,6 +197,8 @@ Huit catégories (`code`, `debug`, `browser`, `design-ui`, `database-supabase`,
|
|
|
197
197
|
|
|
198
198
|
Clarify renvoie le travail au plan quand une réponse change l'architecture ; converge le renvoie aux tâches quand il trouve un écart. `flutter` et `expo` gardent les six mêmes étapes et insèrent leurs skills qualité autour d'implement. Le **tier** du classifier filtre la suite : `trivial` n'exécute presque rien, `lite` garde implement et converge, `full` parcourt toute la roadmap. Référence complète : [docs/ROADMAPS.md](docs/ROADMAPS.md).
|
|
199
199
|
|
|
200
|
+
La roadmap `design-ui` porte en plus la couverture totale du playbook Impeccable : 23 étapes `skill` optionnelles couvrant l'intégralité des commandes officielles (`init`, `document`, `shape`, `critique`, ciblées `layout` → `generate`, `audit`, `harden`, `polish`, boucle `detect → verify`), avec les libellés des descriptions publiées sur [impeccable.style/cheatsheet](https://impeccable.style/cheatsheet). Elles forment une checklist pour l'agent ; l'application des règles design reste portée par `R14-impeccable`. `impeccable-live` est volontairement hors roadmap (session navigateur en direct, pas un chemin de code).
|
|
201
|
+
|
|
200
202
|
```mermaid
|
|
201
203
|
flowchart LR
|
|
202
204
|
subgraph "Fonctionnalité (code)"
|
|
@@ -310,7 +312,7 @@ Deux pièces complémentaires : la session consomme moins sans perdre en puissan
|
|
|
310
312
|
|
|
311
313
|
## Skills installées
|
|
312
314
|
|
|
313
|
-
Novahiz livre
|
|
315
|
+
Novahiz livre 94 skills couvrant toutes les catégories — 46 dans le cœur du dépôt, les autres dans les packs officiels installés par défaut au setup :
|
|
314
316
|
|
|
315
317
|
| Catégorie | Skills | Objectif |
|
|
316
318
|
|-----------|--------|----------|
|
|
@@ -344,7 +346,9 @@ Novahiz auto-enregistre les serveurs MCP externes selon la catégorie du prompt
|
|
|
344
346
|
| novahiz-scheduler | `mcp/clepsydre/index.mjs` (local, zéro dépendance) | Apache-2.0 | devops |
|
|
345
347
|
| dart | `dart mcp-server` (Dart SDK) | BSD-3-Clause | code, debug, design-ui, flutter |
|
|
346
348
|
|
|
347
|
-
Packs de skills (installés depuis les dépôts officiels, jamais vendorés) : `flutter/agent-plugins` (
|
|
349
|
+
Packs de skills (installés depuis les dépôts officiels, jamais vendorés, et livrés **par défaut** au setup via `providers.autoInstall`) : `flutter/agent-plugins` (10 skills), `dart-lang/skills` (15 skills), `expo/skills` (19 skills, le groupe `expo-*` seulement ; les services payants `eas-*` exclus), `pbakaus/impeccable` (1 skill, la skill design upstream `impeccable`).
|
|
350
|
+
|
|
351
|
+
**`git` est requis** par le CLI officiel des skills : sans lui, l'installation des packs échoue silencieusement et les skills manquent au premier lancement. `novahiz doctor` le nomme (ligne `git (skill packs)`), et **`/novahiz-skills-update`** — ou `novahiz deps --install` — réinstalle proprement tous les packs depuis leurs providers officiels. Voir [docs/PROVIDERS.md](docs/PROVIDERS.md).
|
|
348
352
|
|
|
349
353
|
Dépôts upstream et provenance complète des providers MCP et plugins opencode : [docs/PROVIDERS.md](docs/PROVIDERS.md), [docs/HARNESSES.md](docs/HARNESSES.md), [NOTICE.md](NOTICE.md).
|
|
350
354
|
|
|
@@ -374,7 +378,7 @@ Voir [docs/CONFIGURATION.md](docs/CONFIGURATION.md) pour toutes les options.
|
|
|
374
378
|
| Commande | Objectif |
|
|
375
379
|
|----------|----------|
|
|
376
380
|
| `novahiz init` | Installation en une passe |
|
|
377
|
-
| `novahiz doctor` | Diagnostic de santé
|
|
381
|
+
| `novahiz doctor` | Diagnostic de santé 17-check (22 avec `--deep`) |
|
|
378
382
|
| `novahiz status` | Classification + état du gate actuels |
|
|
379
383
|
| `novahiz classify <text>` | Classer un prompt |
|
|
380
384
|
| `novahiz gate` | Vérifier si une édition est autorisée |
|
package/dist/commands/upgrade.js
CHANGED
|
@@ -64,8 +64,12 @@ function readLocalVersion(root) {
|
|
|
64
64
|
return "unknown";
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
/** npm sous Windows est npm.cmd : spawnSync a besoin du shell, sinon ENOENT.
|
|
68
|
-
|
|
67
|
+
/** npm sous Windows est npm.cmd : spawnSync a besoin du shell, sinon ENOENT.
|
|
68
|
+
* `pipe` capture stdout/stderr (obligatoire pour `npm view` : `ignore`
|
|
69
|
+
* retourne stdout=null et `latest` restait toujours vide), `inherit` pour
|
|
70
|
+
* les sorties visibles de l'utilisateur (installation). Exporte pour le
|
|
71
|
+
* test de regression. */
|
|
72
|
+
export function runNpm(args, stdio) {
|
|
69
73
|
const result = spawnSync("npm", args, {
|
|
70
74
|
encoding: "utf8",
|
|
71
75
|
stdio,
|
|
@@ -79,7 +83,7 @@ function runNpm(args, stdio) {
|
|
|
79
83
|
}
|
|
80
84
|
function npmFlow(parsed, root) {
|
|
81
85
|
const local = readLocalVersion(root);
|
|
82
|
-
const view = runNpm(["view", "novahiz", "version"], "
|
|
86
|
+
const view = runNpm(["view", "novahiz", "version"], "pipe");
|
|
83
87
|
if (view.status !== 0) {
|
|
84
88
|
process.stderr.write(`novahiz upgrade: npm view failed (${view.stderr.trim() || `exit ${view.status}`}).\n`);
|
|
85
89
|
process.exitCode = 1;
|
package/package.json
CHANGED
package/src/commands/upgrade.ts
CHANGED
|
@@ -71,8 +71,12 @@ function readLocalVersion(root: string): string {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
/** npm sous Windows est npm.cmd : spawnSync a besoin du shell, sinon ENOENT.
|
|
75
|
-
|
|
74
|
+
/** npm sous Windows est npm.cmd : spawnSync a besoin du shell, sinon ENOENT.
|
|
75
|
+
* `pipe` capture stdout/stderr (obligatoire pour `npm view` : `ignore`
|
|
76
|
+
* retourne stdout=null et `latest` restait toujours vide), `inherit` pour
|
|
77
|
+
* les sorties visibles de l'utilisateur (installation). Exporte pour le
|
|
78
|
+
* test de regression. */
|
|
79
|
+
export function runNpm(args: string[], stdio: "inherit" | "pipe"): { status: number; stdout: string; stderr: string } {
|
|
76
80
|
const result = spawnSync("npm", args, {
|
|
77
81
|
encoding: "utf8",
|
|
78
82
|
stdio,
|
|
@@ -87,7 +91,7 @@ function runNpm(args: string[], stdio: "inherit" | "ignore"): { status: number;
|
|
|
87
91
|
|
|
88
92
|
function npmFlow(parsed: Parsed, root: string): void {
|
|
89
93
|
const local = readLocalVersion(root);
|
|
90
|
-
const view = runNpm(["view", "novahiz", "version"], "
|
|
94
|
+
const view = runNpm(["view", "novahiz", "version"], "pipe");
|
|
91
95
|
if (view.status !== 0) {
|
|
92
96
|
process.stderr.write(`novahiz upgrade: npm view failed (${view.stderr.trim() || `exit ${view.status}`}).\n`);
|
|
93
97
|
process.exitCode = 1;
|