altium-toolkit 1.4.16 → 1.4.17

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/docs/api.md CHANGED
@@ -552,8 +552,18 @@ ids, layer roles, cutouts, and pad/via drill render state (`open`, `covered`,
552
552
  `PcbSvgRenderer.renderLayerSvgs()` uses the same semantic sidecar shape with
553
553
  `view.kind: 'layer'` and a layer-specific `layerSet`.
554
554
 
555
+ Native PCB layer summaries collect source layer keys without constructing hit-test
556
+ geometry. Interaction indexes resolve component ownership once per build, and
557
+ hit tests normalize visibility filters once per query. These preparations are
558
+ scoped to each invocation so edits to documents and filters remain visible.
559
+
555
560
  ## 3D Scene Data
556
561
 
562
+ Copper scene detail excludes numeric non-copper region kinds (`KIND=1` polygon
563
+ cutouts, outlines, and cavities) as well as explicit clearance flags. Authored
564
+ region arcs carry a signed `sweepAngle` in normalized coordinates, preserving
565
+ angle wrapping, major arcs, and traversal from either endpoint.
566
+
557
567
  ```js
558
568
  import {
559
569
  PcbScene3dBuilder,
@@ -582,6 +592,13 @@ import {
582
592
  The library intentionally does not create Three.js objects, canvases, controls,
583
593
  or event listeners.
584
594
 
595
+ Native Altium scene construction indexes pad ownership once per build and
596
+ prepares drilled-pad anchor candidates only when owner recovery needs them.
597
+ Placement repair searches nearby authored-body positions before comparing
598
+ identity metadata. These indexes preserve mounted-surface pad preference and
599
+ source-order ties, and are rebuilt for every invocation so later document
600
+ edits are visible.
601
+
585
602
  ## Read-only CLI Examples
586
603
 
587
604
  The `examples/` directory includes small Node.js scripts for common
package/docs/migration.md CHANGED
@@ -6,9 +6,19 @@ SPDX-License-Identifier: CC-BY-SA-4.0
6
6
  # Migration from 1.1.41 to 1.2.0
7
7
 
8
8
  Version 1.2.0 adds the canonical ECAD toolkit API. Existing Altium
9
- exports are retained under `altium-toolkit/extensions`; the native
10
- `src/core` and `src/ui` implementations remain byte-identical to the
11
- pinned 1.1.41 source tree.
9
+ exports are retained under `altium-toolkit/extensions`.
10
+
11
+ Starting with 1.4.17, native implementations and assets are maintained:
12
+ reviewed bug fixes and performance improvements may change their source and
13
+ corrected behavior. Historical export signatures and public asset
14
+ entrypoints and targets remain checked. The immutable 1.1.41 source tree and manifest
15
+ remain provenance evidence, not a claim of current byte equality.
16
+
17
+ The release gate retains every historical implementation path and
18
+ compares every packed source file against a snapshot of the tested
19
+ checkout, including new helpers and workers. Public contract and
20
+ synthetic regression tests validate maintained behavior. See
21
+ [testing](testing.md) for the complete release checks.
12
22
 
13
23
  The paged appendix maps every frozen export, static member, prototype
14
24
  member, public asset, and the native implementation tree:
package/docs/testing.md CHANGED
@@ -11,7 +11,8 @@ streams. Do not add native customer files or provider-derived raw fixtures.
11
11
  When exercising source lookup, inject a fake fetcher/client and assert emitted
12
12
  entries, progress events, checkpoints, diagnostics, and OLE round trips.
13
13
 
14
- Run the complete suite:
14
+ Run the complete suite from a Git checkout containing the historical release
15
+ tags (`git fetch --tags` if needed):
15
16
 
16
17
  ```bash
17
18
  npm test
@@ -31,12 +32,23 @@ The strict feature check creates an isolated packed install and packs the
31
32
  currently installed CircuitJSON dependency beside the Altium candidate. This
32
33
  keeps the isolated contract gate aligned with the dependency declared by the
33
34
  active release instead of a stale version-specific fixture. It verifies all
34
- historical native source and extension contracts, checks the exact
35
- package/subpath layout, and runs the shared observable toolkit contract against
36
- the packed package.
35
+ historical baseline provenance, extension signatures, and public asset paths.
36
+ Native implementations and assets may evolve through tested fixes starting with 1.4.17; historical
37
+ source and asset hashes are never rewritten to approve a candidate. The gate requires
38
+ every historical implementation path, captures all current `src/` files before
39
+ packing, and compares exact file inventories and bytes before importing the
40
+ packed candidate. It rejects changed, missing, additional, or symlinked source,
41
+ including new helpers. It also checks the exact package/subpath layout and runs
42
+ the shared observable toolkit contract against the packed package. A final
43
+ source comparison catches changes made during validation.
37
44
 
38
45
  The performance check is bound to the immutable 1.1.41 commit, source tree,
39
- and native-source manifest. It measures legacy and canonical projections of
46
+ and native-source manifest. It verifies the complete local dependency graph of
47
+ the measured historical parser and schematic renderer, checking each module's
48
+ bytes before following its imports and re-exports. Computed dynamic imports
49
+ are rejected because their full dependency graph cannot be verified statically.
50
+ Source outside that baseline graph can evolve without changing the historical
51
+ manifest. It measures legacy and canonical projections of
40
52
  the same synthetic inputs. Default canonical parsing must stay inside both a
41
53
  relative budget and a small envelope-construction allowance scaled by actual
42
54
  project document count. Direct async execution, metadata/full asset modes, and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "altium-toolkit",
3
- "version": "1.4.16",
3
+ "version": "1.4.17",
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.4.2",
70
+ "circuitjson-toolkit": "^1.4.3",
71
71
  "fflate": "^0.8.2"
72
72
  },
73
73
  "devDependencies": {