JavaScript is the only core-language playground still on the old direct-LanguageRunner wrapper. libraries/features/dev-tools-javascript-runner/src/lib/javascript-runner.ts imports LanguageRunner, JsDebuggerToolbarComponent, JsDebugVarsPanelComponent, JsDebugConsolePanelComponent, and CodeSubmissionHistory directly — so JS students get none of the shared shell chrome (File/View/Mode/Lessons/Help menus, lesson/sandbox toggle, status chips, guided tour, curriculum pane, Concepts/Submissions/Results tabs).
Migration template: the Python runner (libraries/features/dev-tools-python-runner/src/lib/python-runner.ts) already projects a debugger toolbar + vars/console panels into the shell, so the pattern is proven.
Replace the direct app-language-runner template with <lib-language-playground-shell storageKey="spikersoft.javascript-runner.shell.v1" submissionLanguage="javascript">
Project JsDebuggerToolbarComponent / JsDebugVarsPanelComponent / JsDebugConsolePanelComponent through the shell's projection slots (mirror the Python provider/imports wiring)
Wire the concept pane: provide LANGUAGE_CONCEPT_REGISTRY with JS concepts + LANGUAGE_CONCEPT_TRANSLATIONS (es), LanguageConceptRegistryService, LanguageHighlightService, KEYWORD_HIGHLIGHT_HANDLER — authoring the JS concept registry content is in scope
Preserve Prettier formatting support and move submission history into the shell's Submissions tab (drop the bespoke side pane)
Verify the existing JS guided tour (buildJavaScriptTour in language-runner-config.ts) still anchors correctly inside the shell
Confirm lesson mode, sandbox mode, and offline behavior match the other four playgrounds
Acceptance:/tools JavaScript playground renders the same shell chrome as C/C++/Python/C#; JS debugger features keep working; no regression in the anonymous-walk E2E.
Phase P1 of epic #323.
JavaScript is the only core-language playground still on the old direct-`LanguageRunner` wrapper. `libraries/features/dev-tools-javascript-runner/src/lib/javascript-runner.ts` imports `LanguageRunner`, `JsDebuggerToolbarComponent`, `JsDebugVarsPanelComponent`, `JsDebugConsolePanelComponent`, and `CodeSubmissionHistory` directly — so JS students get none of the shared shell chrome (File/View/Mode/Lessons/Help menus, lesson/sandbox toggle, status chips, guided tour, curriculum pane, Concepts/Submissions/Results tabs).
**Migration template:** the Python runner (`libraries/features/dev-tools-python-runner/src/lib/python-runner.ts`) already projects a debugger toolbar + vars/console panels into the shell, so the pattern is proven.
- [ ] Replace the direct `app-language-runner` template with `<lib-language-playground-shell storageKey="spikersoft.javascript-runner.shell.v1" submissionLanguage="javascript">`
- [ ] Project `JsDebuggerToolbarComponent` / `JsDebugVarsPanelComponent` / `JsDebugConsolePanelComponent` through the shell's projection slots (mirror the Python provider/imports wiring)
- [ ] Wire the concept pane: provide `LANGUAGE_CONCEPT_REGISTRY` with JS concepts + `LANGUAGE_CONCEPT_TRANSLATIONS` (es), `LanguageConceptRegistryService`, `LanguageHighlightService`, `KEYWORD_HIGHLIGHT_HANDLER` — authoring the JS concept registry content is in scope
- [ ] Preserve Prettier formatting support and move submission history into the shell's Submissions tab (drop the bespoke side pane)
- [ ] Verify the existing JS guided tour (`buildJavaScriptTour` in `language-runner-config.ts`) still anchors correctly inside the shell
- [ ] Confirm lesson mode, sandbox mode, and offline behavior match the other four playgrounds
**Acceptance:** `/tools` JavaScript playground renders the same shell chrome as C/C++/Python/C#; JS debugger features keep working; no regression in the anonymous-walk E2E.
PR open: spikersoft-angular#94 (spikerj/spikersoft-angular#94), branch feat/issue-324-js-playground-shell off master.
Against this issue's checklist:
Direct app-language-runner template replaced with <lib-language-playground-shell storageKey="spikersoft.javascript-runner.shell.v1" submissionLanguage="javascript">
Debugger toolbar / vars / console panels projected through the shell slots (Python pattern)
Concept pane wired: 30-entry JAVASCRIPT_CONCEPTS registry authored (Tier00–Tier16 vocabulary) + full es overlay; "javascript" added to LanguageConceptLanguage; highlight services provided
Prettier preserved (registers on first shell-re-emitted editorReady); submission history moved into the shell's Submissions tab, bespoke pane deleted
Tour: buildJavaScriptTour targets data-tour attrs inside the (unchanged) runner — compiles and renders; flagged a manual eyeball of the anchors in the PR as follow-up
Lesson/sandbox/offline behavior now flows through the exact same shell code paths as the other four playgrounds
Also added JavaScript Help-menu resources (MDN Guide/Reference, QuickJS) with en+es keys — one less gap for the P2 audit (#325).
Verified: lib tests 40/40, full pnpm build, pnpm run lint (ESLint boundaries + Prettier + Stylelint) all green. Will close when #94 merges.
PR open: spikersoft-angular#94 (https://git.spikersoft.com/spikerj/spikersoft-angular/pulls/94), branch `feat/issue-324-js-playground-shell` off `master`.
Against this issue's checklist:
- [x] Direct `app-language-runner` template replaced with `<lib-language-playground-shell storageKey="spikersoft.javascript-runner.shell.v1" submissionLanguage="javascript">`
- [x] Debugger toolbar / vars / console panels projected through the shell slots (Python pattern)
- [x] Concept pane wired: 30-entry `JAVASCRIPT_CONCEPTS` registry authored (Tier00–Tier16 vocabulary) + full es overlay; `"javascript"` added to `LanguageConceptLanguage`; highlight services provided
- [x] Prettier preserved (registers on first shell-re-emitted editorReady); submission history moved into the shell's Submissions tab, bespoke pane deleted
- [x] Tour: `buildJavaScriptTour` targets `data-tour` attrs inside the (unchanged) runner — compiles and renders; flagged a manual eyeball of the anchors in the PR as follow-up
- [x] Lesson/sandbox/offline behavior now flows through the exact same shell code paths as the other four playgrounds
Also added JavaScript Help-menu resources (MDN Guide/Reference, QuickJS) with en+es keys — one less gap for the P2 audit (#325).
Verified: lib tests 40/40, full `pnpm build`, `pnpm run lint` (ESLint boundaries + Prettier + Stylelint) all green. Will close when #94 merges.
Resolved in spikersoft-angular PR #94 (merged to master). JavaScript playground now renders the shared LanguagePlaygroundShellComponent with the debugger toolbar/rail projected through the shell slots, a 30-entry Concept Reference registry + full es overlay (with the coverage guard spec), submission history in the shell's Submissions tab, Prettier + Monaco bridge preserved, and JS Help-menu resources (en+es). All five core playgrounds (C / C++ / JavaScript / Python / C#) now share the same chrome. Closing.
Resolved in spikersoft-angular PR #94 (merged to `master`). JavaScript playground now renders the shared `LanguagePlaygroundShellComponent` with the debugger toolbar/rail projected through the shell slots, a 30-entry Concept Reference registry + full es overlay (with the coverage guard spec), submission history in the shell's Submissions tab, Prettier + Monaco bridge preserved, and JS Help-menu resources (en+es). All five core playgrounds (C / C++ / JavaScript / Python / C#) now share the same chrome. 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 P1 of epic #323.
JavaScript is the only core-language playground still on the old direct-
LanguageRunnerwrapper.libraries/features/dev-tools-javascript-runner/src/lib/javascript-runner.tsimportsLanguageRunner,JsDebuggerToolbarComponent,JsDebugVarsPanelComponent,JsDebugConsolePanelComponent, andCodeSubmissionHistorydirectly — so JS students get none of the shared shell chrome (File/View/Mode/Lessons/Help menus, lesson/sandbox toggle, status chips, guided tour, curriculum pane, Concepts/Submissions/Results tabs).Migration template: the Python runner (
libraries/features/dev-tools-python-runner/src/lib/python-runner.ts) already projects a debugger toolbar + vars/console panels into the shell, so the pattern is proven.app-language-runnertemplate with<lib-language-playground-shell storageKey="spikersoft.javascript-runner.shell.v1" submissionLanguage="javascript">JsDebuggerToolbarComponent/JsDebugVarsPanelComponent/JsDebugConsolePanelComponentthrough the shell's projection slots (mirror the Python provider/imports wiring)LANGUAGE_CONCEPT_REGISTRYwith JS concepts +LANGUAGE_CONCEPT_TRANSLATIONS(es),LanguageConceptRegistryService,LanguageHighlightService,KEYWORD_HIGHLIGHT_HANDLER— authoring the JS concept registry content is in scopebuildJavaScriptTourinlanguage-runner-config.ts) still anchors correctly inside the shellAcceptance:
/toolsJavaScript playground renders the same shell chrome as C/C++/Python/C#; JS debugger features keep working; no regression in the anonymous-walk E2E.PR open: spikersoft-angular#94 (spikerj/spikersoft-angular#94), branch
feat/issue-324-js-playground-shelloffmaster.Against this issue's checklist:
app-language-runnertemplate replaced with<lib-language-playground-shell storageKey="spikersoft.javascript-runner.shell.v1" submissionLanguage="javascript">JAVASCRIPT_CONCEPTSregistry authored (Tier00–Tier16 vocabulary) + full es overlay;"javascript"added toLanguageConceptLanguage; highlight services providedbuildJavaScriptTourtargetsdata-tourattrs inside the (unchanged) runner — compiles and renders; flagged a manual eyeball of the anchors in the PR as follow-upAlso added JavaScript Help-menu resources (MDN Guide/Reference, QuickJS) with en+es keys — one less gap for the P2 audit (#325).
Verified: lib tests 40/40, full
pnpm build,pnpm run lint(ESLint boundaries + Prettier + Stylelint) all green. Will close when #94 merges.Resolved in spikersoft-angular PR #94 (merged to
master). JavaScript playground now renders the sharedLanguagePlaygroundShellComponentwith the debugger toolbar/rail projected through the shell slots, a 30-entry Concept Reference registry + full es overlay (with the coverage guard spec), submission history in the shell's Submissions tab, Prettier + Monaco bridge preserved, and JS Help-menu resources (en+es). All five core playgrounds (C / C++ / JavaScript / Python / C#) now share the same chrome. Closing.