acdream/tests
Erik 581a61ef0c feat(chat): the talk-focus menu's Tell-to / Squelch entries actually work
Both entries were deliberate no-ops — the code said so — and both showed a
static label where retail shows the selected player's NAME.

Retail builds them in gmMainChatUI::InitTalkFocusMenu @0x004CDC50 and rebuilds
their labels every time the menu opens, substituting the selection through
StringInfo::AddVariable_String (@0x004CD91C / @0x004CD982). So they now read
"Tell to Dww" / "Squelch (ignore) Dww", rebuilt on open from a live selection
provider, and grey out with nothing selected — retail arms the tell slot only
for a talkable target (SetTalkFocusEnabled(2, 1) @0x004CD9B0).

Picking "Tell to X" aims the chat bar at X. That needed one piece of plumbing:
the parser's plain-speech fallthrough returned a null target, so a line typed
under a Tell focus was dropped by the router for having no one to send to.
Parse/Submit now carry an optional default tell target for exactly that case.

"Squelch X" publishes the ALREADY-REGISTERED /squelch verb rather than
reimplementing the request — the ModifyCharacterSquelch wire builder
(CM_Communication::Event_ModifyCharacterSquelch @0x006A42D0) has been there all
along; only the menu path to it was missing.

UiMenu gains an OnOpen seam, because a menu whose Items are fixed at Bind can
only ever say "Tell to Selected". It fires before _open flips so the rebuilt
rows are measured and drawn in the same opening.

Solution builds clean; 14,480 tests pass on the standard hermetic lane filter,
0 failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 06:23:46 +02:00
..
AcDream.App.Tests feat(chat): the talk-focus menu's Tell-to / Squelch entries actually work 2026-08-21 06:23:46 +02:00
AcDream.Bake.Tests test: make prerequisite lanes fail honestly 2026-08-18 12:09:41 +02:00
AcDream.Cli.Tests build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Content.Tests fix(world): honour SetOmega — the birds and butterflies fly again 2026-08-21 05:42:59 +02:00
AcDream.Core.Net.Tests fix(chat): announce enchantment expiry; stop double-printing tells 2026-08-21 06:11:33 +02:00
AcDream.Core.Tests feat(plugins): enforce apiVersion; launcher plugins default ON with "none" opt-out 2026-08-20 21:28:04 +02:00
AcDream.Core.Tests.Fixtures.HelloPlugin build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Headless.Tests fix(tests): the launcher/headless command-line contract needs executable stubs on Linux 2026-08-19 21:53:19 +02:00
AcDream.Launcher.Core.Tests feat(plugins): enforce apiVersion; launcher plugins default ON with "none" opt-out 2026-08-20 21:28:04 +02:00
AcDream.Launcher.Core.Tests.Fixtures.ConsolelessSupervisorParent build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Launcher.Core.Tests.Fixtures.ConsoleSignalChild build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Launcher.Core.Tests.Fixtures.InstallLeaseHolder build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Launcher.Tests feat(launcher): LU8 — logging in IS the character refresh; put Play above the fold 2026-08-19 20:48:15 +02:00
AcDream.Platform.Tests build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Plugin.Tests.Fixtures.HostPlugin build: make release restore reproducible 2026-08-18 10:29:00 +02:00
AcDream.Plugins.MossTank.Tests feat: regen buffs, wand aura, spellbook assess, indicator press flash 2026-08-20 20:38:28 +02:00
AcDream.Runtime.Tests fix(chat): announce enchantment expiry; stop double-printing tells 2026-08-21 06:11:33 +02:00
AcDream.UI.Abstractions.Tests test: remove dormant panel self-tests 2026-08-18 14:37:42 +02:00
Fixtures/campaign-la feat(plugins): enforce apiVersion; launcher plugins default ON with "none" opt-out 2026-08-20 21:28:04 +02:00
Directory.Build.props fix: retail text and golden-string tests must not follow the machine's locale 2026-08-19 19:56:09 +02:00
TestCultureInitializer.cs fix: retail text and golden-string tests must not follow the machine's locale 2026-08-19 19:56:09 +02:00