-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Epic: Settings UI v2 #10000
Labels
Area-SettingsUI
Anything specific to the SUI
Issue-Scenario
Product-Terminal
The new Windows Terminal.
Comments
carlos-zamora
added
Product-Terminal
The new Windows Terminal.
Issue-Scenario
Area-SettingsUI
Anything specific to the SUI
and removed
⛺ Reserved
For future use
labels
Jun 27, 2022
A few notes from sync today:
|
Other SUI epics: and vaguely: |
carlos-zamora
added
the
Needs-Discussion
Something that requires a team discussion before we can proceed
label
Jul 6, 2022
zadjii-msft
removed
the
Needs-Discussion
Something that requires a team discussion before we can proceed
label
Jul 11, 2022
7 tasks
As requested from Carlos. We should consider updating Color Scheme in the profile appearance settings UI to now be two dropdown selections, "Dark Color Scheme" and "Light Color Scheme", to align with the changes made in PR #14064 This allows users to be able to configure their profiles to change when the application or system theme changes. |
7 tasks
5 tasks
4 tasks
microsoft-github-policy-service bot
pushed a commit
that referenced
this issue
Feb 29, 2024
## Summary of the Pull Request Allow editing of font features and axes in the SUI to get the UI closer towards JSON parity The allowed font axes are obtained directly from the currently selected font, and their display names are presented to the user in the user's current locale (if it exists). Otherwise, we just display the axis tag to the user. ## References and Relevant Issues #10000 ## Validation Steps Performed - [x] Font Axes can be added/changed/removed from the Settings UI ![image](https://github.com/microsoft/terminal/assets/26824113/b1c3ed57-e329-4893-9f15-7b60154b5ea0) ![image](https://github.com/microsoft/terminal/assets/26824113/e1f1ea22-857d-4392-8a15-f81539fe9257) ## PR Checklist - [ ] Closes #xxx - [ ] Tests added/passed - [ ] Documentation updated - If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx - [ ] Schema updated (if necessary)
microsoft-github-policy-service bot
pushed a commit
that referenced
this issue
Feb 29, 2024
## Summary of the Pull Request **Targets #16104** Same as #16104, but for font features ## References and Relevant Issues #10000 ## Validation Steps Performed Font features are detected correctly and can be set in the settings UI ![image](https://github.com/microsoft/terminal/assets/26824113/054c30fa-c584-4b71-872d-d956526c373b) ![image](https://github.com/microsoft/terminal/assets/26824113/484a20eb-abe9-478c-99cf-f63939ab4c5b) ## PR Checklist - [ ] Closes #xxx - [ ] Tests added/passed - [ ] Documentation updated - If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx - [ ] Schema updated (if necessary)
DHowett
pushed a commit
that referenced
this issue
Aug 23, 2024
Adds functionality throughout the settings model to keep track of which settings have been set. There are two entry points: - AppLogic.cpp: this is where we perform a settings reload by loading the JSON - MainPage.cpp: this is where the Save button is clicked in the settings UI Both of these entry points call into `CascadiaSettings::LogSettingChanges()` where we aggregate the list of changes (specifically, _which_ settings changed, not _what_ their value is). Just about all of the settings model objects now have a `LogSettingChanges(std::set& changes, std::string_view context)` on them. - `changes` is where we aggregate all of the changes to. In it being a set, we don't need to worry about duplicates and can do things like iterate across all of the profiles. - `context` prepends a string to the setting. This'll allow us to better identify where a setting was changes (i.e. "global.X" are global settings). We also use this to distinguish between settings set in the ~base layer~ profile defaults vs individual profiles. The change log in each object is modified via two ways: - `LayerJson()` changes: this is useful for detecting JSON changes! All we're doing is checking if the setting has a value (due to inheritance, just about everything is an optional here!). If the value is set, we add the json key to the change log - `INHERITABLE_SETTING_WITH_LOGGING` in IInheritable.h: we already use this macro to define getters and setters. This new macro updates the setter to check if the value was set to something different. If so, log it! Other notes: - We're not distinguishing between `defaultAppearance` and `unfocusedAppearance` - We are distinguishing between `profileDefaults` and `profile` (any other profile) - New Tab Menu Customization: - we really just care about the entry types. Handled in `GlobalAppSettings` - Font: - We still have support for legacy values here. We still want to track them, but just use the modern keys. - `Theme`: - We don't do inheritance here, so we have to approach it differently. During the JSON load, we log each setting. However, we don't have `LayerJson`! So instead, do the work in `CascadiaSettings` and store the changes there. Note that we don't track any changes made via setters. This is fine for now since themes aren't even in the settings UI, so we wouldn't get much use out of it anyways. - Actions: - Actions are weird because we can have nested and iterable actions too, but `ActionsAndArgs` as a whole add a ton of functionality. I handled it over in `Command::LogSettingChanges` and we generally just serialize it to JSON to get the keys. It's a lot easier than dealing with the object model. Epic: #10000 Auto-Save (ish): #12424
This was referenced Sep 6, 2024
carlos-zamora
added a commit
that referenced
this issue
Sep 25, 2024
Adds the following settings to the Interaction page under a Warnings subsection: - ConfirmCloseAllTabs - InputServiceWarning - WarnAboutLargePaste - WarnAboutMultiLinePaste This also changes the JSON keys of those settings to be in the `warning` namespace as a QOL change for JSON users. We still handle the legacy keys, don't worry 😉. #10000
This was referenced Sep 26, 2024
DHowett
pushed a commit
that referenced
this issue
Oct 10, 2024
## Summary of the Pull Request Adds the following settings to the settings UI: - $profile.RainbowSuggestions - $profile.CellWidth - $global.SearchWebDefaultQueryUrl - $global.EnableColorSelection - $global.ShowAdminShield - $global.EnableUnfocusedAcrylic Additionally, the following settings have graduated from experimental 🎓: - $profile.rightClickContextMenu Part of #10000
DHowett
pushed a commit
that referenced
this issue
Oct 10, 2024
## Summary of the Pull Request Adds a global Compatibility page to the settings UI. This page exposes several existing settings and introduces a few new settings: - compatibility.allowHeadless - compatibility.isolatedMode - compatibility.textMeasurement - debugFeatures This also adds a Terminal subpage for profiles in the settings UI. This page includes: - suppressApplicationTitle - compatibility.input.forceVT - compatibility.allowDECRQCRA - answerbackMessage Several smaller changes were accomplished as a part of this PR: - `experimental.input.forceVT` was renamed to `compatibility.input.forceVT` - introduced the `compatibility.allowDECRQCRA` setting - updated the schema for these new settings and `compatibility.allowHeadless` (which was missing) - add `Feature_DebugModeUI` feature flag to control if debug features should be shown in the SUI Verified accessible via Accessibility Insights A part of #10000 Closes #16672
DHowett
pushed a commit
that referenced
this issue
Oct 22, 2024
## Summary of the Pull Request Improves the UI for the Profile.Icon setting by adding an "Icon Type" combo box. This allows the user to pick from multiple options: - None: sets the icon to "none" which is interpreted as no icon - Built-in Icon: presents a combo box that enumerates the Segoe MDL 2 assets - Emoji: presents a text box with a hint to open the emoji picker - File: presents a text box to input the path of the image to use Additionally, the rendered icon is displayed in the setting container. If "none", "none" is presented to the user (localized). ✅ Verified as accessible using Accessibility Insights #10000
carlos-zamora
added a commit
that referenced
this issue
Dec 12, 2024
## Summary of the Pull Request Adds some pre-existing settings ($profile.foreground, $profile.background, $profile.selectionBackground, $profile.cursorColor) to the settings UI. This was accomplished by introducing a new control: NullableColorPicker. This control allows the user to pick a color from the color scheme, set the color to null, and select a color from an advanced color picker. Improves the UI for the Profile.Icon setting by adding an "Icon Type" combo box. This allows the user to pick from multiple options: - None: sets the icon to "none" which is interpreted as no icon - Built-in Icon: presents a combo box that enumerates the Segoe MDL 2 assets - Emoji: presents a text box with a hint to open the emoji picker - File: presents a text box to input the path of the image to use Additionally, the rendered icon is displayed in the setting container. If "none", "none" is presented to the user (localized). ## References and Relevant Issues #10000 ## Detailed Description of the Pull Request / Additional comments - NullableColorPicker control - includes a built-in NullColorButton to set the current value to null - includes a "More colors..." button to display an advanced color picker - uses data templates on data templates (data templates squared?) to convert the current color scheme into a grid of color chips - color chips display a checkmark (similar to Windows settings personalization). This automatically updates its color to stay compliant with color contrast. - color chips are added to a list so we can (un)check them when a new color is selected - SettingsContainer changes - Forked `ExpanderSettingContainerStyle` to allow for a custom preview template. This way, we can display the current value in the expander and we're not just limited to text. - changed type of `CurrentValue` property from `String` to `IInspectable` - added `CurrentValueTemplate` property to control how to display the current value - Miscellaneous: - Added a few converters (`BooleanToVisibility`, `ColorToString`, `ColorToBrush`) - Added `NameWithHexCode` to `ColorTableEntry` to expose a color as `Red #RRGGBB` (used for tooltips and a11y) - Added `ForegroundPreview` (and equivalent for other colors) to AppearanceViewModel to deduce the color that will be used ## Validation Steps Performed - [X] a11y pass (NVDA, keyboard) - [X] set the color to one of the color chips - [X] set the color to null - [X] set the color to a value from the integrated color picker - [X] control updates properly when a new color scheme is selected - [X] control updates properly when a color scheme has multiple colors of the same value ## Follow-ups - [A11y] Screen readers don't read expander's preview text - Add Tab Color to settings UI - Update CursorColor preview to display #FFFFFF as "invert" - Use Leonard's font picker UI, with the Segoe icon picker, so that you can filter the list
carlos-zamora
added a commit
that referenced
this issue
Dec 12, 2024
## Summary of the Pull Request Adds the Profile.BellSound setting to the Settings UI under the Profile > Advanced page. - View changes: - The setting is exposed via an expander placed near the Profile.BellStyle setting. - Added a button to be able to preview the added sound - Added a browse button that opens a file picker - Added a delete button to be able to delete each sound entry - View model changes: - `CurrentBellSounds` keeps track of the bell sounds added and exposed via the UI. - `BellSoundViewModel` wraps each sound. This allows us to listen (and propagate) changes to the registered sounds. - `BellSoundPreview` provides a written preview of the current bell sound to display in the expander #10000
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Area-SettingsUI
Anything specific to the SUI
Issue-Scenario
Product-Terminal
The new Windows Terminal.
The goal of this issue is to track work on the settings UI to achieve (1) parity with the JSON experience and (2) experiences that are generally expected of a standard settings UI. Work items included here are not final, and can be removed/added at any time.
JSON Parity
All of these settings exist in the JSON, but not the SUI. For the most part, these require some kind of design to make it a good experience. A few notes I want to point out...
Startup page
Launch position
SUI controls not active unless X/Y values are entered first. #14156startupActions
to Settings UI #8802)Interaction page
minimizeToNotificationArea
alwaysShowNotificationIcon
focusFollowMouse
Appearance page
experimental.useBackgroundImageForWindow
Appearance > Themes page
Extensions page
Compatibility page
experimental.input.forceVT
experimental.rendering
settingsexperimental.useBackgroundImageForWindow
Profile settings
adjustIndistinguishableColors
experimental.pixelShaderPath
bellSound
(supports one or multiple sound file paths)experimental.connection.passthroughMode
experimental.showMarksInScrollbar
experimental.autoMarkPrompts
icon
setting should have a cool emoji picker OR file picker OR some preset icons OR whatever, you get it. Dustin has ~ t h o u g h t s ~ on thisWarnings
- [ ]
largePasteWarning
- [ ]
multiLinePasteWarning
- [ ]
confirmCloseAllTabs
(see also Add the setting "confirmCloseAllTabs" to the UI #14413)Actions
Profile reordering / Dropdown Menu
hidden
Command palette
Features
These are SUI features that just make sense to have. They're experiences that are kind of expected in any SUI.
Tasks
experimental.detectUrls
experimental.retroTerminalEffects
experimental.pixelShaderPath
experimental.showMarksInScrollbar
experimental.autoMarkPrompts
TabBase
#8452Follow-ups from actions page...
switchToTab
towin+shift+q
. Save. EditswitchToTab
toctrl+shift+t
."unbound": "win+shift+q"
appears but doesn't need to exist.Actions::_GetContainerIndexByKeyChord
optimizationGetActionByKeyChord()
to get theCommand
Command::Name()
(assuming it has a name)The text was updated successfully, but these errors were encountered: