@neocompose/cli 0.14.0 → 0.15.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/CHANGELOG.md +67 -0
  2. package/dist/neo.mjs +3366 -246
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,72 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.15.0] - 2026-07-28
4
+
5
+ ### Added
6
+
7
+ - Declare a constructor on a class and have `neo push` store it. A constructor
8
+ is its own record with named, non-stored parameters, an optional
9
+ `: base(Name: expr)` clause, and a NeoScript body; the class lists its
10
+ constructors in declaration order. `neo pull` re-emits each declaration after
11
+ the class's value members and before its callable members, and
12
+ `neo pull --reset` reconstructs both from the database.
13
+ - Store a member default as an initializer when its right-hand side needs
14
+ evaluating. `Foo Loud = new Foo(AllCaps: true)` and
15
+ `string Text = StaticFunc("bar")` now store the authored expression instead
16
+ of failing to lower; a list or dictionary entry can carry one of its own,
17
+ keeping its `@id` and staying addressable while its interior is computed.
18
+ - Reject a push whose workspace is not at the project head, the way `git push`
19
+ rejects a non-fast-forward. An initializer may read anything in the project,
20
+ so evaluating against a stale snapshot could compute a default that was never
21
+ correct for the head it lands on. Run `neo pull` first, or force the write
22
+ with `neo push --accept-bump`.
23
+ - Report every member default that flips from a stored literal to a computed
24
+ initializer because a class gained a parameterless constructor, and refuse the
25
+ push when a flip would strand rows another record points at — naming the
26
+ member and the referencing record.
27
+ - Record the committed head after every push. A synchronous commit echoes its
28
+ transaction hash; a durable commit recovers it from the schema signal once
29
+ the transaction lands, so the next push starts from the head it just wrote.
30
+
31
+ ### Fixed
32
+
33
+ - Store a constructor body dedented to its canonical spelling, so the same
34
+ body authored at any nesting depth — or re-emitted by the canonical
35
+ projection — lowers to one byte-identical record. Trusted re-lowering
36
+ previously saw a differently indented body and rejected the push.
37
+ - Accept a complete NeoScript body sweep's derived-only member refreshes in
38
+ trusted-commit verification. A sweep recompiles stored getters whose IR
39
+ predates the current compiler revision; source lowering rightly reports no
40
+ change for them, and the verifier treated the refresh as an invented
41
+ semantic change, failing every schema push of a project with stale IR.
42
+ - Report the real differing field when a source commit mismatches trusted
43
+ lowering. The difference walker returned a spurious mismatch for any
44
+ structurally equal nested object, so the diagnostic named the wrong path.
45
+ - Keep a newly declared collection's entry member identity stable across
46
+ pushes. The entry id derived eagerly from the declaring member's pending
47
+ placeholder, so the stored entry disagreed with every later re-lowering,
48
+ flipped the collection's entry identity on the next push, and stranded the
49
+ original record.
50
+ - Compare a pulled value row's server-compiled `init.compiled` as derived
51
+ rather than authored, so a freshly pushed initializer row no longer reports
52
+ a phantom update on the next status.
53
+
54
+ ### Changed
55
+
56
+ - Reject constructor overloads that share an argument-name set, and overloads
57
+ that differ only by parameter name, at lowering rather than at commit.
58
+ Generated C# emits one constructor per overload, so a name-only difference
59
+ would produce the same signature twice.
60
+ - Advance the project-schema contract to 3.6: the class record carries
61
+ `constructorIds` and the new `constructor` record kind carries `classId`,
62
+ `argumentTypes`, `code`, `baseArguments`, and `docsText`.
63
+
64
+ ### Fixed
65
+
66
+ - Name the owning initializer when a constructor projection points at a row that
67
+ only exists inside a computed default. Storage sees a dangling id; the
68
+ diagnostic now says which initializer would have produced it.
69
+
3
70
  ## [0.14.0] - 2026-07-28
4
71
 
5
72
  ### Added