microsoft / microsoft/terminal

Process Model v3 / Tab tear-out ship list

Open
#14,957 17 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area-Remoting Area-Settings Area-TerminalControl Area-UserInterface Area-Windowing Issue-Task Product-Terminal
Dominant language
C++
Stars
105k
Forks
9.6k
Avg merge
3d 17h
Merged PRs (30d)
29

Description

Moving this to separate from #14900. I want that to SPECIFICALLY track tag dragging UX issues (which could apply to us or maybe anyone else using TabView).

For general tab tear-out &U drag drop UX issues, see: ---> #14900 <---

This is a list of things we need to fix to get #5000 / #1256 out the door.

Original PRs:

  • #14825
  • #14843
  • #14851
  • #14866
  • #14901
  • #14935

PR Blockers

We shouldn't even merge these to main like this

### PR bugs
- [x] I went into settings to turn on the tray icon, and it crashed when I hit Save. (fixed in 35c7474ab)
- [x] Another curious A/V crash when hot-reloading, with a null Dispatcher? (fixed in 6e4b2e104)
- [x] (ainulindale) Windows don't get activated when they're first created (fixed in 704220f7e)
- [x] (ainu) defterm is ALL SORTS of fucked (fixed in a1a86eb6c)
- [x] (party) tear-out of a single window (with no other running windows) closes the Terminal
- [x] (party) Tear-out a window upscales it on high DPI (805b880da)
- [x] (?) `wt -w _quake` is broken?

Ship blockers

We can merge these, but iterate in post

### Follow-ups
- [x] Opening settings in two windows at the same time causes a crash (This is upstream MUX#7283)
- [x] I launched an elevated profile, then closed it, and admin terminal stuck around in the tray
- [x] centerOnLaunch:true overrides the tear-out position (fixed in b107f7d20)
- [x] Tearing out of a maximized window shouldn't stay maximized (805b880da)
- [x] `_windowExitedHandler()` would have to be called inside the try clause as a `wil::scope_exit`
- [x] (ainulindale) remove isolated monarch `features.xml`
- [x] Setting terminal as defterm, via the Settings app, while the Terminal is running, opens the previously set terminal (stable), not the Preview one - **we think this was just a bad sefterm build, but need to retry to confirm**
- [x] If you tear out of a single window with session restore turned on, and two windows in `state.json`, then when recreating the window, we'll restore the other window from state (and possibly explode 💥)
- [x] (silmarillion) attaching a tab to an existing window throws a rendered warning?? -2005270527 - **we haven't seen this in a long time**
- [x] (silmarillion) moving a tab to a larger window doesn't resize the control - **THIS WAS AN ATLAS BUG**
- [ ] https://github.com/microsoft/terminal/issues/15156
- [x] https://github.com/microsoft/terminal/issues/15144
- [x] https://github.com/microsoft/terminal/issues/15121
- [x] https://github.com/microsoft/terminal/issues/6507
- [x] That one internal thread about hidden windows, see https://github.com/microsoft/terminal/commit/2c16e7c07b496e2bfbd399d2534d7d3a0ebb1db5#r109802295
- [ ] #15209
- [x] MSFT:43995981
- [x] (move pane to new window) The window should not be allowed to be named "new". This is in monarch somewhere.
- [x] (move pane to new window)  We should not do anything if the target is the source window

_windowExitedHandler() would have to be called inside the try clause as a wil::scope_exit

see discussion in https://github.com/microsoft/terminal/pull/14843#discussion_r1140486873

Let's just do it in post

### In post
- [x] Evaluate moving the `_ProcessLazySettingsChanges` block in `AppLogic::Create` to after the page is initialized
- [ ] `openSettings` should take a `page` param to open to a specific page.
- [ ] `moveTab`/`Pane` should accept `next` and `previous` to move tabs to the next/previous window. Inspired by #15156
- [ ] Dropping a tab from 100% to High DPI creates the window at a position that's about 1 scaling factor offset from where it should
- [ ] Investigate using a helper struct for passing panes, tabs, content between windows, instead of serializing to JSON. Might need to be stored in ContentManager until the new window can open the content.
- [ ] If we tear out the only tab in a window, to a new window, can we just... move the window there? ;D
- [ ] Tell users why they can't drop a tab; perhaps with a message? Are we allowed to include arbitrary "YOU CANNOT DROP BECAUSE" text?
- [ ] `--isolated` as a cmdline arg
- [ ] `--isolated` shouldn't globalhotkeys, tray icon, defterm, _quake
- [ ] #15271
- [ ] Can we just cover the entire tabview with the drag rect when there's only one tab?
- [ ] https://github.com/microsoft/terminal/issues/15895
- [ ] https://github.com/microsoft/terminal/issues/15763

Did we fix it?

Things we may have accidentally fixed on the way?

### Fixed?
* [ ] #14012

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This issue is a historical ship list for Process Model v3 and tab tear-out, with many completed and remaining follow-ups. Start by reading one of the unchecked linked issues, such as #15156 or #15209, rather than treating this checklist as a single task. Done means resolving a specific follow-up and updating its linked issue or checklist item.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli, desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.