C, C++, and Python already render the shared LanguagePlaygroundShellComponent, but C# (the most-worked playground) has accumulated niceties the others may lack in detail. This is a systematic audit + fix pass, not a rebuild.
Audit each of C / C++ / Python against C# (libraries/platform/language-runner/src/lib/language-runner-config.ts configs + per-runner providers):
Help menu resources — every language links equivalent-quality external docs
Guided tours — C# has buildCSharpTour; C/C++ use buildClangTour, Python uses buildCommonTour. Verify each tour covers the same shell features (options menu, lesson toggle, concept pane, submissions) at the same depth
Options menu — language-appropriate parity: C/C++ have standards selection; C# has top-level statements + implicit usings; Python currently has no options entry — decide if one is warranted (e.g. interpreter behavior toggles) or explicitly n/a
Status chips — same chip set (connection, local/server/offline, standard, runtime loading, running, submission status, execution time) rendering for all four
Concept Reference depth — C/C++/Python concept registries cover their curricula as thoroughly as CSHARP_CONCEPTS, incl. es translations
Beginner/Advanced sandbox toggle + File menu behavior identical across the four
Output: a checklist comment on this issue recording found gaps, then fixes landed in the same PR series. Anything JS-specific belongs to P1 (#324).
Acceptance: a student switching C# → Python → C → C++ sees the same menus, chips, panes, and tour coverage, with only language-appropriate differences remaining.
Phase P2 of epic #323.
C, C++, and Python already render the shared `LanguagePlaygroundShellComponent`, but C# (the most-worked playground) has accumulated niceties the others may lack in detail. This is a systematic audit + fix pass, not a rebuild.
Audit each of C / C++ / Python against C# (`libraries/platform/language-runner/src/lib/language-runner-config.ts` configs + per-runner providers):
- [ ] **Help menu resources** — every language links equivalent-quality external docs
- [ ] **Guided tours** — C# has `buildCSharpTour`; C/C++ use `buildClangTour`, Python uses `buildCommonTour`. Verify each tour covers the same shell features (options menu, lesson toggle, concept pane, submissions) at the same depth
- [ ] **Options menu** — language-appropriate parity: C/C++ have standards selection; C# has top-level statements + implicit usings; Python currently has no options entry — decide if one is warranted (e.g. interpreter behavior toggles) or explicitly n/a
- [ ] **Status chips** — same chip set (connection, local/server/offline, standard, runtime loading, running, submission status, execution time) rendering for all four
- [ ] **Concept Reference depth** — C/C++/Python concept registries cover their curricula as thoroughly as `CSHARP_CONCEPTS`, incl. es translations
- [ ] **Beginner/Advanced sandbox toggle + File menu** behavior identical across the four
- [ ] **Storage keys** — consistent `spikersoft.<lang>-runner.shell.v1` naming
**Output:** a checklist comment on this issue recording found gaps, then fixes landed in the same PR series. Anything JS-specific belongs to P1 (#324).
**Acceptance:** a student switching C# → Python → C → C++ sees the same menus, chips, panes, and tour coverage, with only language-appropriate differences remaining.
Parity audit results (C / C++ / Python / JS vs C#)
Audited on top of #324's migration (spikersoft-angular PR #94), so JavaScript is included as a fifth column.
Area
Verdict
Help menu resources
✅ All five covered (JS entries added in #324: MDN Guide/Reference, QuickJS)
Status chips / File menu / beginner-advanced toggle / pane system
✅ Uniform by construction — all render from the shared shell component
es concept-overlay guard spec
🔧Fixed — JS was the only registry without the coverage spec (orphan ids / missing overlays / untranslated summaries / example overruns); added on the #324 branch (a464cb7), 45/45 green
Options menu
✅ Language-appropriate by design: C/C++ standards picker, C# top-level+implicit-usings. Decision recorded: n/a for Python (no meaningful interpreter options) and JS (Prettier options already live in the debugger toolbar popover)
Storage keys
⚠️ Inconsistent naming: spikersoft.clang.{c,cpp}-runner.shell.v1 vs spikersoft.{csharp,python,javascript}-runner.shell.v1. Recommend explicit n/a — renaming silently resets users' saved pane layouts/widths (same rationale as the IndexedDB no-rename rule). New playgrounds should use the unprefixed form
Guided tours — depth
⚠️ C# has a bespoke tour covering its option toggles; C/C++ add standard-selector steps; Python/JS use the common tour (JS with custom run/output copy). Acceptable, language-appropriate
Guided tours — shell chrome
🔴Real gap, all five languages: the shell template declares anchors (view-menu, lessons-menu, help-menu, execution-mode-menu, concept-pane-host, curriculum-pane) but no tour targets them — tours only walk runner internals (editor, run, output). Students are never shown the Lessons menu, Concept Reference, or View/Mode menus. Recommend a shared shell-chrome tour segment appended to buildCommonTour so all five languages inherit it at once
Concept registry depth
⚠️ C# 80 · C++ 73 · C 67 · Python 44 · JS 30 entries. Python and JS are thin relative to curriculum size (JS spans 17 tiers). Content-authoring follow-up, not structural
Proposed follow-up work items
Shared shell-chrome tour segment (the one code change with real learner impact) — one edit in language-runner-tour.builder.ts + i18n copy, inherited by all five playgrounds.
Grow Python (44) and JS (30) concept registries toward their curriculum coverage — authoring task, can trickle in.
Items 4–5 in this issue's checklist (chips, storage keys) need no code. If the two follow-ups above are approved I'll take the tour segment first.
## Parity audit results (C / C++ / Python / JS vs C#)
Audited on top of #324's migration (spikersoft-angular PR #94), so JavaScript is included as a fifth column.
| Area | Verdict |
|---|---|
| Help menu resources | ✅ All five covered (JS entries added in #324: MDN Guide/Reference, QuickJS) |
| Status chips / File menu / beginner-advanced toggle / pane system | ✅ Uniform by construction — all render from the shared shell component |
| es concept-overlay guard spec | 🔧 **Fixed** — JS was the only registry without the coverage spec (orphan ids / missing overlays / untranslated summaries / example overruns); added on the #324 branch (`a464cb7`), 45/45 green |
| Options menu | ✅ Language-appropriate by design: C/C++ standards picker, C# top-level+implicit-usings. **Decision recorded: n/a for Python** (no meaningful interpreter options) **and JS** (Prettier options already live in the debugger toolbar popover) |
| Storage keys | ⚠️ Inconsistent naming: `spikersoft.clang.{c,cpp}-runner.shell.v1` vs `spikersoft.{csharp,python,javascript}-runner.shell.v1`. **Recommend explicit n/a** — renaming silently resets users' saved pane layouts/widths (same rationale as the IndexedDB no-rename rule). New playgrounds should use the unprefixed form |
| Guided tours — depth | ⚠️ C# has a bespoke tour covering its option toggles; C/C++ add standard-selector steps; Python/JS use the common tour (JS with custom run/output copy). Acceptable, language-appropriate |
| Guided tours — shell chrome | 🔴 **Real gap, all five languages**: the shell template declares anchors (`view-menu`, `lessons-menu`, `help-menu`, `execution-mode-menu`, `concept-pane-host`, `curriculum-pane`) but **no tour targets them** — tours only walk runner internals (editor, run, output). Students are never shown the Lessons menu, Concept Reference, or View/Mode menus. Recommend a shared shell-chrome tour segment appended to `buildCommonTour` so all five languages inherit it at once |
| Concept registry depth | ⚠️ C# 80 · C++ 73 · C 67 · Python 44 · JS 30 entries. Python and JS are thin relative to curriculum size (JS spans 17 tiers). Content-authoring follow-up, not structural |
### Proposed follow-up work items
1. Shared shell-chrome tour segment (the one code change with real learner impact) — one edit in `language-runner-tour.builder.ts` + i18n copy, inherited by all five playgrounds.
2. Grow Python (44) and JS (30) concept registries toward their curriculum coverage — authoring task, can trickle in.
Items 4–5 in this issue's checklist (chips, storage keys) need no code. If the two follow-ups above are approved I'll take the tour segment first.
Resolved. Audit findings recorded above; the two code outcomes both merged to master: the JS es-overlay guard spec (spikersoft-angular PR #94) and the shared shell-chrome tour segment covering the curriculum pane, Concept Reference, Mode menu, and Help menu across all five playgrounds (spikersoft-angular PR #95). Remaining item — growing the Python (44) and JS (30) concept registries toward C#'s depth (80) — is a content-authoring follow-up that can trickle in; noted on the epic. Closing.
Resolved. Audit findings recorded above; the two code outcomes both merged to `master`: the JS es-overlay guard spec (spikersoft-angular PR #94) and the shared shell-chrome tour segment covering the curriculum pane, Concept Reference, Mode menu, and Help menu across all five playgrounds (spikersoft-angular PR #95). Remaining item — growing the Python (44) and JS (30) concept registries toward C#'s depth (80) — is a content-authoring follow-up that can trickle in; noted on the epic. Closing.
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.
Phase P2 of epic #323.
C, C++, and Python already render the shared
LanguagePlaygroundShellComponent, but C# (the most-worked playground) has accumulated niceties the others may lack in detail. This is a systematic audit + fix pass, not a rebuild.Audit each of C / C++ / Python against C# (
libraries/platform/language-runner/src/lib/language-runner-config.tsconfigs + per-runner providers):buildCSharpTour; C/C++ usebuildClangTour, Python usesbuildCommonTour. Verify each tour covers the same shell features (options menu, lesson toggle, concept pane, submissions) at the same depthCSHARP_CONCEPTS, incl. es translationsspikersoft.<lang>-runner.shell.v1namingOutput: a checklist comment on this issue recording found gaps, then fixes landed in the same PR series. Anything JS-specific belongs to P1 (#324).
Acceptance: a student switching C# → Python → C → C++ sees the same menus, chips, panes, and tour coverage, with only language-appropriate differences remaining.
Parity audit results (C / C++ / Python / JS vs C#)
Audited on top of #324's migration (spikersoft-angular PR #94), so JavaScript is included as a fifth column.
a464cb7), 45/45 greenspikersoft.clang.{c,cpp}-runner.shell.v1vsspikersoft.{csharp,python,javascript}-runner.shell.v1. Recommend explicit n/a — renaming silently resets users' saved pane layouts/widths (same rationale as the IndexedDB no-rename rule). New playgrounds should use the unprefixed formview-menu,lessons-menu,help-menu,execution-mode-menu,concept-pane-host,curriculum-pane) but no tour targets them — tours only walk runner internals (editor, run, output). Students are never shown the Lessons menu, Concept Reference, or View/Mode menus. Recommend a shared shell-chrome tour segment appended tobuildCommonTourso all five languages inherit it at onceProposed follow-up work items
language-runner-tour.builder.ts+ i18n copy, inherited by all five playgrounds.Items 4–5 in this issue's checklist (chips, storage keys) need no code. If the two follow-ups above are approved I'll take the tour segment first.
Resolved. Audit findings recorded above; the two code outcomes both merged to
master: the JS es-overlay guard spec (spikersoft-angular PR #94) and the shared shell-chrome tour segment covering the curriculum pane, Concept Reference, Mode menu, and Help menu across all five playgrounds (spikersoft-angular PR #95). Remaining item — growing the Python (44) and JS (30) concept registries toward C#'s depth (80) — is a content-authoring follow-up that can trickle in; noted on the epic. Closing.