@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.38.5",
3
+ "version": "0.39.0",
4
4
  "description": "Neo Compose native project-source CLI with bidirectional sync.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,7 +9,7 @@ description: >-
9
9
  `@neocompose/cli` or `node cli/bin/neo.mjs` in the neo-compose repository.
10
10
  ---
11
11
 
12
- <!-- reviewed-through-cli: 0.38.5 -->
12
+ <!-- reviewed-through-cli: 0.39.0 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -83,7 +83,7 @@ wrappers.
83
83
  The marker near the top of `SKILL.md` must exactly match the package version:
84
84
 
85
85
  ```html
86
- <!-- reviewed-through-cli: 0.38.5 -->
86
+ <!-- reviewed-through-cli: 0.39.0 -->
87
87
  ```
88
88
 
89
89
  The quoted version above is checked too, so this instruction cannot go stale
@@ -94,6 +94,13 @@ rows its own file projection holds, so the plan would delete live server rows.
94
94
  Nothing is planned in that state; run `neo pull` and retry. The same message
95
95
  as a warning reports the inconsistency without blocking.
96
96
 
97
+ When pull conflicts with a server-side deletion, keeping the authored record
98
+ restores it as an explicit create guarded by an absent-record CAS check;
99
+ removing it from the resolved source accepts the deletion without sending a
100
+ write. Pull also warns immediately when a conflicted record's retained local
101
+ base strands newly downloaded descendant value rows. Resolve that conflict
102
+ with `neo resolve --mine` or `neo resolve --theirs` before pushing.
103
+
97
104
  For `base-hash-conflict`, pull and merge. For `version-bump-required`, inspect
98
105
  the classification and use `neo push --accept-bump` only when the bump is
99
106
  intended.
@@ -44,7 +44,7 @@ interface INamed {
44
44
  @storage(allowed: .Immutable)
45
45
  abstract class Item<TContext extends SomeClass> : INamed {
46
46
  @id("item-name-id")
47
- @settings(localizable: true, searchKey: true)
47
+ @settings(searchBy: .MemberKey)
48
48
  public virtual string Name = "";
49
49
 
50
50
  @id("item-use-id")
@@ -80,17 +80,18 @@ that does not authorize copying the annotation onto authored records.
80
80
 
81
81
  Use context-aware typed annotations:
82
82
 
83
- - `@settings(...)` for localizable/search/index/editor constraints.
83
+ - `@settings(...)` for format/search/selection/editor constraints.
84
84
  - `@storage(allowed: ...)` on classes and storage keys on members.
85
- - `@locked` for author-protected declarations supported by the contract.
86
- - `@hidden` only on a class; absence means visible.
85
+ - `@visibility(.Hidden)` only on a class; absence means visible.
86
+ - Stateful settings use contextual enum cases, such as
87
+ `@settings(format: .Plain)` and `@settings(selection: .Multi)`.
87
88
  - `@relations(...)` only on the source class of a specialized direct relation.
88
89
 
89
90
  Use numeric literals for numeric limits. Keep annotations separate instead of
90
91
  inventing a generic metadata bag.
91
92
 
92
- `@index(member: Field, unique: ...)` and
93
- `@column(member: Field, width: ..., hidden: ..., frozen: ..., wrapContent: ...)`
93
+ `@index(member: Field, kind: .Unique)` and
94
+ `@column(member: Field, width: ..., visibility: ..., pin: ..., overflow: ...)`
94
95
  are repeatable List annotations. `member:` is a bare field name on the entry
95
96
  class. An index accepts a non-localizable string or single-select enum. A column
96
97
  may target `__other__` for the default layout of subclass-added fields.
@@ -19,7 +19,6 @@ The root member name, type, member ID, lock, and storage metadata are read-only.
19
19
  ```neo
20
20
  Root root = new() {
21
21
  @id("root-assets-member-id")
22
- @locked
23
22
  @storage(allowed: .Immutable)
24
23
  Assets Assets = new() {
25
24
  Outposts = [Assets.Capitol],