Skip to content

feat: add fingerprinted errors, source tagging, and error capture#2000

Merged
kpal81xd merged 5 commits intomainfrom
feat/fingerprinted-errors
Apr 13, 2026
Merged

feat: add fingerprinted errors, source tagging, and error capture#2000
kpal81xd merged 5 commits intomainfrom
feat/fingerprinted-errors

Conversation

@kpal81xd
Copy link
Copy Markdown
Contributor

What's Changed

  • Add dual-mode log.error that supports tagged templates for Sentry fingerprinting — log.error`missing asset ${id}`` groups all errors with the same template as one issue regardless of interpolated values
  • Auto-categorize errors with a source tag derived from the top stack frame's file path (e.g. realtime, assets, pickers/version-control)
  • Add user_id tag to all Sentry events
  • Use package.json version for the Sentry release tag
  • Capture stack traces for non-Error log.error calls by wrapping in new Error()
  • Add WebSocket onerror handlers for editor, code-editor, and launch realtime connections
  • Add response.ok validation to upload REST API, store fetches, and texture download
  • Add .catch() to engine type definitions and autofill script fetch chains
  • Replace console.error with log.error in realtime error handler, intellisense, and sourcefiles loading
  • Allow tagged template expressions in ESLint config (allowTaggedTemplates)

Checks

kpal81xd and others added 5 commits April 13, 2026 12:55
Wrap non-Error arguments in a new Error() so Sentry receives a proper
stack trace instead of a flat message string. This ensures all
log.error() calls produce stack frames regardless of argument type.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add dual-mode log.error that supports tagged templates for error
fingerprinting. When called as log.error`message ${value}`, the static
template becomes the Sentry grouping key while dynamic values are
preserved as context metadata. This prevents errors with different
dynamic values from creating separate Sentry issues.

Also uses package.json version for the Sentry release tag instead of
the backend-provided version.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add log.error to critical paths that were silently swallowing errors:
- WebSocket onerror handlers for editor, code-editor, and launch
  realtime connections
- .catch() for engine type definitions fetch in code-editor
- Replace console.error with log.error in intellisense script fetch
  and launch sourcefiles loading

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add response.ok validation to upload REST API, store fetches, and
  texture download
- Replace console.error with log.error in realtime error handler
- Add .catch() to autofill script fetch promise chain
- Auto-categorize errors with a source tag derived from the top stack
  frame's file path (e.g. source: realtime, source: pickers/version-control)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@kpal81xd kpal81xd self-assigned this Apr 13, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
editor Ready Ready Preview, Comment Apr 13, 2026 2:13pm

Request Review

@kpal81xd kpal81xd merged commit 9fffe4b into main Apr 13, 2026
7 checks passed
@kpal81xd kpal81xd deleted the feat/fingerprinted-errors branch April 13, 2026 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant