@neocompose/cli 0.67.1 → 0.67.2
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,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.67.2] - 2026-10-04
|
|
4
|
+
|
|
5
|
+
- `neo pull --force` reads the workspace layout against the server's records instead of the baseline it is about to replace. Previously a baseline pulled before 0.67.0 failed with "Cannot recover local initializer placement before reset" in any workspace with local values, so the `--force` remedy 0.67.1 suggests could not run.
|
|
6
|
+
- Pull writes `float` setting bounds as the shortest decimal that reads back as the stored float, so `@settings(max: 23.99)` stays `23.99`. Previously it wrote `23.989999771118164`.
|
|
7
|
+
|
|
3
8
|
## [0.67.1] - 2026-10-04
|
|
4
9
|
|
|
5
10
|
- Pull adopts records the server only recompiled into `.neo/state.json` before it reads local sources, even when the same pull also merges authored changes. Previously one authored change anywhere in the pull sent every recompiled record through the merge, which read the stale baseline and failed.
|
package/dist/neo.mjs
CHANGED
|
@@ -30114,7 +30114,7 @@ var init_registry = __esm({
|
|
|
30114
30114
|
"../packages/manifest/schema-contract/registry.mjs"() {
|
|
30115
30115
|
"use strict";
|
|
30116
30116
|
PROJECT_SCHEMA_CONTRACT = Object.freeze({
|
|
30117
|
-
cliVersion: "0.67.
|
|
30117
|
+
cliVersion: "0.67.2",
|
|
30118
30118
|
projectFileUploadBatchSize: 32,
|
|
30119
30119
|
documentRecords: {
|
|
30120
30120
|
member: {
|
|
@@ -52644,14 +52644,17 @@ function renderExtendsGenericBindings(context, schemaClass2, base) {
|
|
|
52644
52644
|
});
|
|
52645
52645
|
return `<${argumentsValue.join(", ")}>`;
|
|
52646
52646
|
}
|
|
52647
|
+
function settingsBound(value) {
|
|
52648
|
+
return typeof value === "number" ? formatNeoNumber(value) : value;
|
|
52649
|
+
}
|
|
52647
52650
|
function memberSettings(context, member) {
|
|
52648
52651
|
const settings = [];
|
|
52649
52652
|
if (member.kind === "string") {
|
|
52650
52653
|
if (!member.localizable) settings.push("format: .Plain");
|
|
52651
52654
|
if (member.searchKey) settings.push("searchBy: .MemberKey");
|
|
52652
52655
|
} else if (member.kind === "int" || member.kind === "float" || member.kind === "decimal") {
|
|
52653
|
-
if (member.min !== null) settings.push(`min: ${member.min}`);
|
|
52654
|
-
if (member.max !== null) settings.push(`max: ${member.max}`);
|
|
52656
|
+
if (member.min !== null) settings.push(`min: ${settingsBound(member.min)}`);
|
|
52657
|
+
if (member.max !== null) settings.push(`max: ${settingsBound(member.max)}`);
|
|
52655
52658
|
if (member.kind !== "int" && member.decimalPoints !== null) {
|
|
52656
52659
|
settings.push(`decimalPoints: ${member.decimalPoints}`);
|
|
52657
52660
|
}
|
|
@@ -131368,9 +131371,25 @@ function workspaceBinaryPathsV4(workspace, local) {
|
|
|
131368
131371
|
for (const file of local ?? []) paths.set(file.fileId, file.path);
|
|
131369
131372
|
return paths;
|
|
131370
131373
|
}
|
|
131371
|
-
function readWorkspaceLayoutStatusV4(workspace) {
|
|
131374
|
+
function readWorkspaceLayoutStatusV4(workspace, document) {
|
|
131375
|
+
const records2 = {};
|
|
131376
|
+
for (const [key, server] of document.records) {
|
|
131377
|
+
if (server.deleted) continue;
|
|
131378
|
+
const previous = workspace.state.records[key];
|
|
131379
|
+
records2[key] = {
|
|
131380
|
+
recordKind: server.recordKind,
|
|
131381
|
+
recordId: server.recordId,
|
|
131382
|
+
contentHash: server.contentHash,
|
|
131383
|
+
data: server.data,
|
|
131384
|
+
...previous?.file === void 0 ? {} : { file: previous.file },
|
|
131385
|
+
...previous?.projectBinary === void 0 ? {} : { projectBinary: previous.projectBinary }
|
|
131386
|
+
};
|
|
131387
|
+
}
|
|
131372
131388
|
try {
|
|
131373
|
-
const status = computeWorkspaceStatus2(
|
|
131389
|
+
const status = computeWorkspaceStatus2({
|
|
131390
|
+
...workspace,
|
|
131391
|
+
state: { ...workspace.state, records: records2 }
|
|
131392
|
+
});
|
|
131374
131393
|
const failure = status.parseErrors.find(isBlockingSchemaSourceError);
|
|
131375
131394
|
if (failure !== void 0) throw failure;
|
|
131376
131395
|
return status;
|
|
@@ -131382,8 +131401,8 @@ function readWorkspaceLayoutStatusV4(workspace) {
|
|
|
131382
131401
|
for (const path of listProjectSourceFilesV4(workspace.root)) {
|
|
131383
131402
|
const content = readFileSync9(path, "utf8");
|
|
131384
131403
|
if (neoProjectSourceKind(path, content) !== "definition") continue;
|
|
131385
|
-
const
|
|
131386
|
-
if (
|
|
131404
|
+
const document2 = parseNeoProjectSource(content, "definition", path);
|
|
131405
|
+
if (document2.declarations.some(
|
|
131387
131406
|
(declaration) => declaration.kind === "global" && isLocalValueGlobal(declaration)
|
|
131388
131407
|
)) {
|
|
131389
131408
|
throw new Error(
|
|
@@ -137771,7 +137790,7 @@ import { dirname as dirname8, join as join13, relative as relative7, sep as sep7
|
|
|
137771
137790
|
function prepareWorkspaceResetV4(workspace, document, options = {}) {
|
|
137772
137791
|
const emissionRecords = options.regenerateSourceNames ? regenerateDialogueSourceNamesV4(document.records) : document.records;
|
|
137773
137792
|
const layoutWorkspace = workspaceForSourceLayoutV4(workspace, document);
|
|
137774
|
-
const status = listProjectSourceFilesV4(workspace.root).length === 0 ? null : readWorkspaceLayoutStatusV4(layoutWorkspace);
|
|
137793
|
+
const status = listProjectSourceFilesV4(workspace.root).length === 0 ? null : readWorkspaceLayoutStatusV4(layoutWorkspace, document);
|
|
137775
137794
|
const localValues = status?.localValues ?? workspace.state.localValues;
|
|
137776
137795
|
const emitted = emitProjectDocumentFilesV4(emissionRecords, {
|
|
137777
137796
|
localValues,
|
|
@@ -138343,7 +138362,7 @@ async function finishFormat4Pull(args) {
|
|
|
138343
138362
|
for (const [key, record6] of localStatus?.reconstructed ?? []) {
|
|
138344
138363
|
if (record6.file != null) recordFiles.set(key, record6.file);
|
|
138345
138364
|
}
|
|
138346
|
-
const layoutStatus = localStatus ?? (destructive ? readWorkspaceLayoutStatusV4(layoutWorkspace) : null);
|
|
138365
|
+
const layoutStatus = localStatus ?? (destructive ? readWorkspaceLayoutStatusV4(layoutWorkspace, document) : null);
|
|
138347
138366
|
const localValues = layoutStatus?.localValues ?? workspace.state.localValues;
|
|
138348
138367
|
const binaryPaths = workspaceBinaryPathsV4(
|
|
138349
138368
|
workspace,
|
|
@@ -156833,7 +156852,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
|
|
|
156833
156852
|
async function main() {
|
|
156834
156853
|
const args = parseArgs(process.argv.slice(2));
|
|
156835
156854
|
if (args.command === "--version") {
|
|
156836
|
-
console.log("0.67.
|
|
156855
|
+
console.log("0.67.2");
|
|
156837
156856
|
return;
|
|
156838
156857
|
}
|
|
156839
156858
|
if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
|
package/package.json
CHANGED
|
@@ -110,7 +110,7 @@ wrappers.
|
|
|
110
110
|
The marker near the top of `SKILL.md` must exactly match the package version:
|
|
111
111
|
|
|
112
112
|
```html
|
|
113
|
-
<!-- reviewed-through-cli: 0.67.
|
|
113
|
+
<!-- reviewed-through-cli: 0.67.2 -->
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
The quoted version above is checked too, so this instruction cannot go stale
|