Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
231 changes: 131 additions & 100 deletions src/cascadia/TerminalApp/FreOverlay.cpp

Large diffs are not rendered by default.

22 changes: 12 additions & 10 deletions src/cascadia/TerminalApp/FreOverlay.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,8 @@ namespace winrt::TerminalApp::implementation
const winrt::Windows::UI::Xaml::RoutedEventArgs& args);
void _OnCloseButtonClick(const winrt::Windows::Foundation::IInspectable& sender,
const winrt::Windows::UI::Xaml::RoutedEventArgs& args);
void _OnAgentSelectionChanged(const winrt::Windows::Foundation::IInspectable& sender,
const winrt::Windows::UI::Xaml::Controls::SelectionChangedEventArgs& args);
void _OnSessionManagementToggled(const winrt::Windows::Foundation::IInspectable& sender,
const winrt::Windows::UI::Xaml::RoutedEventArgs& args);
void _OnAutoDetectToggled(const winrt::Windows::Foundation::IInspectable& sender,
const winrt::Windows::UI::Xaml::RoutedEventArgs& args);
void _OnSettingsFormScrollerSizeChanged(const winrt::Windows::Foundation::IInspectable& sender,
const winrt::Windows::UI::Xaml::SizeChangedEventArgs& args);

// No-op kept for IDL compatibility.
void ResetDragOffset();
Expand Down Expand Up @@ -119,10 +115,16 @@ namespace winrt::TerminalApp::implementation
// editing, and parks focus on the help link.
void _FinalizeProblemDisplay(const std::wstring& url);

// Apply the detection→suggestion master-detail dependency: detection
// off turns the suggestion toggle off and disables it; detection on
// re-enables it (preserving the stored value).
void _UpdateSuggestionEnabledState();
enum class ErrorDetectionMode : int32_t
{
Detect = 0,
DetectAndFix = 1,
Off = 2,
};

ErrorDetectionMode _CurrentErrorDetectionMode();
void _SetErrorDetectionMode(ErrorDetectionMode mode);
void _UpdateSettingsFormWidth();

// (Re)build the agent dropdown from the GPO-filtered registry, labeling
// each entry with its live install state. Safe to call repeatedly (e.g.
Expand Down
282 changes: 73 additions & 209 deletions src/cascadia/TerminalApp/FreOverlay.xaml

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/af-ZA/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/am-ET/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/ar-SA/Resources.resw

Large diffs are not rendered by default.

77 changes: 41 additions & 36 deletions src/cascadia/TerminalApp/Resources/as-IN/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/az-Latn-AZ/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/bg-BG/Resources.resw

Large diffs are not rendered by default.

77 changes: 41 additions & 36 deletions src/cascadia/TerminalApp/Resources/bn-IN/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/bs-Latn-BA/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/ca-ES/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/ca-Es-VALENCIA/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/cs-CZ/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/cy-GB/Resources.resw

Large diffs are not rendered by default.

96 changes: 50 additions & 46 deletions src/cascadia/TerminalApp/Resources/da-DK/Resources.resw

Large diffs are not rendered by default.

92 changes: 49 additions & 43 deletions src/cascadia/TerminalApp/Resources/de-DE/Resources.resw

Large diffs are not rendered by default.

91 changes: 48 additions & 43 deletions src/cascadia/TerminalApp/Resources/el-GR/Resources.resw

Large diffs are not rendered by default.

98 changes: 54 additions & 44 deletions src/cascadia/TerminalApp/Resources/en-GB/Resources.resw

Large diffs are not rendered by default.

