[PR #13763] New Tab Menu Customization #29760

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

Original Pull Request: https://github.com/microsoft/terminal/pull/13763

State: closed
Merged: Yes


Implements an initial version of #1571 as it has been specified, the
only big thing missing now is the possibility to add actions, which
depends on #6899.

Further upcoming spec tracked in #12584

Implemented according to instructions by @zadjii-msft. Mostly
relatively straightforward, but some notable details:

  • In accordance with the spec, the counting/indexing of profiles is
    based on their index in the json (so the index of the profile, not of
    the entry in the menu).
  • Resolving a profile name to an actual profile is done in a similar
    fashion as how currently the DefaultProfile field is populated: the
    CascadiaSettings constructor now has an extra _resolve function
    that will iterate over all entries and resolve the names to instances;
    this same function will compute all profile sets (the set of all
    profiles from source "x", and the set of all remaining profiles)
  • Fun fact: I spent two whole afternoons and evenings trying to add 2
    classes (which turned out to be a trivial .vcxproj error), and then
    managed to finish the entire rest of it in another afternoon and
    evening...

Validation Steps Performed

A lot of manual testing; as mentioned above I was not able to run any
tests so I could not add them for now. However, the logic is not too
tricky so it should be relatively safe.

Closes #1571

**Original Pull Request:** https://github.com/microsoft/terminal/pull/13763 **State:** closed **Merged:** Yes --- Implements an initial version of #1571 as it has been specified, the only big thing missing now is the possibility to add actions, which depends on #6899. Further upcoming spec tracked in #12584 Implemented according to [instructions by @zadjii-msft]. Mostly relatively straightforward, but some notable details: - In accordance with the spec, the counting/indexing of profiles is based on their index in the json (so the index of the profile, not of the entry in the menu). - Resolving a profile name to an actual profile is done in a similar fashion as how currently the `DefaultProfile` field is populated: the `CascadiaSettings` constructor now has an extra `_resolve` function that will iterate over all entries and resolve the names to instances; this same function will compute all profile sets (the set of all profiles from source "x", and the set of all remaining profiles) - ~Fun~ fact: I spent two whole afternoons and evenings trying to add 2 classes (which turned out to be a trivial `.vcxproj` error), and then managed to finish the entire rest of it in another afternoon and evening... ## Validation Steps Performed A lot of manual testing; as mentioned above I was not able to run any tests so I could not add them for now. However, the logic is not too tricky so it should be relatively safe. Closes #1571 [instructions by @zadjii-msft]: https://github.com/microsoft/terminal/issues/1571#issuecomment-1184851000
claunia added the pull-request label 2026-01-31 09:36:45 +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#29760