Skip to content
Open
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e01ff4f
Introduce SearchMetadata and navigation by name
carlos-zamora Oct 14, 2025
1b8c99d
Load build time index for search
carlos-zamora Oct 15, 2025
915f085
load runtime index for search
carlos-zamora Oct 23, 2025
cac844b
minimum viable product
carlos-zamora Oct 28, 2025
e56eb74
improve indexing perf and include help text
carlos-zamora Oct 29, 2025
2a41f8a
improve index
carlos-zamora Nov 3, 2025
532343f
runtime object indexing
carlos-zamora Nov 4, 2025
e84e8d4
add language neutral search
carlos-zamora Nov 4, 2025
53ddd92
remove SearchMetadata (old attempt)
carlos-zamora Nov 4, 2025
1dafcef
FilteredSearchResult::CreateNoResultsItem and CreateRuntimeObjectItem
carlos-zamora Nov 5, 2025
2706d05
icons
carlos-zamora Nov 5, 2025
bf2e4e1
code format and spell check
carlos-zamora Nov 5, 2025
82536fd
bugfix: duplicate profile
carlos-zamora Nov 5, 2025
cff62cc
update selected item
carlos-zamora Nov 6, 2025
6fbf953
clear search box
carlos-zamora Nov 6, 2025
be2b1d3
fix color schemes; convert APPEND_RUNTIME_OBJECT_RESULTS to lambda
carlos-zamora Nov 7, 2025
14bab6c
more polish; more bugs found; I guess it's a stalemate
carlos-zamora Nov 7, 2025
8c99200
color schemes: fix BringIntoView
carlos-zamora Nov 12, 2025
83aa9fd
profiles: fix BringIntoView (partially)
carlos-zamora Nov 13, 2025
45d75e7
registerIndex macro -> lambda
carlos-zamora Nov 17, 2025
81f881a
Fix navigation for profile.appearance settings (global profile too)
carlos-zamora Nov 17, 2025
e5ea645
NavigateToXArgs --> NavigateToPageArgs
carlos-zamora Nov 18, 2025
a4c69cf
clean up some TODOs
carlos-zamora Nov 18, 2025
20bdc21
clean up more TODOs
carlos-zamora Nov 18, 2025
6d968b5
remove TODO CARLOS
carlos-zamora Nov 25, 2025
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
2 changes: 2 additions & 0 deletions .github/actions/spelling/allow/allow.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,9 @@ sustainability
sxn
Tencent
toolset
Uids
UEFI
UIDs
uiatextrange
und
vsdevcmd
Expand Down
5 changes: 4 additions & 1 deletion src/cascadia/TerminalSettingsEditor/Actions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation

