@neocompose/cli 0.40.0 → 0.42.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
CHANGED
|
@@ -1,5 +1,89 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.42.0] - 2026-09-02
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- `neo pull --reset` and `neo pull --regenerate-source-names` rewrote every
|
|
8
|
+
dialogue binding to its type name. Binding names are derived from a value's
|
|
9
|
+
`Name` child, and the placement index read the pulled rows as stored rather
|
|
10
|
+
than expanding packed subtree storage first, so a packed `Name` resolved to
|
|
11
|
+
nothing and `Outpost CaelusAnchorpoint` came back as `Outpost Outpost`. Every
|
|
12
|
+
linked dialogue and node then showed up as an update in `neo status` whose
|
|
13
|
+
only difference was the regenerated name. The index now expands packed
|
|
14
|
+
children into the logical rows they are.
|
|
15
|
+
- `neo pull` left a member declared by more than one class disagreeing with
|
|
16
|
+
itself. A changed record was rewritten in the single file the emission
|
|
17
|
+
attributes it to, so a change to a shared member updated one class and
|
|
18
|
+
froze the others at their previously emitted text, and the next command
|
|
19
|
+
refused the CLI's own output with "Shared member id … has inconsistent
|
|
20
|
+
declarations." Pull now rewrites every file that declares a changed record.
|
|
21
|
+
|
|
22
|
+
### Removed
|
|
23
|
+
|
|
24
|
+
- `neo migrate rekey`. The canonical value-id migration it served has run on
|
|
25
|
+
every deployment and the server no longer serves the old-to-canonical
|
|
26
|
+
mapping page it read, so the command had nothing left to rewrite.
|
|
27
|
+
`neo migrate` keeps `new | list | check | run | prune`.
|
|
28
|
+
|
|
29
|
+
## [0.41.0] - 2026-09-01
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- `neo migrate rekey`, the one-time source refactor for the canonical
|
|
34
|
+
value-id migration. It reads the server's old-to-canonical mapping for the
|
|
35
|
+
workspace's version, rewrites `@id` pins and `Reference(id: ...)` literals in
|
|
36
|
+
tracked `.neo` and `.spec.neo` source, and moves `.neo/state.json` bases onto
|
|
37
|
+
the new ids, so the next `pull` merges field by field instead of reporting
|
|
38
|
+
every rekeyed value as a delete plus a create. The command refuses to write
|
|
39
|
+
anything when conflict markers or unresolved pull conflicts remain, when an
|
|
40
|
+
old id survives outside those two syntactic positions, or when the rewrite
|
|
41
|
+
introduces a source error. Running it a second time is a no-op.
|
|
42
|
+
- `@distribution(kind: .Sparse | .Packed)` on value-owning member
|
|
43
|
+
declarations, backed by schema contract 4.1. It chooses whether a member's
|
|
44
|
+
materialized value keeps its own row or is stored inside its owning parent
|
|
45
|
+
row.
|
|
46
|
+
- Omitting the annotation is a third state, not a synonym for `.Sparse`: on a
|
|
47
|
+
root declaration it means the automatic distribution for the member's kind
|
|
48
|
+
and settings, and on an override it means inherit. Pull emits the annotation
|
|
49
|
+
only where the field is explicitly stored and never writes an automatic
|
|
50
|
+
result into source.
|
|
51
|
+
|
|
52
|
+
- Read packed subtree storage. A `.Packed` child has no record of its own; it
|
|
53
|
+
is stored as a `{ "~packed": ... }` envelope at its position inside its
|
|
54
|
+
owning parent's body. The CLI now expands those envelopes into logical value
|
|
55
|
+
rows when it builds the stored ownership graph, so placements, emitted
|
|
56
|
+
source, root paths, and `neo check` see a packed child exactly as they see a
|
|
57
|
+
sparse one. A malformed packed payload now reports its owning row instead of
|
|
58
|
+
the child disappearing without a diagnostic.
|
|
59
|
+
|
|
60
|
+
- Push packed subtree storage. Value lowering keeps producing the logical row
|
|
61
|
+
graph; `neo status` and `neo push` now fold it into the physical rows the
|
|
62
|
+
server stores, through the same shared fold the server write path runs. A
|
|
63
|
+
packed child no longer reports a phantom create beside a spurious update of
|
|
64
|
+
its parent, so `pull` followed by `push --dry-run` of a packed project is
|
|
65
|
+
clean, and an edit of a packed member is one write of the row that stores it.
|
|
66
|
+
- Converge a sparse project as it is pushed. Rewriting a value row repacks the
|
|
67
|
+
whole subtree it stores and retires the child records it supersedes, in one
|
|
68
|
+
push. Rows no push touches keep the residency they already have — nothing
|
|
69
|
+
rewrites a project that was only pulled.
|
|
70
|
+
|
|
71
|
+
### Changed
|
|
72
|
+
|
|
73
|
+
- Reject `@distribution(kind: .Packed)` on a List whose `listKind` is
|
|
74
|
+
unordered. An unordered list's membership is the set of live rows carrying
|
|
75
|
+
its id, so its entries occupy no position inside a parent row to be packed
|
|
76
|
+
into.
|
|
77
|
+
|
|
78
|
+
### Compatibility
|
|
79
|
+
|
|
80
|
+
- Project source format stays 4; the schema contract moves 4.0 to 4.1.
|
|
81
|
+
- The wire and `.neo` workspace state keep storing records in their physical
|
|
82
|
+
form, so merge bases and content hashes are unchanged.
|
|
83
|
+
- A push that edits a value whose member packs now writes the owning row and
|
|
84
|
+
deletes the child's superseded record, where it previously wrote the child
|
|
85
|
+
row. Both plans describe the same logical graph.
|
|
86
|
+
|
|
3
87
|
## [0.40.0] - 2026-08-30
|
|
4
88
|
|
|
5
89
|
### Changed
|