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 +17 -0
- package/docs/migration.md +13 -3
- package/docs/testing.md +17 -5
- package/package.json +2 -2
- package/spec/feature-preservation.json +1 -1
- package/spec/library-scope.md +4 -3
- package/src/convergence/AltiumWorkerClient.mjs +3 -12
- package/src/ui/AltiumScene3dBodyPlacementIndex.mjs +95 -0
- package/src/ui/AltiumScene3dComponentBodyAdapter.mjs +12 -32
- package/src/ui/AltiumScene3dExternalPlacementAdapter.mjs +5 -61
- package/src/ui/PcbInteractionIndex.mjs +59 -78
- package/src/ui/PcbInteractionLayerModel.mjs +2 -32
- package/src/ui/PcbInteractionSourceMetadata.mjs +122 -0
- package/src/ui/PcbScene3dBuilder.mjs +38 -267
- package/src/ui/PcbScene3dComponentGeometryResolver.mjs +249 -0
- package/src/ui/PcbScene3dCopperRegionDetailBuilder.mjs +36 -2
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
|
|
10
|
-
|
|
11
|
-
|
|
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
|
|
35
|
-
|
|
36
|
-
|
|
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
|
|
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.
|
|
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.
|
|
70
|
+
"circuitjson-toolkit": "^1.4.3",
|
|
71
71
|
"fflate": "^0.8.2"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|