@neocompose/cli 0.60.0 → 0.60.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 CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.60.1] - 2026-09-28
4
+
5
+ - When push checks which classes a variant reference or a class-typed default may select, it finds the class's subclasses from one parent-to-children index. Before, it rescanned every class once per level of inheritance.
6
+
3
7
  ## [0.60.0] - 2026-09-27
4
8
 
5
9
  - **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.
package/dist/neo.mjs CHANGED
@@ -49516,17 +49516,25 @@ function resolveMemberWithIndex(member, memberIndex) {
49516
49516
  return Object.freeze(merged);
49517
49517
  }
49518
49518
  function descendantClassIds(classId, allClasses) {
49519
+ const childrenByClassId = /* @__PURE__ */ new Map();
49520
+ for (const schemaClass2 of allClasses) {
49521
+ if (!schemaClass2.extendsClassId) continue;
49522
+ const children = childrenByClassId.get(schemaClass2.extendsClassId);
49523
+ if (children === void 0) {
49524
+ childrenByClassId.set(schemaClass2.extendsClassId, [schemaClass2]);
49525
+ } else children.push(schemaClass2);
49526
+ }
49527
+ return descendantClassIdsInChildIndex(classId, childrenByClassId);
49528
+ }
49529
+ function descendantClassIdsInChildIndex(classId, childrenByClassId) {
49519
49530
  const result = /* @__PURE__ */ new Set();
49520
- let added = true;
49521
- while (added) {
49522
- added = false;
49523
- for (const t of allClasses) {
49524
- if (t.id === classId) continue;
49525
- if (result.has(t.id)) continue;
49526
- if (t.extendsClassId === classId || t.extendsClassId && result.has(t.extendsClassId)) {
49527
- result.add(t.id);
49528
- added = true;
49529
- }
49531
+ const pending = [classId];
49532
+ for (let id2 = pending.pop(); id2 !== void 0; id2 = pending.pop()) {
49533
+ for (const child of childrenByClassId.get(id2) ?? []) {
49534
+ if (child.id === classId) continue;
49535
+ if (result.has(child.id)) continue;
49536
+ result.add(child.id);
49537
+ pending.push(child.id);
49530
49538
  }
49531
49539
  }
49532
49540
  return result;
@@ -142443,7 +142451,7 @@ var init_registry2 = __esm({
142443
142451
  "schema-contract/registry.mjs"() {
142444
142452
  "use strict";
142445
142453
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
142446
- cliVersion: "0.60.0",
142454
+ cliVersion: "0.60.1",
142447
142455
  projectFileUploadBatchSize: 32,
142448
142456
  documentRecords: {
142449
142457
  member: {
@@ -151095,7 +151103,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
151095
151103
  async function main() {
151096
151104
  const args = parseArgs(process.argv.slice(2));
151097
151105
  if (args.command === "--version") {
151098
- console.log("0.60.0");
151106
+ console.log("0.60.1");
151099
151107
  return;
151100
151108
  }
151101
151109
  if (args.command === null || args.command === "help" || args.command === "--help" || args.command === "-h") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neocompose/cli",
3
- "version": "0.60.0",
3
+ "version": "0.60.1",
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.60.0 -->
12
+ <!-- reviewed-through-cli: 0.60.1 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -101,7 +101,7 @@ wrappers.
101
101
  The marker near the top of `SKILL.md` must exactly match the package version:
102
102
 
103
103
  ```html
104
- <!-- reviewed-through-cli: 0.60.0 -->
104
+ <!-- reviewed-through-cli: 0.60.1 -->
105
105
  ```
106
106
 
107
107
  The quoted version above is checked too, so this instruction cannot go stale