@nolto/cli 0.8.0 → 0.9.0

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.
Files changed (3) hide show
  1. package/README.md +39 -2
  2. package/dist/index.js +964 -236
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -21,6 +21,8 @@ nolto init
21
21
  `nolto init` configures authentication, selects or creates a project, writes the
22
22
  repo-local `nolto.json` binding, installs the bundled `roadmap-progress` skill,
23
23
  and creates `.nolto/roadmaps/<slug>.json` when needed.
24
+ Re-running it inside a repository keeps the saved token and only sets up that
25
+ repository; use `--force` to reconfigure the global settings.
24
26
 
25
27
  For browser-based authentication without the rest of the repository setup:
26
28
 
@@ -61,6 +63,9 @@ CLI versions older than 0.8.0 do not send a repository identity and receive
61
63
 
62
64
  ```bash
63
65
  nolto sync # Push roadmap JSON files and linked plan Markdown
66
+ nolto diff [slug] # Compare local and server roadmaps without changing them
67
+ nolto pull [slug] # Overwrite local roadmap files from the server
68
+ nolto pull --merge [slug] # Structurally merge server and local roadmaps
64
69
  nolto watch [--debounce <ms>] # Watch registered repositories and auto-sync
65
70
  nolto watch --install-service # Install the Linux systemd user service
66
71
  ```
@@ -68,10 +73,42 @@ nolto watch --install-service # Install the Linux systemd user service
68
73
  `sync` reads every `.nolto/roadmaps/*.json` file in filename order, uses each
69
74
  filename stem as its slug, validates schema v2, follows any linked plan Markdown
70
75
  paths, and sends an idempotent full upsert to the bound project. A legacy
71
- `.roadmap/roadmap.json` is migrated automatically when no canonical roadmap exists.
76
+ `.roadmap/roadmap.json` is migrated by `nolto sync` when no canonical roadmap
77
+ exists; `nolto watch` only warns and never migrates.
72
78
 
73
79
  `watch` uses the repository registry maintained by `nolto init`. Missing registered
74
80
  repositories are skipped with a warning.
81
+ The CLI warns when an installed `roadmap-progress` skill version differs from the
82
+ CLI version; run `nolto init` in that repository to refresh it.
83
+
84
+ Use `nolto diff [slug]` before pushing to review structural task, phase, and
85
+ metadata differences. It exits with code 1 when differences are found and does
86
+ not change either side. `nolto pull [slug]` downloads all server roadmaps, or one
87
+ named roadmap, and intentionally overwrites the corresponding local files after
88
+ validation. It never deletes local-only roadmaps. Add `--merge` to preserve valid
89
+ local changes using a deterministic structural merge, and review the result with
90
+ `git diff` before committing.
91
+
92
+ ## Merging roadmap conflicts
93
+
94
+ Roadmap files use Nolto's structural Git merge driver. The repository attribute
95
+ and local Git configuration are:
96
+
97
+ ```text
98
+ .nolto/roadmaps/*.json merge=nolto-roadmap
99
+ git config --local merge.nolto-roadmap.driver "nolto merge-file %A %B --base %O"
100
+ ```
101
+
102
+ `nolto init` sets up both entries for the current repository and is safe to run
103
+ again for an existing repository. Git invokes the underlying command as:
104
+
105
+ ```bash
106
+ nolto merge-file <ours> <theirs> --base <ancestor>
107
+ ```
108
+
109
+ The result is written to `<ours>` as required by Git. Use
110
+ `nolto pull --merge [slug]` when the server has changes that should be combined
111
+ with a valid local roadmap before syncing.
75
112
 
76
113
  ## Configuration
77
114
 
@@ -134,7 +171,7 @@ Errors are written to stderr:
134
171
  | Code | Meaning |
135
172
  |---|---|
136
173
  | 0 | Success |
137
- | 1 | Unexpected command failure |
174
+ | 1 | Roadmap differences found (`nolto diff`) or unexpected command failure |
138
175
  | 2 | Local input or file validation error |
139
176
  | 3 | Authentication or authorization error |
140
177
  | 4 | Rate limit response |