Repository: terminal
Issue: Epic: Settings UI v2
Labels: Product-Terminal,Issue-Scenario,Area-SettingsUI

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...
- we _can_ iterate on these designs. For example, "launch position" would be cool if we had a control that let you place the window in a specific position, but that's a bit costly to commit to at the moment. We should prioritize having a (good) experience over having "the best" experience.
- settings that interact with each other can be exposed differently from the JSON.
- some settings don't make sense to be in the SUI (i.e. unstable or better experience without cluttering SUI). That's fine, let's just have a discussion about it to track it


### Startup page
   - [x] launch position (#9075)
     - [ ] #14156
     - [x] #17210
   - [x] center on launch (#9075)
   - [ ] startup actions (#8802)
### Interaction page
   - [x] `minimizeToNotificationArea`
   - [x] `alwaysShowNotificationIcon`
   - [x] `focusFollowMouse`
   - [x] #14413
### Appearance page
   - [ ] `experimental.useBackgroundImageForWindow`
### Appearance > Themes page
   - [ ] _What do we even want from this page??_
### Extensions page
   - [ ] Make the page at all
   - [ ] disable dynamic profiles
   - [ ] List fragments, profiles from fragments?
### Compatibility page
- [ ] Make the page at all (PR #17895)
   - [ ] `experimental.input.forceVT`
   - [ ] `experimental.rendering` settings
   - [ ] `experimental.useBackgroundImageForWindow`
### Profile settings
   - [x] font features
   - [x] font axes
   - [ ] padding (support for #,# or #,#,#,#) (PR #17909)
   - [x] `adjustIndistinguishableColors`
   - [ ] `experimental.pixelShaderPath`
   - [ ] `bellSound` (supports one or multiple sound file paths)
   - [ ] `experimental.connection.passthroughMode`
   - [ ] `experimental.showMarksInScrollbar`
   - [ ] `experimental.autoMarkPrompts`
   - [ ] The `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 this
   - [ ] nullable colors (PR #17870)
      - [ ] selection background (design: nullable color)
      - [ ] foreground color (design: nullable color)
      - [ ] background color (design: nullable color)
      - [ ] tab color (design: nullable color)
      - [ ] cursor color (design: nullable color)

### Warnings
- Add warnings to the SUI (PR #17933)
      - [ ] `largePasteWarning`
      - [ ] `multiLinePasteWarning`
      - [ ] `confirmCloseAllTabs` (see also #14413)
- [ ] idea: add a checkbox to the warnings saying "don't show this again"
   - flow should probably update warning setting and add it to the state to block it from popping up again. Problem is that when we change the settings, it triggers a setting reload which could interrupt flow.

### Actions
   - [ ] needs UI update to match Win 11 styling (#12388)
   - [ ] #6900 (read:action arg support)
   - [ ] #11630
   - [ ] #11341
### Profile reordering / Dropdown Menu
   - [ ] #8914
   - this should just be its own page. We can upgrade it to encompass new tab dropdown customization when that is supported.
   - See also #1571
   - deprecate `hidden`
### Command palette
   - (is this different from the actions page? probably not, yea?)
   - [ ] rename a command
   - [ ] add an icon to the command
   - [ ] nested commands
   - [ ] iterable commands

## Features
These are SUI features that just make sense to have. They're experiences that are kind of expected in any SUI.
- [ ] auto-save
   - we probably just want to close #12424?
- [ ] Search
- [ ] Home page (#9120)
- Warnings
   - [ ] add a button to "reset all warnings"
- Import JSON to...
	- [ ] replace cascadia settings entirely
	- [ ] add new profile
	- [ ] add new color scheme
		- [ ] import from iTerm2 scheme
    - [ ] Import "theme & appearance", and possibly apply appearance to profile(s)
- #947 

## Tasks
- Remove experimental from...
   - [ ] `experimental.detectUrls`
   - [ ] `experimental.retroTerminalEffects`
   - [ ] `experimental.pixelShaderPath`
   - [ ] `experimental.showMarksInScrollbar`
   - [ ] `experimental.autoMarkPrompts`
- code health
   - [ ] Deduplicate Browse button logic
   - [x] #8452 
   - [ ] Remove visibility hacks (i.e. acrylic opacity slider), and use ProfileViewModel instead

Follow-ups from actions page...
- [ ] "the unbound bug"
   - Edit `switchToTab` to `win+shift+q`. Save. Edit `switchToTab` to `ctrl+shift+t`.
   - `"unbound": "win+shift+q"` appears but doesn't need to exist.
- [ ] `Actions::_GetContainerIndexByKeyChord` optimization
   - We're just doing a O(n) search for a matching key chord, but we could technically do this much faster.
   - The list is already sorted by command name, so if we...
      1. use `GetActionByKeyChord()` to get the `Command`
      2. perform a binary search on the list using `Command::Name()` (assuming it has a name)
   - we should be able to accomplish this search in O(log n) time (usually)'
- **Performance**
   - [ ] Clicking Actions in the left bar of Settings takes about 3 seconds to load and doesn't cache/keep it 
- [ ] #11341