Repoint every stale TODO.md citation in the tree
Some checks failed
libakgl CI Build / cmake_build (push) Successful in 7m48s
libakgl CI Build / memory_check (push) Successful in 12m49s
libakgl CI Build / performance (push) Failing after 41m22s
libakgl CI Build / mutation_test (push) Successful in 27m0s

A sweep of all 265 tracked files, not just the ones the migration touched.

Two cross-repository citations named deps/libakerror/TODO.md item 8, a
numbering that has not existed for two releases; both now name libakerror
issue #18. Three tutorial and plan references pointed at TODO.md for defects
that are tracked: the invisible-on-frame-one actor is #39, the control map
traps are #81, and the pkg-config gap is #17.

plan.md is a live instruction document for writing the manual and still told
its reader to file findings in TODO.md; it says the tracker now.

Filed while sweeping: a zeroed akgl_ControlMap matches gamepad South, because
SDL_GAMEPAD_BUTTON_SOUTH is 0 and the two arms of the match are one
expression, and handler_on/handler_off are called without a NULL check. Both
are documented as workarounds in chapter 21 and neither had an issue. #81.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Andrew Kesterson <andrew@aklabs.net>
This commit is contained in:
2026-08-02 22:01:27 -04:00
parent ad71072cb3
commit 8477ea698b
5 changed files with 14 additions and 15 deletions

View File

@@ -1064,8 +1064,7 @@ Add one line where you set up the player:
The default facing logic clears every facing bit and sets one from the *movement* bits — so
an actor that stops moving is left facing nowhere. Its state drops to bare `ALIVE`, which
your character has no sprite for, and it stops being drawn. Clearing this field leaves the
facing bits wherever the control handlers put them. Making the default behave is tracked in
`TODO.md`.
facing bits wherever the control handlers put them. Making the default behave is issue #39.
Run now. The arrow keys walk the player, the run animation plays, and the player stops at
walls.

View File

@@ -997,10 +997,10 @@ Three things to get right, all of them cheap:
- **Zero the struct first.** A binding is a struct copied into the map, so a stack local is
fine — but an uninitialized field is a match against garbage.
- **`handler_off` must be non-`NULL`.** `akgl_controller_handle_event` calls it without
checking. `jrpg_cmhf_ignore` is a handler that does nothing, which is what you want on the
checking, which is the other half of issue #81. `jrpg_cmhf_ignore` is a handler that does nothing, which is what you want on the
release of a key whose press is the whole action.
- **Set `button` to `SDL_GAMEPAD_BUTTON_INVALID`.** The keyboard and gamepad arms of the
match are evaluated together, and 0 is a real button. Recorded in `TODO.md`; until it is
match are evaluated together, and 0 is a real button. That is issue #81; until it is
settled, name a button no gamepad reports.
Run now. Standing near the elder and pressing Space opens their line; pressing it again