Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cursor/plans/a11y_audit_overhaul_cb9565d0.plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ todos:
isProject: false
---

# Accessibility-Audit + Overhaul-Plan (StoryCraft-Studio)
# Accessibility-Audit + Overhaul-Plan (WorldScript-Studio)

## Kurz-Einordnung des Ist-Zustands

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: StoryCraft Best-Practices Overhaul
overview: "Systematisches Qualitäts- und Content-Programm für StoryCraft-Studio: Audit-Matrix aller Dimensionen, messbare Best-Practices-Spezifikation (besonders App-Inhalte), dann priorisierte Umsetzung in Phasen — ohne bestehende Funktionalität zu brechen und mit realistischen Gates statt unmessbarer „100 %-Perfektion“."
name: WorldScript Best-Practices Overhaul
overview: "Systematisches Qualitäts- und Content-Programm für WorldScript-Studio: Audit-Matrix aller Dimensionen, messbare Best-Practices-Spezifikation (besonders App-Inhalte), dann priorisierte Umsetzung in Phasen — ohne bestehende Funktionalität zu brechen und mit realistischen Gates statt unmessbarer „100 %-Perfektion“."
todos:
- id: phase1-content-audit
content: "Phase 1: Glossar + String-Pass (portal/help/tour/settings/commands) + Community-Templates-Strategie/Schema + Demo-Flow Toast statt alert + FR/ES/IT Qualität"
Expand All @@ -20,7 +20,7 @@ todos:
isProject: false
---

# StoryCraft Studio — Global Audit & Best-Practices-Programm
# WorldScript Studio — Global Audit & Best-Practices-Programm

## Prämisse (messbar statt absolut)

Expand Down
4 changes: 2 additions & 2 deletions .cursor/plans/storycraft_helper_overhaul_78451cbd.plan.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: StoryCraft Helper Overhaul
name: WorldScript Helper Overhaul
overview: "Schritt-1-Audit und Spezifikation: Feature-Mapping vom Ist-Zustand (Redux/Zustand, monolithische Palette, fehlende Shortcut-UI) zu einem kohärenten „Creative OS“-Layer mit Weltklasse-Command-Palette, durchsuchbarem Settings-Hub, RAG-gestütztem Help und vereinheitlichten sekundären UI-Hilfen – ohne bestehende Kernfunktionen zu brechen."
todos:
- id: registry-shortcuts
Expand All @@ -23,7 +23,7 @@ todos:
isProject: false
---

# StoryCraft Studio: Helper-Layer & Command-Center (Audit + Spezifikation)
# WorldScript Studio: Helper-Layer & Command-Center (Audit + Spezifikation)

## Kontext aus dem Code (relevant für das Mapping)

Expand Down
2 changes: 1 addition & 1 deletion .github/CI-AUDIT.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# CI Audit — StoryCraft Studio
# CI Audit — WorldScript Studio

**As of:** 2026-05-21; **last updated:** 2026-06-01 · **Workflow files:** `ci.yml`, `tauri-build.yml`, `prune-deployments.yml`, `storybook-debug.yml`, `scorecard.yml`, `codeql.yml`, `docker.yml`

Expand Down
2 changes: 1 addition & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Contributing to StoryCraft Studio
# Contributing to WorldScript Studio

## Code of Conduct

