Skip to content

Latest commit

Β 

History

History
195 lines (148 loc) Β· 14.4 KB

File metadata and controls

195 lines (148 loc) Β· 14.4 KB

WorldScript Studio v1.23.0 β€” Rebrand Smoke-Test Protocol

Date: 2026-06-12 (protocol authored) Β· 2026-06-16 (v1.23.0 sign-off)
Version under test: v1.23.0
Scope: Rebrand validation + regression-sensitive core paths.
Environments:

Legend: βœ… Pass / ❌ Fail / ⬜ Not tested / 🟑 Partial / ⚠️ Observation

Release note: v1.23 is the rebrand release β€” StoryCraft Studio is now WorldScript Studio. This protocol is the manual sign-off gate for the v1.23 release.


Sign-off summary β€” v1.23.0 (2026-06-16)

Build under sign-off: main @ ea652c8d β†’ tag v1.23.0. Testers: automated checks β€” release agent; desktop GUI β€” maintainer (qnbs).

Verified (release gates):

  • βœ… Desktop blank-screen fixed β€” the v1.23 release blocker. Tauri builds resolved Vite base from TAURI_PLATFORM (the Tauri 1.x env var, never set by Tauri 2.x), so every desktop build fell through to the GitHub Pages base and 404'd its hashed assets under tauri://localhost/ β†’ only the native file/help menu over an empty webview. Fixed in config/resolveViteBase.ts (now checks TAURI_ENV_PLATFORM, +6 unit tests). The maintainer confirmed the Windows installer now launches the full UI (row 7.1).
  • βœ… Tauri desktop build green on all 3 platforms β€” tauri-build.yml produced Windows/macOS/Linux artifacts (row R.12).
  • βœ… Full CI green on main β€” quality Γ—2, build, unit+coverage, e2e, e2e-deep, storybook, lighthouse, VRT, security, CodeQL (row R.11).
  • βœ… Rebrand static checks β€” index.html, all 11 locale bundles, and runtime worker/storage/command names carry no user-visible StoryCraft/storycraft. Remaining storycraft references are intentional: read-once legacy-migration keys and the storycraft:// deep-link back-compat alias. The one stray new-feature name (storycraft-localfirst- IndexedDB prefix, behind off-by-default enableLocalFirstSync) was renamed to worldscript-localfirst- in this sign-off (rows R.4, R.9, R.10).
  • βœ… Version consistency β€” package.json, src-tauri/tauri.conf.json, src-tauri/Cargo.toml, public/sw.js all 1.23.0.

Platform notes:

  • macOS GUI: N/A β€” no Apple hardware available; covered by the green macOS CI build + the shared base-path fix.
  • Linux GUI: N/A on the maintainer's Ubuntu 20.04 β€” Tauri 2 needs webkit2gtk-4.1 (libsoup3, glibc β‰₯ 2.35), available from Ubuntu 22.04+; 20.04 ships only 4.0, so neither the .deb nor the AppImage can run there. Not a bug. Covered by the green Ubuntu-22.04 CI build; an interactive Linux GUI pass on 22.04+ is a non-blocking post-release follow-up.
  • Desktop signing: the verified branch/main builds are workflow_dispatch (unsigned). The signed updater artifacts (.sig + latest.json) are produced by the v1.23.0 tag build (Minisign; secrets confirmed present). Row 7.7 (updater) verifies on the signed release.

Remaining (non-blocking, tracked manual pass): the deep functional GUI rows below (AI execution modes, OpenRouter circuit breaker, Copilot apply-to-chapter, Voice model download, core authoring paths) are exercised by the green CI E2E/unit suites and remain as the maintainer's interactive checklist. None gate the v1.23.0 tag, given the release-blocker fix plus the build/static/version gates above are met.


How to run this protocol

  1. Pick all three environments and run every applicable row in each column. N/A rows are pre-marked.
  2. Reset state between risky steps: Settings β†’ Data β†’ Factory Reset (wipes IDB/localStorage/SW caches) when a test leaves the app in a dirty state.
  3. Feature flags: several sections require opt-in flags (Settings β†’ Experimental). Each section lists the flags it needs in its first row.
  4. Record every ❌ / ⚠️ in the per-row Notes column and in the Blockers list at the bottom; open a dedicated issue/PR for each before tagging.
  5. A release is signable only when: every non-N/A row is βœ… (or ⚠️ with an accepted, documented follow-up), and the Sign-off table is filled for at least one tester per environment.

Rebrand-specific checks

