diff --git a/src/OpenClaw.Tray.WinUI/Windows/CommandPaletteDialog.xaml.cs b/src/OpenClaw.Tray.WinUI/Windows/CommandPaletteDialog.xaml.cs
index d75e88064..623b01c75 100644
--- a/src/OpenClaw.Tray.WinUI/Windows/CommandPaletteDialog.xaml.cs
+++ b/src/OpenClaw.Tray.WinUI/Windows/CommandPaletteDialog.xaml.cs
@@ -99,4 +99,7 @@ public class CommandItem
public string Tag { get; set; } = "";
/// Optional custom action (overrides tag-based navigation).
public Action? Execute { get; set; }
+
+ // AutoSuggestBox derives each suggestion's default accessible name from the item string.
+ public override string ToString() => Title;
}
diff --git a/src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml b/src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml
index d48c1dd6f..aefd79884 100644
--- a/src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml
+++ b/src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml
@@ -92,7 +92,8 @@
typeof(DebugPage)", cs);
}
+ [Fact]
+ public void HubWindow_TitleSearchBox_ProjectsCommandTitles()
+ {
+ var xaml = Read("src", "OpenClaw.Tray.WinUI", "Windows", "HubWindow.xaml");
+ var searchStart = xaml.IndexOf("= 0, "The title search box must exist.");
+
+ var searchEnd = xaml.IndexOf('>', searchStart);
+ Assert.True(searchEnd > searchStart, "The title search box opening tag must be complete.");
+
+ var searchTag = xaml.Substring(searchStart, searchEnd - searchStart);
+ Assert.Contains("TextMemberPath=\"Title\"", searchTag);
+
+ var commandItem = Read("src", "OpenClaw.Tray.WinUI", "Windows", "CommandPaletteDialog.xaml.cs");
+ Assert.Contains("public override string ToString() => Title;", commandItem);
+ }
+
[Fact]
public void HubWindow_NavPaneToggle_LivesInTitleBarAndHidesBuiltInToggle()
{