[Playgrounds P2] Shell parity audit — C / C++ / Python vs C# small-gap sweep #325

Closed
opened 2026-07-02 00:50:18 +00:00 by spikerj · 2 comments
Owner

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.

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.
spikerj added the enhancement label 2026-07-02 00:50:18 +00:00
Author
Owner

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.

## 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.
Author
Owner

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.
Sign in to join this conversation.