novahiz 0.8.2 → 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 CHANGED
@@ -3,6 +3,69 @@
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
+
24
+ ## [0.9.0] - 2026-10-10
25
+
26
+ ### Added
27
+
28
+ - **`second-memory project-init`** — gives a new project its vault folders
29
+ (`docs/journal/decisions/<project>/`, each with a real `_MOC.md`, never
30
+ `memory/`) and binds the project to its branch. Dry-run by default,
31
+ `--branch Domain/Branch` validates against the catalog, idempotent, and
32
+ `--apply` writes the `vault.json` binding (slug → domain/branch) in the
33
+ memory root.
34
+ - **`novahiz init` Obsidian step** — when a vault exists and the project has
35
+ a name, init creates the project's folders through the same logic; no
36
+ vault, no name or no branch signal means the step skips with an advice and
37
+ never invents a folder. Honors `--dry-run`.
38
+ - **`journal` and `decisions` leaves** in `catalog/vault-structure.json` for
39
+ every `memory|docs` branch (19 branches, 38 leaves), with root
40
+ `journalKeywords` / `decisionsKeywords`. `routePath` resolves the leaf
41
+ `decisions` > `journal` > `docs` > `memory`, and the project level extends
42
+ to the new leaves.
43
+ - **Project binding in `routePath`** — a note carrying a `project:` bound by
44
+ `project-init` lands in the project's branch whatever the keywords say;
45
+ stale or missing bindings fall back to the historic keyword routing.
46
+
47
+ ### Changed
48
+
49
+ - **`second-memory sync` is archive-only** — project memory stays local
50
+ (`MEMORY.md` + `project-memory/` slots); the bidirectional slot ↔ vault
51
+ mirror (pull / push / rebuild, last-writer-wins) is retired. `sync` now
52
+ lists (dry-run) and archives (`--apply`, backed up under `Archive/.backup`)
53
+ the notes the old mirror generated (`novahiz_slot_id`), while keeping the
54
+ opt-in inverse import (`novahiz_slot_sync: true` → slot in local memory).
55
+ `status` / `doctor` report the leftovers as `project-memory note(s) in the
56
+ vault`.
57
+ - **Skills and instructions follow** — `novahiz-memory` / `memory` are
58
+ local-only (no vault write, no routing table); `novahiz-second-memory`
59
+ documents the new leaves, `project-init`, the binding and the archive-only
60
+ sync; `instructions.md` adds the local-memory rule and the
61
+ no-speculative-folders rule.
62
+
63
+ ### Removed
64
+
65
+ - Mirror helpers and constants of the retired sync (`renderSlotNote`,
66
+ `slotBody`, `parseIso`, `SYNC_TOLERANCE_MS`, and the `readIndex` usage in
67
+ sync).
68
+
6
69
  ## [0.8.2] - 2026-10-10
7
70
 
8
71
  ### Fixed
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.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.
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
  ┌──────────────────────────────────────────────────────────────────────────┐
@@ -17,13 +17,14 @@ Search it yourself (`novahiz second-memory search "<terms>"`, then read the note
17
17
  Do **not** consult it for trivial edits, unrelated questions, or when the prompt already carries the needed context.
18
18
 
19
19
  ### Rules
20
- 1. When the user asks to **save / memorize / update** memory, load the `memory` skill (alias for `novahiz-memory`) and follow its procedure without exception. For vault-only writes and structure questions, load `novahiz-second-memory` instead: it owns the vault's fixed, predefined arborescence.
21
- 2. Vault routing comes from the predefined structure (`catalog/vault-structure.json`, surfaced by the `novahiz-second-memory` skill) — never guess a location. When ambiguous, ask the user, and display the chosen path before writing.
20
+ 1. When the user asks to **save / memorize / update** memory, load the `memory` skill (alias for `novahiz-memory`) and follow its procedure without exception. Project memory is local to the project (`MEMORY.md` + `project-memory/` slots) and **never goes into the vault**. For vault-only writes and structure questions, load `novahiz-second-memory` instead: it owns the vault's fixed, predefined arborescence.
21
+ 2. Vault routing comes from the predefined structure (`catalog/vault-structure.json`, surfaced by the `novahiz-second-memory` skill) — never guess a location. A note belongs to a project when its frontmatter carries `project:`; its leaf is `decisions` on a `decisionsKeywords` hit, else `journal` on a `journalKeywords` hit, else `docs`, else `memory`. When ambiguous, ask the user, and display the chosen path before writing.
22
22
  3. Search before you write: `novahiz second-memory search "<terms>"` — merge into an existing note rather than creating a duplicate. Link pages with `[[wikilinks]]`.
23
23
  4. Never write to `index.md`, `log.md`, `hot.md`, `.manifest.json`, `_meta/`, or `.obsidian/`. If the user asks for it, do it step by step in front of them, with a backup first for anything under `.obsidian/`.
24
24
  5. Never create a root domain on your own: every new domain requires user agreement and a structure update.
25
25
  6. Include mandatory frontmatter: `title, category, tags, sources, created, updated, summary`.
26
- 7. Structure maintenance is CLI work: `novahiz second-memory [init|doctor|fix|sync|status]` (dry-run by default, `--apply` to write).
26
+ 7. Structure maintenance is CLI work: `novahiz second-memory [init|doctor|fix|sync|project-init|status]` (dry-run by default, `--apply` to write). `sync` only archives notes the old memory mirror left in the vault — it never mirrors memory into the vault.
27
+ 8. Folders are never created speculatively: a folder appears on the first write, or when `second-memory project-init` (the same logic behind the `Obsidian project folder` step of `novahiz init`) creates a project's `docs/journal/decisions` folders on request — never `memory/<project>/`.
27
28
 
28
29
  ## Playwright Browser — Persistent Profile
29
30