@@ -24,6 +24,11 @@ public void SessionsPage_ConfirmsDestructiveActions_ViaPlanner()
2424 Assert . Contains ( "RunSessionActionAsync(sender, SessionActionKind.Reset)" , source ) ;
2525 Assert . Contains ( "RunSessionActionAsync(sender, SessionActionKind.Compact)" , source ) ;
2626 Assert . Contains ( "RunSessionActionAsync(sender, SessionActionKind.Delete)" , source ) ;
27+ // Runtime dialogs must not use XAML property resource keys; those can
28+ // fall back to raw key text such as "CancelButton.Content".
29+ Assert . Contains ( "SessionActionPrompt_CancelLabel" , source ) ;
30+ Assert . DoesNotContain ( "LocalizationHelper.GetString(\" CancelButton.Content\" )" , source ) ;
31+ Assert . Contains ( "DefaultButton = ContentDialogButton.None" , source ) ;
2732 }
2833
2934 [ Fact ]
@@ -78,6 +83,9 @@ public void App_SessionActions_UsePlanner_NotInlineCopy()
7883
7984 Assert . Contains ( "SessionActionPlanner.BuildPrompt" , source ) ;
8085 Assert . Contains ( "SessionActionPlanner.IsAllowed" , source ) ;
86+ Assert . Contains ( "SessionActionPrompt_CancelLabel" , source ) ;
87+ Assert . DoesNotContain ( "LocalizationHelper.GetString(\" CancelButton.Content\" )" , source ) ;
88+ Assert . Contains ( "DefaultButton = ContentDialogButton.None" , source ) ;
8189 // The confirmation copy comes from the shared planner, not inline strings.
8290 Assert . DoesNotContain ( "Start a fresh session for '" , source ) ;
8391 Assert . DoesNotContain ( "Keep the latest log lines for '" , source ) ;
@@ -89,6 +97,7 @@ public void SessionActionPrompts_AreRuntimeLocalized()
8997 var source = ReadSource ( "src" , "OpenClaw.Tray.WinUI" , "Helpers" , "SessionActionPromptLocalizer.cs" ) ;
9098 var requiredKeys = new [ ]
9199 {
100+ "SessionActionPrompt_CancelLabel" ,
92101 "SessionActionPrompt_Reset_Title" ,
93102 "SessionActionPrompt_Reset_BodyFormat" ,
94103 "SessionActionPrompt_Reset_ConfirmLabel" ,
0 commit comments