diff --git a/accessibility/docs/scratch.md b/accessibility/docs/scratch.md index b1ad06a..d1b70ad 100644 --- a/accessibility/docs/scratch.md +++ b/accessibility/docs/scratch.md @@ -2,7 +2,7 @@ **Read this first on any handoff.** Living document: update it whenever state changes, before ending a turn. -Last updated: 2026-08-01 · Currently: **Phase 0, starting** +Last updated: 2026-08-01 · Currently: **Phase 0 complete. Phase 1 next.** --- @@ -60,11 +60,34 @@ None block Phase 0. Q4 lands in Phase 1, Q5 + verbosity in Phase 2. - Open questions → `docs/04-open-questions.md` - Decisions + category coverage proof → `docs/05-decisions.md` -### In progress — Phase 0 (bootstrap) -Tasks #1–#5 in the task list. Nothing implemented yet; no game files modified yet. +### Done — Phase 0 (bootstrap) · commit `5c581ed` +- `git init`, pristine tree committed and tagged **`vanilla-0.4.2`** (commit `bbb70d0`, + 1838 files, `accessibility/` deliberately excluded so the tag is genuinely clean). +- love2talk vendored to `accessibility/vendor/love2talk/` — see `VENDORED.md` there + for the five local modifications. +- **DLL elevation problem solved.** `Tolk.dll` etc. live in `accessibility/lib/` and + are loaded by *absolute path* via `love.filesystem.getSource()`, with + `SetDllDirectoryA` pointing at that folder so Tolk can find its own screen-reader + clients. No admin rights, no copying into `Program Files`. Tracked in git via a + `!accessibility/lib/*.dll` un-ignore. +- `accessibility/speech.lua` — pcall-guarded, frame-queued, `logToConsole = true`. +- `accessibility/init.lua` — patch registry + `states.switch` / `states.update` hooks + + startup self-test. +- `accessibility/stateNames.lua` — spoken names for all 28 states. +- **One line added to `main.lua`.** Nothing else in the game touched. -### Next after Phase 0 -Phase 1 = console history + speech + review keys. Highest value, lowest risk. +**Verified working** via `lovec.exe .`: +``` +[accessibility] TTS initialised +[accessibility] TTS: available +[accessibility] speech channel: yes +[speech]! Main menu +``` + +### Next — Phase 1: console history + review keys +Wrap `console.print`, keep our own unbounded history (the game's expires after 3s), +mirror its `(x3)` coalescing, add review keys. Needs Q4 answered (auto-speak policy) +but a sensible default can ship first. --- @@ -83,7 +106,22 @@ Phase 1 = console history + speech + review keys. Highest value, lowest risk. | File | Change | Why | |---|---|---| -| *(none yet)* | | | +| `main.lua` | +1 line: `require("accessibility").initialize()` after `console.prepare()` | Sole mod entry point. Placed there because templates, keybindings, `states.setup()` and the console canvas are all ready by then, and it's before the first `states.switch()`. | + +Verify this list is exhaustive at any time with: +``` +git diff --stat vanilla-0.4.2 -- . ':!accessibility' ':!.gitignore' +``` +Currently: `main.lua | 1 +`. + +### How to run +``` +cd "D:/code/Sulphur Memories Alchemist 0.4.2 sanctified" +"C:/Program Files/LOVE/lovec.exe" . +``` +`lovec` (not `love`) gives the console, where `[speech]` lines mirror every +utterance — speech is verifiable from the log, not only by ear. `!` after +`[speech]` means the utterance interrupted. ---