Expand Down
6 changes: 3 additions & 3 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: Bug Report
description: Report a bug or unexpected behavior in StoryCraft Studio
description: Report a bug or unexpected behavior in WorldScript Studio
title: "[Bug]: "
labels: ["bug", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to report a bug! Please fill in as much detail as possible.
**Do not report security vulnerabilities here** — use [GitHub Private Vulnerability Reporting](https://github.com/qnbs/StoryCraft-Studio/security/advisories/new) instead.
**Do not report security vulnerabilities here** — use [GitHub Private Vulnerability Reporting](https://github.com/qnbs/WorldScript-Studio/security/advisories/new) instead.

- type: textarea
id: description
Expand Down Expand Up @@ -59,7 +59,7 @@ body:
id: version
attributes:
label: Version
description: Which version of StoryCraft Studio? (shown in Settings → About or the v badge in README)
description: Which version of WorldScript Studio? (shown in Settings → About or the v badge in README)
placeholder: "e.g. v1.19.0"
validations:
required: true
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Feature Request
description: Suggest a new feature or enhancement for StoryCraft Studio
description: Suggest a new feature or enhancement for WorldScript Studio
title: "[Feature]: "
labels: ["enhancement", "needs-triage"]
body:
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/translation_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ body:
- type: markdown
attributes:
value: |
Thanks for helping translate StoryCraft Studio!
Thanks for helping translate WorldScript Studio!
Locale source files live in `locales/<lang>/*.json` (15 modules per language).
Run `pnpm run i18n:check` before submitting to verify key parity across all 5 locales.

Expand Down
2 changes: 1 addition & 1 deletion .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Please do not open public GitHub issues for security vulnerabilities.
Use one of these private channels instead:

1. Preferred: GitHub Private Vulnerability Reporting (Security Advisories)
- URL: https://github.com/qnbs/StoryCraft-Studio/security/advisories/new
- URL: https://github.com/qnbs/WorldScript-Studio/security/advisories/new
2. Encrypted email (fallback): maintainers may publish a dedicated address in organization docs; until then, **use GitHub Private Vulnerability Reporting only**.

If the email channel is not configured, use GitHub Private Vulnerability Reporting.
Expand Down
2 changes: 1 addition & 1 deletion .github/best-practices-badge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ criteria:
# The project MUST have a security policy.
have_security_policy: true
# The project MUST have a security policy that is publicly available.
security_policy_url: https://github.com/qnbs/StoryCraft-Studio/security/policy
security_policy_url: https://github.com/qnbs/WorldScript-Studio/security/policy

# Code
code:
Expand Down
6 changes: 3 additions & 3 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Copilot Instructions — StoryCraft Studio
# Copilot Instructions — WorldScript Studio

## Project Overview

StoryCraft Studio is an AI-powered creative writing application built as an offline-first PWA. It combines a React 19 SPA with Google Gemini AI integration, IndexedDB persistence, and optional Tauri desktop packaging.
WorldScript Studio is an AI-powered creative writing application built as an offline-first PWA. It combines a React 19 SPA with Google Gemini AI integration, IndexedDB persistence, and optional Tauri desktop packaging.

**Live:** `https://qnbs.github.io/StoryCraft-Studio/`
**Live:** `https://qnbs.github.io/WorldScript-Studio/`

**Documentation map:** [`README.md`](../README.md#-documentation-hub) § Documentation Hub lists every maintainer `.md` guide (see also [`AUDIT.md`](../AUDIT.md)).

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Docker image build + push to GitHub Container Registry on every tag.
# Pull with: docker pull ghcr.io/qnbs/storycraft-studio:latest
# Pull with: docker pull ghcr.io/qnbs/worldscript-studio:latest

name: Docker

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mutation.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# ============================================================
# StoryCraft Studio – Mutation Testing (Stryker) — Parallel + Incremental
# WorldScript Studio – Mutation Testing (Stryker) — Parallel + Incremental
# QNBS-v3: Matrix-parallel Stryker with per-module incremental caching.
# Run manually via workflow_dispatch. Each matrix job targets one module
# to keep wall-clock time low (~5–15 min per job vs. 30–45 min single job).
Expand Down
12 changes: 6 additions & 6 deletions .mcp/proforge-mcp-server/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ProForge MCP Server

Exposes the StoryCraft Studio **ProForge** 8-stage agentic editing pipeline to external AI agents
Exposes the WorldScript Studio **ProForge** 8-stage agentic editing pipeline to external AI agents
(Claude Desktop, Cline, Cursor, GitHub Copilot, Kimi, …) over the
[Model Context Protocol](https://modelcontextprotocol.io).

Expand All @@ -23,7 +23,7 @@ AI agent ──stdio MCP──> ProForge MCP server (this folder)
Node InferenceGateway (@google/genai) · in-process memory bank · file run-history
```

Because StoryCraft is a backend-less PWA, this server cannot read the browser's live IndexedDB
Because WorldScript is a backend-less PWA, this server cannot read the browser's live IndexedDB
project. It operates on a **portable project payload** passed per call (`project` argument) or loaded
once at startup (`--project <file>`). See [`examples/sample-project.json`](./examples/sample-project.json).

Expand All @@ -43,14 +43,14 @@ once at startup (`--project <file>`). See [`examples/sample-project.json`](./exa

| Var | Purpose |
|-----|---------|
| `GEMINI_API_KEY` (or `STORYCRAFT_API_KEY`, `GOOGLE_GENERATIVE_AI_API_KEY`) | Required only for `proforge_run_stage`. Never logged, never bundled. |
| `GEMINI_API_KEY` (or `WORLDSCRIPT_API_KEY`, `GOOGLE_GENERATIVE_AI_API_KEY`) | Required only for `proforge_run_stage`. Never logged, never bundled. |

CLI flags: `--project <file>` (default payload), `--history <file>` (run-history JSON store).

## Run

This server reuses the repo's TypeScript sources and their dependencies (`zod`, `@google/genai`),
so it must live inside the StoryCraft repo. Only the MCP SDK + `tsx` are installed locally.
so it must live inside the WorldScript repo. Only the MCP SDK + `tsx` are installed locally.

```bash
cd .mcp/proforge-mcp-server
Expand All @@ -71,7 +71,7 @@ GEMINI_API_KEY=… npx tsx src/index.ts --project ./examples/sample-project.json
"proforge": {
"command": "npx",
"args": ["tsx", "src/index.ts", "--project", "./examples/sample-project.json"],
"cwd": "/absolute/path/to/StoryCraft-Studio/.mcp/proforge-mcp-server",
"cwd": "/absolute/path/to/WorldScript-Studio/.mcp/proforge-mcp-server",
"env": { "GEMINI_API_KEY": "your-key-here" }
}
}
Expand All @@ -85,7 +85,7 @@ GEMINI_API_KEY=… npx tsx src/index.ts --project ./examples/sample-project.json
"mcpServers": {
"proforge": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/StoryCraft-Studio/.mcp/proforge-mcp-server/src/index.ts"],
"args": ["tsx", "/absolute/path/to/WorldScript-Studio/.mcp/proforge-mcp-server/src/index.ts"],
"env": { "GEMINI_API_KEY": "your-key-here" }
}
}
Expand Down
20 changes: 10 additions & 10 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
<!-- This file is written for AI coding agents. It assumes you know nothing about the project. Every claim below is derived from the actual codebase — do not generalize beyond what is documented here. -->

# StoryCraft Studio — Agent Guide
# WorldScript Studio — Agent Guide

---

## Project Overview

**StoryCraft Studio** is an offline-first, AI-powered creative writing application. It is a React 19 single-page application (SPA) that runs in the browser as a Progressive Web App (PWA) and can also be packaged as a desktop app via Tauri 2. There is no backend server; all project data lives locally (IndexedDB in the browser, filesystem in Tauri). Cloud AI providers are optional and user-triggered only.
**WorldScript Studio** is an offline-first, AI-powered creative writing application. It is a React 19 single-page application (SPA) that runs in the browser as a Progressive Web App (PWA) and can also be packaged as a desktop app via Tauri 2. There is no backend server; all project data lives locally (IndexedDB in the browser, filesystem in Tauri). Cloud AI providers are optional and user-triggered only.

- **Primary deploy target:** Static SPA on GitHub Pages (`/StoryCraft-Studio/` base path)
- **Primary deploy target:** Static SPA on GitHub Pages (`/WorldScript-Studio/` base path)
- **Secondary targets:** Vercel (root base) and Cloudflare Pages via edge builds (`pnpm run build:edge`)
- **Desktop:** Tauri 2 bundles for Linux (AppImage), macOS (DMG), and Windows (MSI); auto-updater enabled via `latest.json`
- **Version:** `1.22.0`
- **Version:** `1.23.0`
- **License:** MIT

The app supports a multi-provider AI stack (Gemini, OpenAI, Claude, Grok, OpenRouter, Ollama, WebLLM, ONNX Runtime Web, Transformers.js), four AI execution modes (Hybrid / Cloud / Local / Eco), real-time collaboration with E2E encryption, a Plot Board v2 with swimlane/canvas/timeline modes, character/world management, manuscript export, voice dictation, and an 11-locale i18n layer.
Expand Down Expand Up @@ -65,7 +65,7 @@ The app supports a multi-provider AI stack (Gemini, OpenAI, Claude, Grok, OpenRo
## Project Structure

```text
StoryCraft-Studio/
WorldScript-Studio/
├── app/ # Redux store setup, typed hooks, listener middleware, Zustand transient store
├── components/ # React view components; components/ui/ = design-system primitives
│ ├── ui/ # Atoms: Button, Modal, Toast, Input, etc.
Expand Down Expand Up @@ -275,7 +275,7 @@ Pre-commit hook runs `biome check --write` on staged files via `simple-git-hooks
### E2E Tests (Playwright)

- **CI-only by policy:** `CI=true` is required (`pnpm run test:e2e`). CI runs Chromium desktop + Pixel 5 mobile emulation. Locally, Firefox is included; mobile only with `RUN_MOBILE_E2E=1`.
- **Base URL:** `http://127.0.0.1:3000/StoryCraft-Studio`
- **Base URL:** `http://127.0.0.1:3000/WorldScript-Studio`
- **Do NOT use `networkidle`** against the Vite dev server (HMR keeps WebSocket open). Use `waitForSpaReady()` from `tests/e2e/helpers.ts`.
- **Helpers:** `ensureBlankProject()`, `selectEnglish()`, `sidebar(page)` (scopes to `#sidebar`).
- **Accessibility smoke:** `tests/e2e/a11y.spec.ts` runs axe-core on welcome route and Settings → Accessibility.
Expand Down Expand Up @@ -337,7 +337,7 @@ deploy (main, non-PR) needs: build + e2e ──► GitHub Pages

| Target | Build Command | Vite Base |
|--------|---------------|-----------|
| GitHub Pages (canonical) | `pnpm run build` | `/StoryCraft-Studio/` |
| GitHub Pages (canonical) | `pnpm run build` | `/WorldScript-Studio/` |
| Vercel | `pnpm run build:edge` | `/` |
| Cloudflare Pages | `pnpm run build:edge` | `/` |

Expand Down Expand Up @@ -410,11 +410,11 @@ Edge builds run `scripts/build-edge.mjs` which sets `DEPLOY_TARGET=edge` and pat

- `services/ai/index.ts` — canonical entry; exports orchestration layer built on `@ai-sdk/google`, `@ai-sdk/openai`, and the `ai` package.
- `providerFactory.ts` — `LanguageModel` factory.
- `storyCraftCompletionFetch.ts` — custom fetch adapter.
- `worldScriptCompletionFetch.ts` — custom fetch adapter.
- `aiPolicy.ts` — `assertCloudAiAllowed` gates all cloud AI calls.
- `aiRetry.ts` — `withTransientRetry(fn, opts)` wraps provider calls with transient-error retries.
- `services/ai/providers/openrouterProvider.ts` — OpenRouter gateway with circuit breaker and free-tier catalog.
- `hooks/useStoryCraftAI.ts` — wraps `useCompletion` from `@ai-sdk/react`.
- `hooks/useWorldScriptAI.ts` — wraps `useCompletion` from `@ai-sdk/react`.

Comment thread
qnbs marked this conversation as resolved.
### AI Execution Modes

Expand Down Expand Up @@ -497,7 +497,7 @@ Central orchestration layer for all background worker tasks. Messages use short

## Desktop (Tauri)

- `src-tauri/tauri.conf.json` configures the window, CSP, updater, deep links (`storycraft://`), and file associations (`.storycraft`, `.scst`).
- `src-tauri/tauri.conf.json` configures the window, CSP, updater, deep links (`worldscript://`), and file associations (`.worldscript`, `.wsst`).
- `src-tauri/Cargo.toml` defines the Rust crate; `rust-compute` feature optionally includes `candle-core` + `candle-nn` for Rust-side inference.
- `vite.config.ts` externalizes all `@tauri-apps/*` modules for web builds.
- Tauri plugins: log, fs, http, dialog, shell, updater, window-state, deep-link, single-instance.
Expand Down
Loading
Loading