@neocompose/cli 0.39.0 → 0.41.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,7 +9,7 @@ description: >-
9
9
  `@neocompose/cli` or `node cli/bin/neo.mjs` in the neo-compose repository.
10
10
  ---
11
11
 
12
- <!-- reviewed-through-cli: 0.39.0 -->
12
+ <!-- reviewed-through-cli: 0.41.0 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -83,7 +83,7 @@ wrappers.
83
83
  The marker near the top of `SKILL.md` must exactly match the package version:
84
84
 
85
85
  ```html
86
- <!-- reviewed-through-cli: 0.39.0 -->
86
+ <!-- reviewed-through-cli: 0.41.0 -->
87
87
  ```
88
88
 
89
89
  The quoted version above is checked too, so this instruction cannot go stale
@@ -86,6 +86,15 @@ Use context-aware typed annotations:
86
86
  - Stateful settings use contextual enum cases, such as
87
87
  `@settings(format: .Plain)` and `@settings(selection: .Multi)`.
88
88
  - `@relations(...)` only on the source class of a specialized direct relation.
89
+ - `@distribution(kind: .Sparse | .Packed)` only on a value-owning member
90
+ declaration or override. It chooses whether the member's value keeps its
91
+ own row (`.Sparse`) or is stored inside its owning parent's row (`.Packed`).
92
+ Omit it unless the choice must be explicit: on a root declaration absence
93
+ means the automatic distribution for the member's kind and settings, and on
94
+ an override it means inherit. `pull` writes the annotation only where it is
95
+ explicitly stored. A packed subtree shares its parent's document-size limit,
96
+ so a write that would exceed the hard limit fails instead of falling back.
97
+ `.Packed` is rejected on a List whose `listKind` is unordered.
89
98
 
90
99
  Use numeric literals for numeric limits. Keep annotations separate instead of
91
100
  inventing a generic metadata bag.
@@ -329,5 +329,15 @@ neo migrate run [--dry-run] [--skip-invalid]
329
329
  neo migrate prune
330
330
  ```
331
331
 
332
+ `neo migrate rekey` is different: a one-time source refactor, not an action.
333
+ After the server's canonical value-id migration, it reads the version's
334
+ old-to-canonical id mapping, rewrites `@id` pins and `Reference(id: ...)`
335
+ literals in tracked `.neo` and `.spec.neo` source, and moves `.neo/state.json`
336
+ bases onto the new ids, so the next `pull` merges field by field instead of
337
+ reporting every rekeyed value as a delete plus a create. It writes nothing
338
+ while conflict markers or unresolved pull conflicts remain, when an old id
339
+ survives outside those two positions, or when the rewrite would introduce a
340
+ source error. A second run is a no-op.
341
+
332
342
  Run checks before migration execution. Review storage ownership and every write
333
343
  intent; do not assume an action body is writable merely because it compiled.