@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/CHANGELOG.md +76 -0
- package/dist/neo.mjs +3510 -1722
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +1 -1
- package/skills/neocompose-cli/references/cli-development.md +1 -1
- package/skills/neocompose-cli/references/declarations-and-construction.md +9 -0
- package/skills/neocompose-cli/references/neoscript.md +10 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,81 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.41.0] - 2026-09-01
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- `neo migrate rekey`, the one-time source refactor for the canonical
|
|
8
|
+
value-id migration. It reads the server's old-to-canonical mapping for the
|
|
9
|
+
workspace's version, rewrites `@id` pins and `Reference(id: ...)` literals in
|
|
10
|
+
tracked `.neo` and `.spec.neo` source, and moves `.neo/state.json` bases onto
|
|
11
|
+
the new ids, so the next `pull` merges field by field instead of reporting
|
|
12
|
+
every rekeyed value as a delete plus a create. The command refuses to write
|
|
13
|
+
anything when conflict markers or unresolved pull conflicts remain, when an
|
|
14
|
+
old id survives outside those two syntactic positions, or when the rewrite
|
|
15
|
+
introduces a source error. Running it a second time is a no-op.
|
|
16
|
+
- `@distribution(kind: .Sparse | .Packed)` on value-owning member
|
|
17
|
+
declarations, backed by schema contract 4.1. It chooses whether a member's
|
|
18
|
+
materialized value keeps its own row or is stored inside its owning parent
|
|
19
|
+
row.
|
|
20
|
+
- Omitting the annotation is a third state, not a synonym for `.Sparse`: on a
|
|
21
|
+
root declaration it means the automatic distribution for the member's kind
|
|
22
|
+
and settings, and on an override it means inherit. Pull emits the annotation
|
|
23
|
+
only where the field is explicitly stored and never writes an automatic
|
|
24
|
+
result into source.
|
|
25
|
+
|
|
26
|
+
- Read packed subtree storage. A `.Packed` child has no record of its own; it
|
|
27
|
+
is stored as a `{ "~packed": ... }` envelope at its position inside its
|
|
28
|
+
owning parent's body. The CLI now expands those envelopes into logical value
|
|
29
|
+
rows when it builds the stored ownership graph, so placements, emitted
|
|
30
|
+
source, root paths, and `neo check` see a packed child exactly as they see a
|
|
31
|
+
sparse one. A malformed packed payload now reports its owning row instead of
|
|
32
|
+
the child disappearing without a diagnostic.
|
|
33
|
+
|
|
34
|
+
- Push packed subtree storage. Value lowering keeps producing the logical row
|
|
35
|
+
graph; `neo status` and `neo push` now fold it into the physical rows the
|
|
36
|
+
server stores, through the same shared fold the server write path runs. A
|
|
37
|
+
packed child no longer reports a phantom create beside a spurious update of
|
|
38
|
+
its parent, so `pull` followed by `push --dry-run` of a packed project is
|
|
39
|
+
clean, and an edit of a packed member is one write of the row that stores it.
|
|
40
|
+
- Converge a sparse project as it is pushed. Rewriting a value row repacks the
|
|
41
|
+
whole subtree it stores and retires the child records it supersedes, in one
|
|
42
|
+
push. Rows no push touches keep the residency they already have — nothing
|
|
43
|
+
rewrites a project that was only pulled.
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
- Reject `@distribution(kind: .Packed)` on a List whose `listKind` is
|
|
48
|
+
unordered. An unordered list's membership is the set of live rows carrying
|
|
49
|
+
its id, so its entries occupy no position inside a parent row to be packed
|
|
50
|
+
into.
|
|
51
|
+
|
|
52
|
+
### Compatibility
|
|
53
|
+
|
|
54
|
+
- Project source format stays 4; the schema contract moves 4.0 to 4.1.
|
|
55
|
+
- The wire and `.neo` workspace state keep storing records in their physical
|
|
56
|
+
form, so merge bases and content hashes are unchanged.
|
|
57
|
+
- A push that edits a value whose member packs now writes the owning row and
|
|
58
|
+
deletes the child's superseded record, where it previously wrote the child
|
|
59
|
+
row. Both plans describe the same logical graph.
|
|
60
|
+
|
|
61
|
+
## [0.40.0] - 2026-08-30
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- Use the canonical `Size`, `Offset`, and `IsTrigger` fields for `NeoCollider`.
|
|
66
|
+
- Stop carrying localization authoring records inside runtime `project.json`;
|
|
67
|
+
localization manifests and locale files continue to ship separately.
|
|
68
|
+
- Retain the checked-in schema-29 CLI corpora as historical authoring-bearing
|
|
69
|
+
source fixtures. Schema-30 runtime wire cannot regenerate those corpora
|
|
70
|
+
because it deliberately omits the localization authoring graph; fixture
|
|
71
|
+
generation does not synthesize the missing records.
|
|
72
|
+
|
|
73
|
+
### Compatibility
|
|
74
|
+
|
|
75
|
+
- This CLI requires runtime export schema 30 and the matching Neo Compose SDK.
|
|
76
|
+
Runtime exports no longer embed localization authoring records in
|
|
77
|
+
`project.json`; locale metadata and locale files remain unchanged.
|
|
78
|
+
|
|
3
79
|
## [0.39.0] - 2026-08-29
|
|
4
80
|
|
|
5
81
|
### Changed
|