82 changes: 38 additions & 44 deletions src/cascadia/TerminalApp/Resources/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -1076,7 +1076,7 @@ In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), n
</data>
<data name="FreOverlay_PolicyLocked" xml:space="preserve">
<value>This setting is managed by your organization.</value>
<comment>Text shown below a disabled toggle/dropdown in the first-run experience when Group Policy controls the feature. Standard Windows policy notice wording.</comment>
<comment>Text shown below a first-run setting when Group Policy manages or restricts the feature. The associated control may be disabled or filtered to allowed choices. Standard Windows policy notice wording.</comment>
</data>
<!-- ═══ FRE Welcome Page ═══ -->
<data name="FreOverlay_WelcomeTitle.Text" xml:space="preserve">
Expand All @@ -1085,6 +1085,7 @@ In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), n
</data>
<data name="FreOverlay_WelcomeSubtitlePrefix" xml:space="preserve">
<value>Set up your built-in assistant to help you explain errors, draft commands, and unblock tasks right where you work. </value>
<comment>Text shown immediately before the FreOverlay_WelcomeSubtitleLink hyperlink. Include any spacing needed to separate the prefix from the link in the target language.</comment>
</data>
<data name="FreOverlay_WelcomeSubtitleLink" xml:space="preserve">
<value>Learn more about Intelligent Terminal</value>
Expand All @@ -1110,11 +1111,11 @@ In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), n
</data>
<!-- ═══ FRE Settings Page ═══ -->
<data name="FreOverlay_SettingsTitle.Text" xml:space="preserve">
<value>Set up your terminal agent</value>
<comment>{Locked="Copilot","Claude","Gemini"} In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
<value>Set up your terminal</value>
</data>
<data name="FreOverlay_SettingsSubtitlePrefix" xml:space="preserve">
<value>Choose what to set up now. You can change these anytime. </value>
<comment>Text shown immediately before the FreOverlay_SettingsSubtitleLink hyperlink. Include any spacing needed to separate the prefix from the link in the target language.</comment>
</data>
<data name="FreOverlay_SettingsSubtitleLink" xml:space="preserve">
<value>Learn about how data is used</value>
Expand All @@ -1125,67 +1126,59 @@ In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), n
</data>
<data name="FreOverlay_AgentDescription.Text" xml:space="preserve">
<value>Choose the agent used in the agent pane that supports ACP.</value>
<comment>{Locked="ACP"}
In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
</data>
<data name="FreOverlay_AgentInstallHint.Text" xml:space="preserve">
<value>This agent requires Node.js and NPX, which will be installed automatically if not already present.</value>
<comment>{Locked="Node.js","NPX"}
In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
<comment>{Locked="ACP"} Description for choosing an AI agent for the agent pane. The selected agent must support ACP. "ACP" is rendered as a hyperlink at runtime and must appear exactly once. In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
</data>
<data name="FreOverlay_AutoDetectLabel.Text" xml:space="preserve">
<value>Automatic error detection</value>
<comment>Header for the toggle that lets the terminal observe the shell and detect failed commands.</comment>
<data name="FreOverlay_ErrorDetectionLabel.Text" xml:space="preserve">
<value>Error detection</value>
<comment>Header for the dropdown that configures how the terminal handles failed commands.</comment>
</data>
<data name="FreOverlay_AutoDetectDescription.Text" xml:space="preserve">
<value>Give Intelligent Terminal permission to access your shell and automatically detect errors.</value>
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm} "Intelligent Terminal" is the product name. Description for the automatic-error-detection toggle in the first-run wizard.</comment>
<data name="FreOverlay_ErrorDetectionDescription.Text" xml:space="preserve">
<value>Have your agent automatically detect errors in the shell and send failed commands to your agent.</value>
<comment>Description for the error-detection dropdown in the first-run wizard. The dropdown includes detect-only, detect-and-fix, and off modes; the selected mode controls whether shell errors are detected and whether failed commands are automatically sent to the selected AI agent. In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
</data>
Comment thread
haonanttt marked this conversation as resolved.
<data name="FreOverlay_AutoDetectShellIntegrationHintPrefix" xml:space="preserve">
<value>Enabling this will install shell integration to detect command failures. </value>
<comment>Hint shown under the "Automatic error detection" toggle in the first-run wizard, explaining that turning the toggle on installs shell integration into the user's shell profile. The trailing space is intentional — it separates this prefix from the inline "Learn more" hyperlink that follows.</comment>
<data name="FreOverlay_ErrorDetectionDetectOption.Content" xml:space="preserve">
<value>Detect errors</value>
<comment>Dropdown option that detects shell errors without automatically sending failed commands to the selected AI agent.</comment>
</data>
<data name="FreOverlay_AutoDetectShellIntegrationHintLink" xml:space="preserve">
<value>Learn more</value>
<comment>Inline hyperlink text that follows FreOverlay_AutoDetectShellIntegrationHintPrefix, linking to the shell-integration documentation.</comment>
<data name="FreOverlay_ErrorDetectionAutoFixOption.Content" xml:space="preserve">
<value>Detect and fix errors</value>
<comment>Dropdown option that detects shell errors and automatically sends failed commands to the selected AI agent. In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
</data>
<data name="FreOverlay_AutoErrorLabel.Text" xml:space="preserve">
<value>Automatic error suggestion</value>
<comment>Header for the toggle that lets the agent automatically suggest fixes for detected errors. Depends on automatic error detection being on.</comment>
<data name="FreOverlay_ErrorDetectionOffOption.Content" xml:space="preserve">
<value>Off</value>
<comment>Dropdown option that disables automatic shell error detection.</comment>
</data>
<data name="FreOverlay_AutoErrorDescription.Text" xml:space="preserve">
<value>Give Intelligent Terminal permission to send errors to your agent to automatically suggest fixes.</value>
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm} "Intelligent Terminal" is the product name. Description for the automatic-error-suggestion toggle in the first-run wizard. In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human.</comment>
<data name="FreOverlay_ErrorDetectionAutoFixPolicyLocked" xml:space="preserve">
<value>The automatic fix option is managed by your organization.</value>
<comment>Text shown below the error-detection dropdown when Group Policy disables its automatic-fix option.</comment>
</data>
<data name="FreOverlay_SessionLabel.Text" xml:space="preserve">
<value>Session management</value>
<value>Sessions</value>
</data>
<data name="FreOverlay_SessionDescription.Text" xml:space="preserve">
<value>Give Intelligent Terminal permission to track the status of your running or active agents.</value>
<comment>{Locked=qps-ploc,qps-ploca,qps-plocm} "Intelligent Terminal" is the product name. In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
</data>
<data name="FreOverlay_SessionHint.Text" xml:space="preserve">
<value>Enabling this will install integration hooks to track sessions across your agents.</value>
<comment>{Locked="hooks"}</comment>
<value>Track which agents are running and which need your attention.</value>
<comment>In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
</data>
<data name="FreOverlay_ShowTokenUsageAndCostLabel.Text" xml:space="preserve"><value>Show context usage and session cost</value><comment>Header for a first-run toggle that shows available context-window usage and session cost in the terminal bottom bar. Session cost is reported for the active AI session. Keep 'session cost' generic and do not add a specific unit. Either value may be unavailable.</comment></data>
<data name="FreOverlay_ShowTokenUsageAndCostDescription.Text" xml:space="preserve"><value>When available, show context-window usage and session cost in the terminal bottom bar.</value><comment>Description for the usage visibility toggle in the first-run wizard. Session cost is reported for the active AI session. Keep 'session cost' generic and do not add a specific unit. Either value may be unavailable.</comment></data>
<data name="FreOverlay_ShowTokenUsageAndCostLabel.Text" xml:space="preserve"><value>Token usage</value><comment>Header for a first-run toggle that shows remaining context and session cost in the terminal bottom bar.</comment></data>
<data name="FreOverlay_ShowTokenUsageAndCostDescription.Text" xml:space="preserve"><value>Show remaining context and session cost when available.</value><comment>Description for the token-usage visibility toggle in the first-run wizard. Either value may be unavailable.</comment></data>
<data name="FreOverlay_PanePositionLabel.Text" xml:space="preserve">
<value>Pane position</value>
<value>Agent position</value>
</data>
<data name="FreOverlay_PanePositionDescription.Text" xml:space="preserve">
<value>Where the agent pane opens relative to your terminal.</value>
<comment>In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
<value>Where your agent lives.</value>
<comment>Description for choosing where the AI agent pane appears within the terminal window. In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), not a human agent or representative.</comment>
</data>
<data name="FreOverlay_SaveButton.Content" xml:space="preserve">
<value>Save</value>
<value>Get Started</value>
</data>
<!-- ═══ FRE Dynamic strings (used from C++ code-behind) ═══ -->
<data name="FreOverlay_AgentStatusWillInstall" xml:space="preserve">
<value> (will be installed)</value>
<comment>Status suffix appended directly to an AI agent display name when setup will install that agent. Include any spacing and punctuation needed to separate the suffix from the agent name.</comment>
</data>
<data name="FreOverlay_AgentStatusInstalled" xml:space="preserve">
<value> (installed)</value>
<comment>Status suffix appended directly to an AI agent display name when that agent is already installed. Include any spacing and punctuation needed to separate the suffix from the agent name.</comment>
</data>
<data name="FreOverlay_PanePositionBottom" xml:space="preserve">
<value>Bottom</value>
Expand Down Expand Up @@ -1220,7 +1213,7 @@ In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), n
</data>
<data name="FreOverlay_InstallError_BlockedByPolicy" xml:space="preserve">
<value>Installation of {0} was blocked by a Windows Package Manager policy. If you're on a managed device, contact your IT admin.</value>
<comment>FRE setup error. {0} is the package display name. Shown when winget returned BlockedByPolicy (group policy disabled the operation).</comment>
<comment>FRE setup error. {0} is the package display name. Shown when winget reports BlockedByPolicy or an equivalent policy-related HRESULT.</comment>
</data>
<data name="FreOverlay_InstallError_PackageNotFound" xml:space="preserve">
<value>{0} wasn't found in the Windows Package Manager catalog. Try refreshing winget sources, or install {0} manually.</value>
Expand Down Expand Up @@ -1248,14 +1241,15 @@ In this context, "agent" refers to an AI agent (e.g. Copilot, Claude, Gemini), n
</data>
<data name="FreOverlay_InstallErrorHooks" xml:space="preserve">
<value>Failed to install session hooks. Session management has been turned off. You can re-enable it and try again, or save to continue without it.</value>
<comment>{Locked="hooks"}</comment>
<comment>{Locked="hooks"} FRE setup error shown when session hooks cannot be installed. Session management is turned off so setup can continue, and the user may re-enable it to retry.</comment>
</data>
<data name="FreOverlay_InstallErrorShellIntegration" xml:space="preserve">
<value>Failed to install shell integration. Error detection has been turned off. You can re-enable it and try again, or save to continue without it.</value>
<comment>FRE setup error shown when shell integration cannot be installed. Error detection is turned off so setup can continue, and the user may re-enable it to retry.</comment>
</data>
<data name="FreOverlay_InstallErrorShellIntegrationExecutionPolicy" xml:space="preserve">
<value>PowerShell execution policy is blocking scripts. Error detection turned off.</value>
<comment>{Locked="PowerShell"}</comment>
<comment>{Locked="PowerShell"} FRE setup error shown when PowerShell execution policy prevents shell-integration scripts from running. Error detection is turned off so setup can continue.</comment>
</data>
<data name="FreOverlay_ErrorHelpLink" xml:space="preserve">
<value>Learn how to fix this manually</value>
Expand Down
Loading
Loading