Commit Graph
22 Commits
Author SHA1 Message Date
gitprovandClaude Opus 4.8 e69558e0e7 Field notebook: capture NPC lines, tear pages onto the board
A dialogue line gains a "✎ Note this" capture that saves it to a
per-playthrough notebook (migration 035 + notebook endpoints). The inventory
notebook lists captured pages in a handwriting font (Google "Reenie Beanie")
and "✂ Tear to board" drops a page onto the current board as a note exhibit
(reusing addNote), then removes the page. Board notes render handwritten too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 20:11:15 +02:00
gitprov 10dcd567c6 Add classified evidence presentations 2026-08-22 19:28:06 +02:00
gitprovandClaude Opus 4.8 cbe107e0b3 Utterance award + requirement, and branching dialogue seeding
A dialogue line can award an achievement when reached (granted server-side,
validated against the player's current node so it can't be forged) and an
option can require an achievement to be offered (filtered out of the resolved
tree otherwise). authorGraph gains a branching form (utterance key/parent/
terminal) so option trees — not just linear lines — can be seeded. This is
gaps 1 & 2 for the Barricelli Dobby/Glitch-Hunter dialogues; phone dialing
stays stubbed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 18:34:52 +02:00
gitprov af0ffe055e Merge main into Scene 7 evidence workflow 2026-08-22 17:23:47 +02:00
gitprov cea0d56cb9 Add Scene 7 claim report workflow 2026-08-22 17:02:30 +02:00
gitprovandClaude Opus 4.8 a925d61b7e Phone directory foundation: NPC contacts + phone node + terminal→NPC
NPCs gain phone_number and email (the phone book). A new 'phone' node type
holds a directory whose terminals each bind to an NPC via npc_id (the callee
reached by dialing that number) and wire to the dialogue that plays on
connect. Migration 029 adds the columns/type; repositories and admin API
thread contacts and the per-terminal NPC binding. Authoring foundation only
— the dial runtime and tools sidebar come next.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 16:55:45 +02:00
gitprovandClaude Opus 4.8 778c6d972f Add merit node type (Scene 8 ceremony + achievement award)
A merit node awards a configured achievement (awards_flag) to the player
the moment the playthrough arrives on it, with node provenance, then
presents a ceremony. Migration 028 extends node_type + the component_key
CHECK and adds awards_flag; the runtime grants the flag in advance/goto/
new-game write paths; MeritHost renders the ceremony (a component_key can
supply a bespoke one, e.g. a 3D model). Verified: teleport to a merit node
auto-grants its achievement.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-22 16:11:53 +02:00
gitprov a7f99a2a39 Implement Scene 7 evidence goal flow 2026-08-22 16:02:42 +02:00
gitprov 94ccbfd1b9 Adding migrations and lot of work. Starting work on the demo scope 2026-08-22 14:53:23 +02:00
gitprovandClaude Opus 4.8 1b3ff1e78c Add per-node scene music volume control
Author a music track and volume (0-100%) per story node; the runtime
scales it to 0-1 and applies it without restarting the track when only
the level changes. Adds migration 024, threads music_volume through the
repository/runtime, and gives the node inspector a volume slider.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 21:02:16 +02:00
gitprovandClaude Opus 4.8 dafc70b047 Sound: per-node scene music + synthesized SFX (zero-dep)
- migration 023: story_nodes.music_asset_id (references the asset store).
- src/audio.ts: a tiny audio manager — one looping scene-music track (fade,
  dedup, gesture-primed autoplay) and synthesized one-shot SFX; global mute.
- Runtime: RuntimeNode.musicUrl; music follows the current node (null inherits,
  a finished playthrough stops). SFX blips on dialogue advance/choice (not in the
  editor preview). Floating mute toggle during play.
- Graph inspector: a "Scene music" picker sourced from uploaded audio assets.

No external library (we did not adopt react-winamp — it is a React 16 CRA app,
not an installable package). Bundle grew ~2 KB.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 19:51:44 +02:00
gitprovandClaude Opus 4.8 aa789bbadb Cleanup: drop vestigial utterance columns, sync story-graph doc
- migration 022 drops utterances.advances_to_utterance_id and .effect, which the
  parent-only/child-count dialogue model never used; purge their references.
- rewrite docs/story-graph.md to match what was built (parent-child utterances,
  vertical mystery graph, graph runtime, gate stubs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 16:28:11 +02:00
gitprovandClaude Opus 4.8 ddb3a386f0 Add story-graph narrative system (campaigns, editors, runtime)
Introduce the narrative layer as a directed story-flow graph: an authored
campaign a player walks node by node, replacing the interim slot/chapter model.

Schema (migrations 015-021):
- mysteries, global NPC templates + named poses, per-user playthroughs
- story_nodes, terminals, utterances (the flow graph and dialogue trees)
- clean cutover: retire slot cutscenes/chapters/seen_dialogue

Runtime:
- New Game creates a playthrough bound to the JWT identity (dev test-user fallback)
- advance() walks the graph cutscene -> dialogue -> level -> ..., auto-skipping gates
- branching dialogue: player choices route out through node terminals

Admin authoring:
- NPC editor: upload named poses to the gupi MinIO bucket
- mystery graph editor: vertical node canvas, wiring, entrypoint, delete-by-click
- dialogue crafter: utterance tree, Tab to add child, 1/2 speaker, undo

Content authored via the manifest importer / admin panel and seeded for Glass
Harbour. MinIO added to the dev stack; dev container runs in development mode.

Also includes a folder-widget simplification (removes open/close) and a
resolveUserId auth helper.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 15:37:46 +02:00
gitprov 0237da74cf Adding working board 2026-08-17 09:24:53 +02:00
gitprov d99deb3c06 Allow undated reconstructed events 2026-08-14 19:57:22 +02:00
gitprov b39d2efa75 feat: drag relation tags along threads 2026-08-14 18:26:20 +02:00
gitprov 6f183daca8 feat: support compact and luggage relation tags 2026-08-14 17:07:30 +02:00
gitprov f97dceb4fe feat: add tagged red thread connections 2026-08-14 16:37:50 +02:00
gitprov 45c7c6a292 feat: add configurable timeline range 2026-08-14 15:40:54 +02:00
gitprov d46a425401 feat: add brief concept party classification 2026-08-14 14:44:58 +02:00
gitprov 5599d330d8 refactor: cut over to normalized exhibit schema 2026-08-14 14:09:24 +02:00
gitprov fa78640227 Initial commit 2026-08-14 12:43:11 +02:00