@plasius/gpu-demo-viewer 0.1.11 → 0.2.1

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
@@ -18,6 +18,34 @@ The format is based on Keep a Changelog and this project adheres to SemVer.
18
18
  - **Security**
19
19
  - (placeholder)
20
20
 
21
+ ## [0.2.1] - 2026-10-21
22
+
23
+ - **Added**
24
+ - Nine original tool and material studies in acquisition batch five, with source hashes, licences and released-renderer qualification evidence.
25
+
26
+ - **Changed**
27
+ - (placeholder)
28
+
29
+ - **Fixed**
30
+ - (placeholder)
31
+
32
+ - **Security**
33
+ - (placeholder)
34
+
35
+ ## [0.2.0] - 2026-10-21
36
+
37
+ - **Added**
38
+ - Furnished-interior and workshop composite studies in the local model workshop, with shared inspection controls and individual source credits.
39
+
40
+ - **Changed**
41
+ - (placeholder)
42
+
43
+ - **Fixed**
44
+ - (placeholder)
45
+
46
+ - **Security**
47
+ - Update the workshop's Vite development dependency to the patched 8.3.5 release.
48
+
21
49
  ## [0.1.11] - 2026-10-21
22
50
 
23
51
  - Add the nine qualified furniture/workshop source models and their integrity inventories, using released shared1.1.12 and renderer0.2.54; reconcile the prior 31-model production records.
@@ -278,3 +306,5 @@ The format is based on Keep a Changelog and this project adheres to SemVer.
278
306
  [0.1.9]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.9
279
307
  [0.1.10]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.10
280
308
  [0.1.11]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.1.11
309
+ [0.2.0]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.2.0
310
+ [0.2.1]: https://github.com/Plasius-LTD/gpu-demo-viewer/releases/tag/v0.2.1
package/README.md CHANGED
@@ -48,12 +48,25 @@ npm run models:download -- 1
48
48
  npm run models:dev -- --port 5292
