Files
TheLastGarden/content/dialogue/season1/lura-farewell.ink
T
josh c90f8f1e5c feat(02-04): ink compilation pipeline + 4 authored Season-1 Ink files + runtime loader
- scripts/compile-ink.mjs: build-time inklecate runner using bundled binary
  (BLOCKER 4 — uses node_modules/inklecate/bin, not stale -windows/-mac path strings).
  Assumption A6 verified first-try on Windows; the same binary path resolution
  works on macOS + Linux per the wrapper's own getInklecatePath convention.
- scripts/compile-ink.test.mjs: 3 Vitest cases proving the compiler runs +
  emits valid JSON with inkVersion. wipe=false for the test path so it can
  run in parallel with the ink-loader test without racing on the wipe step.
- 4 Season-1 .ink files authored in voice (Lura warmth-anchor, gardener-keeper
  for compost): lura-arrival.ink, lura-mid.ink, lura-farewell.ink,
  compost-acknowledgements.ink (rewrite of Plan 02-03 scaffolded version into
  VAR-driven branch shape consumable by the runtime).
- src/content/ink-loader.ts: loadInkStory + bindGardenStateToInk +
  INK_VARIABLE_MAP. Centralized snake_case slot mapping per Pitfall 4. UTF-8
  BOM stripped before Story instantiation.
- src/content/ink-loader.test.ts: 8 cases — Story instantiation for all 4
  beats, fragment_count binding, Pitfall 4 snake_case enforcement, silent
  skip for stories missing declared vars.
- package.json: build now runs compile:ink first; ci chain runs compile:ink
  before test so ink-loader.test.ts's precondition check passes.
- .gitignore: src/content/compiled-ink/ excluded (regenerated on every build).

npm run ci exits 0; 11 new tests green (228 total).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 10:24:40 -04:00

31 lines
1.2 KiB
Plaintext

// Lura, farewell beat. After the player's 8th harvest (CONTEXT D-14).
//
// This is the turn — the place where Lura tells you she's leaving and
// why, without explaining it. She is still the warmth anchor: she does
// NOT cry, she does NOT tell you to be brave, she does NOT make you the
// center of her grief. She is a person with somewhere else to be, who
// stopped by long enough to make sure you'd be okay without her, and
// who trusts you enough to leave.
//
// Phase 4+ Lura returns at later Seasons; the door this beat closes is
// "Lura at the gate every time you harvest," not Lura herself.
VAR fragment_count = 0
VAR last_plant_type = ""
== farewell ==
Eight. That's enough. For now.
I think we both know what this part is.
I've been putting something off. I think you're far enough along now that I can stop pretending I'm here for the small reasons. There's a thing I have to go and see for myself, and I don't get to bring you with me, and I don't get to tell you about it before I know.
You don't need me at the gate every day. You haven't for a while.
The garden persists. Some of it is mine. Most of it is yours now.
I'll come back when there's something to bring you. Take your time.
-> END