mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 10:53:59 +00:00
fix(street-level): KartaView PR review — context loss mid-load, chunked reads, source switches, a11y
From the IC8 review of #1121 (2 P2, 7 P3; each with a test that fails on the old code): P2 - A WebGL context lost while a newer panorama loaded left a black viewer and a 'successful' open: the panorama now builds on the new canvas (or falls back to its front view). - The streaming body read every real answer takes was tested with one chunk only: answers split mid-character are reassembled; the shared test fake now streams, so every source test runs the production path. P3 - Lighting another source by its chip (params) now stops a running lookup and clears its spinner and error, as setProviderEnabled did; a restore that changes nothing leaves them alone. - Panoramas decode off the main thread (ImageBitmap, RGBA upload: ~90 ms → ~15 ms at 4,096 px on a phone-class CPU) and are 2,048 px docked, 4,096 once the viewer grows; a closed viewer keeps a 1×1 texture. - The lit KARTAVIEW chip label is #8f8aff (~6:1; #635bff was 3.7:1). - The viewer's keyboard focus ring is drawn above the photo. - Tests: a second context loss and a drag on the new canvas; the look direction kept across a loss; a page's 30 s first try. - The browser gate loses a real WebGL context in the 360° step and checks the 429 lookup was asked again (the fixture counter is reset first). Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
97a1a667de
commit
c99eb93174
12 files changed
+512
-26
No files matched your search
+11
-6
@@ -3231,12 +3231,17 @@ https storage host. The viewer (`viewer.js`) shows a flat photo at 1,280 px,
|
||||
then 2,560 px, from the image proxy (`pr:sharp/rs:fit:W:H/<base64url>`),
|
||||
with KartaView's own 1,280 px file as the fallback, and a 360° photo's
|
||||
equirectangular `wrapped_proc` image (13,000 px wide upstream) resized to
|
||||
1,024 then 4,096 px on `panorama.js`, a single-triangle WebGL renderer (image
|
||||
centre = the camera heading; drag, pinch, wheel, Shift+← →, ↑ ↓, + −; the
|
||||
canvas re-measures every frame). Without WebGL, or if the proxy fails within
|
||||
15 s, a 360° photo shows its front view; a lost context draws the photo again
|
||||
on a new canvas (a lost canvas only gives back its lost context), through the
|
||||
core and only if no newer photo is opening. FIT / FILL hide for panoramas (`supportsRenderModes`). The
|
||||
1,024 px, then 2,048 (docked) or 4,096 px (expanded, or once the viewer
|
||||
grows), decoded off the main thread into an ImageBitmap and uploaded as RGBA
|
||||
(about 90 ms → 15 ms for 4,096 px on a phone-class CPU), on `panorama.js`, a
|
||||
single-triangle WebGL renderer (image centre = the camera heading; drag,
|
||||
pinch, wheel, Shift+← →, ↑ ↓, + −; the canvas re-measures every frame; a
|
||||
closed viewer keeps a 1×1 texture). Without WebGL, or if the proxy fails
|
||||
within 15 s, a 360° photo shows its front view. A lost context draws the
|
||||
photo again on a new canvas (a lost canvas only gives back its lost
|
||||
context), through the core and facing where the user was looking; a newer
|
||||
photo that was opening is drawn on the new canvas instead. FIT / FILL hide
|
||||
for panoramas (`supportsRenderModes`). The
|
||||
caption has no place name (KartaView's is where the drive began) and links to
|
||||
the full-size photo through the image proxy, since kartaview.org's photo
|
||||
pages fail for signed-out visitors.
|
||||
|
||||
Reference in new issue
Block a user