49
49
  ```
50
50
 
51
+ Batch `5` adds tool and material studies: a rusted can, circuit board, hand
52
+ plane, tool chest, spade, hand drill, estoc, flight helmet and water bottle.
53
+
51
54
  Select one batch at a time. A catalogue record can still be held for acquisition,
52
55
  licensing or visual review; it is not a claim that the model is available locally
53
56
  or enabled on the production site. The download helper admits only configured
54
57
  resources and keeps two workers, a 100 MiB per-file limit and a 200 MiB batch limit.
55
58
  Source, creator, licence and review notes appear beside each model.
56
59
 
60
+ Two composite studies appear after the individual models in **Choose a model or
61
+ study**: a furnished interior and a workshop still life. They arrange four and
62
+ five credited originals under shared lighting and one camera. They are additional
63
+ views of existing models rather than additional source assets. Each
64
+ study lists its sources, licences and chosen dimensions; these are static review
65
+ arrangements, not verified physical-scale scenes. See the
66
+ [composite study guide](https://github.com/Plasius-LTD/gpu-demo-viewer/blob/main/docs/composite-model-studies.md).
67
+ Keep `?review=first-twelve` in the local URL and append
68
+ `&model=study-furnished-interior` or `&model=study-workshop` to bookmark a study.
69
+
57
70
  ## Camera and render quality
58
71
 
59
72
  Drag or use one finger to orbit; Shift/right-drag trucks, Alt-drag pans, and the
@@ -0,0 +1,21 @@
1
+ # ADR 0006: Consume shared composite inspection
2
+
3
+ Status: accepted. Date: 2026-10-21.
4
+ Feature: site#1170; Story site#2313; viewer Task #73.
5
+
6
+ The workshop needs to compare several originals under one camera and light.
7
+ Define small authored arrangements using installed catalogue keys, dimensions,
8
+ anchors and Y rotation. Expose them as composite studies alongside individual
9
+ model selection. Keep the count of acquired models distinct from the number of
10
+ views. Resolve complete integrity manifests through the existing fixture helper
11
+ and show every source's attribution and licence.
12
+
13
+ Consume `createSceneInspection` from the released shared package. Rendering,
14
+ loading, budgets, cancellation, camera and refinement remain shared-runtime
15
+ responsibilities. The viewer owns selection, composition data, credits and UI
16
+ lifecycle. Keep source overrides explicit and local to development; repeat
17
+ browser review with the registry package before release.
18
+
19
+ The existing scene-fidelity feature flag and route capability continue to govern
20
+ hosted product access. This local review does not add public-site navigation or
21
+ change the existing localhost review gate.
@@ -8,3 +8,4 @@
8
8
  - [ADR 0003: Reviewed model library](adr-0003-reviewed-model-library.md)
9
9
 
10
10
  - [ADR 0005: Build-time model acquisition subpath](adr-0005-build-time-model-acquisition-subpath.md)
11
+ - [ADR 0006: Composite study consumer](adr-0006-composite-study-consumer.md)
@@ -0,0 +1,291 @@
1
+ {
2
+ "date": "2026-10-21",
3
+ "renderer": "0.2.54",
4
+ "shared": "1.2.0",
5
+ "initialSourceOverrides": false,
6
+ "registryConsumptionVerified": true,
7
+ "mode": "fixed-progressive",
8
+ "productionVerified": false,
9
+ "consoleErrors": 0,
10
+ "consoleWarnings": 0,
11
+ "layout320": {
12
+ "viewportWidth": 320,
13
+ "scrollWidth": 320,
14
+ "completedSamples": 64,
15
+ "file": "WaterBottle-320.png",
16
+ "sha256": "3297b7e0166efc3422b1fbbd34ca6be0eaa725553a4d2fb0592dc17404639a7d"
17
+ },
18
+ "limitations": [
19
+ "Static authored geometry only; tool drawers, moving gears and material variants are not animated.",
20
+ "Original geometry, textures and material definitions are unchanged; completed inspection does not certify physical material accuracy.",
21
+ "Flight Helmet quality rebuilds take several seconds. A DOM automation resolution change timed out and left a blank render; fresh selection recovered and native menu 800-to-UHD and UHD-to-800 transitions completed.",
22
+ "Physical touch hardware and screen-reader speech were not tested."
23
+ ],
24
+ "models": [
25
+ {
26
+ "key": "can_rusted",
27
+ "triangles": 3520,
28
+ "primitives": 1,
29
+ "materials": 1,
30
+ "completedFixedSamples": 64,
31
+ "cameraResetAndRefinement": true,
32
+ "denoisingOffOn": true,
33
+ "completedUhd": {
34
+ "width": 3840,
35
+ "height": 2160,
36
+ "samples": 1
37
+ },
38
+ "evidence": [
39
+ {
40
+ "file": "can_rusted-baseline.png",
41
+ "sha256": "c445bc469110f11b9e4358a05b857e76b2e3a68c99196e29a37402138ea1e387"
42
+ },
43
+ {
44
+ "file": "can_rusted-camera-denoise-off.png",
45
+ "sha256": "1977dedc3b63b3eb1205dbed6a099dd4566d2596769d206fd7389a97d284593d"
46
+ },
47
+ {
48
+ "file": "can_rusted-uhd.png",
49
+ "sha256": "d1c79b183fcbb9155eb628b837921695dae3aa2b000ac97b4b7173be31600e5a"
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "key": "circuit_board",
55
+ "triangles": 14430,
56
+ "primitives": 2,
57
+ "materials": 2,
58
+ "completedFixedSamples": 64,
59
+ "cameraResetAndRefinement": true,
60
+ "denoisingOffOn": true,
61
+ "completedUhd": {
62
+ "width": 3840,
63
+ "height": 2160,
64
+ "samples": 1
65
+ },
66
+ "evidence": [
67
+ {
68
+ "file": "circuit_board-baseline.png",
69
+ "sha256": "5b804f27a024c3ff4c9908da356363e9d374cb88b28c203005d28fb0bc58f03e"
70
+ },
71
+ {
72
+ "file": "circuit_board-camera-denoise-off.png",
73
+ "sha256": "6cb898cc6297c1767f563c1920aa570e19cb1ad85f7b3dde065060b3b487095a"
74
+ },
75
+ {
76
+ "file": "circuit_board-uhd.png",
77
+ "sha256": "678c10724f4d68b92ca5ed4498f31eb67d8923810f0edd9fdb73d972f6f57949"
78
+ }
79
+ ]
80
+ },
81
+ {
82
+ "key": "hand_plane_no4",
83
+ "triangles": 8220,
84
+ "primitives": 1,
85
+ "materials": 1,
86
+ "completedFixedSamples": 64,
87
+ "cameraResetAndRefinement": true,
88
+ "denoisingOffOn": true,
89
+ "completedUhd": {
90
+ "width": 3840,
91
+ "height": 2160,
92
+ "samples": 1
93
+ },
94
+ "evidence": [
95
+ {
96
+ "file": "hand_plane_no4-baseline.png",
97
+ "sha256": "8153d3afb879d6ea3a03f7f81d071d8066f3cc0f657e3db46516017da0f9611e"
98
+ },
99
+ {
100
+ "file": "hand_plane_no4-camera-denoise-off.png",
101
+ "sha256": "62f3a72577e2d3229698526c63e0844ee375e80b0979e0d49237cc6d99372640"
102
+ },
103
+ {
104
+ "file": "hand_plane_no4-uhd.png",
105
+ "sha256": "590cb82dbdac9cd9c911c409aded04fdc0bf8c0a3390ab97c1686ff23218152f"
106
+ }
107
+ ]
108
+ },
109
+ {
110
+ "key": "metal_tool_chest",
111
+ "triangles": 13360,
112
+ "primitives": 7,
113
+ "materials": 1,
114
+ "completedFixedSamples": 64,
115
+ "cameraResetAndRefinement": true,
116
+ "denoisingOffOn": true,
117
+ "completedUhd": {
118
+ "width": 3840,
119
+ "height": 2160,
120
+ "samples": 1
121
+ },
122
+ "evidence": [
123
+ {
124
+ "file": "metal_tool_chest-baseline.png",
125
+ "sha256": "30359a54b2652926b5f5f1d7d9d60304cf93e3705ac51172ae4658dbd8029e0c"
126
+ },
127
+ {
128
+ "file": "metal_tool_chest-camera-denoise-off.png",
129
+ "sha256": "9a267f8c589da28b58e20d3c8fad7ec28ddf6683f46bfafa88ed251a94167766"
130
+ },
131
+ {
132
+ "file": "metal_tool_chest-uhd.png",
133
+ "sha256": "da486b8befd3c3b92d350c72648d235dc5caa689caa75e1eb695680a7663bc54"
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "key": "rusted_spade_01",
139
+ "triangles": 11436,
140
+ "primitives": 1,
141
+ "materials": 1,
142
+ "completedFixedSamples": 64,
143
+ "cameraResetAndRefinement": true,
144
+ "denoisingOffOn": true,
145
+ "completedUhd": {
146
+ "width": 3840,
147
+ "height": 2160,
148
+ "samples": 1
149
+ },
150
+ "evidence": [
151
+ {
152
+ "file": "rusted_spade_01-baseline.png",
153
+ "sha256": "a1d29779c66c28e9edda61701663d589341ba1e08f7fec9dbb5ebc9fa5946c66"
154
+ },
155
+ {
156
+ "file": "rusted_spade_01-camera-denoise-off.png",
157
+ "sha256": "8b597bfc6a295ad582770801d0353cbdee741f92149223590a29e17db482aecf"
158
+ },
159
+ {
160
+ "file": "rusted_spade_01-uhd.png",
161
+ "sha256": "2bc94892642819ca3449ef7114f9094e3eebe3e496ac2b139fb4c8be93d62eb7"
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "key": "vintage_hand_drill",
167
+ "triangles": 8338,
168
+ "primitives": 5,
169
+ "materials": 1,
170
+ "completedFixedSamples": 64,
171
+ "cameraResetAndRefinement": true,
172
+ "denoisingOffOn": true,
173
+ "completedUhd": {
174
+ "width": 3840,
175
+ "height": 2160,
176
+ "samples": 1
177
+ },
178
+ "evidence": [
179
+ {
180
+ "file": "vintage_hand_drill-baseline.png",
181
+ "sha256": "9ca8ee574b8e19b01f7fa3ed0251a733339ff1ef917960448e595a4a3450090b"
182
+ },
183
+ {
184
+ "file": "vintage_hand_drill-camera-denoise-off.png",
185
+ "sha256": "7d5d615387b2da2136cfbdec7cb95ea36687c37706e71731ccb384283f3e5e88"
186
+ },
187
+ {
188
+ "file": "vintage_hand_drill-uhd.png",
189
+ "sha256": "98cf549a3c1ef24eec867dd19cc1d9191a5c48d98fb3c189e7429671ae75d66f"
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ "key": "antique_estoc",
195
+ "triangles": 8246,
196
+ "primitives": 1,
197
+ "materials": 1,
198
+ "completedFixedSamples": 64,
199
+ "cameraResetAndRefinement": true,
200
+ "denoisingOffOn": true,
201
+ "completedUhd": {
202
+ "width": 3840,
203
+ "height": 2160,
204
+ "samples": 1
205
+ },
206
+ "evidence": [
207
+ {
208
+ "file": "antique_estoc-baseline.png",
209
+ "sha256": "b85b2d0d9c152d7144fd1ec3c7d06696f8af8ce307d176b74e2db10801791844"
210
+ },
211
+ {
212
+ "file": "antique_estoc-camera-denoise-off.png",
213
+ "sha256": "6326b286e02db3b8ca2a28539464a8d82622e139d52f72e934627928e4c54f7c"
214
+ },
215
+ {
216
+ "file": "antique_estoc-uhd.png",
217
+ "sha256": "55def5ee7bcffb3e9781d603f68a3712b58a06d7fd2900194ce1aac07e1f7f49"
218
+ }
219
+ ]
220
+ },
221
+ {
222
+ "key": "FlightHelmet",
223
+ "triangles": 94722,
224
+ "primitives": 6,
225
+ "materials": 6,
226
+ "completedFixedSamples": 64,
227
+ "cameraResetAndRefinement": true,
228
+ "denoisingOffOn": true,
229
+ "completedUhd": {
230
+ "width": 3840,
231
+ "height": 2160,
232
+ "samples": 1
233
+ },
234
+ "evidence": [
235
+ {
236
+ "file": "FlightHelmet-baseline.png",
237
+ "sha256": "cfcea5508d6d160bb57231c5e88f0a5cbbd0bcf7af197079c611a0a6212c3ec9"
238
+ },
239
+ {
240
+ "file": "FlightHelmet-camera-denoise-off.png",
241
+ "sha256": "2a73f6c767b2579e992d41b23a93bbf8f1e55fa183d11927441568a3e7377091"
242
+ },
243
+ {
244
+ "file": "FlightHelmet-uhd.png",
245
+ "sha256": "9b61191c3521bf15b0d843c38a890ec311beee20bedebc10ff4d8a7fcf65a28d"
246
+ },
247
+ {
248
+ "file": "FlightHelmet-native-balanced-return.png",
249
+ "sha256": "0eeff675c9e449f1f159eb94f5f10f1c271016f4e715c0d8854d1c8666d6980f"
250
+ },
251
+ {
252
+ "file": "FlightHelmet-uhd-native-transition.png",
253
+ "sha256": "dfe4f527327b9ab2252aef23e7a93e5564261970ffddb0807524bae3310c927a"
254
+ }
255
+ ]
256
+ },
257
+ {
258
+ "key": "WaterBottle",
259
+ "triangles": 4510,
260
+ "primitives": 1,
261
+ "materials": 1,
262
+ "completedFixedSamples": 64,
263
+ "cameraResetAndRefinement": true,
264
+ "denoisingOffOn": true,
265
+ "completedUhd": {
266
+ "width": 3840,
267
+ "height": 2160,
268
+ "samples": 1
269
+ },
270
+ "evidence": [
271
+ {
272
+ "file": "WaterBottle-uhd.png",
273
+ "sha256": "2e77b1dba8e30ba478aa7247b252ec6d8615b19caca3d4c5b357b9155d10f013"
274
+ },
275
+ {
276
+ "file": "WaterBottle-baseline.png",
277
+ "sha256": "ab95cb557ee5b7a660d2fccf85f2cbe6c37832396e6d0e064d86df387a0c5a4e"
278
+ },
279
+ {
280
+ "file": "WaterBottle-camera-denoise-off.png",
281
+ "sha256": "5b2d0211703d687e10a790e7fff54c04cbbe8fd0b7ca1711867f4f10646d9321"
282
+ }
283
+ ]
284
+ }
285
+ ],
286
+ "interruptedAutomation": {
287
+ "file": "FlightHelmet-uhd-transition-stalled.png",
288
+ "sha256": "0f62daef3170b2c37885cbbe1351f251b820109ae1ac13ba6116bddf832a338d",
289
+ "outcome": "Recovered by model selection; native menu transition passed."
290
+ }
291
+ }
@@ -162,3 +162,31 @@ sofa WebP maps are present. The [qualification record](batch-four-qualification.
162
162
  retains the prior source-check context and binds the fresh screenshots by hash.
163
163
  This is static inspection qualification, not animation playback or a claim of
164
164
  complete material fidelity. Site production verification remains pending.
165
+
166
+ ## Batch 5: tools and material studies
167
+
168
+ Continue Task #62 under Story site#2308 / Feature site#1170, inheriting
169
+ `gpu-demo.scene-fidelity.enabled` and the existing site capability. Qualify the
170
+ nine batch-five originals against released renderer0.2.54/shared1.2.0 with no
171
+ source overrides. The 58 resources total 75,722,699 bytes; preserve the existing
172
+ source manifests and attribution. Flight Helmet retains its original full texture
173
+ set and transmission material. Circuit Board retains its authored alpha modes.
174
+
175
+ Require source hash/length and glTF dependency closure checks, fixed64 sampling,
176
+ camera reset/refinement, denoising off/on and native UHD1 for each model. Record
177
+ actual GPU results and any unsupported material behavior before changing status
178
+ to qualified. Tests must pin the nine identities and keep unqualified batches
179
+ out of the published catalogue. Publish through viewer main/production CD, then
180
+ consume that release in the site and verify the 49-model candidate through the
181
+ site CI/CD path, public hashes/credits and live GPU checks. Failed candidates
182
+ remain held; the original-model target remains 74, with Gem excluded.
183
+
184
+ All nine batch-five originals completed the checks above; see the
185
+ [registry qualification record](batch-five-qualification.json). The flight
186
+ helmet's full texture set makes quality rebuilds take several seconds. A DOM
187
+ automation timeout left one transition incomplete; fresh selection recovered,
188
+ and native menu round trips between balanced and UHD completed. This limitation
189
+ and the interrupted capture are retained. The 320px layout completed fixed64
190
+ without horizontal overflow. No GPU console warnings or errors were observed.
191
+ Physical touch and screen-reader speech remain untested. Public verification
192
+ still depends on the approved package and site releases.
@@ -0,0 +1,65 @@
1
+ # Furnished interior and workshop studies
2
+
3
+ Feature: site#1170; Story site#2313; viewer Task #73; shared Task #161.
4
+ Inherited remote rollout: `gpu-demo.scene-fidelity.enabled`.
5
+
6
+ After qualifying and releasing the forty-model batch, add two local workshop
7
+ studies using the shared `createSceneInspection` API. The furnished interior
8
+ compares the sofa, silk pouf, cabinet and basket. The workshop compares the
9
+ spinning wheel, barrel, crate, vice and blowtorch. All are existing credited,
10
+ integrity-checked originals. Scale and placement are authored review choices.
11
+
12
+ Keep individual models available and clearly distinguish composite studies from
13
+ the model count. Show every source/author/licence and chosen dimension. Reuse the
14
+ existing quality controls, camera help, progressive status, cancellation and
15
+ visibility lifecycle. Load only the selected model or study. Public-site scene
16
+ navigation is separate qualified consumer work.
17
+
18
+ Before implementation, test scene selection, complete source requests, missing
19
+ source rejection, credits, shared quality/lifecycle controls and cancellation.
20
+ Review both arrangements in actual WebGPU with >=3 sources together, camera
21
+ movement and native UHD. Release the shared package first, then consume that
22
+ registry version and repeat the review before viewer release. Keep source aliases
23
+ explicit and local to development. Record limits instead of claiming untested
24
+ animation, adaptive optical quality, physical touch or screen-reader speech.
25
+
26
+ ## Initial browser review
27
+
28
+ The four-model interior (211,146 triangles including ground) and five-model
29
+ workshop (82,635 triangles) completed fixed 64 samples at 800 × 282 with
30
+ renderer 0.2.54 and a local source override for the new shared API. Both also
31
+ completed native 3840 × 2160 at one sample; camera changes and denoising-off
32
+ refinement completed again. The interior additionally passed mouse orbit and
33
+ a UHD-to-balanced round trip using native browser menus. All source credits
34
+ and licence links were inspected. At a 320-pixel viewport the interior completed
35
+ 64 samples at 800 × 601, all four models remained in frame, and the page and
36
+ expanded credits had no horizontal overflow. The temporary viewport override was
37
+ reset. No renderer console warnings/errors appeared.
38
+
39
+ Preparing a heavy scene after quality changes takes several seconds. Direct DOM
40
+ automation hit its three-second input deadline and left two transitions incomplete;
41
+ a clean page with native menu input completed the same transition. This does
42
+ not establish real-time responsiveness. The retained evidence records this
43
+ limitation alongside the completed frames. Physical touch, screen-reader speech
44
+ and reference optical fidelity remain untested. The original versus voxel
45
+ distinction is unchanged.
46
+
47
+ ## Registry-consumer qualification
48
+
49
+ Both studies were reviewed again with the published `gpu-shared` 1.2.0 and
50
+ `gpu-renderer` 0.2.54 packages, with no source aliases. Both completed 64 samples
51
+ at 800 × 282, refined after keyboard camera movement and denoising changes, and
52
+ completed native 3840 × 2160 at one sample. The interior also completed the return
53
+ to balanced resolution. No renderer console warnings/errors appeared. A native
54
+ checkbox action exceeded the automation input deadline but the requested quality
55
+ change and subsequent 64-sample refinement completed.
56
+
57
+ The repeat mobile check could not be completed: the high-level viewport override
58
+ did not affect the review tab, and browser approval rejected tab-scoped emulation.
59
+ No workaround was attempted. The earlier source-version 320-pixel evidence still
60
+ applies to the same layout; this is not a claim of a second mobile test.
61
+
62
+ The viewer suite passes all 56 tests with 100% line coverage, including all changed
63
+ JavaScript sources in LCOV. Syntax, build, package-content and full dependency
64
+ audit checks pass. These are functional render checks; one-sample UHD output is
65
+ not an optical-quality or performance qualification.