ejlewis 46f851bc3a feat(parser): return ambiguous variant when noun matches multiple aliases
Replaces the previous behavior of returning unknown-noun. The dispatcher
will use this in the next commit to prompt the player to disambiguate.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 13:53:38 -05:00

Halfstreet

A gothic text adventure. Second person, present tense, sparse — never explains.

Style anchors: Le Fanu's Carmilla, Shirley Jackson's The Haunting of Hill House, M.R. James's ghost stories.

Played at halfstreet.io.

Stack

  • Astro static site
  • TypeScript engine — pure (no DOM, Date, Math.random, or console)
  • World content authored in markdown (rooms, items, encounters, endings) under src/world/
  • Vitest for tests

Development

npm install
npm test          # engine + world tests
npm run dev       # local dev server
npm run build     # type-check + production build

Layout

  • src/engine/ — parser, dispatcher, encounter logic
  • src/ui/ — terminal renderer, theme, chips
  • src/world/ — markdown content (rooms, items, encounters, endings)
  • src/pages/index.astro — entry page

Design docs

  • docs/superpowers/specs/halfstreet-bible.md — content bible (canonical world)
  • docs/superpowers/specs/2026-05-08-mystery-text-adventure-design.md — engine/UI architecture
  • docs/superpowers/specs/halfstreet-followon-notes.md — pending engine work before authoring more rooms
  • docs/superpowers/specs/2026-05-09-mystery-markdown-migration-design.md — markdown content migration design
  • docs/superpowers/plans/2026-05-09-mystery-markdown-migration.md — migration plan that was executed

License

GPL-3.0-or-later. See LICENSE.

S
Description
An old-school text adventure straight out of 1985.
https://halfstreet.io
Readme GPL-3.0 3.3 MiB
Languages
TypeScript 92.3%
CSS 4.5%
Astro 3.1%