Debug harness: loopback socket to pilot the client (screenshots + scripted checks) #122
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo#122
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
A DEBUG-only control channel on the client so the character can be piloted programmatically — for scripted checks and, above all, so the assistant can drive the client, exercise a visible feature and capture screenshots to attach to PRs.
Design (agreed)
#if DEBUG) — never compiled into a Release build. No backdoor.127.0.0.1only. One command per line, each gets aOK .../ERR ...response — drivable from a shell withnc//dev/tcp. Request→response so ascreenshotcommand ACKs only once the PNG is written (no read race).MoveRequest,Say, …) and captures the framebuffer. It never fabricates server state; the server validates every action as usual.GraphicsDevice).MVP commands
login <user>(drives the login screen to reach in-world),goto <x> <y>/move <dir>,say <text>,open bag|doll|admin,screenshot <path>,status(self position / visible entities),hud on|off,help.Also
Update the PR template +
CLAUDE.mdworking agreement: for a visible change, the screenshot is produced by the assistant piloting the client via this harness (exercising the feature and attaching the shots + the steps run), not by the human.Definition of Done
127.0.0.1:<port>and sendinglogin→goto→screenshot <path>produces a PNG that shows the in-world scene at that position.CLAUDE.mdstate the assistant-piloted screenshot process.Scope refinement (validated by dry-running #121 + #117)
The harness needs synthetic input injection (mouse + keyboard), not just game-intent injection — otherwise it can drive gameplay but not the UI (gumps/chat), which is half our features. Full command set:
login <user>,goto <x> <y>,move <dir>,say <text>,open bag|doll|admin,screenshot <path>,status,help.click <x> <y>,rightclick <x> <y>,drag <x1> <y1> <x2> <y2>,type <text>,key <k>— overlays a syntheticInputStateso gumps/chat react exactly as to a real mouse/keyboard.Out of scope: hover effects and scroll-wheel injection (not needed for screenshots).