acdream/docs/research/2026-08-09-campaign-ch-test-script.md
Erik 09453ecae8 fix(chat): #363 — retail 0x1A typing for command refusals via the interface-text seam
ChatVM gains an OnInterfaceText hook + ShowInterfaceText(text), the
App-layer composition wires it to RuntimeCommunicationState.AddText,
and ChatCommandRouter routes every retail-0x1A command refusal through
it instead of the chat log's 0x00 sink. UI.Abstractions still never
references Runtime directly; unwired hosts (headless, tests) fall back
to the chat log tagged ClientLocal so no text is ever silently lost.

Reclassified per register row AP-183 (DoChannelList/On/Off, DoAllegiance,
DoHouseAvailableList — the last also corrected to retail's own bad-house-
type string instead of a synthesized "Usage:" line) and newly wired two
sites that previously showed nothing at all (DoStupidChannelHack's bare
legacy-channel-verb refusal, DoReply's message-but-no-last-teller
refusal). The generic bad-args fallback now resolves WeenieErrorMessages
0x026 ("That is not a valid command.", retail's HandleFailureEvent(0x26))
instead of synthesizing "Usage: {Usage}". DoSpeaker/DoEndurance/DoTitle
are untouched — already correct at 0x00.

Also closes #367 (DoHelp's "Unknown command" fallback and the degenerate-
prefix refusal now reach the SpewBox too) and retires register row
AP-186, whose own filing proposed exactly this seam shape.

Full Release suite: 12,542 passed / 4 skipped / 0 failed (baseline
12,466/4/0 at ff2784ea).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 15:21:30 +02:00

5.9 KiB

Campaign CH — in-client user test script

One connected session against local ACE, retail GUI (ACDREAM_RETAIL_UI=1). For the color checks, running the retail client side-by-side is ideal but optional — the hex values are byte-verified; what needs eyes is "does it FEEL right".

1. On-screen interface text (CH2 — the SpewBox)

  • Jump, and press jump again while airborne → "You can't jump while in the air" appears as transient text flush to the very TOP of the viewport (round 3, 2026-08-10 — moved off the earlier 60px-down placeholder), NOT in the chat window. Chat gets no line at all.
  • Spam it 5+ times fast: the line refreshes in place (no stacking of identical text); distinct refusals stack newest-on-top, max 4 lines.
  • Try @version → its output goes to CHAT (green), not the SpewBox.
  • The SpewBox text should now read visibly SMALLER than round 2 (retail dat Font 0x40000025, 11px, replacing the earlier 15px debug font).
  • Report presentation impressions: position and font are now best-available approximations, not resolved retail values (register AP-178); line lifetime is still a placeholder (AP-177) — say what looks wrong vs your retail memory.

2. Chat colors (CH1)

Side-by-side vs retail if possible:

  • Say something → white. Emote (:waves works now) → grey.
  • Tell someone → your "You tell ..." line is DARK yellow (210,210,100); an incoming tell is BRIGHT yellow.
  • Magic self-cast lines → light blue. Combat: damage you take → salmon, damage you deal → dark red.
  • @version / @loc output → green (retail types command output 0x00).
  • Fellowship chat (if you form one) → bright yellow.

3. Side channels (CH3)

  • /general hi → round-trips (ACE echoes it back; blue-grey color). Same for /trade, /lfg.
  • Roleplay: with "Hear Roleplay Chat" OFF (the ACE default), sending to Roleplay → "You are not listening to the Roleplay channel!" and nothing is sent. Enable it in Settings → Chat → ACE reports entering the channel; sending now works. (@join roleplay / @leave roleplay also flip it, effective immediately.)
  • Legacy family single-print: /f hi (in a fellowship) shows ONE line, not two. Same for /v /p /m /cv if you have the allegiance structure.
  • /a hi without an allegiance → refusal, not a silent drop.

4. Commands (CH4)

  • :waves and ;waves → emote. @f, hi (trailing comma) works.
  • @t Two Word Name, hello → comma splits the name (needs an alt with a multi-word name to fully verify).
  • @g hi → goes to FELLOWSHIP (not the global General room!). Without a fellowship expect a server-side error — the important thing is it does NOT broadcast globally.
  • @allegiance boot Bob → "Please see @help Allegiance for more information..." locally; nothing broadcast, nothing sent.
  • @house abandon → TWO confirmation dialogs. Decline (unless you really want to abandon a house). Declining either stage sends nothing.
  • @mr → help text only. @clist general → channel list from ACE.
  • An unknown verb like @somenonsense → passes through to ACE (server answers, client does not swallow it).

5. Help text (round 3, 2026-08-10)

  • /help (no args) → TWO lines in the chat window: a "Note: You may substitute a forward slash..." line, then "Available help:" followed by 13 real retail topic one-liners (allegiances/channels/chatting/death/ emote/fillcomps/friends/house/squelch/status/text/commands). This replaced an acdream-invented cheat sheet ("Chat: /say...", "Client: /help...") — that text should no longer appear at all.
  • /help death → the SAME "Note:" line first, then a SECOND line starting "For more information, type @help ." immediately followed by the 8-line corpse/death command listing — not just the 8 lines alone.
  • /help somenonsenseverbgoal-window fix (2026-08-10, #367 closed): "Unknown command" now flashes on the SpewBox (top of viewport), NOT the chat window — the SAME surface as section 1's "jump in the air" refusal. Chat gets no line at all.

6. Goal-window fix — SpewBox refusal typing (2026-08-10, #363/#367)

  • /g (or /f//a//m//p//v//c etc.) with NO message → "You must specify the text you wish to say!" flashes on the SpewBox. Previously this silently did nothing.
  • /r hi there (or /reply) with no prior incoming Tell → "Someone must @tell you first!" flashes on the SpewBox. Previously silent.
  • A bad-args catalog command, e.g. /ls now or /marketplace foo"That is not a valid command." flashes on the SpewBox. Previously showed a green "Usage: /lifestone" line in CHAT — both the color/surface AND the wording changed.
  • /hslist badtype"Please see @help hslist for more information on how to use this command" flashes on the SpewBox. Previously showed a green "Usage: /hslist " line in CHAT.
  • /clist//on//off with no channel name, and @allegiance boot Bob from section 4 above — SAME text as before, but now flash on the SpewBox instead of showing in chat.
  • A bare / or @x (no letter verb) and /help somenonsenseverb (section 5) both now flash "Unknown command[: x]" on the SpewBox too.
  • Sanity: /endurance, @version, @loc and other informational command output must STILL show in chat (green/default), not the SpewBox — only genuine refusals moved.

Known-open, do not report as new

  • Ctrl+M mute chord (#358) — still broken, separate from this campaign.
  • SpewBox line lifetime is still a placeholder (AP-177) pending a retail measurement session; position/font are now best-available approximations (AP-178), not confirmed retail pixel values.
  • Allegiance management subcommands print the help refusal instead of executing (#360); @day/@log/@render deferred (#361); four request commands send but responses aren't rendered yet (#362, already closed).