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>
5.9 KiB
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 (
:wavesworks 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/@locoutput → 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 roleplayalso 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 hiwithout an allegiance → refusal, not a silent drop.
4. Commands (CH4)
:wavesand;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 somenonsenseverb→ goal-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//cetc.) 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 nowor/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//offwith no channel name, and@allegiance boot Bobfrom 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,@locand 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/@renderdeferred (#361); four request commands send but responses aren't rendered yet (#362, already closed).