Repository navigation
fix: phone background/return says nothing (RO toast, quiet context loss) - #527
Merged
Merged
Conversation
- the 'Something went wrong' toast skips what error reports already ignore (ResizeObserver loop, Script error, interrupted play(), aborts); the line stays in the diagnostics ring - a lost WebGL context shows the overlay and files a report only once it has stayed lost for 3 s on a visible page (contextLoss.js, contextLossShown); a loss while hidden that comes back on return is quiet - unit tests for both rules; e2e background-quiet; dispose and error-reports wait out the grace Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AlexZ005
added a commit
that referenced
this pull request
Nov 4, 2026
Roadmap 72 (lanes 72-materials + 72-skies, integrated by 72-int): materials carry five image maps (Normal, Roughness, Metalness, Emission, AO; Load a set of maps), the five skies are UltraHDR at 1K/2K/4K (8K Meadow) with a scene Sky quality and a per-device Sky image quality (lighting always from 1K), a scene's look (tone curve, grade, LUT, vignette) shows in VR, and GLB export carries look animation (KHR_animation_pointer). Rides along: fix-film (#529, Film Walk without trails, motion picker, tracking lost, shot cards, Your shots), fix-bgquiet (#527) and mcp-shapes (#528, agents build models part by part, MCP contract 1.6.0). Battery u1 vs v1.58.0: no unexplained reds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Released in v1.59.0 (91b074e) via 72-int. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Switching away from the browser on a phone and coming back should say nothing. Two pieces of noise showed up after a minimise/restore on an Android foldable (1.57.0, empty editor scene).
Not for its own release. The next integration merges this and its battery covers it.
What changes
errorReportCoreIGNORE: ResizeObserver loop,Script error., an interruptedplay(), aborts). It uses the same list, throughdiagnostics.toastsUncaught(). The line still goes into the diagnostics ring, so Copy diagnostics keeps it.src/lib/contextLoss.js, holds a pure grace rule plusstartContextLossGate. A new store,sceneStore.contextLossShown, is the "loud" half of a context loss.ContextLostOverlayand thewebglerror report now readcontextLossShown.contextLostitself is unchanged and still raw, so the shader guard reacts at once.preventDefault()and the material recompile on restore are unchanged.Proof
tests/unit/backgroundQuiet.test.js: both rules use one shared list; the grace timing covers hidden/visible, restore inside or outside the grace, hide stopping the clock, and the gate driving the store. 16 tests, all green.background-quiet(phone emulation, realWEBGL_lose_context, report URL routed to a mock): ALL PASS.webglreport goes out; restoring takes the overlay down.webglreport while hidden), 2a and 3b (the RO toast).disposeanderror-reportsnow wait out the grace before asserting the overlay or report. Both green.node scripts/check-ratchet.cjs: 278/39, equal to the baseline.npm run build: rc 0.Where the ResizeObserver loop came from: not reproduced
An init script wrapped
ResizeObserverto record each observer's creation site and every loop error. It was checked with a positive control (5 loops recorded). Then the reported size (691×634 @3.25 with touch) was replayed on a GPU slot and on a software-render slot, with 28–98 observers live. 0 app loops in all of these:Notes:
fit()(its wrapper isposition: fixedwith left/right set, so the chip's size cannot feed back into it). PhoneDockHost, TouchTools and fullName already defer to rAF.ro-loop-guardalready covers the unfolded/folded feature phases.The toast is gone either way. If the loop shows up again, the line in Copy diagnostics carries its timestamp.
🤖 Generated with Claude Code