@neocompose/cli 0.69.0 → 0.70.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,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.70.0] - 2026-10-06
4
+
5
+ - `neo export` exports the working copy, local edits included, with no network. Unity sees an edit as soon as it's saved, before `neo push`. The export says whether it holds only the pulled head ("Clean") or how many local changes it includes ("Local"). A local export is marked in `metadata.localExport`; SDK 0.59.0 refuses player builds from it and keeps play-mode saves on disk instead of the server. A clean `neo export` or a push clears the mark. A local export still stops, writing nothing, on an error diagnostic or on a project file whose pulled bytes aren't on disk yet; run `neo pull` first.
6
+ - New declarations keep their ids across exports and into the push. `.neo/export.json` records the id each export gave a new declaration, keyed by file, kind and name rather than line, so inserting lines above it or exporting again changes nothing. `neo push` commits those same ids, so Unity saves made against a local export still resolve after the push. After a successful push, `neo push` re-exports into the Unity project if the last export was local.
7
+ - New migration files get a stable pending id from their path, so the id survives repeated exports.
8
+ - **Breaking:** `neo dev` runs `neo export` once and again after every saved change to source, `neo.json`, `.neo/state.json`, `Files/` or the Unity config asset. It no longer pulls or pushes: `--push` and the `p` key are gone, so run `neo pull` and `neo push` in another terminal. `s` prints status and `q` quits.
9
+ - Pull, push, branch, refresh, merge, resolve, init and export hold `.neo/workspace.lock` while they run, so `neo dev` and a command in another terminal never write the working copy at the same time. A command waits for the holder and says which command it's waiting for. A lock left by a process that no longer exists is taken over.
10
+
11
+ ## [0.69.1] - 2026-10-06
12
+
13
+ - `neo export` shows a spinner while it works, labeled with the current step: reading the pulled project, building the export, generating Unity types, writing changed files, and checking local changes.
14
+ - `neo push` no longer carries a replaced class member's stored value into a new member with the same name. The old member's value rows are deleted and the new member's value is seeded fresh. Before this fix, push could fail with errors such as "single-select lookup cannot store multiple targets".
15
+ - `neo push --dry-run` can replay a stored construction that sets a `NeoAction` member, for example `OnApply = []` on a watcher stored inside an item stack. Before this fix, the dry run's round-trip check failed with "Cannot infer the entry type of an empty list".
16
+
3
17
  ## [0.69.0] - 2026-10-05
4
18
 
5
19
  - **Breaking:** `neo export` replaces `neo export unity --out <dir>`. It builds the Unity export from the last pull, offline, and writes it into the directories the Unity project's `NeoComposeConfig` asset names. It writes only files whose bytes changed, skips codegen when only values changed since the last export into that Unity project, and writes `Library/NeoCompose/export.json` last for Unity to ingest. Local edits aren't exported, and the output counts them. An error diagnostic, or a project file whose bytes differ from the pulled file, stops the export before anything is written.
package/README.md CHANGED
@@ -491,7 +491,7 @@ authorization boundary.
491
491
  | `diff [--json]` | Show semantic records, spans, digests, and upload intent. |
492
492
  | `push [--dry-run] [--accept-bump] [--no-verify]` | Validate or commit one atomic compare-and-swap transaction. |
493
493
  | `test [file-or-dir ...] [-t pattern]` | Compile the unpushed local candidate and run `*.spec.neo` tests. |
494
- | `dev [--push]` | Watch remote/local changes; pushing remains opt-in. |
494
+ | `dev [--unity-project <dir>]` | Run `neo export` after every local change; never pulls or pushes. |
495
495
  | `resolve --mine\|--theirs` | Resolve all current source/binary conflicts with one side. |
496
496
  | `script check\|compile\|eval` | Compile or preview NeoScript with project context; never commit writes. |
497
497
  | `dialogue dryrun <ref>` | Simulate a locally authored dialogue candidate. |
@@ -502,7 +502,7 @@ authorization boundary.
502
502
  | `release` | Cut, publish, archive, or restore releases. |
503
503
  | `channel` | Manage release channels. |
504
504
  | `history` | Inspect and deliberately rewrite retained history. |
505
- | `export [--unity-project <dir>]` | Write the pulled head into a Unity project, offline. |
505
+ | `export [--unity-project <dir>]` | Write the working copy, local edits included, into a Unity project. |
506
506
 
507
507
  With the deliberate exception of `neo loc`, content authoring goes through
508
508
  tracked native source and `neo push`. Localization commands can mutate