@neocompose/cli 0.16.1 → 0.18.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 +44 -0
  2. package/dist/neo.mjs +8738 -3836
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,49 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.18.0] - 2026-07-31
4
+
5
+ ### Added
6
+
7
+ - Compile C#-style counted `for` loops and `foreach (T item in Items)` loops,
8
+ including `break`, `continue`, fresh iteration scopes, and stable collection
9
+ membership.
10
+ - Compile `switch` statements with typed constant and `null` cases, stacked
11
+ labels, a single `default`, and C#-style section termination rules.
12
+ - Compile string-based `try`/`catch` statements, including ordered catch
13
+ filters, readonly caught-message bindings, and bare rethrow.
14
+
15
+ ## [0.17.0] - 2026-07-31
16
+
17
+ ### Added
18
+
19
+ - Declare a class's constructor on its header, `class Foo(string bar)`. The
20
+ parameters are in scope for the entire class body, member initializers and
21
+ string interpolation alike, and the class cannot be constructed without
22
+ them. Construction logic that does not fit an initializer expression goes in
23
+ an `init { }` block, of which a class may declare at most one.
24
+ - The class header's base clause is a construction expression for the base:
25
+ `: Foo(bar: bar)` passes its arguments, `: Foo { Bar = bar }` settles its
26
+ members, and `: Foo<string>(bar: bar)` binds its type arguments. Both halves
27
+ are stored on the required constructor record and re-emitted by `neo pull`
28
+ on the header.
29
+ - `neo status` reports compiler diagnostics below error severity and its
30
+ `--json` envelope carries each diagnostic's `severity` alongside `blocking`.
31
+ A warning is surfaced and never blocks a push, a pull, or the dev watcher.
32
+
33
+ ### Changed
34
+
35
+ - Advance the project-schema contract to 3.9: a class record carries
36
+ `requiredConstructorId`, the constructor record its header parameter list
37
+ owns, and a constructor record carries `baseInitializerFields`. The required
38
+ constructor's id is derived from the class rather than authored, so it is
39
+ stable across pushes and identical on the server, and it is deliberately
40
+ absent from `constructorIds` — a class that declares one may declare no
41
+ others.
42
+ - A member initializer may no longer read a declared constructor's parameters.
43
+ The parameter belongs to that constructor's body, the same rule getters and
44
+ functions already follow; move the parameters to the class header to get the
45
+ previous behaviour with a scope the compiler can defend.
46
+
3
47
  ## [0.16.1] - 2026-07-30
4
48
 
5
49
  ### Fixed