@neocompose/cli 0.38.5 → 0.39.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,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.39.0] - 2026-08-29
4
+
5
+ ### Changed
6
+
7
+ - Adopt project source format 4 and schema contract 4.0. Project records now
8
+ use compact numeric setting ordinals, a single class/member modality axis,
9
+ and absent keys for default enum arms.
10
+ - Replace `@hidden` with `@visibility(.Hidden)`, replace boolean annotation
11
+ settings with contextual enum cases, and remove the unused `@locked`
12
+ annotation.
13
+ - Canonicalize absent lookup collection values and variant-folder bindings
14
+ without writing equivalent `null` spellings.
15
+
16
+ ### Compatibility
17
+
18
+ - This CLI requires runtime export schema 29 and the matching Neo Compose SDK.
19
+ Older SDKs would silently lose class/member modality, interpret the new
20
+ ordinal settings as their old defaults, and retain protection behavior for
21
+ the removed `locked` field.
22
+
23
+ ## [0.38.6] - 2026-08-29
24
+
25
+ ### Fixed
26
+
27
+ - Preserve locally edited nested records when the server deletes their owning
28
+ graph, restore kept records as explicit absent-CAS creates, and accept a
29
+ later server recreation cleanly after local deletion wins.
30
+ - Warn during pull when a conflicted record's retained local base strands
31
+ newly downloaded descendant value rows, before a later push reaches the
32
+ stale-base safety refusal.
33
+
3
34
  ## [0.38.5] - 2026-08-29
4
35
 
5
36
  ### Fixed
package/README.md CHANGED
@@ -124,7 +124,7 @@ abstract class InventoryItem<
124
124
  TContext extends SomeClass
125
125
  > {
126
126
  @id("item-name-id")
127
- @settings(localizable: true, searchKey: true)
127
+ @settings(searchBy: .MemberKey)
128
128
  virtual string Name = "";
129
129
 
130
130
  @id("item-rarity-id")
@@ -149,10 +149,10 @@ abstract class InventoryItem<
149
149
  The source identifier is the persisted name. `@settings` and `@storage` are
150
150
  typed by their declaration context; invalid fields and enum cases are
151
151
  diagnostics. Swift-like `.EnumCase` syntax works whenever the expected enum
152
- type is known. Focused annotations such as `@id`, `@locked`, `@hidden`,
153
- and `@relations` carry cross-cutting behavior. Never author `@system`; it is
154
- reserved for platform-owned system records. `@hidden` marks a class the member
155
- selector and classes tree leave out; absent means visible.
152
+ type is known. Focused annotations such as `@id`, `@visibility`, and
153
+ `@relations` carry cross-cutting behavior. Never author `@system`; it is
154
+ reserved for platform-owned system records. `@visibility(.Hidden)` marks a
155
+ class the member selector and classes tree leave out; absent means visible.
156
156
 
157
157
  Lists take repeatable `@index` and `@column` annotations naming a field on the
158
158
  entry class. An index requires a non-localizable `string` or a single-select
@@ -162,9 +162,9 @@ default layout for every field a subclass adds.
162
162
  ```neo
163
163
  @id("outpost-list-id")
164
164
  @settings(kind: .Unordered)
165
- @index(member: Slug, unique: true)
166
- @column(member: Slug, width: 158, frozen: true)
167
- @column(member: Notes, hidden: true)
165
+ @index(member: Slug, kind: .Unique)
166
+ @column(member: Slug, width: 158, pin: .Leading)
167
+ @column(member: Notes, visibility: .Hidden)
168
168
  public List<Outpost> Outposts = [];
169
169
  ```
170
170