@displayxr/inline3d 1.31.0 → 1.32.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/CHANGELOG.md CHANGED
@@ -5,6 +5,55 @@ entry points (`.`, `./three`) are frozen for 1.x, while the **scene subpaths** (
5
5
  `./splat`, `./model`) are a preview tier whose options may change in any release. Entries below say
6
6
  which tier they touch, because that is what tells you whether an upgrade can move your pixels.
7
7
 
8
+ ## 1.32.0 — 2026-10-06
9
+
10
+ Touches the **core** additively (one new handle method, two new exports) and the **preview tier**
11
+ (`./splat`, PlayCanvas backend).
12
+
13
+
14
+ ### Hosted signalling server (`signaling/`, not part of the npm package)
15
+
16
+ - **`welcome` is now always the first message a joined peer receives.** With a real TURN key the
17
+ server awaits a credential mint between reserving a peer's slot and welcoming it; another peer
18
+ joining or signalling in that window used to reach the first peer *before* its own welcome, and
19
+ that welcome's `peers` then omitted the newcomer. Messages addressed to a not-yet-welcomed peer
20
+ are now held and flushed behind its welcome, and the roster is read when the welcome is sent. The
21
+ SDK was already tolerant of the old order (its transport replays early `peer-joined`s); raw
22
+ `dxr-signal/1` clients were not. No protocol field changed.
23
+
24
+ ### Core — `handle.displayMetrics()`
25
+
26
+ - **`handle.displayMetrics()`** → `{ canvasSizeM, metersPerCssPx, displaySizeM, nominalViewerM,
27
+ eyeSeparationM, source }`: the tile in physical units, derived from `getDisplayInfo()` (panel
28
+ pitch × `devicePixelRatio` × the canvas's CSS box). Never rejects. Anything the display can't
29
+ report comes from `DISPLAY_METRICS_DEFAULTS` and is flagged in `source`. **Eye separation is
30
+ always the 63 mm default**, because no browser or runtime surface reports one. Also exported as
31
+ the pure `displayMetricsFrom(info, rect, dpr)`.
32
+
33
+ ### `./splat` (PlayCanvas backend)
34
+
35
+ - **`handle.setStereo({ ipdFactor, parallaxFactor })`**: live stereo strength. It re-declares the
36
+ rig in force on the next frame with no cut (pose, focus and framing kept). Keys merge, a `null`
37
+ key returns to the asset's own value, and `setStereo(null)` clears both. Sticky across
38
+ `setSource` / `setRig`. `handle.rig.stereoDefault` holds the asset's own values.
39
+ docs/playcanvas-adapter.md §setStereo.
40
+ - **`handle.setDepthEnvelope({ maxFrontM, edgeM, bandM, stage, rects, viewerM, canvasSizeM })`**:
41
+ the frame envelope. Content may come out of the glass only well inside the frame and away from 2D
42
+ elements. Gaussians past the cap slide back along their own rays from the declared camera rig,
43
+ so the picture, the sort order and the stereo rule all hold. It is tile-wide and keyed on the
44
+ live declared rig (convergence, lens, `ipdFactor × metersToVirtual`), so every asset is covered
45
+ from its first frame, through crossfades and through `setStereo`, with no per-asset install.
46
+ Camera rigs only. docs/splat-effects.md §Depth envelope.
47
+ - `setStereo({ ipdScale, parallaxScale })`: the same scalars RELATIVE to each asset's own
48
+ (`rig.stereoDefault`), re-applied to every asset `setSource` brings in. Per scalar, the absolute
49
+ and relative keys are exclusive; the last one given wins.
50
+ - **`splatHandle.displayMetrics()`**: the core tile's `displayMetrics()`, on the splat handle.
51
+ - The deferred PlayCanvas handle (what `addSplat` returns before the engine module loads) now has
52
+ `setStereo`, `setDepthEnvelope` and `displayMetrics`. A call right after `addSplat` was
53
+ `not a function`. A test now pins this.
54
+ - `STAGE_ORDER` gains `'envelope'` (between `custom` and `cull`), so a page's custom effect runs
55
+ before the cap.
56
+
8
57
  ## 1.31.0 — 2026-10-05
9
58
 
10
59
  The 1.29 `./call` option spellings stay accepted (with their warning) for one more release; they go in 1.32.