diff --git a/HellionChat/GameFunctions/KeybindManager.cs b/HellionChat/GameFunctions/KeybindManager.cs index 55a4a28..fa47706 100644 --- a/HellionChat/GameFunctions/KeybindManager.cs +++ b/HellionChat/GameFunctions/KeybindManager.cs @@ -629,7 +629,18 @@ internal unsafe class KeybindManager : IDisposable if (info.Permanent) { - Plugin.Instance.Functions.Chat.SetChannel(targetChannel.Value); + // KB-01 (1.5.6 parity, ChatLogWindow.SetChannel 1d3b429:1476-1479): + // committing the game channel also pre-targets the game's native input. + // Forward the tab's reply target for Tell so the partner is armed + // game-side (ChangeChatChannel code 17); null for a linkshell — + // targetChannel is the FINAL resolved value (9..16/19..26 for LS, never + // 0=Tell), so a stale TempTellTarget can never flip an LS cycle to Tell. + var gameTarget = + targetChannel.Value == InputChannel.Tell + ? rotTab.CurrentChannel.TempTellTarget + ?? rotTab.CurrentChannel.TellTarget + : null; + Plugin.Instance.Functions.Chat.SetChannel(targetChannel.Value, gameTarget); rotTab.CurrentChannel.SetChannel(targetChannel.Value); } else