melissa kate
<< Doppelgänger

Progress

Living notes on where we are and what's likely next.

---

Recent decisions

---

What's working

Engine (engine/src/)

Cinematic skin (engine/skins/cinematic/)

Layered architecture, all reading directly from engine via useTimeline / useNotifications:

Story Maker (engine/story-maker/)

Engine cleanup

Markdown rendering

Cinematic skin polish

Direct file save (Story Maker export)

Asset convention

---

In progress

---

Known friction / deferred items

Skin (Layer 1 still incomplete per FRONTEND_DISPLAY.md)

Story Maker

Resolved: StoryGraph now filters internal dialogue events — only thread heads and non-dialogue scenes show in the graph. Tree view still shows all events (intentional).

Bigger items not started

---

Open design questions

---

Deployment

Both apps deploy as Cloudflare Workers (the unified Workers & Pages flow — .workers.dev, not classic .pages.dev). Auto-rebuilds on push to main.

Cinematic skin (public demo)

Story Maker (editor)

Gotchas (each cost a deploy cycle to discover)

Update flow

To ship a new version of the demo: drop new doppelganger.json into engine/skins/cinematic/public/ → commit → push. Cloudflare rebuilds in ~1 min.

The Story Maker URL persists state per-browser via localStorage; it's not a multi-tenant editor. Anyone visiting will see the bundled demo (the-vanishing.json) on first load.

---

Likely next sessions

  1. More authoring → more friction discovery → more Story Maker / skin tweaks
  2. Type-on text reveal + particle atmosphere effects (Layer 1C) once the user wants more cinematic polish
  3. Multi-character staging when Doppelganger has a scene that demands it (group dialogue, eavesdropping, etc.)
  4. Second skin (VN-style or scene-explorable) once the cinematic one is solid
  5. Add wrangler.jsonc to cinematic skin too for explicit/reproducible config (currently relies on auto-detection)