void Actions::OnNavigatedTo(const NavigationEventArgs& e)
{
_ViewModel = e.Parameter().as<Editor::ActionsViewModel>();
const auto args = e.Parameter().as<Editor::NavigateToActionsArgs>();
_ViewModel = args.ViewModel();

BringIntoViewWhenLoaded(args.ElementToFocus());

// Subscribe to the view model's FocusContainer event.
// Use the KeyBindingViewModel or index provided in the event to focus the corresponding container
Expand Down
15 changes: 15 additions & 0 deletions src/cascadia/TerminalSettingsEditor/Actions.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,27 @@
#pragma once

#include "Actions.g.h"
#include "NavigateToActionsArgs.g.h"
#include "ActionsViewModel.h"
#include "Utils.h"
#include "ViewModelHelpers.h"

namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
{
struct NavigateToActionsArgs : NavigateToActionsArgsT<NavigateToActionsArgs>
{
NavigateToActionsArgs(Editor::ActionsViewModel vm, hstring elementToFocus = {}) :
_ViewModel(vm),
_ElementToFocus(elementToFocus) {}

Editor::ActionsViewModel ViewModel() const noexcept { return _ViewModel; }
hstring ElementToFocus() const noexcept { return _ElementToFocus; }

private:
Editor::ActionsViewModel _ViewModel{ nullptr };
hstring _ElementToFocus{};
};

struct Actions : public HasScrollViewer<Actions>, ActionsT<Actions>
{
public:
Expand Down
6 changes: 6 additions & 0 deletions src/cascadia/TerminalSettingsEditor/Actions.idl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ import "ActionsViewModel.idl";

namespace Microsoft.Terminal.Settings.Editor
{
runtimeclass NavigateToActionsArgs
{
ActionsViewModel ViewModel { get; };
String ElementToFocus { get; };
}

[default_interface] runtimeclass Actions : Windows.UI.Xaml.Controls.Page
{
Actions();
Expand Down
1 change: 1 addition & 0 deletions src/cascadia/TerminalSettingsEditor/AddProfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
void AddProfile::OnNavigatedTo(const NavigationEventArgs& e)
{
_State = e.Parameter().as<Editor::AddProfilePageNavigationState>();
BringIntoViewWhenLoaded(_State.ElementToFocus());

TraceLoggingWrite(
g_hTerminalSettingsEditorProvider,
Expand Down
6 changes: 4 additions & 2 deletions src/cascadia/TerminalSettingsEditor/AddProfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
struct AddProfilePageNavigationState : AddProfilePageNavigationStateT<AddProfilePageNavigationState>
{
public:
AddProfilePageNavigationState(const Model::CascadiaSettings& settings) :
_Settings{ settings } {}
AddProfilePageNavigationState(const Model::CascadiaSettings& settings, const hstring& elementToFocus = {}) :
_Settings{ settings },
_ElementToFocus{ elementToFocus } {}

void RequestAddNew()
{
Expand All @@ -42,6 +43,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
til::event<AddNewArgs> AddNew;

WINRT_PROPERTY(Model::CascadiaSettings, Settings, nullptr);
WINRT_PROPERTY(hstring, ElementToFocus);
};

struct AddProfile : public HasScrollViewer<AddProfile>, AddProfileT<AddProfile>
Expand Down
2 changes: 2 additions & 0 deletions src/cascadia/TerminalSettingsEditor/AddProfile.idl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ namespace Microsoft.Terminal.Settings.Editor
runtimeclass AddProfilePageNavigationState
{
Microsoft.Terminal.Settings.Model.CascadiaSettings Settings;
String ElementToFocus { get; };

void RequestAddNew();
void RequestDuplicate(Guid profile);
event AddNewArgs AddNew;
Expand Down
3 changes: 2 additions & 1 deletion src/cascadia/TerminalSettingsEditor/AddProfile.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
</Button>
</Border>
<StackPanel Margin="{StaticResource StandardControlMargin}">
<local:SettingContainer x:Uid="AddProfile_Duplicate">
<local:SettingContainer x:Name="DuplicateProfile"
x:Uid="AddProfile_Duplicate">
<ComboBox x:Name="Profiles"
AutomationProperties.AccessibilityView="Content"
ItemsSource="{x:Bind State.Settings.AllProfiles, Mode=OneWay}"
Expand Down
57 changes: 38 additions & 19 deletions src/cascadia/TerminalSettingsEditor/Appearances.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@
Style="{StaticResource TextBlockSubHeaderStyle}" />
<!-- Color Scheme -->
<!-- This currently only display the Dark color scheme, even if the user has a pair of schemes set. -->
<local:SettingContainer x:Uid="Profile_ColorScheme"
<local:SettingContainer x:Name="ColorScheme"
x:Uid="Profile_ColorScheme"
ClearSettingValue="{x:Bind Appearance.ClearColorScheme}"
CurrentValueAccessibleName="{x:Bind Appearance.CurrentColorScheme.Name, Mode=OneWay}"
HasSettingValue="{x:Bind Appearance.HasDarkColorSchemeName, Mode=OneWay}"
Expand Down Expand Up @@ -280,17 +281,20 @@
IsChecked="{x:Bind ShowAllFonts, Mode=TwoWay}" />
</StackPanel>
</local:SettingContainer>
<local:SettingContainer x:Uid="Profile_MissingFontFaces"
<local:SettingContainer x:Name="MissingFontFaces"
x:Uid="Profile_MissingFontFaces"
HelpText="{x:Bind Appearance.MissingFontFaces, Mode=OneWay}"
Style="{StaticResource SettingContainerErrorStyle}"
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.MissingFontFaces), Mode=OneWay}" />
<local:SettingContainer x:Uid="Profile_ProportionalFontFaces"
<local:SettingContainer x:Name="ProportionalFontFaces"
x:Uid="Profile_ProportionalFontFaces"
HelpText="{x:Bind Appearance.ProportionalFontFaces, Mode=OneWay}"
Style="{StaticResource SettingContainerWarningStyle}"
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.ProportionalFontFaces), Mode=OneWay}" />

<!-- Font Size -->
<local:SettingContainer x:Uid="Profile_FontSize"
<local:SettingContainer x:Name="FontSize"
x:Uid="Profile_FontSize"
ClearSettingValue="{x:Bind Appearance.ClearFontSize}"
HasSettingValue="{x:Bind Appearance.HasFontSize, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.FontSizeOverrideSource, Mode=OneWay}"
Expand All @@ -306,7 +310,8 @@
</local:SettingContainer>

<!-- Line Height -->
<local:SettingContainer x:Uid="Profile_LineHeight"
<local:SettingContainer x:Name="LineHeight"
x:Uid="Profile_LineHeight"
ClearSettingValue="{x:Bind Appearance.ClearLineHeight}"
HasSettingValue="{x:Bind Appearance.HasLineHeight, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.LineHeightOverrideSource, Mode=OneWay}"
Expand All @@ -322,7 +327,8 @@
</local:SettingContainer>

<!-- Cell Width -->
<local:SettingContainer x:Uid="Profile_CellWidth"
<local:SettingContainer x:Name="CellWidth"
x:Uid="Profile_CellWidth"
ClearSettingValue="{x:Bind Appearance.ClearCellWidth}"
HasSettingValue="{x:Bind Appearance.HasCellWidth, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.CellWidthOverrideSource, Mode=OneWay}"
Expand All @@ -338,7 +344,8 @@
</local:SettingContainer>

<!-- Font Weight -->
<local:SettingContainer x:Uid="Profile_FontWeight"
<local:SettingContainer x:Name="FontWeight"
x:Uid="Profile_FontWeight"
ClearSettingValue="{x:Bind Appearance.ClearFontWeight}"
HasSettingValue="{x:Bind Appearance.HasFontWeight, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.FontWeightOverrideSource, Mode=OneWay}"
Expand Down Expand Up @@ -374,7 +381,8 @@
</Grid>
</StackPanel>
</local:SettingContainer>
<local:SettingContainer x:Uid="Profile_FontAxes"
<local:SettingContainer x:Name="FontAxes"
x:Uid="Profile_FontAxes"
ClearSettingValue="{x:Bind Appearance.ClearFontAxes}"
HasSettingValue="{x:Bind Appearance.HasFontAxes, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.FontAxesOverrideSource, Mode=OneWay}"
Expand All @@ -401,7 +409,8 @@
</muxc:DropDownButton>
</StackPanel>
</local:SettingContainer>
<local:SettingContainer x:Uid="Profile_FontFeatures"
<local:SettingContainer x:Name="FontFeatures"
x:Uid="Profile_FontFeatures"
ClearSettingValue="{x:Bind Appearance.ClearFontFeatures}"
HasSettingValue="{x:Bind Appearance.HasFontFeatures, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.FontFeaturesOverrideSource, Mode=OneWay}"
Expand Down Expand Up @@ -430,7 +439,8 @@
</local:SettingContainer>

<!-- Builtin Glyphs -->
<local:SettingContainer x:Uid="Profile_EnableBuiltinGlyphs"
<local:SettingContainer x:Name="EnableBuiltinGlyphs"
x:Uid="Profile_EnableBuiltinGlyphs"
ClearSettingValue="{x:Bind Appearance.ClearEnableBuiltinGlyphs}"
HasSettingValue="{x:Bind Appearance.HasEnableBuiltinGlyphs, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.EnableBuiltinGlyphsOverrideSource, Mode=OneWay}">
Expand All @@ -439,7 +449,8 @@
</local:SettingContainer>

<!-- Color Glyphs -->
<local:SettingContainer x:Uid="Profile_EnableColorGlyphs"
<local:SettingContainer x:Name="EnableColorGlyphs"
x:Uid="Profile_EnableColorGlyphs"
ClearSettingValue="{x:Bind Appearance.ClearEnableColorGlyphs}"
HasSettingValue="{x:Bind Appearance.HasEnableColorGlyphs, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.EnableColorGlyphsOverrideSource, Mode=OneWay}">
Expand All @@ -448,7 +459,8 @@
</local:SettingContainer>

<!-- Retro Terminal Effect -->
<local:SettingContainer x:Uid="Profile_RetroTerminalEffect"
<local:SettingContainer x:Name="RetroTerminalEffect"
x:Uid="Profile_RetroTerminalEffect"
ClearSettingValue="{x:Bind Appearance.ClearRetroTerminalEffect}"
HasSettingValue="{x:Bind Appearance.HasRetroTerminalEffect, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.RetroTerminalEffectOverrideSource, Mode=OneWay}">
Expand All @@ -457,7 +469,8 @@
</local:SettingContainer>

<!-- Adjust Indistinguishable Colors -->
<local:SettingContainer x:Uid="Profile_AdjustIndistinguishableColors"
<local:SettingContainer x:Name="AdjustIndistinguishableColors"
x:Uid="Profile_AdjustIndistinguishableColors"
ClearSettingValue="{x:Bind Appearance.ClearAdjustIndistinguishableColors}"
HasSettingValue="{x:Bind Appearance.HasAdjustIndistinguishableColors, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.AdjustIndistinguishableColorsOverrideSource, Mode=OneWay}">
Expand All @@ -475,7 +488,8 @@
Style="{StaticResource TextBlockSubHeaderStyle}" />

<!-- Cursor Shape -->
<local:SettingContainer x:Uid="Profile_CursorShape"
<local:SettingContainer x:Name="CursorShape"
x:Uid="Profile_CursorShape"
ClearSettingValue="{x:Bind Appearance.ClearCursorShape}"
HasSettingValue="{x:Bind Appearance.HasCursorShape, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.CursorShapeOverrideSource, Mode=OneWay}">
Expand All @@ -487,7 +501,8 @@
</local:SettingContainer>

<!-- Cursor Height -->
<local:SettingContainer x:Uid="Profile_CursorHeight"
<local:SettingContainer x:Name="CursorHeight"
x:Uid="Profile_CursorHeight"
ClearSettingValue="{x:Bind Appearance.ClearCursorHeight}"
HasSettingValue="{x:Bind Appearance.HasCursorHeight, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.CursorHeightOverrideSource, Mode=OneWay}"
Expand Down Expand Up @@ -559,7 +574,8 @@
</local:SettingContainer>

<!-- Background Image Stretch Mode -->
<local:SettingContainer x:Uid="Profile_BackgroundImageStretchMode"
<local:SettingContainer x:Name="BackgroundImageStretchMode"
x:Uid="Profile_BackgroundImageStretchMode"
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageStretchMode}"
HasSettingValue="{x:Bind Appearance.HasBackgroundImageStretchMode, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.BackgroundImageStretchModeOverrideSource, Mode=OneWay}"
Expand All @@ -572,7 +588,8 @@
</local:SettingContainer>

<!-- Background Image Alignment -->
<local:SettingContainer x:Uid="Profile_BackgroundImageAlignment"
<local:SettingContainer x:Name="BackgroundImageAlignment"
x:Uid="Profile_BackgroundImageAlignment"
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageAlignment}"
CurrentValue="{x:Bind Appearance.BackgroundImageAlignmentCurrentValue, Mode=OneWay}"
HasSettingValue="{x:Bind Appearance.HasBackgroundImageAlignment, Mode=OneWay}"
Expand Down Expand Up @@ -760,7 +777,8 @@
</local:SettingContainer>

<!-- Background Image Opacity -->
<local:SettingContainer x:Uid="Profile_BackgroundImageOpacity"
<local:SettingContainer x:Name="BackgroundImageOpacity"
x:Uid="Profile_BackgroundImageOpacity"
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageOpacity}"
HasSettingValue="{x:Bind Appearance.HasBackgroundImageOpacity, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.BackgroundImageOpacityOverrideSource, Mode=OneWay}"
Expand All @@ -786,7 +804,8 @@
Style="{StaticResource TextBlockSubHeaderStyle}" />

<!-- Intense is bold, bright -->
<local:SettingContainer x:Uid="Appearance_IntenseTextStyle"
<local:SettingContainer x:Name="IntenseTextStyle"
x:Uid="Appearance_IntenseTextStyle"
ClearSettingValue="{x:Bind Appearance.ClearIntenseTextStyle}"
HasSettingValue="{x:Bind Appearance.HasIntenseTextStyle, Mode=OneWay}"
SettingOverrideSource="{x:Bind Appearance.IntenseTextStyleOverrideSource, Mode=OneWay}">
Expand Down
5 changes: 4 additions & 1 deletion src/cascadia/TerminalSettingsEditor/ColorSchemes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,12 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation

void ColorSchemes::OnNavigatedTo(const NavigationEventArgs& e)
{
_ViewModel = e.Parameter().as<Editor::ColorSchemesPageViewModel>();
const auto args = e.Parameter().as<Editor::NavigateToColorSchemesArgs>();
_ViewModel = args.ViewModel();
_ViewModel.CurrentPage(ColorSchemesSubPage::Base);

BringIntoViewWhenLoaded(args.ElementToFocus());

_layoutUpdatedRevoker = LayoutUpdated(winrt::auto_revoke, [this](auto /*s*/, auto /*e*/) {
// Only let this succeed once.
_layoutUpdatedRevoker.revoke();
Expand Down
15 changes: 15 additions & 0 deletions src/cascadia/TerminalSettingsEditor/ColorSchemes.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,27 @@

#include "ColorTableEntry.g.h"
#include "ColorSchemes.g.h"
#include "NavigateToColorSchemesArgs.g.h"
#include "ColorSchemeViewModel.h"
#include "ColorSchemesPageViewModel.h"
#include "Utils.h"

namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
{
struct NavigateToColorSchemesArgs : NavigateToColorSchemesArgsT<NavigateToColorSchemesArgs>
{
NavigateToColorSchemesArgs(const Editor::ColorSchemesPageViewModel& vm, const hstring& elementToFocus = {}) :
_ViewModel(vm),
_ElementToFocus(elementToFocus) {}

Editor::ColorSchemesPageViewModel ViewModel() const noexcept { return _ViewModel; }
hstring ElementToFocus() const noexcept { return _ElementToFocus; }

private:
Editor::ColorSchemesPageViewModel _ViewModel{ nullptr };
hstring _ElementToFocus{};
};

struct ColorSchemes : public HasScrollViewer<ColorSchemes>, ColorSchemesT<ColorSchemes>
{
public:
Expand Down
6 changes: 6 additions & 0 deletions src/cascadia/TerminalSettingsEditor/ColorSchemes.idl
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ import "ColorSchemesPageViewModel.idl";

namespace Microsoft.Terminal.Settings.Editor
{
runtimeclass NavigateToColorSchemesArgs
{
ColorSchemesPageViewModel ViewModel { get; };
String ElementToFocus { get; };
}

[default_interface] runtimeclass ColorSchemes : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged
{
ColorSchemes();
Expand Down
4 changes: 3 additions & 1 deletion src/cascadia/TerminalSettingsEditor/Compatibility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation

void Compatibility::OnNavigatedTo(const NavigationEventArgs& e)
{
_ViewModel = e.Parameter().as<Editor::CompatibilityViewModel>();
const auto args = e.Parameter().as<Editor::NavigateToCompatibilityArgs>();
_ViewModel = args.ViewModel();
BringIntoViewWhenLoaded(args.ElementToFocus());

TraceLoggingWrite(
g_hTerminalSettingsEditorProvider,
Expand Down
15 changes: 15 additions & 0 deletions src/cascadia/TerminalSettingsEditor/Compatibility.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,27 @@
#pragma once

#include "Compatibility.g.h"
#include "NavigateToCompatibilityArgs.g.h"
#include "CompatibilityViewModel.g.h"
#include "ViewModelHelpers.h"
#include "Utils.h"

namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
{
struct NavigateToCompatibilityArgs : NavigateToCompatibilityArgsT<NavigateToCompatibilityArgs>
{
NavigateToCompatibilityArgs(const Editor::CompatibilityViewModel& vm, const hstring& elementToFocus = {}) :
_ViewModel(vm),
_ElementToFocus(elementToFocus) {}

Editor::CompatibilityViewModel ViewModel() const noexcept { return _ViewModel; }
hstring ElementToFocus() const noexcept { return _ElementToFocus; }

private:
Editor::CompatibilityViewModel _ViewModel{ nullptr };
hstring _ElementToFocus{};
};

struct CompatibilityViewModel : CompatibilityViewModelT<CompatibilityViewModel>, ViewModelHelper<CompatibilityViewModel>
{
public:
Expand Down
Loading
Loading