novahiz 0.9.0 → 0.9.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 +18 -0
- package/README.md +1 -1
- package/dist/catalog.js +7 -1
- package/package.json +1 -1
- package/src/catalog.ts +6 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
3
3
|
All notable changes to Novahiz are documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
5
|
|
|
6
|
+
## [0.9.1] - 2026-10-10
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- **Fresh-install scan stops reporting missing skill roots** — the default
|
|
11
|
+
`skillRoots` include `~/.agents/skills`, which most profiles do not have.
|
|
12
|
+
The first `sync` (run by the installer) used to surface it as a scan error
|
|
13
|
+
on every new machine; a declared root that does not exist yet now simply
|
|
14
|
+
contributes nothing (`scanErrors: []`).
|
|
15
|
+
- **README install banner aligned with the shipped version** (0.8.0 → 0.9.0).
|
|
16
|
+
|
|
17
|
+
### Notes
|
|
18
|
+
|
|
19
|
+
- The npm installer path is verified end-to-end on npm 12.2: install with the
|
|
20
|
+
`postinstall` blocked by `allowScripts`, first `novahiz` run finishes the
|
|
21
|
+
setup itself (auto-install, `NOVAHIZ_AUTOINSTALL=0` to opt out), second run
|
|
22
|
+
clean. `novahiz doctor` exits 0 on the fresh sandbox.
|
|
23
|
+
|
|
6
24
|
## [0.9.0] - 2026-10-10
|
|
7
25
|
|
|
8
26
|
### Added
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
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.9.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
|
┌──────────────────────────────────────────────────────────────────────────┐
|
package/dist/catalog.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdirSync, readdirSync, readFileSync, realpathSync, statSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, statSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { basename, isAbsolute, join } from "node:path";
|
|
3
3
|
import { DatabaseSync } from "node:sqlite";
|
|
4
4
|
import { expandHome } from "./spec.js";
|
|
@@ -56,6 +56,12 @@ export function parseFrontmatter(content) {
|
|
|
56
56
|
return result;
|
|
57
57
|
}
|
|
58
58
|
function walkForSkillFiles(root, found, visited, errors) {
|
|
59
|
+
// A declared skill root that does not exist yet is normal on a fresh machine:
|
|
60
|
+
// the default skillRoots include ~/.agents/skills, which most profiles do not
|
|
61
|
+
// have. It contributes nothing and must not surface as a scan error in every
|
|
62
|
+
// first sync (the installer prints that JSON).
|
|
63
|
+
if (!existsSync(root))
|
|
64
|
+
return;
|
|
59
65
|
let real;
|
|
60
66
|
try {
|
|
61
67
|
real = realpathSync(root);
|
package/package.json
CHANGED
package/src/catalog.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdirSync, readdirSync, readFileSync, realpathSync, statSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, statSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { basename, isAbsolute, join } from "node:path";
|
|
3
3
|
import { DatabaseSync } from "node:sqlite";
|
|
4
4
|
import { expandHome, type Spec } from "./spec.ts";
|
|
@@ -68,6 +68,11 @@ export function parseFrontmatter(content: string): Record<string, string> {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
function walkForSkillFiles(root: string, found: string[], visited: Set<string>, errors: string[]): void {
|
|
71
|
+
// A declared skill root that does not exist yet is normal on a fresh machine:
|
|
72
|
+
// the default skillRoots include ~/.agents/skills, which most profiles do not
|
|
73
|
+
// have. It contributes nothing and must not surface as a scan error in every
|
|
74
|
+
// first sync (the installer prints that JSON).
|
|
75
|
+
if (!existsSync(root)) return;
|
|
71
76
|
let real: string;
|
|
72
77
|
try {
|
|
73
78
|
real = realpathSync(root);
|