Skip to main content

AI-assisted writing tool - Python wrapper

Project description

Ghost Writer

A horror-tinged retro adventure prototype about a deceased journalist haunting a typewriter, using words as weapons to uncover their own murder.

The goal is to keep the project light enough to run anywhere: no build step, no framework, no external assets, and no dependencies. Open index.html directly, or run the tiny local server included in scripts/.

Concept

You are the ghost of a murdered 1940s journalist. Your soul is trapped inside a haunted typewriter carried by a hardboiled detective who does not yet know you are there. You can interact with paper, ink, and wood, and you reshape the world by typing the right words at the right moment.

Combat is semantic. Words like BURN, BIND, and LIE affect ghosts differently. Each ghost also has a hidden True Name scattered through environmental clues. Type a True Name correctly to banish the ghost instantly. Misspell it, and the ribbon frays.

Audio feedback is generated in-browser with the Web Audio API only. It starts or resumes after player input or the Audio button, never during page load, and it can be muted at any time.

Current prototype

The first version is a tiny HTML5 Canvas scene with:

  • real-time typing input
  • ribbon health
  • hardboiled no-backspace mode
  • Semantic command words
  • True Name ghost banishment
  • misspelled True Name ghost mutation
  • inspectable paper/ink/wood clues
  • prototype witness memory commands: FORGET, REMEMBER, and ACCUSE
  • current-run journal entries for discovered clues
  • a noir city presentation layer
  • lightweight generated Web Audio feedback for typewriter taps, command outcomes, ribbon damage, ghost pressure, and Mallory banishment

Run locally

Option 1: open index.html in a browser.

Option 2: use the included server:

npm run dev

Then visit http://localhost:8000.

Smoke test

npm run smoke

The smoke test checks that the core files exist and contain the expected prototype hooks. It is intentionally dependency-free and fast, and it does not launch a browser.

Manual browser smoke test

Use this checklist when you want visual confirmation of the Canvas prototype without adding project dependencies:

  1. Start the included static server:

    npm run dev
    
  2. Visit http://localhost:8000/index.html in a browser.

  3. Confirm the noir title card, controls help, first-run case notes, and Ghost Writer prototype canvas appear.

  4. Click or tab to the canvas, press A, and confirm the HUD/status reflects one typed letter without a console error.

  5. Press Backspace, arrow keys on an empty typed line, empty-line Enter, Esc, and empty-line F2 to confirm the page remains responsive and shortcuts only fire from an empty typed line.

An optional automated browser check is also available:

npm run smoke:browser

npm run smoke:browser uses only built-in Node APIs plus an already-installed Chromium-family browser (chromium, chromium-browser, or google-chrome) when one is available. It looks for firefox too, but skips cleanly because this dependency-free script uses Chrome DevTools Protocol for page checks. When no supported browser tooling is available, it exits successfully with a clear skipped message. When Chromium-family tooling is available, it loads index.html, verifies the canvas and immediate runtime state, sends one keyboard interaction, checks for immediate browser errors, and writes artifacts/browser-smoke.png.

Controls

  • Arrow keys on an empty typed line: move the detective; arrow keys do not move while a command is being typed
  • Letter keys and spaces: type into the haunted typewriter, including two-word commands like MALLORY VALE
  • Enter on an empty typed line: inspect nearby paper, ink, wood, or Eddie Pike
  • Enter on a typed line: commit the typed word or phrase
  • FORGET, REMEMBER, ACCUSE: change Eddie Pike's witness memory when close enough; the intended Mallory Vale route uses REMEMBER, then ACCUSE
  • OPEN: after Eddie is cornered, open the locked alley door
  • MALLORY VALE: after the door opens, commit Mallory's True Name to finish the current case slice
  • BURN, BIND, LIE: after the alley door opens, BURN hurts and enrages Mallory, BIND briefly pins her down, and LIE sends her after a decoy
  • Backspace: erase one character, unless Hardboiled Mode is enabled
  • F2 on an empty typed line: toggle Hardboiled Mode; F2 does not toggle while text is typed
  • Audio button below the canvas: toggle subtle generated audio feedback; audio is not controlled by letter shortcuts
  • Esc: clear a typed line first; press Esc on an already-empty line to restart the prototype

Project shape

.
├── docs/
│   ├── design.md
│   └── roadmap.md
├── scripts/
│   ├── browser-smoke.mjs
│   ├── dev-server.mjs
│   └── smoke-test.mjs
├── src/
│   ├── audio-engine.js
│   ├── case-flow.js
│   ├── clue-journal.js
│   ├── input-rules.js
│   ├── main.js
│   ├── screen-shake.js
│   ├── semantic-rules.js
│   └── styles.css
├── index.html
├── package.json
└── README.md

Design target

Ghost Writer should feel like Shadowgate and Deja Vu wandered into a haunted 16-bit noir arcade cabinet. The screen should invite investigation first, panic second, and dread always.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ghostwriter_billy-0.1.0-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file ghostwriter_billy-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ghostwriter_billy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 204cef85da869aa0ca9aeb95dba582e214311b38ec742137f112e3aac67a4ce7
MD5 dc67736c466a5816aa6325b3c5003654
BLAKE2b-256 1a23d72fcb9b373504cd1db1ab34cbf16d1f8aa8558735eba06ae05654f2dd40

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page