diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c19316b..c67ba08 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -14,7 +14,7 @@ updates: prefix: "chore" include: "scope" # @types/node major versions track the Node.js runtime (see shared CI default). - # Bump TemplateSingleSim and repos together when CI node-version changes. + # Bump SceneryStackTemplate and repos together when CI node-version changes. ignore: - dependency-name: "@types/node" update-types: ["version-update:semver-major"] diff --git a/CLAUDE.md b/CLAUDE.md index 8f9d766..a6dc1c9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,10 +1,10 @@ -# CLAUDE.md — Sim Template +# CLAUDE.md — SceneryStack Template Sim-specific context for AI assistants. General SceneryStack guidance: [OpenPhysics/.github/CLAUDE.md](https://github.com/OpenPhysics/.github/blob/main/CLAUDE.md). ## Project -Reusable single-screen SceneryStack template and **canonical accessibility reference** for +Reusable SceneryStack template (one or N screens) and **canonical accessibility reference** for OpenPhysics sims. Prefer `Baton/scripts/create-sim.sh` (or GitHub **Use this template** + `npm run rename` + `npm run scaffold-screens`) to fork it. For multi-screen sims, see [`doc/multi-screen.md`](doc/multi-screen.md). @@ -166,7 +166,7 @@ owns screen folders (fleet naming: `src/intro/`, not `intro-screen/`). ### Manual checklist (if not using the scripts) -1. **Rename** — replace `sim-template` / `Sim Template` / `Sim` prefix in `init.ts`, `brand.ts`, `package.json`, Colors/Namespace/Preferences +1. **Rename** — replace `scenerystack-template` / `SceneryStack Template` / `Sim` prefix in `init.ts`, `brand.ts`, `package.json`, Colors/Namespace/Preferences 2. **Screens** — run `scaffold-screens` or mirror `sim-screen/` into kebab folders 3. **Locale** — add `strings_XX.json`, register in `StringManager`, add locale to `init.ts` `availableLocales` 4. **Icon** — edit `public/icons/icon.svg`, run `npm run icons`; match theme color in `index.html` / `vite.config.ts` diff --git a/CREDITS.md b/CREDITS.md index 11acd84..6c59172 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,6 +1,6 @@ -# Credits — TemplateSingleSim +# Credits — SceneryStackTemplate -Reusable single-screen SceneryStack simulation template with Vite, TypeScript, Biome, PWA support, and i18n scaffolding. +Reusable SceneryStack simulation template (one or N screens) with Vite, TypeScript, Biome, PWA support, and i18n scaffolding. ## License diff --git a/README.md b/README.md index 86dbeca..92bb61e 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# Sim Template +# SceneryStack Template -A reusable single-screen simulation template built with [SceneryStack](https://scenerystack.org/), -Vite 8, TypeScript 7, and Biome 2. +A reusable SceneryStack simulation template for one or N screens, built with +[SceneryStack](https://scenerystack.org/), Vite 8, TypeScript 7, and Biome 2. ## Features -- Single-screen SceneryStack scaffold with model/view separation +- SceneryStack scaffold with model/view separation (`rename` + `scaffold-screens` for one or N screens) - English, Spanish, and French localization via `StringManager` - Default and projector color profiles - Progressive Web App (installable, offline-capable) diff --git a/doc/implementation-notes.md b/doc/implementation-notes.md index 4d07181..62c36c3 100644 --- a/doc/implementation-notes.md +++ b/doc/implementation-notes.md @@ -1,12 +1,12 @@ -# Implementation Notes - Sim Template +# Implementation Notes - SceneryStack Template -Developer-facing notes on the **TemplateSingleSim** scaffold. **Replace and expand this file when +Developer-facing notes on the **SceneryStackTemplate** scaffold. **Replace and expand this file when forking** to describe your sim's real architecture (see Stern Gerlach or Light Propagation for target quality). Until then, this documents what the template provides out of the box. ## Architecture Overview -TemplateSingleSim is the fleet-canonical starting point for new single-screen SceneryStack sims. +SceneryStackTemplate is the fleet-canonical starting point for new SceneryStack sims (one or N screens). It demonstrates Model–View separation, color profiles, localization, reset behavior, accessibility reference wiring, and reusable common components — **without** domain physics. diff --git a/doc/model.md b/doc/model.md index e450065..b00964e 100644 --- a/doc/model.md +++ b/doc/model.md @@ -1,4 +1,4 @@ -# Model - Sim Template +# Model - SceneryStack Template This document describes the model (the underlying physics, math, and behavior) for the simulation, in terms appropriate for an educator. It is the companion to diff --git a/doc/multi-screen.md b/doc/multi-screen.md index 24bb09c..4ace6d0 100644 --- a/doc/multi-screen.md +++ b/doc/multi-screen.md @@ -421,7 +421,7 @@ To pull template improvements back into an existing fork: ```sh # One-time: add the template as a remote -git remote add template https://github.com/OpenPhysics/TemplateSingleSim.git +git remote add template https://github.com/OpenPhysics/SceneryStackTemplate.git # Pull template changes into a branch for review git fetch template diff --git a/index.html b/index.html index e0e2903..6f6bf0f 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ - Sim Template + SceneryStack Template diff --git a/package-lock.json b/package-lock.json index 9cea1a0..1eb4063 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "sim-template", + "name": "scenerystack-template", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "sim-template", + "name": "scenerystack-template", "version": "0.0.0", "license": "AGPL-3.0-or-later", "dependencies": { diff --git a/package.json b/package.json index bd59af2..fed2360 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "sim-template", + "name": "scenerystack-template", "private": true, "version": "0.0.0", "type": "module", @@ -7,7 +7,7 @@ "license": "AGPL-3.0-or-later", "repository": { "type": "git", - "url": "https://github.com/OpenPhysics/TemplateSingleSim.git" + "url": "https://github.com/OpenPhysics/SceneryStackTemplate.git" }, "keywords": [ "template", diff --git a/scripts/rename-sim.ts b/scripts/rename-sim.ts index d9f3b06..415df29 100644 --- a/scripts/rename-sim.ts +++ b/scripts/rename-sim.ts @@ -79,14 +79,14 @@ const REPLACEMENTS: ReadonlyArray<[string, string]> = [ // camelCase identifier ["simQueryParameters", `${newCamel}QueryParameters`], // Display strings (all locales + PWA) - ["Sim Template", newName], + ["SceneryStack Template", newName], ["Plantilla de Simulación", newName], ["Modèle de Simulation", newName], ["SimTemplate", newPrefix], - ["A SceneryStack single-screen simulation template.", `A SceneryStack simulation: ${newName}.`], - ["A single-screen SceneryStack simulation template", `A SceneryStack simulation: ${newName}`], + ["A SceneryStack simulation template for one or N screens.", `A SceneryStack simulation: ${newName}.`], + ["A SceneryStack simulation template for one or N screens", `A SceneryStack simulation: ${newName}`], // Kebab package id - ["sim-template", newId], + ["scenerystack-template", newId], ]; // ── Utilities ───────────────────────────────────────────────────────────────── @@ -158,8 +158,8 @@ function collectRenames(dir: string, renameOps: RenameOp[]): void { // ── Main ────────────────────────────────────────────────────────────────────── console.log("\nRenaming sim template →", newName); -console.log(` id: sim-template → ${newId}`); -console.log(` name: Sim Template → ${newName}`); +console.log(` id: scenerystack-template → ${newId}`); +console.log(` name: SceneryStack Template → ${newName}`); console.log(` prefix: Sim → ${newPrefix}`); console.log(` camel: sim → ${newCamel}`); console.log(" (screen packages left as sim-screen/ for scaffold-screens)"); diff --git a/scripts/scaffold-screens.ts b/scripts/scaffold-screens.ts index 5b629ad..3f0e50a 100644 --- a/scripts/scaffold-screens.ts +++ b/scripts/scaffold-screens.ts @@ -84,14 +84,14 @@ function parseScreens(raw: string | undefined): ScreenSpec[] { name?: string; description?: string; }; - const id = pkg.name && pkg.name !== "sim-template" ? pkg.name : "sim"; + const id = pkg.name && pkg.name !== "scenerystack-template" ? pkg.name : "sim"; const titleGuess = // Prefer vite/html title already rewritten by rename (() => { try { const html = readFileSync(join(ROOT, "index.html"), "utf8"); const m = html.match(/([^<]+)<\/title>/); - if (m?.[1] && m[1] !== "Sim Template") { + if (m?.[1] && m[1] !== "SceneryStack Template") { return m[1].trim(); } } catch { diff --git a/src/SimNamespace.ts b/src/SimNamespace.ts index 5d00c71..f319a89 100644 --- a/src/SimNamespace.ts +++ b/src/SimNamespace.ts @@ -11,6 +11,6 @@ */ import { Namespace } from "scenerystack/phet-core"; -const SimNamespace = new Namespace("sim-template"); +const SimNamespace = new Namespace("scenerystack-template"); export default SimNamespace; diff --git a/src/i18n/strings_en.json b/src/i18n/strings_en.json index 248e4cc..e0ef6f6 100644 --- a/src/i18n/strings_en.json +++ b/src/i18n/strings_en.json @@ -1,5 +1,5 @@ { - "title": "Sim Template", + "title": "SceneryStack Template", "screens": { "sim": "Sim" }, diff --git a/src/init.ts b/src/init.ts index a1a54bf..f4882a3 100644 --- a/src/init.ts +++ b/src/init.ts @@ -20,7 +20,7 @@ import { init, madeWithSceneryStackSplashDataURI } from "scenerystack/init"; init({ // Internal identifier used by SceneryStack for URL parameters and phetmarks. // Use kebab-case matching the package.json "name" field. - name: "sim-template", + name: "scenerystack-template", // Displayed in the About dialog (Help menu → About). version: "0.0.0", diff --git a/src/sim-screen/view/SimScreenView.ts b/src/sim-screen/view/SimScreenView.ts index a6c191b..835b543 100644 --- a/src/sim-screen/view/SimScreenView.ts +++ b/src/sim-screen/view/SimScreenView.ts @@ -51,7 +51,7 @@ export class SimScreenView extends ScreenView { // ── Placeholder label ───────────────────────────────────────────────────── // Replace this with your actual simulation content. - const placeholderText = new Text("Sim Template", { + const placeholderText = new Text("SceneryStack Template", { font: "bold 36px sans-serif", fill: SimColors.textColorProperty, center: this.layoutBounds.center, diff --git a/tests/fuzz/fuzz.spec.ts b/tests/fuzz/fuzz.spec.ts index e6a0bdf..098c1c3 100644 --- a/tests/fuzz/fuzz.spec.ts +++ b/tests/fuzz/fuzz.spec.ts @@ -1,5 +1,5 @@ /** - * Optional Playwright fuzz smoke for the single-sim template. + * Optional Playwright fuzz smoke for the SceneryStack template. * * Usage: * npm run test:fuzz diff --git a/tests/memory-leak.test.ts b/tests/memory-leak.test.ts index 081013e..22b5eaa 100644 --- a/tests/memory-leak.test.ts +++ b/tests/memory-leak.test.ts @@ -1,5 +1,5 @@ /** - * Fleet-standard memory-leak regression suite (TemplateSingleSim / QubitSketch pattern). + * Fleet-standard memory-leak regression suite (SceneryStackTemplate / QubitSketch pattern). * * Creates a disposable model object inside a function boundary, disposes it, forces * garbage collection via global.gc (--expose-gc in vitest.config.ts), then asserts via diff --git a/tests/setup.ts b/tests/setup.ts index 34c405e..104bbdc 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -157,7 +157,7 @@ import { init, madeWithSceneryStackSplashDataURI } from "scenerystack/init"; init({ // Change to match your package.json "name" when forking the template. - name: "sim-template", + name: "scenerystack-template", version: "1.0.0-test", brand: "made-with-scenerystack", locale: "en", diff --git a/vite.config.ts b/vite.config.ts index 6d8709b..5a629da 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -152,10 +152,10 @@ export default defineConfig(({ mode }) => { registerType: "autoUpdate", includeAssets: ["favicon.ico", "icons/apple-touch-icon.png"], manifest: { - name: "Sim Template", + name: "SceneryStack Template", // biome-ignore lint/style/useNamingConvention: Web App Manifest spec requires snake_case keys short_name: "SimTemplate", - description: "A single-screen SceneryStack simulation template", + description: "A SceneryStack simulation template for one or N screens", // biome-ignore lint/style/useNamingConvention: Web App Manifest spec requires snake_case keys theme_color: "#1a1a2e", // biome-ignore lint/style/useNamingConvention: Web App Manifest spec requires snake_case keys