@displayxr/inline3d 1.50.0 → 1.51.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 +15 -0
- package/README.md +3 -1
- package/call.d.ts +16 -0
- package/dist/call.js +6 -6
- package/docs/making-3d-look-right.md +14 -7
- package/docs/woven-canvas-rules.md +30 -1
- package/index.d.ts +4 -0
- package/js/call/share.js +90 -0
- package/js/camera/half-sbs.js +28 -2
- package/js/inline3d-call.js +1 -1
- package/js/inline3d-splat-playcanvas.js +10 -2
- package/llms.txt +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,21 @@ which tier they touch, because that is what tells you whether an upgrade can mov
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## 1.51.0 — 2026-11-08
|
|
11
|
+
|
|
12
|
+
### Added — `./call`: `openTabShare()`, share a browser tab in 3D
|
|
13
|
+
|
|
14
|
+
Opens the browser's tab picker and returns a track for `shareContent`. In a DisplayXR Browser with
|
|
15
|
+
stereo tab capture (1.9.4+), a picked tab comes back as a true side-by-side track, so receivers need
|
|
16
|
+
nothing new; a window, a screen or any other browser comes back flat. Needs
|
|
17
|
+
`MediaStreamTrackProcessor` for the stereo path.
|
|
18
|
+
|
|
19
|
+
### Fixed — `./splat` (`engine: 'playcanvas'`): no false "footprint fix SKIPPED" warning on PlayCanvas 2.23
|
|
20
|
+
|
|
21
|
+
Preview tier. PlayCanvas 2.23 fixed the side-by-side splat footprint upstream, so the SDK now
|
|
22
|
+
leaves that shader chunk untouched there instead of warning that splats will draw at half height.
|
|
23
|
+
2.22.3 is still patched as before, and remains the only version validated on a panel.
|
|
24
|
+
|
|
10
25
|
## 1.50.0 — 2026-11-04
|
|
11
26
|
|
|
12
27
|
### Fixed — `./camera`, `./call`: half-width side-by-side webcams keep their aspect ratio
|
package/README.md
CHANGED
|
@@ -69,7 +69,9 @@ The repo's splat sample (`samples/splat/`) renders with PlayCanvas and keeps `?e
|
|
|
69
69
|
its A/B switch.
|
|
70
70
|
Bundlers: the engine is reached through a named-import module (`js/inline3d-playcanvas-engine.js`,
|
|
71
71
|
so the unused ~40% of the engine tree-shakes away); its sort workers are Blob URLs (CSP
|
|
72
|
-
`worker-src blob:`), and esbuild needs `node:worker_threads` marked external.
|
|
72
|
+
`worker-src blob:`), and esbuild needs `node:worker_threads` marked external. Pin the engine to
|
|
73
|
+
exactly `playcanvas@2.22.3`, the version validated on a panel
|
|
74
|
+
([why](docs/playcanvas-adapter.md)).
|
|
73
75
|
|
|
74
76
|
**Splat effects (preview, `engine: 'playcanvas'`).** Shader effects on the splats themselves,
|
|
75
77
|
keyed on world position and time so both eyes agree: `addSplat(…, { reveal: 'inflate' | 'sweep' |
|
package/call.d.ts
CHANGED
|
@@ -420,6 +420,22 @@ export function watchShareableApps(cb: (apps: ShareableApp[]) => void, opts?: {
|
|
|
420
420
|
*/
|
|
421
421
|
export function openAppShare(deviceId: string, opts?: { width?: number; height?: number; frameRate?: number; mediaDevices?: MediaDevices }): Promise<AppShare>;
|
|
422
422
|
|
|
423
|
+
/** An opened tab share (`openTabShare`): pass `stream` (+ `descriptor`) to `shareContent`. The track is yours to stop. */
|
|
424
|
+
export interface TabShare {
|
|
425
|
+
stream: MediaStream;
|
|
426
|
+
track: MediaStreamTrack;
|
|
427
|
+
/** true: a side-by-side track. false: the user picked a window or screen, or the browser captures tabs flat. */
|
|
428
|
+
stereo: boolean;
|
|
429
|
+
descriptor: { kind: 'content'; format: CallFormat; width: number; height: number; convergence: { known: true; frac: number }; appName: null };
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/**
|
|
433
|
+
* Let the user pick a browser tab to share, in 3D where the browser can (the browser's picker is
|
|
434
|
+
* the consent). Comes back flat (`stereo: false`) for a window, a screen, or a browser without stereo
|
|
435
|
+
* tab capture. Cancelling rejects with `code: 'share-denied'`, anything else with `'share-failed'`.
|
|
436
|
+
*/
|
|
437
|
+
export function openTabShare(opts?: { width?: number; frameRate?: number; mediaDevices?: MediaDevices }): Promise<TabShare>;
|
|
438
|
+
|
|
423
439
|
/**
|
|
424
440
|
* `error` codes — fatal for a feature, never for the widget. `'camera-busy'` (held by another
|
|
425
441
|
* app: audio-only until `retryCamera()`), `'no-camera'`, `'permission-denied'`, `'unreachable'`
|