Posted July 24, 2026 by evildojo
Changes since v0.2.3. A small controls + upkeep release: one user-facing gameplay option, a green codebase-health round, a test-suite hardening fix, and a documentation reorganization. No new gameplay systems. 6 commits; net-negligible code change (docs churn dominates the line count).
OPTION_PROMPT_ATTACK_FRIENDLIES) gating the “attack this friendly NPC?” confirmation. The flag gamestate::prompt_before_attacking_friendlies (default OFF) controls the CONFIRM_ACTION_MOUSE_ATTACK_NPC popup at both the keyboard (handle_attack) and mouse (handle_mouse_gameplay_actions) attack paths; when off, a strike on a non-aggro NPC falls straight through to run_attack_action + consume_hero_turn_action (identical to the aggro branch). New strings STR_OPTIONS_PROMPT_ATTACK_FRIENDLIES_FMT / STR_OPTTYPE_PROMPT_ATTACK_FRIENDLIES (en). 3 new tests plus the two pre-existing confirm-fires regressions updated to opt in explicitly, and the last-entry menu test renamed. Pet-safety note: the !aggro gate also covers the hero’s own pet — same toggle, one-tap pet-kill when off (operator-accepted; no separate is_pet sub-guard).test_heavy_simulation.h) to dismiss the identify-result modal, so the simulation no longer stalls with a modal left open.PLAN.md into a thin CLAUDE.md entry point plus linked topic files (active-work.md, known-bugs-and-backlog.md, recently-completed.md, roadmaps) and an archive/ for completed post-mortems; PLAN.md is now just a pointer. Content-only reshuffle, near-zero net lines.