@neocompose/cli 0.73.2 → 0.75.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.73.2",
3
+ "version": "0.75.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.73.2 -->
12
+ <!-- reviewed-through-cli: 0.75.0 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -118,21 +118,18 @@ wrappers.
118
118
  The marker near the top of `SKILL.md` must exactly match the package version:
119
119
 
120
120
  ```html
121
- <!-- reviewed-through-cli: 0.73.2 -->
121
+ <!-- reviewed-through-cli: 0.75.0 -->
122
122
  ```
123
123
 
124
124
  The quoted version above is checked too, so this instruction cannot go stale
125
125
  while the skill advances.
126
126
 
127
- For every CLI version bump, audit all behavior and public syntax added since the
128
- marker, update the skill/references where needed, then advance the marker. Never
129
- bump it mechanically. `npm run doctor` and package verification both fail when
130
- it drifts, so the audit lands in the same change as the bump rather than
131
- blocking a publish after the release has merged.
132
-
133
- Every version bump also gets a `CHANGELOG.md` entry, newest first, under a
134
- `## [version] - date` heading. The same check grades it, so an undocumented
135
- release fails alongside a stale marker.
127
+ For every CLI behavior change, audit the affected skill/references in the same
128
+ feature PR and add a unique `.changeset/*.md` release note. Leave versions,
129
+ changelogs, and these markers unchanged. `npm run version:packages` combines
130
+ fragments in a release PR and advances the markers after those feature reviews.
131
+ `npm run doctor` and package verification still check marker/version agreement
132
+ and the newest changelog entry. See `.changeset/README.md` in the repository.
136
133
 
137
134
  Keep `agents/openai.yaml` and every directly linked reference inside the
138
135
  published `skills/neocompose-cli/` tree. Keep the frontmatter limited to
@@ -557,7 +557,24 @@ receiver.Handler`; use `-=` to remove the same receiver/handler pair. Handlers
557
557
  are noncapturing, return void, and accept the field's type. Bindings to Session
558
558
  receivers stay Session-only. Gameplay hosts dispatch after the write batch.
559
559
  Authoring, replay, migration, and dialogue dry-run hosts retain wiring without
560
- invoking callbacks.
560
+ invoking callbacks. `owner.Field.OnChanged.Clear()` removes every handler,
561
+ including `@listeners` defaults, in both Save and Session wiring.
562
+
563
+ Instance getters take the same syntax, for example
564
+ `this._quantity.Value.OnChanged += this.QuantityChanged`. A getter
565
+ subscription lives only in memory for the play session, so subscribe from a
566
+ function, effect, lifecycle hook, or dialogue action, never a constructor,
567
+ initializer, or migration. Subscribing reads the getter once. The SDK calls the
568
+ handler with a fresh result whenever something that read depended on changes,
569
+ even if the result is equal, and several changes before the next read call it
570
+ once. `Clear()` ends the subscription, and a constructor can't call it on a
571
+ getter. Static getters, `base.Value`, and `@listeners` can't observe a getter.
572
+ `neo test` dispatches getter subscriptions the same way, treating the test body
573
+ as the host: handlers run after each of its statements, so the next statement
574
+ sees their effects. A getter that reads through `Clone()` or a grid query can
575
+ run more often in `neo test` than in Unity: any write but its own handlers'
576
+ counts as a change. Other TypeScript hosts validate getter subscriptions and
577
+ never call the handler.
561
578
 
562
579
  Persist wiring on the owning class value with named arguments, for example:
563
580