acdream/tests/AcDream.UI.Abstractions.Tests/Panels/Chat
Erik d3cab1ab10 fix(chat): / and @ are equivalent command prefixes (retail parity)
Retail treats / and @ interchangeably for commands, but two client-side
layers broke the / spelling for server commands:

- ChatCommandRouter refused ANY unknown /verb with a local "Unknown
  command" guess — so /tele, /ci, /acehelp never reached ACE even
  though ACE supports them. The guard is gone; the server is now the
  single authority on what's a valid command (ACE replies "Unknown
  command: x" itself).
- ChatInputParser passed unknown /verbs through as literal speech.
  ACE's GameActionTalk only intercepts the @ form on the wire (the /
  acceptance in CommandManager is the server CONSOLE path), so the
  parser now rewrites unknown /xyz -> @xyz.

Both command pass-throughs (@ and rewritten /) now also force the Say
channel: GameActionTalk (0x0015) is the only wire action ACE parses
commands on — previously a command typed with a chat channel active
would broadcast as channel speech.

Phase J Tier 4 ("/-text must never broadcast as speech") still holds:
letter-verbed input goes out as an @command (never speech), and
command-shaped-but-verbless input ("/", "//shrug") is refused locally
by a narrow router guard.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 09:46:50 +02:00
..
ChatCommandRouterTests.cs fix(chat): / and @ are equivalent command prefixes (retail parity) 2026-07-03 09:46:50 +02:00
ChatInputParserAtPrefixTests.cs feat(chat): Phase J Tier 1+2 - @ verb prefix, /retell, /framerate, /loc 2026-04-25 21:34:13 +02:00
ChatInputParserTests.cs fix(chat): / and @ are equivalent command prefixes (retail parity) 2026-07-03 09:46:50 +02:00
ChatPanelFocusTests.cs feat(input): #24 Phase K.2 - auto-enter player mode at login + MMB mouse-look + DebugPanel free-fly + Tab to chat-input focus 2026-04-26 09:20:17 +02:00
ChatPanelInputTests.cs fix(chat): / and @ are equivalent command prefixes (retail parity) 2026-07-03 09:46:50 +02:00
ChatPanelLayoutTests.cs fix(ui): wrap chat panel body in outer BeginChild so drag-trap covers it 2026-04-26 23:10:01 +02:00
ChatVMCombatTests.cs fix(chat): BuildTell wire field order + retail-style FormatEntry + suppress duplicate Channel echo 2026-04-25 20:49:02 +02:00
ChatVMLastTellSenderTests.cs feat(ui): #17 ChatPanel input field + slash commands + reply-to-last-tell 2026-04-25 19:44:04 +02:00
ChatVMRetellAndProvidersTests.cs feat(chat): Phase J Tier 1+2 - @ verb prefix, /retell, /framerate, /loc 2026-04-25 21:34:13 +02:00