@neocompose/cli 0.37.0 → 0.38.1
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 +90 -0
- package/README.md +7 -2
- package/dist/neo.mjs +1982 -1304
- package/package.json +1 -1
- package/skills/neocompose-cli/SKILL.md +1 -1
- package/skills/neocompose-cli/references/cli-development.md +1 -1
- package/skills/neocompose-cli/references/commands-and-sync.md +10 -2
- package/skills/neocompose-cli/references/values-identities-and-references.md +13 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,95 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.38.1] - 2026-08-27
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- A stored construction from before the P75 collapse now converges to the
|
|
8
|
+
sparse shape on its next push. Such a row recorded every
|
|
9
|
+
constructor-settled member twice — once as creation data and once as a body
|
|
10
|
+
key — and re-lowering used to preserve that duplication forever. The
|
|
11
|
+
duplicate body keys are now dropped and the construction's provenance is
|
|
12
|
+
stamped explicitly. This is a one-time storage convergence with no change in
|
|
13
|
+
resolved values: each argument row is still named by the creation data that
|
|
14
|
+
already named it, so nothing is stranded, and the authored creation data is
|
|
15
|
+
untouched, so a converged push is not reported as an edit. Rows already in
|
|
16
|
+
the sparse shape are unaffected.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Lower an authored default echo on a fresh row to absence instead of a stored
|
|
21
|
+
override. Spelling a member's declared default verbatim in a new
|
|
22
|
+
initializer — a leaf equal to its declaration, or a bare class construction
|
|
23
|
+
whose members the declaration wholly settles — minted a pending row that
|
|
24
|
+
push verification then rejected as absent from the verified source manifest.
|
|
25
|
+
- Converge a stored inline member default toward the collapsed sparse shape
|
|
26
|
+
instead of re-minting its seed. A pre-collapse stored default that equals
|
|
27
|
+
its declaration reported `create 1 member value seed(s)` on every push of an
|
|
28
|
+
otherwise clean checkout.
|
|
29
|
+
- Keep a compiled delegate action when a re-lowered argument's source code is
|
|
30
|
+
unchanged. Re-lowering emitted the code-only shape over the stored compiled
|
|
31
|
+
closure, so an untouched delegate argument round-tripped as an edit and
|
|
32
|
+
evaluation lost its compiled action until the next server compile.
|
|
33
|
+
|
|
34
|
+
## [0.38.0] - 2026-08-26
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
- `neo doctor` audits unprojected value rows. A pulled base row that no emitted
|
|
39
|
+
file projects and that no other record names is read by `neo status` as
|
|
40
|
+
CLI-managed loose state, so no status run will ever mention it however it
|
|
41
|
+
diverges — the blind spot that made the P75 collapse's losses invisible. Each
|
|
42
|
+
orphan root is reported once, with the rows reachable only through it, and
|
|
43
|
+
`--json` carries them under the finding's `repair` entry. The Hello World
|
|
44
|
+
corpus reports 86 such rows.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- **Breaking:** Unity export schema version is now 28. A structured-leaf field
|
|
49
|
+
override travels under the `~partial` envelope key where it previously
|
|
50
|
+
travelled under `$partial`; that key is the only thing telling a field
|
|
51
|
+
override apart from a whole-leaf record, so an SDK at 27 would silently
|
|
52
|
+
mis-apply the override rather than refuse the export. Authored `new { … }`
|
|
53
|
+
source is unchanged, and stored bodies are rewritten server-side.
|
|
54
|
+
- Constructor arguments no longer emit `@id` pins. A named argument recovers
|
|
55
|
+
its row from the schema key its parameter settles, so the annotation was
|
|
56
|
+
machine identity written into hand-authored constructions — 125 of them in
|
|
57
|
+
the Neowyn corpus. A list entry, whose position recovers nothing, still
|
|
58
|
+
carries its identity.
|
|
59
|
+
- A warm no-op `neo status` on the Neowyn corpus drops from ~25-28s to ~3s:
|
|
60
|
+
resolver documents are memoized across expansions, inheritance indexes and
|
|
61
|
+
merged-schema memos are validated against the snapshot instead of rebuilt,
|
|
62
|
+
the animation validation gate is scoped to what changed, and the
|
|
63
|
+
construction-expression prober caches its negative answers. Phase timings now
|
|
64
|
+
account for the full runtime.
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
|
|
68
|
+
- Emit a stored row that derives its content from its member's declared default
|
|
69
|
+
as absence rather than as a bare constructor call. The spelled-out form
|
|
70
|
+
claimed a construction the author never wrote and reported every required
|
|
71
|
+
member the declaration settles as unsettled; a child whose content diverges
|
|
72
|
+
from the default still emits its sparse override.
|
|
73
|
+
- Emit an empty dictionary or ordered-list member default as `= {}` and `= []`.
|
|
74
|
+
Folding the empty container into no initializer at all made the declaration
|
|
75
|
+
read as required-and-unsettled, so every construction of the owning class
|
|
76
|
+
warned `unsettled-required-member`.
|
|
77
|
+
- Preserve the stored shape of a construction pulled from before the P75
|
|
78
|
+
collapse. Re-lowering rewrote a legacy root into the collapsed shape
|
|
79
|
+
unconditionally, so a pull of an untouched corpus reported those roots as
|
|
80
|
+
locally edited and pushing that clean pull was a storage rewrite nobody asked
|
|
81
|
+
for.
|
|
82
|
+
- Recover a constructor argument's structural path from a fully sparse root. A
|
|
83
|
+
row storing no body at all skipped the `constructorArgs` recovery, so the
|
|
84
|
+
next push minted a fresh subtree for an argument that had not changed.
|
|
85
|
+
- Resolve a stored row at a member with a row-backed default by replaying that
|
|
86
|
+
default. Reads replayed the bare constructor while the emitter replayed the
|
|
87
|
+
default, and the disagreement dropped overrides the corpus genuinely holds.
|
|
88
|
+
- Make `neo login`, `neo whoami`, and `neo logout` honor the current
|
|
89
|
+
workspace's `apiBaseUrl`. An explicit `--api` still wins, and commands run
|
|
90
|
+
outside a workspace keep the build default, so login no longer stores a
|
|
91
|
+
credential for a different origin than working-copy commands use.
|
|
92
|
+
|
|
3
93
|
## [0.37.0] - 2026-08-24
|
|
4
94
|
|
|
5
95
|
### Added
|
package/README.md
CHANGED
|
@@ -417,8 +417,8 @@ authorization boundary.
|
|
|
417
417
|
| Command | Purpose |
|
|
418
418
|
| ----------------------------------------------------- | ------------------------------------------------------------------------- |
|
|
419
419
|
| `--version` | Print the installed CLI package version. |
|
|
420
|
-
| `login`
|
|
421
|
-
| `whoami`
|
|
420
|
+
| `login [--api <url>]` | Authenticate the selected profile. |
|
|
421
|
+
| `whoami [--api <url>]` | Inspect the selected profile. |
|
|
422
422
|
| `logout [--api <url>]` | Delete the stored credential for one API origin and revoke its session. |
|
|
423
423
|
| `init --project <id> [--version <id>]` | Create a format-4 working copy and perform its first reset pull. |
|
|
424
424
|
| `doctor` | Validate format/compiler/editor/source/file contracts; no .NET discovery. |
|
|
@@ -445,6 +445,11 @@ tracked native source and `neo push`. Localization commands can mutate
|
|
|
445
445
|
authoritative localization records that `.neo` does not fully represent; run
|
|
446
446
|
`neo pull` immediately afterward before further source edits or push.
|
|
447
447
|
|
|
448
|
+
`login`, `whoami`, and `logout` use the current workspace's `apiBaseUrl` when
|
|
449
|
+
run beneath a `neo.json`. An explicit `--api` takes priority. Outside a
|
|
450
|
+
workspace, they use the CLI build's default API origin. Login prints the
|
|
451
|
+
selected origin before it requests or stores a credential.
|
|
452
|
+
|
|
448
453
|
Tokens use the OS credential store when available and a protected local file
|
|
449
454
|
only as fallback. CI can use `NEO_COMPOSE_TOKEN` or `--token-stdin`. The
|
|
450
455
|
editor profile cannot publish releases; server authorization remains the
|