Skip to content

Feature/engine error handling#17

Merged
willwade merged 3 commits into
mainfrom
feature/engine-error-handling
Jun 29, 2026
Merged

Feature/engine error handling#17
willwade merged 3 commits into
mainfrom
feature/engine-error-handling

Conversation

@willwade

Copy link
Copy Markdown
Contributor

Summary

Issue / RFC: #

Type of change

  • Bug fix
  • New feature
  • Cross-platform / parity change
  • Refactor / tooling / docs

Cross-platform impact

A core goal of Dasher v6 is feature parity across frontends. Help reviewers
see the blast radius:

  • This changes a capability that users see on other platforms.
    If checked, I have opened / updated the feature matrix
    (website/src/data/feature-status.json) — linked PR: #
    (or confirmed this is genuinely platform-specific-only)
  • This introduces a new UX or hardware interaction.
    If checked, an RFC (governance/rfcs) is linked: #

Definition of Done

  • CI is green (build + tests + lint + format, as applicable)
  • Tests added for new behaviour
  • Feature matrix updated if this affects a cross-platform capability
  • Docs / changelog updated if the change is user-facing
  • Commits are signed off (DCO) — git commit -s

willwade added 3 commits June 29, 2026 01:01
Includes:
- try/catch on dasher_frame, dasher_mouse_move/down/up, dasher_key_event
- log_boundary_error routes caught exceptions to log callback at level 3
- dasher_has_engine_error() C API for frontend to detect engine faults
- Hardened C API boundary exception handling (#35)

Signed-off-by: will wade <willwade@gmail.com>
DasherCore PR #38 added try/catch on the per-frame hot path and an
engineError flag exposed via dasher_has_engine_error().

Changes:
- NativeBridge.cs: added dasher_has_engine_error P/Invoke
- DasherCanvas.cs: OnTick checks engine error flag before each frame;
  stops timer and fires EngineFaultDetected event on fault
- MainWindow.axaml.cs: handles EngineFaultDetected — shows user-facing
  toast notification advising restart; ring buffer already has the
  fault context from the log callback
- Wired in both OnOpened and OnResetSettings (engine recreation paths)

The engine log ring buffer captures the fault message at level 3 via
the log callback BEFORE the function returns, so crash reports will
have the fault context even if the frontend subsequently crashes.

Signed-off-by: will wade <willwade@gmail.com>
Removed:
- TriggerTestFault method and _testFaultFrame field from DasherCanvas
- Ctrl+Shift+F keyboard handler from MainWindow
- All fault_trace.log file tracing from OnEngineFault
- OnEngineFault simplified to WriteCrashFile + dialog only

Pinned DasherCore at v0.1.6 tag (includes hot path try/catch,
engine error flag, hardened C API boundary).

Signed-off-by: will wade <willwade@gmail.com>
@willwade willwade merged commit 70e07a2 into main Jun 29, 2026
2 checks passed
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