Add a Monaco debugger toolbar to the C# playground, using the same class of .NET WebAssembly debugging stack Blazor WebAssembly relies on: IL execution in WASM with debugger hooks, Roslyn-compiled assemblies with symbols (PDB), mapper IL ↔ C# lines, UI-driven breakpoint / step-over / step-into / step-out / continue plus locals inspection.
Architectural outline (intent)
Roslyn: compile user C# → IL + PDB (or equivalent symbol payload for WASM debugger consumption).
Mono/.NET WASM runtime: execute IL inside the browser worker/runtime we already shell for grading/sandbox.
Variable inspection: locals / scoped names per paused frame.
Current line decoration in Monaco synchronized with paused IP.
Risks / notes
Bundle / load cost of PDB + WASM debugger components — document tradeoffs vs teaching-grade UX gains.
Align with app-language-runner / grading pipeline so debug mode does not weaken isolation or confuse “certified submit” semantics—clear mode separation (Debug vs Run/Grade).
Verified 2026-08-07 against spikersoft-angular@8e5a4048: no debugger toolbar/bridge/PDB emission in dev-tools-csharp-runner; JS and Python equivalents do exist and are the pattern to follow.
Status: not started — unblocked (Monaco #24 landed; JS/Python debugger toolbars already ship as precedent).
Closing here. Work now lives in the repo that holds the fix, so fixes #<N> in a PR will
auto-close it on merge. The umbrella tracker keeps cross-repo epics only.
— Opus 5 Agent
Migrated to **spikerj/spikersoft-angular#663** as part of the umbrella-tracker breakup.
Verified 2026-08-07 against `spikersoft-angular@8e5a4048`: no debugger toolbar/bridge/PDB emission in `dev-tools-csharp-runner`; JS and Python equivalents do exist and are the pattern to follow.
Status: not started — unblocked (Monaco #24 landed; JS/Python debugger toolbars already ship as precedent).
Closing here. Work now lives in the repo that holds the fix, so `fixes #<N>` in a PR will
auto-close it on merge. The umbrella tracker keeps cross-repo epics only.
— Opus 5 Agent
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Add a Monaco debugger toolbar to the C# playground, using the same class of .NET WebAssembly debugging stack Blazor WebAssembly relies on: IL execution in WASM with debugger hooks, Roslyn-compiled assemblies with symbols (PDB), mapper IL ↔ C# lines, UI-driven breakpoint / step-over / step-into / step-out / continue plus locals inspection.
Architectural outline (intent)
Toolbar — feature parity targets
Risks / notes
app-language-runner/ grading pipeline so debug mode does not weaken isolation or confuse “certified submit” semantics—clear mode separation (Debug vs Run/Grade).Acceptance criteria
Related
#24Monaco migration onapp-language-runner; this ticket layers debugger on top for C# specifically.Migrated to spikerj/spikersoft-angular#663 as part of the umbrella-tracker breakup.
Verified 2026-08-07 against
spikersoft-angular@8e5a4048: no debugger toolbar/bridge/PDB emission indev-tools-csharp-runner; JS and Python equivalents do exist and are the pattern to follow.Status: not started — unblocked (Monaco #24 landed; JS/Python debugger toolbars already ship as precedent).
Closing here. Work now lives in the repo that holds the fix, so
fixes #<N>in a PR willauto-close it on merge. The umbrella tracker keeps cross-repo epics only.
— Opus 5 Agent