Code surfaces today rely on @acrodata/code-editor, wrapping CodeMirror 6 and @codemirror/language-data — not a separate “Codewarrior” product; this migration targets that stack.
Goal
Migrate app-language-runner (spikersoft-angular/libraries/tools/src/components/language-runner/) from CodeMirror-backed code-editor to Monaco Editor, preserving behavioral and UX parity with today’s playgrounds.
Scope
Shared playground used by C#, Python, and JavaScript shells (csharp-runner, python-runner, javascript-runner routers only compose <app-language-runner>).
Single‑file and advanced multi‑file sandbox modes, lesson mode, placeholders, [theme], [lineWrapping], language selector + syntax highlighting.
Feature parity checklist
Syntax highlighting / language IDs aligned with languages we expose today (languages/language inputs, @codemirror/language-data equivalents → Monaco Monarch / built‑in loaders).
Light/dark themes match product expectations (styled for glass/UI shell).
Line wrapping, placeholders, focus/scroll behaviors acceptable on desktop + handset breakpoints.
Note: Thin shells app-csharp-runner, app-python-runner, app-javascript-runner only compose this issue’s app-language-runner — no separate editor tickets.
Related component-scoped tickets for the **same CodeMirror (@acrodata/code-editor) → Monaco** effort:
- #25 **`lib-blockly`** generated code pane
- #26 **`lib-diagram`** code panel
- #27 **`lib-tools-json-to-csharp` (QuickType)**
- #28 **`lib-tools-difference`** (DiffEditor → Monaco Diff)
- #29 **`lib-csv-to-json`**
- #30 **`lib-json-to-csv`**
- #31 **Clue-for-SQL**
**Note:** Thin shells `app-csharp-runner`, `app-python-runner`, `app-javascript-runner` only compose this issue’s **`app-language-runner`** — no separate editor tickets.
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.
Background
Code surfaces today rely on
@acrodata/code-editor, wrapping CodeMirror 6 and@codemirror/language-data— not a separate “Codewarrior” product; this migration targets that stack.Goal
Migrate
app-language-runner(spikersoft-angular/libraries/tools/src/components/language-runner/) from CodeMirror-backedcode-editorto Monaco Editor, preserving behavioral and UX parity with today’s playgrounds.Scope
csharp-runner,python-runner,javascript-runnerrouters only compose<app-language-runner>).[theme],[lineWrapping], language selector + syntax highlighting.Feature parity checklist
languages/languageinputs,@codemirror/language-dataequivalents → Monaco Monarch / built‑in loaders).ngModel/ programmatic updates remain reliable for submission, grading, offline flows.data-tour/ equivalent) — update selectors if DOM changes.References
Existing editor rationale in
language-runner.ts(CodeMirror vs Monaco bundle note). Extend or supersede once Monaco lands.Related component-scoped tickets for the same CodeMirror (@acrodata/code-editor) → Monaco effort:
lib-blocklygenerated code panelib-diagramcode panellib-tools-json-to-csharp(QuickType)lib-tools-difference(DiffEditor → Monaco Diff)lib-csv-to-jsonlib-json-to-csvNote: Thin shells
app-csharp-runner,app-python-runner,app-javascript-runneronly compose this issue’sapp-language-runner— no separate editor tickets.