acdream/tests/AcDream.UI.Abstractions.Tests/Panels/Chat
Erik 6b7b4bb213 fix #363/#367: route unknown-command refusals to chat, not SpewBox
Owner direction 2026-09-07 (verbatim): "Unknown commands like /vt or
stuff from plugins shall now go to the SpewBox. They should go to the
chatbox." Retail itself types ChatCommandRouter's "Unknown command"
refusals as ClientLocal (0x1A) -- the bit every ChatInterface window's
default filter excludes, so they only ever reached the transient
SpewBox overlay and left no transcript record.

Three call sites in ChatCommandRouter.Submit/EmitVerbHelp now call
IChatCommandFeedback.ShowSystemMessage (chat scroll, retail
Default/0x00) instead of ShowInterfaceText (SpewBox): the degenerate-
prefix "Unknown command: {verb}." guard, EmitVerbHelp's confirmed-
null-help branch, and EmitVerbHelp's unresolved-verb fallback. Every
OTHER 0x1A refusal in this file (AP-183 bad-argument refusals of REAL
retail commands -- lifestone, marketplace, channel list/on/off,
allegiance, house, the generic HandleFailureEvent(0x26) fallback,
DoStupidChannelHack, DoReply) is unchanged and still SpewBox-only --
the owner named only unknown commands and plugin text.

This is a deliberate deviation from retail's own 0x1A typing, recorded
as register row AD-124 (also covers the sibling plugin-text change in
a follow-up commit). docs/ISSUES.md #363/#367 get a one-line note
under each pointing at the re-route; their CLOSED status is untouched.

Mutation check: temporarily reverted all three ShowSystemMessage call
sites back to ShowInterfaceText and confirmed the 3 new/changed pinned
tests fail (Assert.Single() on an empty chat log) while the AP-183
boundary test (real command, bad args, still SpewBox) continues to
pass -- see ChatCommandRouterFeedbackRoutingTests.cs and the updated
ChatCommandRouterTests.cs/RetailCommandHelpTableTests.cs assertions.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 08:22:06 +02:00
..
ChatCommandRouterTests.cs fix #363/#367: route unknown-command refusals to chat, not SpewBox 2026-09-07 08:22:06 +02:00
ChatInputParserAtPrefixTests.cs feat(chat): Campaign CH slice CH4 — command registry completion 2026-08-09 21:10:17 +02:00
ChatInputParserTests.cs fix(chat): #363 — retail 0x1A typing for command refusals via the interface-text seam 2026-08-10 15:21:30 +02:00
ChatVMCombatTests.cs chore(chat): CT-D1/D2 — delete the dead ChatPanel, reconcile the stale digest 2026-08-21 10:27:43 +02:00
ChatVMLastTellSenderTests.cs fix(chat): CH1 review fixes — sbb-idiom channel catch-all, command-output typing 2026-08-09 16:03:13 +02:00
ChatVMRetellAndProvidersTests.cs fix(chat): #363 — retail 0x1A typing for command refusals via the interface-text seam 2026-08-10 15:21:30 +02:00
ChatVmTaggedSenderTests.cs feat(chat): CT-A3 — a chat line keeps the identity of who said it 2026-08-21 07:27:14 +02:00
RetailChatColorTableTests.cs feat(chat): Campaign CH slice CH1 — retail LogTextType color table 2026-08-09 15:24:09 +02:00
RetailClientCommandCatalogTests.cs fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00
RetailCommandHelpTableTests.cs fix #363/#367: route unknown-command refusals to chat, not SpewBox 2026-09-07 08:22:06 +02:00
RetailCommandRegistryConformanceTests.cs fix: complete retail parity stability pass 2026-08-28 20:01:39 +02:00