@neocompose/cli 0.48.1 → 0.48.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,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.48.2] - 2026-09-10
4
+
5
+ - Emit class member defaults with contextual `new()` when they construct the declared type, while keeping an explicit concrete type for subclass defaults.
6
+
3
7
  ## [0.48.1] - 2026-09-10
4
8
 
5
9
  - Emit empty class member defaults as `new Type()` even when their backing value row is virtual. Required members now read as initialized, and adding a `new() { ... }` override preserves sparse storage.
package/dist/neo.mjs CHANGED
@@ -113680,9 +113680,7 @@ function emitMemberDefaultSourcesV4(records2, manifest) {
113680
113680
  member,
113681
113681
  { classId: defaultValue.classId ?? null, value: backed.body },
113682
113682
  visited,
113683
- (defaultValue.classId ?? member.classId) === member.classId && manifestMember?.kind === "class" && Object.values(manifestMember.classArguments).some(
113684
- (argument2) => argument2.kind === "generic"
113685
- ),
113683
+ (defaultValue.classId ?? member.classId) === member.classId && manifestMember?.kind === "class",
113686
113684
  environment
113687
113685
  );
113688
113686
  } else if (backed.kind === "list") {
@@ -131456,7 +131454,7 @@ var init_registry2 = __esm({
131456
131454
  "schema-contract/registry.mjs"() {
131457
131455
  "use strict";
131458
131456
  PROJECT_SCHEMA_CONTRACT = Object.freeze({
131459
- cliVersion: "0.48.1",
131457
+ cliVersion: "0.48.2",
131460
131458
  projectFileUploadBatchSize: 32,
131461
131459
  documentRecords: {
131462
131460
  member: {
@@ -138506,7 +138504,7 @@ There is no --keep-current: preserving current semantic state defines flatten.
138506
138504
  async function main() {
138507
138505
  const args = parseArgs(process.argv.slice(2));
138508
138506
  if (args.command === "--version") {
138509
- console.log("0.48.1");
138507
+ console.log("0.48.2");
138510
138508
  return;
138511
138509
  }
138512
138510
  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.48.1",
3
+ "version": "0.48.2",
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.48.1 -->
12
+ <!-- reviewed-through-cli: 0.48.2 -->
13
13
 
14
14
  # Neo Compose CLI
15
15
 
@@ -88,7 +88,7 @@ wrappers.
88
88
  The marker near the top of `SKILL.md` must exactly match the package version:
89
89
 
90
90
  ```html
91
- <!-- reviewed-through-cli: 0.48.1 -->
91
+ <!-- reviewed-through-cli: 0.48.2 -->
92
92
  ```
93
93
 
94
94
  The quoted version above is checked too, so this instruction cannot go stale
@@ -121,12 +121,14 @@ membership rules as member defaults.
121
121
 
122
122
  ## Defaults and localization
123
123
 
124
- A class member with an empty construction default emits `= new Type()` even
125
- when its value row is virtual. Edit that declaration with `new() { ... }` to
126
- change the shared default, or assign the member inside an instance initializer
127
- to override only that instance. Leaving the emitted construction unchanged
128
- creates no redundant value rows. A nullable member with no default remains bare;
129
- an explicit null default emits `= null`.
124
+ A class member whose default constructs its declared type emits a contextual
125
+ `= new()`, including populated defaults and defaults whose value row is
126
+ virtual. A default that constructs a subclass keeps the concrete type, such as
127
+ `Base Value = new Derived();`. Edit the declaration to change the shared
128
+ default, or assign the member inside an instance initializer to override only
129
+ that instance. Leaving the emitted construction unchanged creates no redundant
130
+ value rows. A nullable member with no default remains bare; an explicit null
131
+ default emits `= null`.
130
132
 
131
133
  Omitted members are virtual projections of the instance's recorded constructor
132
134
  or variant. Later edits to that source update every omitted member. Writing a