@nolto/cli 0.8.1 → 0.10.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 -4
  2. package/dist/index.js +804 -118
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -45,7 +45,7 @@ nolto whoami # Show resolved auth/config state and project count
45
45
  ```bash
46
46
  nolto link <projectId> # Write or update nolto.json at the repository root
47
47
  nolto link --show # Show the current binding, source, and repository identity
48
- nolto link --rebind # Rebind the project to this repository (owner only)
48
+ nolto link --rebind [--yes] # Rebind the project to this repository (owner only)
49
49
  nolto link --unlink # Remove projectId from nolto.json
50
50
  ```
51
51
 
@@ -53,8 +53,11 @@ Commit `nolto.json` so everyone working in the repository targets the same Nolto
53
53
  project. A Nolto project is bound to the first repository identity it syncs from.
54
54
  The identity is the normalized `origin` remote, or a machine ID plus path when no
55
55
  remote is available. Syncing from a different repository fails with
56
- `409 repo_mismatch`. An owner can run `nolto link --rebind` in the correct
57
- repository to change the binding, at most once every seven days.
56
+ `409 repo_mismatch`. Before rebinding, run `nolto link --show` and confirm that
57
+ the project ID is intended for this repository. An owner can then run
58
+ `nolto link --rebind` in the correct repository to change the binding, at most
59
+ once every seven days. The command shows the project name and asks for
60
+ confirmation; pass `--yes` (`-y`) to skip the prompt.
58
61
 
59
62
  CLI versions older than 0.8.0 do not send a repository identity and receive
60
63
  `426`; run `nolto update` before syncing.
@@ -63,6 +66,9 @@ CLI versions older than 0.8.0 do not send a repository identity and receive
63
66
 
64
67
  ```bash
65
68
  nolto sync # Push roadmap JSON files and linked plan Markdown
69
+ nolto diff [slug] # Compare local and server roadmaps without changing them
70
+ nolto pull [slug] # Overwrite local roadmap files from the server
71
+ nolto pull --merge [slug] # Structurally merge server and local roadmaps
66
72
  nolto watch [--debounce <ms>] # Watch registered repositories and auto-sync
67
73
  nolto watch --install-service # Install the Linux systemd user service
68
74
  ```
@@ -78,6 +84,35 @@ repositories are skipped with a warning.
78
84
  The CLI warns when an installed `roadmap-progress` skill version differs from the
79
85
  CLI version; run `nolto init` in that repository to refresh it.
80
86
 
87
+ Use `nolto diff [slug]` before pushing to review structural task, phase, and
88
+ metadata differences. It exits with code 1 when differences are found and does
89
+ not change either side. `nolto pull [slug]` downloads all server roadmaps, or one
90
+ named roadmap, and intentionally overwrites the corresponding local files after
91
+ validation. It never deletes local-only roadmaps. Add `--merge` to preserve valid
92
+ local changes using a deterministic structural merge, and review the result with
93
+ `git diff` before committing.
94
+
95
+ ## Merging roadmap conflicts
96
+
97
+ Roadmap files use Nolto's structural Git merge driver. The repository attribute
98
+ and local Git configuration are:
99
+
100
+ ```text
101
+ .nolto/roadmaps/*.json merge=nolto-roadmap
102
+ git config --local merge.nolto-roadmap.driver "nolto merge-file %A %B --base %O"
103
+ ```
104
+
105
+ `nolto init` sets up both entries for the current repository and is safe to run
106
+ again for an existing repository. Git invokes the underlying command as:
107
+
108
+ ```bash
109
+ nolto merge-file <ours> <theirs> --base <ancestor>
110
+ ```
111
+
112
+ The result is written to `<ours>` as required by Git. Use
113
+ `nolto pull --merge [slug]` when the server has changes that should be combined
114
+ with a valid local roadmap before syncing.
115
+
81
116
  ## Configuration
82
117
 
83
118
  The config file is `~/.config/nolto/config.json` (or
@@ -139,7 +174,7 @@ Errors are written to stderr:
139
174
  | Code | Meaning |
140
175
  |---|---|
141
176
  | 0 | Success |
142
- | 1 | Unexpected command failure |
177
+ | 1 | Roadmap differences found (`nolto diff`) or unexpected command failure |
143
178
  | 2 | Local input or file validation error |
144
179
  | 3 | Authentication or authorization error |
145
180
  | 4 | Rate limit response |