# Step GH Pages Vercel Tauri Notes
R.1 Browser tab title reads WorldScript Studio. ⬜ ⬜ ⬜
R.2 PWA install prompt / manifest lists WorldScript Studio (not StoryCraft). ⬜ ⬜ N/A
R.3 Settings β†’ About shows WorldScript Studio v1.23.0. ⬜ ⬜ ⬜
R.4 index.html source has no remaining StoryCraft / storycraft strings. βœ… βœ… N/A Verified by grep on main (0 matches).
R.5 Export filenames default to *.worldscript / *.wsst (desktop: save dialog; web: download). N/A N/A ⬜ Web export uses .worldscript unless the browser forces .json.
R.6 Tauri only: double-clicking a .worldscript file launches WorldScript Studio and opens the project. N/A N/A ⬜
R.7 Tauri only: worldscript:// deep-link opens the app and routes to the linked project. N/A N/A ⬜
R.8 Feature flags persist after reload under the worldscript-feature-flags key (pre-release β€” no legacy migration). ⬜ ⬜ ⬜ Toggle a flag, reload, verify state; confirm the key in DevTools β†’ Application β†’ Local Storage.
R.9 No console errors containing storycraft in worker names, storage keys, or command names. βœ… βœ… βœ… Active names are all worldscript-*; remaining storycraft refs are read-once legacy-migration keys + the storycraft:// deep-link alias (intentional).
R.10 i18n bundles contain no user-visible StoryCraft strings. βœ… βœ… βœ… Verified by grep across all 11 public/locales/*/bundle.json (0 matches).
R.11 Repository CI green on main for build + E2E. βœ… βœ… N/A Full CI green on main @ ea652c8d (#166).
R.12 Linux/macOS/Windows Tauri CI artifacts build green and launch. N/A N/A βœ… tauri-build.yml green on all 3 OS; Windows installer launched with full UI (maintainer, 2026-06-16).

Producing the builds

Web (both live demos) are auto-deployed from main (Vercel primary + GitHub Pages). Verify the footer/About version reads 1.23.x before testing, otherwise you are testing a stale deploy.

Local Tauri desktop build:

# Prerequisites: Rust toolchain + OS webview deps (see docs/TAURI-CI.md).
pnpm install
pnpm run build            # web bundle first
pnpm run smoke:prod       # sanity-check the prod bundle mounts (catches prod-only crashes)
pnpm run tauri:build      # produces OS-native artifact under src-tauri/target/release/bundle/
  • Alternative (no local Rust): download the artifact from a green tauri-build.yml run (gh run download <run-id>); the v1.23 P0 confirmed Run #27439443241 green on Ubuntu/macOS/Windows.
  • Updater/signing (7.7) only works on signed v* tag builds β€” N/A for workflow_dispatch/local builds (no signing secret). Mark 7.7 N/A unless testing a signed release candidate.

1. AI Execution Modes

# Step GH Pages Vercel Tauri Notes
1.1 Open Settings β†’ AI & Models β†’ AI Execution Mode. ⬜ ⬜ ⬜
1.2 Switch between Hybrid, Cloud, Local, Eco. Each mode persists after reload. ⬜ ⬜ ⬜
1.3 Verify AiModeIndicator in Copilot header reflects the selected mode. ⬜ ⬜ ⬜
1.4 In Eco mode, confirm no cloud call is triggered and a tiny/Eco model is selected. ⬜ ⬜ ⬜
1.5 In Local mode with no local backend, verify graceful fallback/error message. ⬜ ⬜ ⬜
1.6 WebLLM worker offload: In Local/Hybrid mode on a WebGPU browser, generate text; confirm output arrives and the main thread stays responsive (typing/scroll not frozen during inference). ⬜ ⬜ ⬜
1.7 No-WebGPU fallback: On a browser without WebGPU (or forceFallback), confirm local generation still completes via the main-thread fallback (no hard crash, no infinite spinner). ⬜ ⬜ ⬜
1.8 A11y (radiogroup): Tab to the AI Execution Mode picker; navigate modes with Arrow keys / Home / End; confirm roving focus, visible focus ring, and a screen-reader announcement of the newly-active mode. ⬜ ⬜ ⬜
1.9 Localization regression (#129): Switch UI language to de/fr/es/it; confirm the AI Execution Mode and OpenRouter sections show translated strings β€” no raw settings.aiMode.* keys and no English placeholders. ⬜ ⬜ ⬜

2. OpenRouter Provider

# Step GH Pages Vercel Tauri Notes
2.1 Enable OpenRouter in Settings β†’ OpenRouter, enter a free-tier key. ⬜ ⬜ ⬜
2.2 Select a :free model (e.g., deepseek/deepseek-r1:free). ⬜ ⬜ ⬜
2.3 Send a Copilot prompt and confirm response arrives via OpenRouter. ⬜ ⬜ ⬜
2.4 Simulate 4Γ— HTTP 429 errors (e.g., via browser dev-tools throttling / proxy) and confirm circuit breaker opens for ~5 min. ⬜ ⬜ ⬜
2.5 Confirm AiModeIndicator turns amber while circuit is open. ⬜ ⬜ ⬜
2.6 After cooldown, confirm circuit closes and requests resume. ⬜ ⬜ ⬜

3. Copilot v2

# Step GH Pages Vercel Tauri Notes
3.1 Open Copilot. Confirm assistant message with markdown renders correctly (headings, bold, italic, lists, code blocks). ⬜ ⬜ ⬜
3.2 Toggle Sidebar mode (desktop β‰₯ 768 px). Panel docks to the right. Reload persists mode. ⬜ ⬜ ⬜
3.3 In Sidebar mode, resize the panel; no layout breakage in Manuscript/Writer. ⬜ ⬜ ⬜
3.4 Ask Copilot to rewrite a chapter. Use "Apply to chapter" on the last code block. ⬜ ⬜ ⬜
3.5 Confirm chapter text is updated and Ctrl+Z undoes the change. ⬜ ⬜ ⬜
3.6 Verify InlineAnnotationLayer badge appears in ManuscriptEditor when insights exist. Clicking opens Copilot β†’ Insights. ⬜ ⬜ ⬜
3.7 Run ProForge review. On a ReviewItemCard, click ✦ Ask Copilot. Confirm composer is pre-filled with item context. ⬜ ⬜ ⬜

4. Voice (Whisper WASM + Kokoro TTS)

# Step GH Pages Vercel Tauri Notes
4.1 Enable enableVoiceSupport and enableVoiceWasm feature flags. ⬜ ⬜ ⬜
4.2 Open Settings β†’ Voice β†’ Download STT Model. Confirm VoiceModelDownloadModal opens with progress bar. ⬜ ⬜ ⬜
4.3 Click Cancel during download. Confirm download aborts and modal handles it gracefully. ⬜ ⬜ ⬜
4.4 Retry download; confirm progress resumes. ⬜ ⬜ ⬜
4.5 Download TTS Model similarly. ⬜ ⬜ ⬜
4.6 Use push-to-talk (default Ctrl+Shift+V) and speak a navigation command (e.g., "open dashboard"). Confirm navigation executes. ⬜ ⬜ ⬜
4.7 Stop listening. Confirm voice state returns to idle without errors. ⬜ ⬜ ⬜

5. PWA / Offline

# Step GH Pages Vercel Tauri Notes
5.1 Install PWA (Chrome β†’ "Install WorldScript Studio"). ⬜ ⬜ N/A
5.2 Switch language to ja, zh, pt, el, ar, or he. Confirm html lang and dir update. ⬜ ⬜ ⬜
5.3 Go offline (DevTools β†’ Network β†’ Offline). Reload app. Confirm app shell and last locale bundle load from cache. ⬜ ⬜ N/A
5.4 Confirm locale bundles are served network-first when online (no stale English after i18n-only update). ⬜ ⬜ N/A

6. Core Paths

# Step GH Pages Vercel Tauri Notes
6.1 Welcome β†’ Blank Project β†’ Manuscript/Writer. ⬜ ⬜ ⬜
6.2 Create scenes, use drag & drop in Plot-Board v2, add connections. ⬜ ⬜ ⬜
6.3 Use @mentions in ManuscriptEditor to link a character/world. ⬜ ⬜ ⬜
6.4 Export manuscript to DOCX and PDF. ⬜ ⬜ ⬜
6.5 Create a snapshot and restore it. ⬜ ⬜ ⬜

7. Tauri Desktop Specific

# Step Tauri Notes
7.1 Install the OS-specific artifact. App launches without blank screen. βœ… Windows confirmed by maintainer (2026-06-16) after the TAURI_ENV_PLATFORM base-path fix; macOS N/A (no hardware); Linux N/A on 20.04 (needs 22.04+).
7.2 Settings β†’ About shows correct version. ⬜
7.3 Open Data Folder opens the project data directory. ⬜
7.4 Resize window, close, reopen β€” window state restores. ⬜
7.5 Double-click a .worldscript/.wsst file β€” app opens the project (single-instance behavior). ⬜
7.6 Native menu: File β†’ Export / Settings / Quit works. ⬜
7.7 Check for updates via TauriUpdaterBanner (if signing is configured). ⬜

8. Security & Hardening (PR #114 β€” light manual checks)

Mostly covered by automated tests (plugin.worker.test.ts, pluginRegistry.test.ts, content:guard). These rows are a lightweight observation layer, not a substitute.

# Step GH Pages Vercel Tauri Notes
8.1 Paste a prompt containing markdown with an inline <script>/<img onerror=…> into Copilot; confirm the rendered message is sanitized (DOMPurify) β€” no script executes, no broken layout. ⬜ ⬜ ⬜
8.2 Import a project/JSON with an unexpected/oversized field; confirm validation rejects it cleanly (no crash, user-visible error). ⬜ ⬜ ⬜

Sign-off

Sign per environment. The release is signable only when every non-N/A row above is βœ… (or ⚠️ with an accepted follow-up).

Environment Tester Date Result (βœ…/❌/🟑) App version verified
GH Pages
Vercel
Tauri (local/CI build)

Blockers / follow-up bugs: