@neocompose/cli 0.59.3 → 0.60.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,31 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.60.0] - 2026-09-27
4
+
5
+ - **Behavior change:** A command that reads or writes a project opens one live connection to the server and uses it for every query, write, and subscription until it exits. Push no longer posts its commit to an HTTP route. The connection runs on its own thread, so it finishes opening while push prepares the commit.
6
+ - **Behavior change:** The CLI requires Node 22 or later. That connection is a WebSocket, which Node 20 doesn't provide.
7
+ - **Behavior change:** Push and `neo doctor --fix` send the prepared commit over that connection. A commit of up to 512 KB with no managed files goes in one write. Larger commits, and commits that stage managed files, go in chunks, and the server starts applying them once the last one arrives.
8
+ - **Behavior change:** The server refuses pushes from CLI versions before 0.60.0 with a 410 `cli-update-required`, over both the HTTP route and 0.59's small-push action.
9
+ - `neo push --dry-run` checks the server's derived-edge extractor version against the CLI's and says whether to upgrade the CLI or repair the project's derived edge index. It no longer tells you to run `neo pull`, which doesn't change that version, and `.neo/state.json` no longer stores `derivedEdgeVersion`.
10
+ - **Behavior change:** `neo migrate run` and `neo migrate prune` prepare their writes on your machine, like push, against the project as they read it from the server. If another commit lands while they run, they are refused: run the command again. `--server` is removed.
11
+ - **Behavior change:** `neo loc` writes are prepared on your machine, like push, against the project as they read it from the server. If another commit lands while one runs, it is refused: run the command again. A `neo loc set` batch is one commit, so it lands whole or not at all, and entries for the same text apply in order. Before, each entry was its own commit.
12
+ - `neo loc comment-set` works. Before, the server rejected every request it sent.
13
+ - `neo loc create` gives a non-main locale the Needs translation status. Before, it named a status that doesn't exist.
14
+ - A `neo loc set` batch entry's `comment` sets that locale's comment. Before, it was ignored.
15
+ - **Behavior change:** The server checks whether a push needs a version bump while it applies the commit. When it does, push asks whether to accept the bump and, if you agree, runs the whole push again with `--accept-bump`. Your push hooks run again too.
16
+ - Creating a branch or publishing a version no longer makes the next `neo pull` download the whole project.
17
+ - A push, `neo doctor --fix` or `neo migrate` that another commit beats after sending its last chunk reports that the project moved on, the same as one refused at submit. Before, push printed the raw failure.
18
+ - A push that uploads more than 1,024 new or changed project files is refused before it uploads anything.
19
+
20
+ ## [0.59.4] - 2026-09-26
21
+
22
+ - `neo status` and `neo push` read an object's canonical source only when its initializer leaves out a stored key that some class declares, the only case where an authored reset can apply. Before, every constructed object asked for it, including world objects whose only unauthored key is a placement sidecar like `assetClassId`. After a push, that meant re-emitting the object's whole owning root. After moving one tile in the HelloWorld sample, push prepares the commit in 869 ms instead of 1,093 ms. Writing the result back takes about 50 ms longer, so push does about 170 ms less local work.
23
+ - After an edit, `neo status` and `neo push` parse the `Root.neo` envelope once instead of five times, and parse each root value twice instead of four times. After moving one tile in the HelloWorld sample, preparing the push takes about 45 ms less.
24
+ - When `neo push` and `neo pull` write project source, they index the project's values once instead of once per kind of value. After moving one tile in the HelloWorld sample, push writes the result back about 40 ms faster.
25
+ - When no project file changed, `neo push` reads your stored credential once instead of twice. On macOS each read runs a keychain lookup, and skipping the second one saves about 21 ms per push in the HelloWorld sample.
26
+ - The CLI writes `.neo/state.json` as compact JSON instead of indented JSON. HelloWorld's state shrinks from 3.3 MB to 1.9 MB, and after the server commits, push writes the result back about 24 ms faster.
27
+ - `neo push` sends a commit of up to 1 MiB that stages no files to a Convex action instead of `POST /schema-commit`. Every HTTP route on the server loads Better Auth first, and the action doesn't. After a one-line change to the HelloWorld sample, sending the commit takes 447 ms instead of 684 ms. Earlier CLI versions still push, but the server now applies all their commits in its Node runtime, which took 1 to 3 s on the server for the same change.
28
+
3
29
  ## [0.59.3] - 2026-09-26
4
30
 
5
31
  - `neo doctor` keeps lookup references separate from owned values when auditing storage partitions. A world object referencing an entry in the main partition no longer reports that entry as malformed. Nested lookup entries in lists and dictionaries follow the same rule.