altium-toolkit 1.3.0 → 1.4.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/README.md CHANGED
@@ -39,6 +39,12 @@ missing-image placeholder for those unusable payloads without changing the
39
39
  frozen native parser or healthy embedded images. See the
40
40
  [1.3.0 release notes](docs/release-notes-v1.3.0.md).
41
41
 
42
+ Version 1.4.0 adopts newly decoded CircuitJSON and native extension graphs at
43
+ the shared validation boundary. Their ordinary nodes retain identity and are
44
+ deeply frozen without a redundant defensive graph copy. Parser parameters,
45
+ document envelopes, extension fields, and return shapes remain unchanged. See
46
+ the [1.4.0 release notes](docs/release-notes-v1.4.0.md).
47
+
42
48
  Default `extensions: 'canonical'` keeps compact Altium summary metadata.
43
49
  Request the complete native read model with `extensions: 'full'`,
44
50
  `preserveRaw: true`, or `extensions: ['altium.native-model']`. Project batches
@@ -206,6 +212,7 @@ const legacyCircuitJson = AltiumParser.parseArrayBuffer(file.name, arrayBuffer)
206
212
  - [API](docs/api.md)
207
213
  - [Capabilities](docs/capabilities.md)
208
214
  - [Migration from 1.1.41](docs/migration.md)
215
+ - [1.4.0 release notes](docs/release-notes-v1.4.0.md)
209
216
  - [1.3.0 release notes](docs/release-notes-v1.3.0.md)
210
217
  - [1.2.1 release notes](docs/release-notes-v1.2.1.md)
211
218
  - [1.2.0 release notes](docs/release-notes-v1.2.0.md)
package/docs/api.md CHANGED
@@ -111,6 +111,13 @@ metadata. The complete recovered native read model remains available through
111
111
  `document.model` and do not require the full native extension.
112
112
  `extensions: 'none'` or `extensions: []` returns exactly `extensions: {}`.
113
113
 
114
+ The convergence builder transfers its newly decoded ordinary CircuitJSON and
115
+ native extension graphs into the shared owned-document validator. Eligible
116
+ graph nodes retain identity and are deeply frozen in place, avoiding a second
117
+ full defensive copy. This is an internal ownership optimization after source
118
+ decoding: raw caller data remains untrusted, and every public parser parameter,
119
+ validation rule, document field, and return shape is unchanged.
120
+
114
121
  Canonical `.SchDoc` models preserve native drawing order, ownership, geometry,
115
122
  and style as shared `schematic_rect`, `schematic_circle`, `schematic_arc`,
116
123
  `schematic_path`, `schematic_text`, `schematic_table`, and
@@ -0,0 +1,37 @@
1
+ # altium-toolkit 1.4.0
2
+
3
+ Version 1.4.0 adopts parser-owned CircuitJSON and retained native extension
4
+ graphs through the CircuitJSON Toolkit 1.4 ownership boundary. It removes a
5
+ redundant defensive graph copy from successful document construction without
6
+ weakening validation or immutability.
7
+
8
+ ## Owned convergence graphs
9
+
10
+ - The Altium convergence builder uses
11
+ `DocumentResult.createValidatedOwned(fields, runtime?)` for graphs it has
12
+ just constructed and exclusively owns.
13
+ - Ordinary CircuitJSON model and native extension nodes retain their identities
14
+ and are deeply frozen in place. Binary properties continue through the
15
+ shared defensive binary boundary.
16
+ - Raw input remains untrusted and is decoded and validated normally. The owned
17
+ path is applied only after the format parser has produced a new standard
18
+ local graph.
19
+
20
+ ## API and compatibility
21
+
22
+ - Parser input, options, progress, cancellation, worker, and project contracts
23
+ are unchanged.
24
+ - Successful parsing returns the same `ecad-toolkit.document.v1` envelope with
25
+ the same `model`, `source`, `extensions`, `assets`, `diagnostics`, and
26
+ `statistics` fields.
27
+ - Canonical, metadata, full native-model, and empty extension selections retain
28
+ their existing behavior and return shapes.
29
+ - No class, method, parameter, package subpath, native extension, or renderer
30
+ behavior is removed or renamed.
31
+
32
+ ## Performance verification
33
+
34
+ The shared ownership regressions verify retained identity, deep freeze,
35
+ bounded extension sealing, mutation isolation, binary protection, and direct
36
+ and worker result parity. The Altium parser and packed cross-toolkit suites
37
+ continue to validate the public envelope and renderer contracts.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "altium-toolkit",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Altium document parsing and non-interactive rendering utilities",
5
5
  "keywords": [
6
6
  "altium",
@@ -67,7 +67,7 @@
67
67
  "check:features": "node scripts/check-feature-preservation.mjs"
68
68
  },
69
69
  "dependencies": {
70
- "circuitjson-toolkit": "^1.2.0",
70
+ "circuitjson-toolkit": "^1.4.0",
71
71
  "fflate": "^0.8.2"
72
72
  },
73
73
  "devDependencies": {
@@ -57,7 +57,7 @@ export class AltiumDocumentBuilder {
57
57
  normalized.options.retainSource === 'reference'
58
58
  ? { sourceReference: normalized.sourceReference }
59
59
  : {}
60
- return DocumentResult.createValidated(
60
+ return DocumentResult.createValidatedOwned(
61
61
  {
62
62
  model,
63
63
  source: {