[PR #10184] Switch Connections to use ValueSets to initialize them #27952

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

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

State: closed
Merged: Yes


⚠️ targets #10051

Summary of the Pull Request

This PR does one big, primary thing. It removes all the constructors from any TerminalConnections, and changes them to use an Initialize method that accepts a ValueSet of properties.

Why?

For the upcoming window/content process work, we'll need the content process to be able to initialize the connection in the content process. However, the window process will be the one that knows what type of connection to make. Enter ConnectionInformation. This class will let us specify the class name of the type we want to create, and a set of settings to use when initializing that connection.

IMPORTANT: As a part of this, the constructor for a connection must have 0 arguments. RoActivateInstance lets you just conjure a WinRT type just by class name, but that class must have a 0 arg ctor. Hence the need for Initialize, to actually pass the settings.

We're using a ValueSet here because it's basically a json blob, with more steps. In the future, when extension authors want to have custom connections, we can always deserialize the json into a ValueSet, pass it to their connection's Initialize, and let then get what they need out of it.

References

PR Checklist

Detailed Description of the Pull Request / Additional comments

ConnectionInformation was included as a part of this PR, to demonstrate how this will eventually be used. ConnectionInformation is not currently used.

Validation Steps Performed

It still builds and runs.

**Original Pull Request:** https://github.com/microsoft/terminal/pull/10184 **State:** closed **Merged:** Yes --- #### ⚠️ targets #10051 ## Summary of the Pull Request This PR does one big, primary thing. It removes all the constructors from any TerminalConnections, and changes them to use an `Initialize` method that accepts a `ValueSet` of properties. Why? For the upcoming window/content process work, we'll need the content process to be able to initialize the connection _in the content process_. However, the window process will be the one that knows what type of connection to make. Enter `ConnectionInformation`. This class will let us specify the class name of the type we want to create, and a set of settings to use when initializing that connection. **IMPORTANT**: As a part of this, the constructor for a connection must have 0 arguments. `RoActivateInstance` lets you just conjure a WinRT type just by class name, but that class must have a 0 arg ctor. Hence the need for `Initialize`, to actually pass the settings. We're using a `ValueSet` here because it's basically a json blob, with more steps. In the future, when extension authors want to have custom connections, we can always deserialize the json into a `ValueSet`, pass it to their connection's `Initialize`, and let then get what they need out of it. ## References * Tear-out: #1256 * Megathread: #5000 * Project: https://github.com/microsoft/terminal/projects/5 ## PR Checklist * [x] Closes https://github.com/microsoft/terminal/projects/5#card-50760298 * [x] I work here * [n/a] Tests added/passed * [n/a] Requires documentation to be updated ## Detailed Description of the Pull Request / Additional comments `ConnectionInformation` was included as a part of this PR, to demonstrate how this will eventually be used. `ConnectionInformation` is not _currently_ used. ## Validation Steps Performed It still builds and runs.
claunia added the pull-request label 2026-01-31 09:25:21 +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#27952