[PR #11471] [MERGED] Add restore recently closed panes #28595

Open
opened 2026-01-31 09:29:31 +00:00 by claunia · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/microsoft/terminal/pull/11471
Author: @Rosefield
Created: 10/9/2021
Status: Merged
Merged: 1/11/2022
Merged by: @undefined

Base: mainHead: feature/gh960-restore-last-pane-or-tab


📝 Commits (4)

  • 96b2b2f GH960 Add restore recently closed panes
  • a35ecd2 Merge remote-tracking branch 'origin/main' into feature/gh960-restore-last-pane-or-tab
  • 15bf2e6 Make cleanup consistent between tab/pane close
  • a55d56a Code review: use dynamic dispatch intead of statically checking tab type.

📊 Changes

13 files changed (+93 additions, -16 deletions)

View changed files

📝 doc/cascadia/profiles.schema.json (+1 -0)
📝 src/cascadia/TerminalApp/AppActionHandlers.cpp (+16 -0)
📝 src/cascadia/TerminalApp/SettingsTab.cpp (+16 -0)
📝 src/cascadia/TerminalApp/SettingsTab.h (+2 -0)
📝 src/cascadia/TerminalApp/TabBase.h (+1 -0)
📝 src/cascadia/TerminalApp/TabManagement.cpp (+42 -0)
📝 src/cascadia/TerminalApp/TerminalPage.cpp (+3 -14)
📝 src/cascadia/TerminalApp/TerminalPage.h (+3 -0)
📝 src/cascadia/TerminalApp/TerminalTab.h (+1 -1)
📝 src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp (+2 -0)
📝 src/cascadia/TerminalSettingsModel/AllShortcutActions.h (+2 -1)
📝 src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw (+3 -0)
📝 src/cascadia/TerminalSettingsModel/defaults.json (+1 -0)

📄 Description

Summary of the Pull Request

Add an action to restore the last closed pane or tab. When all you have is restoring last sessions everything looks like a std::vector<ActionAndArgs>.

References

#9800

PR Checklist

  • Partially closes Windows Terminal hangs when printing certain emoji (#960)
  • CLA signed. If not, go over here and sign the CLA
  • Tests added/passed
  • Documentation updated. If checked, please file a pull request on our docs repo and link it here: #xxx
  • Schema updated.
  • I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Detailed Description of the Pull Request / Additional comments

  • Keep a buffer of panes/tabs that were closed recently in the form of a list
    of actions to remake it.
  • To restore the pane or tab just run the list of actions.
  • This (deliberately) does not restore the exact visual state as focus could
    have changed / new panes might have been created in the mean time. Mostly
    this means that restoring a pane will just attach to the currently focused
    pane instead of whatever its old neighbor was.
  • Buffer is limited to 100 entries which might as well be "infinite" by most reasonable
    standards, but prevents complaints about there being memory leaks in long running
    instances.
  • The action name could be potentially changed, but it felt unwieldy as "restoreLastClosedPaneOrTab".
  • This does not handle restoring the actual running contents of a pane.

Validation Steps Performed


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/microsoft/terminal/pull/11471 **Author:** [@Rosefield](https://github.com/Rosefield) **Created:** 10/9/2021 **Status:** ✅ Merged **Merged:** 1/11/2022 **Merged by:** [@undefined](undefined) **Base:** `main` ← **Head:** `feature/gh960-restore-last-pane-or-tab` --- ### 📝 Commits (4) - [`96b2b2f`](https://github.com/microsoft/terminal/commit/96b2b2f5b3564d033d20fc6f674608e298202371) GH960 Add restore recently closed panes - [`a35ecd2`](https://github.com/microsoft/terminal/commit/a35ecd2831ed4aac7ac708b7a57129da122e2eb0) Merge remote-tracking branch 'origin/main' into feature/gh960-restore-last-pane-or-tab - [`15bf2e6`](https://github.com/microsoft/terminal/commit/15bf2e6f640e660301919635b057c5b09dc4aea1) Make cleanup consistent between tab/pane close - [`a55d56a`](https://github.com/microsoft/terminal/commit/a55d56a1b113c56b9c4765c662246514206ebd39) Code review: use dynamic dispatch intead of statically checking tab type. ### 📊 Changes **13 files changed** (+93 additions, -16 deletions) <details> <summary>View changed files</summary> 📝 `doc/cascadia/profiles.schema.json` (+1 -0) 📝 `src/cascadia/TerminalApp/AppActionHandlers.cpp` (+16 -0) 📝 `src/cascadia/TerminalApp/SettingsTab.cpp` (+16 -0) 📝 `src/cascadia/TerminalApp/SettingsTab.h` (+2 -0) 📝 `src/cascadia/TerminalApp/TabBase.h` (+1 -0) 📝 `src/cascadia/TerminalApp/TabManagement.cpp` (+42 -0) 📝 `src/cascadia/TerminalApp/TerminalPage.cpp` (+3 -14) 📝 `src/cascadia/TerminalApp/TerminalPage.h` (+3 -0) 📝 `src/cascadia/TerminalApp/TerminalTab.h` (+1 -1) 📝 `src/cascadia/TerminalSettingsModel/ActionAndArgs.cpp` (+2 -0) 📝 `src/cascadia/TerminalSettingsModel/AllShortcutActions.h` (+2 -1) 📝 `src/cascadia/TerminalSettingsModel/Resources/en-US/Resources.resw` (+3 -0) 📝 `src/cascadia/TerminalSettingsModel/defaults.json` (+1 -0) </details> ### 📄 Description <!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request Add an action to restore the last closed pane or tab. When all you have is restoring last sessions everything looks like a `std::vector<ActionAndArgs>`. <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References #9800 <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [x] Partially closes #960 * [x] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [ ] 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 * [x] Schema updated. * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments - Keep a buffer of panes/tabs that were closed recently in the form of a list of actions to remake it. - To restore the pane or tab just run the list of actions. - This (deliberately) does not restore the exact visual state as focus could have changed / new panes might have been created in the mean time. Mostly this means that restoring a pane will just attach to the currently focused pane instead of whatever its old neighbor was. - Buffer is limited to 100 entries which might as well be "infinite" by most reasonable standards, but prevents complaints about there being memory leaks in long running instances. - The action name could be potentially changed, but it felt unwieldy as "restoreLastClosedPaneOrTab". - This does not handle restoring the actual running contents of a pane. <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
claunia added the pull-request label 2026-01-31 09:29:31 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#28595