fix(client): restore retail interaction parity
All checks were successful
CI / linux-portable (push) Successful in 3m27s
CI / windows-gate (push) Successful in 6m42s
CI / release (push) Successful in 2m12s

Harden keyboard and camera routing, inventory and vendor interactions, chat/emotes, relog portal flow, and paperdoll rendering. Add retail research, connected gate coverage, and release-gate validation.
This commit is contained in:
Erik 2026-08-26 20:45:11 +02:00
parent 0c699240e0
commit f6fe0f2a4f
151 changed files with 10162 additions and 1211 deletions

View file

@ -6,6 +6,44 @@ namespace AcDream.App.Tests.UI;
public class UiRootInputTests
{
[Fact]
public void KeypadEnter_DoesNotUseTheRawChatActivationFallback()
{
var root = new UiRoot { Width = 800, Height = 600 };
var field = new UiField { Width = 100, Height = 20 };
root.AddChild(field);
root.DefaultTextInput = field;
root.OnKeyDown((int)Silk.NET.Input.Key.KeypadEnter);
Assert.Null(root.KeyboardFocus);
}
[Fact]
public void SemanticChatActivation_SuppressesTheSameNativeEnterTail()
{
var root = new UiRoot { Width = 800, Height = 600 };
var field = new UiField { Width = 100, Height = 20 };
int submissions = 0;
field.SetText("hello");
field.OnSubmit = _ => submissions++;
root.AddChild(field);
root.DefaultTextInput = field;
root.SetKeyboardFocus(field);
root.SuppressPhysicalKeyUntilRelease(Silk.NET.Input.Key.Enter);
root.OnKeyDown((int)Silk.NET.Input.Key.Enter);
root.OnChar('x');
Assert.Equal(0, submissions);
Assert.Equal("hello", field.Text);
Assert.Same(field, root.KeyboardFocus);
root.OnKeyUp((int)Silk.NET.Input.Key.Enter);
root.OnChar('x');
Assert.Equal("hellox", field.Text);
}
[Fact]
public void UiNineSlicePanel_IsNotAnchorManaged_SoUserMoveResizeSticks()
{