@realitycollective/iwsdk-environment 0.1.0-preview.3 → 0.1.1-preview.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 +17 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
Change log for the Reality Collective WebXR Environment Extensions packages. All
|
|
3
|
+
Change log for the Reality Collective WebXR Environment Extensions packages. All five packages are versioned and released together; the version below is the one carried by the `v<version>` release tag.
|
|
4
4
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Preview builds are not listed separately. The entry for a version accumulates while its previews are published, and is dated when that version is released.
|
|
6
6
|
|
|
7
|
-
## [0.1.
|
|
7
|
+
## [0.1.1]
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `@realitycollective/webxr-environment` - `environmentPortContractCases()`, `audioPortContractCases()` and `worldSensingPortContractCases()`, the shared `EnvironmentPort` / `AudioPort` / `WorldSensingPort` conformance suites, shipped as data rather than as tests, in the style of `webxr-uiextensions`'s `contract-cases.ts`. Each case is a `name` plus a `run(subject)` that throws a plain `Error` on failure, so an adapter runs it in its own test runner. They check what the core relies on and nothing more: every sky, fog, ambient, key and IBL variant applies without throwing; a port that senses answers a request through `observe` with a report naming a known feature and state; a one-shot voice's `ended` runs exactly once and a stopped voice is never driven to end afterwards; a world-sensing port's `createAnchor` never rejects and its `stopHitTest` / `removeAnchor` tolerate an unknown id. All four platforms - `threejs-`, `iwsdk-`, `xrblocks-environment` and `native-environment` - now run all three suites, and all four already passed every case. `contract-cases.ts` is inside the core's 100% coverage gate.
|
|
12
|
+
- `@realitycollective/native-environment` - the native host adapter, for an app that embeds a JavaScript engine such as Hermes over OpenXR or CompositorServices, owns rendering and audio itself, and installs `globalThis.__rcHost`. `NativeEnvironmentPort`, `NativeAudioPort` and `NativeWorldSensingPort` forward every slot, request and callback to the host's `environment`, `audio` and `sensing` slices as plain data, deciding nothing: a `src` string is resolved and decoded entirely by the native app, and depth occlusion, light estimation and world sensing are grown on the port only when the host implements them, so the director's own "the port does not have this" reporting is what an app sees. Audio keeps every voice's `ended` callback in JavaScript, keyed by `voiceId`, because a callback the core hands to a port cannot itself cross this boundary. `environment` and `audio` are required by the port that reads them and throw, naming the slice, when neither an injected host nor `globalThis.__rcHost` has one; `sensing` is genuinely optional and is instead reported `unsupported`.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- `@realitycollective/threejs-environment` - a gradient sky never changed after its first frame. Choosing `night` in the playground moved the lights and the fog while the sky stayed at noon; only a solid sky, which is a plain `Color`, followed a transition. `applySky` refilled the pixels of the one `DataTexture` and set `needsUpdate`, but three.js converts an equirectangular `scene.background` into a cube map once per texture object and keeps that cube map until the texture is disposed, so the 2D texture was re-uploaded and the sky on screen never re-derived. The port now builds a fresh texture on every gradient change, swaps it in and disposes the previous one, which is what drops the cached cube map; the texture is 2 by 64 texels, so the extra upload during a transition is negligible and the cube conversion costs the same either way. The test that pinned the old in-place refill now pins the swap and the disposal instead. `@realitycollective/xrblocks-environment` inherits the fix. Found while photographing the live playground for the Reality Collective site, on a real GPU as well as in software rendering.
|
|
17
|
+
- `@realitycollective/threejs-environment` - `XrInputSourceLike` is exported. It was the element type of `XrSessionLike.inputSources` but not exported itself, so a consumer typing a fake session for a test had nothing to name, and TypeDoc flagged it as referenced but undocumented.
|
|
18
|
+
- CI - the staging deploy published under `--branch=pr-<number>` while the `-test` Pages project's production branch is `staging`, so only `pr-<n>.webxr-environment-test.pages.dev` aliases were ever created and the project's root URL was a 404. It now deploys as `staging` on every pull request and on every push to `development`, so `webxr-environment-test.pages.dev` serves the newest preview build, the same arrangement WebXR-UIExtensions already had.
|
|
19
|
+
|
|
20
|
+
## [0.1.0] - 2026-09-17
|
|
8
21
|
|
|
9
22
|
### Added
|
|
10
23
|
|
|
@@ -49,4 +62,5 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
|
|
|
49
62
|
- **A body solver was considered and declined.** No host exposes a body, so it fails the boundary test this repository is built on; see [`docs/BOUNDARY.md`](docs/BOUNDARY.md). Planes, meshes, anchors and hit test are real platform sensing but feed placement and interaction rather than the environment, and are recorded there as a separate component rather than as slots of `EnvironmentSpec`.
|
|
50
63
|
- Every slot the environment describes is a PLATFORM facility each host exposes differently - `scene.background` and `Fog` on three.js, `DomeGradient` and `AmbientLightComponent` on IWSDK. CONTENT is the app's: no geometry is created by either adapter, and the stock presets are examples to copy rather than art direction. See [`docs/BOUNDARY.md`](docs/BOUNDARY.md) for the boundary in full, and [`docs/UPSTREAM_ENHANCEMENTS.md`](docs/UPSTREAM_ENHANCEMENTS.md) for the gaps that belong to the other packages rather than this one.
|
|
51
64
|
|
|
52
|
-
[0.1.
|
|
65
|
+
[0.1.1]: https://github.com/realitycollective/WebXR-Environment/compare/v0.1.0...development
|
|
66
|
+
[0.1.0]: https://github.com/realitycollective/WebXR-Environment/releases/tag/v0.1.0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@realitycollective/iwsdk-environment",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1-preview.0",
|
|
4
4
|
"description": "Meta IWSDK adapter for the Reality Collective WebXR Environment Extensions - drives IWSDK's own DomeGradient, light components, transform entities and AudioSource machinery from the engine-free @realitycollective/webxr-environment core, with a one-call registerEnvironment(world) setup and an ECS system that ticks the directors. Re-exports the core.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"realitycollective",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@realitycollective/webxr-environment": "^0.1.
|
|
38
|
+
"@realitycollective/webxr-environment": "^0.1.1-preview.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@iwsdk/core": ">=0.5.0 <0.6.0",
|