Commit Graph
1 Commits
Author SHA1 Message Date
27b5c2800e Add user-facing error handling with opt-in reporting (#81)
* chore: add CI secrets management and local testing script

- Added ci-secrets.example.json to provide a template for CI secrets configuration.
- Introduced test-ci-local.sh script to facilitate local testing of the package-and-publish workflow using act.
- Updated .gitignore to exclude the actual ci-secrets.json file containing sensitive tokens.

* Add user-facing error handling system with opt-in reporting

Intercept all errors (React, global JS, skill runtime) and show non-blocking
notifications that let users inspect the exact sanitized payload before
choosing to report or dismiss. Errors are no longer auto-sent to Sentry.

- Add error report queue (errorReportQueue.ts) with subscribe/notify pattern
- Add ErrorReportNotification rendered in isolated React root (survives crashes)
- Add ErrorFallbackScreen for catastrophic React boundary errors
- Wire Sentry beforeSend to queue errors instead of auto-sending
- Add skill runtime error capture via runtime:skill-status-changed listener

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove conflicting Telegram API fields from ci-secrets.example.json

* Strip sensitive fields from exception before queuing for user review

Sanitize stacktrace frames to remove local variables (vars), source code
context lines (context_line, pre_context, post_context), and mechanism.data.
Only safe location metadata (filename, function, lineno, colno, in_app)
is retained in the sanitized event shown to the user.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Compute analyticsEnabled on each render instead of caching with useMemo

The Report button now reflects the current analytics setting immediately
when the user toggles it in Settings.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Refactor components for improved readability and consistency

- Adjusted formatting in ErrorFallbackScreen and ErrorReportNotification components for better JSX structure.
- Removed unnecessary line breaks in Home component for cleaner layout.
- Streamlined error handling logic in SkillProvider for clarity.
- Enhanced errorReportQueue with consistent object formatting for better maintainability.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 18:02:07 +05:30