Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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