From acbc5b113e9e90a4051e810897415ea222040ddd Mon Sep 17 00:00:00 2001 From: DavidQ Date: Sat, 20 Jun 2026 13:19:00 -0400 Subject: [PATCH] PR_26171_040 clean idea board production copy --- .../dev/reports/codex_changed_files.txt | 79 +++---- docs_build/dev/reports/codex_review.diff | 195 ++---------------- .../reports/coverage_changed_js_guardrail.txt | 7 +- .../reports/playwright_v8_coverage_report.txt | 11 +- src/dev-runtime/server/local-api-router.mjs | 2 +- src/shared/toolbox/tool-metadata-inventory.js | 10 +- .../tools/IdeaBoardTableNotes.spec.mjs | 14 +- .../tools/ToolboxRoutePages.spec.mjs | 10 +- toolbox/idea-board/index.html | 28 +-- toolbox/idea-board/index.js | 12 +- 10 files changed, 116 insertions(+), 252 deletions(-) diff --git a/docs_build/dev/reports/codex_changed_files.txt b/docs_build/dev/reports/codex_changed_files.txt index 4a954a997..105ba5ca3 100644 --- a/docs_build/dev/reports/codex_changed_files.txt +++ b/docs_build/dev/reports/codex_changed_files.txt @@ -1,57 +1,58 @@ -# Codex Changed Files - PR_26171_039-table-first-workspace-governance +# Codex Changed Files - PR_26171_040-idea-board-production-copy-cleanup ## Git Workflow -- Current branch: `codex/pr-26171-039-table-first-workspace-governance`. +- Current branch: `codex/pr-26171-040-idea-board-production-copy-cleanup`. - Expected starting branch: `main` (PASS before branch creation). -- Created branch: `codex/pr-26171-039-table-first-workspace-governance`. +- Created branch: `codex/pr-26171-040-idea-board-production-copy-cleanup`. - Push result: pending until after commit. - PR URL: pending until after push. - Merge result: pending until after PR validation/merge. - Final main commit: pending until after merge and final pull. ## Changed Files -- docs_build/dev/PROJECT_INSTRUCTIONS.md - docs_build/dev/reports/codex_changed_files.txt - docs_build/dev/reports/codex_review.diff +- docs_build/dev/reports/coverage_changed_js_guardrail.txt +- docs_build/dev/reports/playwright_v8_coverage_report.txt +- src/dev-runtime/server/local-api-router.mjs +- src/shared/toolbox/tool-metadata-inventory.js +- tests/playwright/tools/IdeaBoardTableNotes.spec.mjs +- tests/playwright/tools/ToolboxRoutePages.spec.mjs +- toolbox/idea-board/index.html +- toolbox/idea-board/index.js ## Requirement Evidence -- PASS: Added `TABLE-FIRST WORKSPACE GOVERNANCE` section to `docs_build/dev/PROJECT_INSTRUCTIONS.md`. -- PASS: Section states primary work surface is a table. -- PASS: Section says to prefer inline table workflows over forms. -- PASS: Section prohibits detached selected-item context panels. -- PASS: Section prohibits detached notes/detail panels when child rows can render under the parent row. -- PASS: Parent/child patterns include Idea 1-* Notes, Character 1-* Dialog, Quest 1-* Objectives, and Audio Profile 1-* Effects. -- PASS: Section says parent name cell owns accordion behavior. -- PASS: Section says chevron appears inside parent name cell. -- PASS: Section says entire parent name cell toggles expansion. -- PASS: Section says child count columns are informational only. -- PASS: Section says only one parent row may be expanded at a time. -- PASS: Section says default state is all collapsed. -- PASS: Section says child rows are indented. -- PASS: Section says child Add button aligns with child rows. -- PASS: Section says metadata remains stored but hidden unless explicitly needed. -- PASS: Section says Add buttons are left aligned and self-describing. -- PASS: Section says enumerated fields become dropdowns during edit mode. -- PASS: Visual examples include default collapsed table, expanded parent with indented child rows, normal Edit/Delete row, edit Save/Cancel row with dropdown status, and add Save/Cancel row. -- PASS: Explicit row-state rules include Normal row actions: Edit Delete. -- PASS: Explicit row-state rules include Edit row actions: Save Cancel. -- PASS: Explicit row-state rules include Add row actions: Save Cancel. -- PASS: Explicit row-state rules state Save/Cancel is row-level only. -- PASS: Explicit row-state rules prohibit page-level Save for normal row editing. -- PASS: Explicit row-state rules state Cancel restores previous row state. -- PASS: Explicit row-state rules state Save commits only the edited row. -- PASS: Explicit row-state rules prohibit multiple simultaneous row edits unless explicitly approved. -- PASS: Runtime code was not changed. -- PASS: Tests were not changed. -- PASS: Roadmap status was not changed. +- PASS: Creator-visible Idea Board page copy no longer uses DB-shaped, in-page data model, ID/flag/metadata/seed/debug/mock/test/internal wording. +- PASS: Shared Toolbox metadata for Idea Board now uses simple creator-facing language for short description, description, and progress checklist text. +- PASS: Existing persisted Toolbox metadata rows now source-sync Idea Board copy so the browser-visible registry summary updates from source-controlled text. +- PASS: Idea Board table workflow, Add Idea, Add Note, Edit/Delete, Save/Cancel, Status dropdown, accordion behavior, notes under idea rows, and existing in-page data structure were preserved. +- PASS: Targeted Playwright production-copy checks verify the Idea Board main surface does not expose the prohibited creator-visible wording. +- PASS: Copied/adapted files verified as not applicable for this copy-only PR; no Tool Template V2 file copy was required. ## Validation +- PASS: `node --check toolbox/idea-board/index.js`. +- PASS: `node --check src/dev-runtime/server/local-api-router.mjs`. +- PASS: `node --check src/shared/toolbox/tool-metadata-inventory.js`. +- PASS: `node --check tests/playwright/tools/IdeaBoardTableNotes.spec.mjs`. +- PASS: `node --check tests/playwright/tools/ToolboxRoutePages.spec.mjs`. +- PASS: `npx playwright test tests/playwright/tools/IdeaBoardTableNotes.spec.mjs --project=playwright --workers=1 --reporter=line`. +- PASS: `npx playwright test tests/playwright/tools/ToolboxRoutePages.spec.mjs --project=playwright --workers=1 --reporter=line -g "Idea Board launches"`. - PASS: `git diff --check`. -- PASS: Heading confirmation found `## TABLE-FIRST WORKSPACE GOVERNANCE`. -- PASS: Visual examples confirmation found `Visual examples:` and numbered examples. -- PASS: Save/Cancel row-state confirmation found edit/add examples and explicit row-state rules. -- PASS: No Playwright impact; this PR is docs/workflow only. +- PASS: Playwright V8 coverage report produced because runtime JavaScript changed. +- WARN: Coverage report marks `src/dev-runtime/server/local-api-router.mjs` and `src/shared/toolbox/tool-metadata-inventory.js` as not collected by browser V8 coverage; advisory only per project instructions. +- SKIPPED: Full samples smoke was not run per request. ## ZIP -- Path: `tmp/PR_26171_039-table-first-workspace-governance_delta.zip`. -- Size and contents: reported after final ZIP generation. +- Path: `tmp/PR_26171_040-idea-board-production-copy-cleanup_delta.zip`. +- Size: `86984` bytes before final report refresh; final size reported in the delivery summary. +- Contents: + - docs_build/dev/reports/codex_changed_files.txt + - docs_build/dev/reports/codex_review.diff + - docs_build/dev/reports/coverage_changed_js_guardrail.txt + - docs_build/dev/reports/playwright_v8_coverage_report.txt + - src/dev-runtime/server/local-api-router.mjs + - src/shared/toolbox/tool-metadata-inventory.js + - tests/playwright/tools/IdeaBoardTableNotes.spec.mjs + - tests/playwright/tools/ToolboxRoutePages.spec.mjs + - toolbox/idea-board/index.html + - toolbox/idea-board/index.js diff --git a/docs_build/dev/reports/codex_review.diff b/docs_build/dev/reports/codex_review.diff index e48d87175..15ebe14c5 100644 --- a/docs_build/dev/reports/codex_review.diff +++ b/docs_build/dev/reports/codex_review.diff @@ -1,182 +1,21 @@ -diff --git a/docs_build/dev/PROJECT_INSTRUCTIONS.md b/docs_build/dev/PROJECT_INSTRUCTIONS.md -index 8ec5d3681..6a2014f2f 100644 ---- a/docs_build/dev/PROJECT_INSTRUCTIONS.md -+++ b/docs_build/dev/PROJECT_INSTRUCTIONS.md -@@ -1660,6 +1660,81 @@ For tools that present Summary Table or Notes Table note-management surfaces: - - System-created notes may only have status changed when the tool explicitly allows status editing. - - Selected Note Metadata must be shown as table columns, not as a separate detached panel. - -+## TABLE-FIRST WORKSPACE GOVERNANCE -+ -+Primary tool work surfaces must be table-first unless a PR explicitly approves another interaction model. -+ -+Rules: -+- The primary work surface is a table. -+- Prefer inline table workflows over forms. -+- No detached selected-item context panels. -+- No detached notes/detail panels when child rows can render under the parent row. -+- Parent name cells own accordion behavior. -+- The chevron appears inside the parent name cell. -+- The entire parent name cell toggles expansion. -+- Child count columns are informational only. -+- Only one parent row may be expanded at a time. -+- The default state is all collapsed. -+- Child rows are indented. -+- The child Add button aligns with child rows. -+- Metadata remains stored but hidden unless explicitly needed. -+- Add buttons are left aligned and self-describing. -+- Enumerated fields become dropdowns during edit mode. -+ -+Parent/child table pattern examples: -+- Idea 1-* Notes -+- Character 1-* Dialog -+- Quest 1-* Objectives -+- Audio Profile 1-* Effects -+ -+Visual examples: -+ -+1. Default collapsed table. -+ -+| Idea | Pitch | Status | Updated | Notes | Actions | -+| --- | --- | --- | --- | --- | --- | -+| > Sky Orchard | Grow floating islands... | Exploring | 2026-06-20 | 3 Notes | Edit Delete | -+| > Clockwork Courier | Deliver messages through looping city... | New | 2026-06-20 | 0 Notes | Edit Delete | -+| Add Idea | | | | | | -+ -+2. Expanded parent with child rows indented. -+ -+| Idea | Pitch | Status | Updated | Notes | Actions | -+| --- | --- | --- | --- | --- | --- | -+| v Sky Orchard | Grow floating islands... | Exploring | 2026-06-20 | 3 Notes | Edit Delete | -+| Note | Actions | | | | | -+| Wind test needs traversal risks. | Edit Delete | | | | | -+| Island height should read from camera. | Edit Delete | | | | | -+| Add Note | | | | | | -+ -+3. Normal row with Edit/Delete. -+ -+| Idea | Pitch | Status | Updated | Notes | Actions | -+| --- | --- | --- | --- | --- | --- | -+| > Sky Orchard | Grow floating islands... | Exploring | 2026-06-20 | 3 Notes | Edit Delete | -+ -+4. Edit row with Save/Cancel and dropdown status. -+ -+| Idea | Pitch | Status | Updated | Notes | Actions | -+| --- | --- | --- | --- | --- | --- | -+| [Sky Orchard] | [Grow floating islands...] | [Exploring v] | 2026-06-20 | 3 Notes | Save Cancel | -+ -+5. Add row with Save/Cancel. -+ -+| Idea | Pitch | Status | Updated | Notes | Actions | -+| --- | --- | --- | --- | --- | --- | -+| [New idea] | [Pitch] | [New v] | auto | 0 Notes | Save Cancel | -+ -+Explicit row-state rules: -+- Normal row actions: Edit Delete. -+- Edit row actions: Save Cancel. -+- Add row actions: Save Cancel. -+- Save/Cancel is row-level only. -+- No page-level Save for normal row editing. -+- Cancel restores previous row state. -+- Save commits only the edited row. -+- Multiple simultaneous row edits are prohibited unless explicitly approved. -+ - ## INPUT RESOLUTION RULES - - - Discover real files and directories. -diff --git a/docs_build/dev/reports/codex_changed_files.txt b/docs_build/dev/reports/codex_changed_files.txt -index ac3c628b0..4a954a997 100644 +diff --git a/docs_build/dev/reports/codex_changed_files.txt b/docs_build/dev/reports/codex_changed_files.txt +index 3c2821db9..105ba5ca3 100644 --- a/docs_build/dev/reports/codex_changed_files.txt +++ b/docs_build/dev/reports/codex_changed_files.txt -@@ -1,52 +1,57 @@ --# Codex Changed Files - PR_26171_033-idea-board-inline-accordion-cell -+# Codex Changed Files - PR_26171_039-table-first-workspace-governance - - ## Git Workflow --- Current branch: `codex/pr-26171-033-idea-board-inline-accordion-cell`. -+- Current branch: `codex/pr-26171-039-table-first-workspace-governance`. - - Expected starting branch: `main` (PASS before branch creation). --- Created branch: `codex/pr-26171-033-idea-board-inline-accordion-cell`. -+- Created branch: `codex/pr-26171-039-table-first-workspace-governance`. - - Push result: pending until after commit. - - PR URL: pending until after push. - - Merge result: pending until after PR validation/merge. - - Final main commit: pending until after merge and final pull. - - ## Changed Files --- assets/theme-v2/images/gfs-chevron-down.svg --- assets/theme-v2/images/gfs-chevron-up.svg --- docs_build/dev/codex_commands.md --- docs_build/dev/commit_comment.txt -+- docs_build/dev/PROJECT_INSTRUCTIONS.md - - docs_build/dev/reports/codex_changed_files.txt - - docs_build/dev/reports/codex_review.diff --- docs_build/dev/reports/coverage_changed_js_guardrail.txt --- docs_build/dev/reports/playwright_v8_coverage_report.txt --- docs_build/pr/APPLY_PR_26171_033-idea-board-inline-accordion-cell.md --- docs_build/pr/BUILD_PR_26171_033-idea-board-inline-accordion-cell.md --- docs_build/pr/PLAN_PR_26171_033-idea-board-inline-accordion-cell.md --- tests/playwright/tools/IdeaBoardTableNotes.spec.mjs --- tests/playwright/tools/ToolboxRoutePages.spec.mjs --- toolbox/idea-board/index.js - - ## Requirement Evidence --- PASS: Separate `>` expand/collapse button removed from `toolbox/idea-board/index.js`; no `data-idea-board-notes-chevron` control remains. --- PASS: No separate expand/collapse control column was added; the visible Idea table remains Idea, Pitch, Status, Updated, Notes, Actions. --- PASS: Notes count is rendered as a plain informational span and no longer carries `data-idea-board-toggle-notes`. --- PASS: Chevron image is rendered inside the Idea row header cell. --- PASS: Collapsed rows use `assets/theme-v2/images/gfs-chevron-down.svg`. --- PASS: Expanded rows use `assets/theme-v2/images/gfs-chevron-up.svg`. --- PASS: The whole Idea cell carries the toggle target and handles click plus Enter/Space keyboard activation. --- PASS: Expanded notes continue to render directly under the owning idea row. --- PASS: Targeted Playwright verifies clicking Notes count does not expand from a collapsed state. --- PASS: Targeted Playwright verifies clicking Notes count does not collapse from an expanded state. --- PASS: Targeted Playwright verifies clicking the Idea cell expands/collapses and the chevron switches down/up. --- PASS: Theme V2 chevron SVG assets were added under `assets/theme-v2/images/`. -+- PASS: Added `TABLE-FIRST WORKSPACE GOVERNANCE` section to `docs_build/dev/PROJECT_INSTRUCTIONS.md`. -+- PASS: Section states primary work surface is a table. -+- PASS: Section says to prefer inline table workflows over forms. -+- PASS: Section prohibits detached selected-item context panels. -+- PASS: Section prohibits detached notes/detail panels when child rows can render under the parent row. -+- PASS: Parent/child patterns include Idea 1-* Notes, Character 1-* Dialog, Quest 1-* Objectives, and Audio Profile 1-* Effects. -+- PASS: Section says parent name cell owns accordion behavior. -+- PASS: Section says chevron appears inside parent name cell. -+- PASS: Section says entire parent name cell toggles expansion. -+- PASS: Section says child count columns are informational only. -+- PASS: Section says only one parent row may be expanded at a time. -+- PASS: Section says default state is all collapsed. -+- PASS: Section says child rows are indented. -+- PASS: Section says child Add button aligns with child rows. -+- PASS: Section says metadata remains stored but hidden unless explicitly needed. -+- PASS: Section says Add buttons are left aligned and self-describing. -+- PASS: Section says enumerated fields become dropdowns during edit mode. -+- PASS: Visual examples include default collapsed table, expanded parent with indented child rows, normal Edit/Delete row, edit Save/Cancel row with dropdown status, and add Save/Cancel row. -+- PASS: Explicit row-state rules include Normal row actions: Edit Delete. -+- PASS: Explicit row-state rules include Edit row actions: Save Cancel. -+- PASS: Explicit row-state rules include Add row actions: Save Cancel. -+- PASS: Explicit row-state rules state Save/Cancel is row-level only. -+- PASS: Explicit row-state rules prohibit page-level Save for normal row editing. -+- PASS: Explicit row-state rules state Cancel restores previous row state. -+- PASS: Explicit row-state rules state Save commits only the edited row. -+- PASS: Explicit row-state rules prohibit multiple simultaneous row edits unless explicitly approved. -+- PASS: Runtime code was not changed. -+- PASS: Tests were not changed. -+- PASS: Roadmap status was not changed. - - ## Validation --- PASS: `node --check toolbox/idea-board/index.js`. --- PASS: `node --check tests/playwright/tools/IdeaBoardTableNotes.spec.mjs`. --- PASS: `node --check tests/playwright/tools/ToolboxRoutePages.spec.mjs`. --- PASS: `npx playwright test tests/playwright/tools/IdeaBoardTableNotes.spec.mjs --project=playwright --workers=1 --reporter=line` (1 passed). --- PASS: `npx playwright test tests/playwright/tools/ToolboxRoutePages.spec.mjs --project=playwright --workers=1 --reporter=line -g "Idea Board launches"` (1 passed). --- SKIP: Full samples smoke was not run; it is not in scope for this PR. -+- PASS: `git diff --check`. -+- PASS: Heading confirmation found `## TABLE-FIRST WORKSPACE GOVERNANCE`. -+- PASS: Visual examples confirmation found `Visual examples:` and numbered examples. -+- PASS: Save/Cancel row-state confirmation found edit/add examples and explicit row-state rules. -+- PASS: No Playwright impact; this PR is docs/workflow only. +@@ -44,4 +44,15 @@ ## ZIP --- Path: `tmp/PR_26171_033-idea-board-inline-accordion-cell_delta.zip`. -+- Path: `tmp/PR_26171_039-table-first-workspace-governance_delta.zip`. - - Size and contents: reported after final ZIP generation. + - Path: `tmp/PR_26171_040-idea-board-production-copy-cleanup_delta.zip`. +-- Size and contents: reported after final ZIP generation. ++- Size: `86984` bytes before final report refresh; final size reported in the delivery summary. ++- Contents: ++ - docs_build/dev/reports/codex_changed_files.txt ++ - docs_build/dev/reports/codex_review.diff ++ - docs_build/dev/reports/coverage_changed_js_guardrail.txt ++ - docs_build/dev/reports/playwright_v8_coverage_report.txt ++ - src/dev-runtime/server/local-api-router.mjs ++ - src/shared/toolbox/tool-metadata-inventory.js ++ - tests/playwright/tools/IdeaBoardTableNotes.spec.mjs ++ - tests/playwright/tools/ToolboxRoutePages.spec.mjs ++ - toolbox/idea-board/index.html ++ - toolbox/idea-board/index.js diff --git a/docs_build/dev/reports/coverage_changed_js_guardrail.txt b/docs_build/dev/reports/coverage_changed_js_guardrail.txt index 24989fe63..076d27690 100644 --- a/docs_build/dev/reports/coverage_changed_js_guardrail.txt +++ b/docs_build/dev/reports/coverage_changed_js_guardrail.txt @@ -6,7 +6,10 @@ Missing changed runtime JS files are WARN, not FAIL. Source: Playwright/Chromium built-in V8 coverage from the active Playwright run. Changed runtime JS files considered: -(70%) toolbox/idea-board/index.js - executed lines 481/481; executed functions 23/33 +(0%) src/dev-runtime/server/local-api-router.mjs - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only +(0%) src/shared/toolbox/tool-metadata-inventory.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only +(70%) toolbox/idea-board/index.js - executed lines 480/480; executed functions 23/33 Guardrail warnings: -(100%) none - no changed runtime JS coverage warnings +(0%) src/dev-runtime/server/local-api-router.mjs - WARNING: changed runtime JS file missing from coverage; advisory only +(0%) src/shared/toolbox/tool-metadata-inventory.js - WARNING: changed runtime JS file missing from coverage; advisory only diff --git a/docs_build/dev/reports/playwright_v8_coverage_report.txt b/docs_build/dev/reports/playwright_v8_coverage_report.txt index e9decee67..cb35b4d50 100644 --- a/docs_build/dev/reports/playwright_v8_coverage_report.txt +++ b/docs_build/dev/reports/playwright_v8_coverage_report.txt @@ -17,7 +17,9 @@ Exercised tool entry points detected: (63%) Theme V2 Shared JS - exercised 2 runtime JS files Changed runtime JS files covered: -(70%) toolbox/idea-board/index.js - executed lines 481/481; executed functions 23/33 +(0%) src/dev-runtime/server/local-api-router.mjs - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only +(0%) src/shared/toolbox/tool-metadata-inventory.js - WARNING: changed runtime JS file was not collected by Playwright V8 coverage; advisory only +(70%) toolbox/idea-board/index.js - executed lines 480/480; executed functions 23/33 Files with executed line/function counts where available: (25%) src/api/session-api-client.js - executed lines 68/68; executed functions 3/12 @@ -28,14 +30,17 @@ Files with executed line/function counts where available: (65%) src/api/public-config-client.js - executed lines 209/209; executed functions 17/26 (67%) src/api/game-journey-completion-api-client.js - executed lines 15/15; executed functions 2/3 (67%) toolbox/game-workspace/game-workspace-api-client.js - executed lines 20/20; executed functions 2/3 -(70%) toolbox/idea-board/index.js - executed lines 481/481; executed functions 23/33 +(70%) toolbox/idea-board/index.js - executed lines 480/480; executed functions 23/33 (78%) toolbox/tools-page-accordions.js - executed lines 1156/1156; executed functions 87/111 (86%) toolbox/tool-registry-api-client.js - executed lines 155/155; executed functions 25/29 Uncovered or low-coverage changed JS files: -(100%) none - no low-coverage changed runtime JS files +(0%) src/dev-runtime/server/local-api-router.mjs - WARNING: uncovered changed runtime JS file; advisory only +(0%) src/shared/toolbox/tool-metadata-inventory.js - WARNING: uncovered changed runtime JS file; advisory only Changed JS files considered: +(0%) src/dev-runtime/server/local-api-router.mjs - changed JS file not collected as browser runtime coverage +(0%) src/shared/toolbox/tool-metadata-inventory.js - changed JS file not collected as browser runtime coverage (0%) tests/playwright/tools/IdeaBoardTableNotes.spec.mjs - changed JS file not collected as browser runtime coverage (0%) tests/playwright/tools/ToolboxRoutePages.spec.mjs - changed JS file not collected as browser runtime coverage (70%) toolbox/idea-board/index.js - changed JS file with browser V8 coverage diff --git a/src/dev-runtime/server/local-api-router.mjs b/src/dev-runtime/server/local-api-router.mjs index f272c970b..9b98fca14 100644 --- a/src/dev-runtime/server/local-api-router.mjs +++ b/src/dev-runtime/server/local-api-router.mjs @@ -1427,7 +1427,7 @@ function normalizedToolKey(row) { return String(row?.toolKey || row?.toolId || row?.id || "").trim(); } -const SOURCE_CONTROLLED_TOOLBOX_TOOL_IDS = new Set(["game-workspace", "messages", "tags", "text-to-speech", "users"]); +const SOURCE_CONTROLLED_TOOLBOX_TOOL_IDS = new Set(["game-workspace", "idea-board", "messages", "tags", "text-to-speech", "users"]); const SOURCE_CONTROLLED_TOOLBOX_METADATA_FIELDS = Object.freeze([ "active", "adminOnly", diff --git a/src/shared/toolbox/tool-metadata-inventory.js b/src/shared/toolbox/tool-metadata-inventory.js index 130f70814..db04eac5b 100644 --- a/src/shared/toolbox/tool-metadata-inventory.js +++ b/src/shared/toolbox/tool-metadata-inventory.js @@ -72,14 +72,14 @@ export const TOOL_REGISTRY = Object.freeze([ "id": "idea-board", "name": "Idea Board", "displayName": "Idea Board", - "shortDescription": "Capture creator notebook cards before a project exists.", + "shortDescription": "Capture, compare, and shape game ideas in a table.", "shortLabel": "Idea Board", "path": "idea-board", "folderName": "idea-board", "entryPoint": "idea-board/index.html", "badge": "/assets/theme-v2/images/badges/game-design.png", "tool": "/assets/theme-v2/images/tools/game-design.png", - "description": "Capture creator notebook cards, board views, lists, notes, tags, and placeholder project creation before a project exists.", + "description": "Capture, compare, and shape game ideas with notes under each idea row.", "category": "Idea", "colorGroup": "tool-group-idea", "active": true, @@ -91,9 +91,9 @@ export const TOOL_REGISTRY = Object.freeze([ "status": "Wireframe", "releaseChannel": "wireframe", "progressChecklist": [ - "Wireframe notebook sections visible", - "Create Project placeholder remains disabled", - "No persistence or project record creation" + "Idea table workflow visible", + "Add Idea and Add Note actions remain inline", + "Create Project remains unavailable until an idea is ready" ], "deferred": false, "hidden": false, diff --git a/tests/playwright/tools/IdeaBoardTableNotes.spec.mjs b/tests/playwright/tools/IdeaBoardTableNotes.spec.mjs index b115c4191..f5544ca88 100644 --- a/tests/playwright/tools/IdeaBoardTableNotes.spec.mjs +++ b/tests/playwright/tools/IdeaBoardTableNotes.spec.mjs @@ -90,7 +90,13 @@ async function expectExpandedNotesChildIndentation(page, ideaId, expectedInputRo } } -test("Idea Board uses DB-shaped accordion table ideas and notes", async ({ page }) => { +async function expectProductionCopy(page) { + await expect(page.locator("main")).not.toContainText( + /\bDB-shaped\b|\bin-page data model\b|\buserId\b|\bideaId\b|\bnoteId\b|\bsystem flag\b|\bmetadata\b|\bseed\b|\bdebug\b|\bselected context\b|\bmock\b|\btest\b|\binternal implementation\b|\bplaceholder\b|\bproject records\b|\bmutating API\b|\bauth\b|\bAI\b|\bdatabase behavior\b/i, + ); +} + +test("Idea Board uses accordion table ideas and notes", async ({ page }) => { const server = await startRepoServer(); const previousApiUrl = process.env.GAMEFOUNDRY_API_URL; const previousSiteUrl = process.env.GAMEFOUNDRY_SITE_URL; @@ -121,6 +127,7 @@ test("Idea Board uses DB-shaped accordion table ideas and notes", async ({ page try { await page.goto(`${server.baseUrl}/toolbox/idea-board/index.html`, { waitUntil: "networkidle" }); await expect(page.getByRole("heading", { level: 1, name: "Idea Board" })).toBeVisible(); + await expectProductionCopy(page); await expect(page.locator("[data-idea-board-table] > thead th[scope='col']")).toHaveText([ "Idea", "Pitch", @@ -160,6 +167,7 @@ test("Idea Board uses DB-shaped accordion table ideas and notes", async ({ page await expect(page.locator("[data-idea-board-expanded-row]")).toHaveCount(0); await page.locator("[data-idea-board-idea-cell='top-thoughts']").click(); await expect(page.locator("[data-idea-board-expanded-row='top-thoughts']")).toBeVisible(); + await expectProductionCopy(page); await expectIdeaChevron(page, "top-thoughts", "gfs-chevron-up.svg"); await expect(page.locator("[data-idea-board-idea-row='top-thoughts'] + [data-idea-board-expanded-row='top-thoughts']")).toHaveCount(1); await expect(page.locator("[data-idea-board-expanded-row='top-thoughts'] [data-idea-board-notes-header]")).toHaveCount(0); @@ -179,9 +187,9 @@ test("Idea Board uses DB-shaped accordion table ideas and notes", async ({ page await systemNote.locator("[data-idea-board-note-action='edit']").click(); await expect(page.locator("[data-idea-board-note-input-row] [data-idea-board-note-action]")).toHaveText(["Save", "Cancel"]); await expectExpandedNotesChildIndentation(page, "top-thoughts", 1); - await page.locator("[data-idea-board-note-input]").fill("System note can be edited in-place."); + await page.locator("[data-idea-board-note-input]").fill("Starter note can be edited in place."); await page.locator("[data-idea-board-note-action='save']").click(); - await expect(page.locator("[data-idea-board-notes-table='top-thoughts']")).toContainText("System note can be edited in-place."); + await expect(page.locator("[data-idea-board-notes-table='top-thoughts']")).toContainText("Starter note can be edited in place."); await expect(page.locator("[data-idea-board-system-note] [data-idea-board-note-action='delete']")).toHaveCount(0); await page.locator("[data-idea-board-add-note='top-thoughts']").click(); diff --git a/tests/playwright/tools/ToolboxRoutePages.spec.mjs b/tests/playwright/tools/ToolboxRoutePages.spec.mjs index 6a1f1ebe3..b3033e10d 100644 --- a/tests/playwright/tools/ToolboxRoutePages.spec.mjs +++ b/tests/playwright/tools/ToolboxRoutePages.spec.mjs @@ -192,6 +192,12 @@ async function expectExpandedNotesChildIndentation(page, ideaId, expectedInputRo } } +async function expectIdeaBoardProductionCopy(page) { + await expect(page.locator("main")).not.toContainText( + /\bDB-shaped\b|\bin-page data model\b|\buserId\b|\bideaId\b|\bnoteId\b|\bsystem flag\b|\bmetadata\b|\bseed\b|\bdebug\b|\bselected context\b|\bmock\b|\btest\b|\binternal implementation\b|\bplaceholder\b|\bproject records\b|\bmutating API\b|\bauth\b|\bAI\b|\bdatabase behavior\b/i, + ); +} + test("tools route aliases render toolbox tool pages", async ({ page }) => { const server = await startRepoServer(); const failedRequests = []; @@ -288,6 +294,7 @@ test("Idea Board launches from Toolbox with accordion table notes model", async await page.waitForURL(/\/toolbox\/idea-board\/index\.html$/); await page.waitForLoadState("networkidle"); await expect(page.getByRole("heading", { level: 1, name: "Idea Board" })).toBeVisible(); + await expectIdeaBoardProductionCopy(page); const ideaBoardSections = await page.locator("[data-idea-board-section]").evaluateAll((sections) => ( sections.map((section) => section.getAttribute("data-idea-board-section")) )); @@ -310,11 +317,12 @@ test("Idea Board launches from Toolbox with accordion table notes model", async await expect(page.locator("[data-idea-board-notes-count='sky-orchard']")).toHaveText("3 Notes"); await expect(page.locator("[data-idea-board-notes-count='clockwork-courier']")).toHaveText("0 Notes"); await expectIdeaChevron(page, "top-thoughts", "gfs-chevron-down.svg"); - await expect(page.locator("[data-idea-board-status]")).toHaveText("Idea Board table edits are in-page only. No project records, auth, AI, or database behavior is connected."); + await expect(page.locator("[data-idea-board-status]")).toHaveText("Ready to shape ideas and notes."); await page.locator("[data-idea-board-notes-count='top-thoughts']").click(); await expect(page.locator("[data-idea-board-expanded-row]")).toHaveCount(0); await page.locator("[data-idea-board-idea-cell='top-thoughts']").click(); await expect(page.locator("[data-idea-board-expanded-row='top-thoughts']")).toBeVisible(); + await expectIdeaBoardProductionCopy(page); await expectIdeaChevron(page, "top-thoughts", "gfs-chevron-up.svg"); await expect(page.locator("[data-idea-board-idea-row='top-thoughts'] + [data-idea-board-expanded-row='top-thoughts']")).toHaveCount(1); await expect(page.locator("[data-idea-board-expanded-row='top-thoughts'] [data-idea-board-notes-header]")).toHaveCount(0); diff --git a/toolbox/idea-board/index.html b/toolbox/idea-board/index.html index a74e747be..214a303fb 100644 --- a/toolbox/idea-board/index.html +++ b/toolbox/idea-board/index.html @@ -6,7 +6,7 @@ Idea Board - GameFoundryStudio - + @@ -18,7 +18,7 @@
Toolbox

Idea Board

-

Table-first creator notebook for ideas before a project exists.

+

Capture, compare, and shape game ideas in one table.

@@ -32,21 +32,21 @@

Idea Filters

Workflow
-

Review ideas in the work table, then expand an idea row to manage its notes in place.

+

Review ideas in the table, then expand an idea row to manage its notes.

Status
-

Statuses remain governance labels only: New, Exploring, Parked, Ready to Shape.

+

Use status to show where each idea stands: New, Exploring, Parked, or Ready to Shape.

-

Idea Work Surface

-

The primary surface is a table so creators can scan, compare, and govern early ideas without a form-first workflow.

+

Ideas

+

Scan, compare, and update early ideas without leaving the table.

@@ -66,27 +66,27 @@

Idea Work Surface

Idea Board table with expandable notes rows