Fix infinite 'Teeter Loading...' screen hang - #41
Open
Chris-Moller wants to merge 19 commits into
Open
Conversation
…alization failures - Add WebGL pre-check before renderer initialization - Add specific error messages for camera denied/not-found - Wrap MediaPipe tracker init in try-catch with error message - Add 15-second global timeout with Promise.race - Add retry button to overlay that reloads the page - Update showError() to show retry button and remove hidden class Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace Promise.race with __TIMEOUT__ sentinel pattern with a simpler setTimeout flag approach that's easier to reason about - Restore catch-all error handling for unexpected init failures (was silently swallowed by the previous Promise.race catch) - Cache overlay title DOM element instead of querying it on each error Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add state check before transitioning to 'playing' after doInit() completes, preventing the success path from hiding an error overlay that the timeout already displayed. Also ensure initialization errors are always logged to console even when timeout has already fired. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add retry button markup to overlay in index.html - Add retry button CSS with pointer-events: auto on error overlay - Add WebGL pre-check before renderer initialization - Add 15-second timeout with race condition guards - Add specific error handling for camera denial and MediaPipe failure - Wire retry button to location.reload() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Every showError() call was always followed by showRetryButton(). Merged the retry button display into showError() to eliminate the redundant companion function and 5 duplicate call sites. Also removed unused overlayTitle variable. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ection - Stop MediaStream tracks when initTracker fails or timeout fires after camera was acquired, preventing the camera light from staying on - Add .catch() to top-level init() call to prevent unhandled promise rejections Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
Acceptance Criteria
🤖 Generated with Claude Code