Improve client AOML rendering and support local /showfile documents
Extend the existing PRK.Client AOML/chat reader rather than adding a parallel renderer. Primary acceptance: /showfile menu loads cd_image/text/help/menu from the configured game installation; chatcmd:///showfile links navigate to nested help files, accepting Windows separators on Linux. Handle missing/invalid files safely and confine reads to the help directory. Improve parser attribute/entity handling and block alignment/break semantics while preserving ordinary chat and existing text://, itemref, image and command links. Verified supplied menu: all nine direct /showfile targets load; full document scrolls and opens at the top. Fixed missing centered content by reapplying retained reader snapshots each frame, so measurement uses the actual window width rather than the desktop width and follows resizing. Exact login payload is parsed and its Open Menu link clicked under a constrained reader on a 3840x2160 scene at multiple widths. Link colour overrides enclosing fonts unless a font inside the anchor specifies colour. Documents use natural image dimensions (menu image 32x32), with variable row heights shared by rendering, links and selection. Updated native screenshot inspected against the original-client reference. Added a real loopback zone test proving typed /tp and linked /item produce correctly identified N3 ChatCmdMessage packets, not vicinity chat. Docker .NET 10 client build and tests pass: 3,621 passed, 54 skipped (other RequiresInstall tests excluded); all 699 graphics tests pass with installation data. Native offscreen rendering, resizing, clicking, parsing and network routing verified; no live-emulator teleport/item execution or manual in-game session was performed. AOML chatcmd links must enter the same slash-command dispatcher as typed commands and macros. Unhandled local verbs should use the normal N3 ChatCmdMessage route to the emulator, including /tp and /item; keep server-side permission/argument handling authoritative and do not special-case AOML command execution. Follow-up: /command is handled as a client-side server-command wrapper; typed/linked /command ncu run 28675 produces an N3 payload of ncu run 28675. Pull request: #2690 — https://git.project-rk.com/prk/engines/pulls/2690 Final branch validation: 3,628 client tests passed, 54 skipped (other RequiresInstall tests excluded), and 699 graphics tests passed.
Checklist
6 of 6 complete- Preserve AOML block alignment and improve attribute/entity parsing with regression tests.
- Implement safe /showfile loading and command/link integration with nested Windows-style paths.
- Validate the supplied menu and run client and graphics regression suites.
- Reproduce the exact login text:// popup and large-viewport reader layout/resizing; verify visible centered content and correctly wrapped links.
- Verify typed and clicked /tp and /item share the ordinary dispatcher and N3 command route with server-side authorization.
- Match original link colour precedence and natural image dimensions, including rendering and hit/selection geometry.
- Area
- Project Rubi-Ka
- Project
- engines
- Kind
- Chore
- Task ID
tsk_rd9jqzqavb- Updated