e31bf0fbff7bb9e263ba03cb5a8773654cf483fd
ci/woodpecker/manual/woodpecker Pipeline failed
- package.json: drop @astrojs/sitemap, fontsource fonts, wrangler, @cloudflare/workers-types, tsx, spotify scripts. Keep astro/yaml/zod + vitest/typescript/@astrojs/check/@types/node. Add GPL-3.0-or-later. - astro.config.mjs: drop sitemap integration, sharp image config; set site to halfstreet.io. - tsconfig.json: drop cloudflare-workers-types, drop functions/scripts from include. - .gitignore: cloudflare-free; Obsidian workspace cache rules updated to post-rename src/world/.obsidian/ paths. - README.md: stack, layout, design-doc index, license note. - .woodpecker.yml: install + npm test + npm run build pipeline.
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 logicsrc/ui/— terminal renderer, theme, chipssrc/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 architecturedocs/superpowers/specs/halfstreet-followon-notes.md— pending engine work before authoring more roomsdocs/superpowers/specs/2026-05-09-mystery-markdown-migration-design.md— markdown content migration designdocs/superpowers/plans/2026-05-09-mystery-markdown-migration.md— migration plan that was executed
License
GPL-3.0-or-later. See LICENSE.
Description
Languages
TypeScript
92.3%
CSS
4.5%
Astro
3.1%