Repository navigation
feat(connections): add custom icon support in tabs for extensions and SSH - #438
Merged
Merged
Conversation
Implement icon picker for connection forms, allowing users to select built-in OS icons or upload local images. Add Icon field type to declarative forms and extension manifests. Centralize icon resolution logic in core storage and universal plugins to ensure consistent display across connection lists, cards, and terminal tabs.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR makes custom connection icons actually show up in terminal tabs.
Custom icons already existed for SSH connections, but they were only displayed in the Connections tab and the Open Connection menu. When you actually connected to a host, the tab icon stayed at the default connection-kind icon.
For extension connections, there was previously no way at all to pick a custom icon — no
Iconfield existed. Now extensions can declare one, and the selected icon is displayed consistently.What changed
SSH tab icon now respects the chosen icon (
crates/terminal_view/...)TerminalWorkspace::icondelegates to the active pane so duplicate tabs and workspaces stay consistent.New
Iconfield type for extensions (crates/connection_form,crates/extension-runtime)Iconfield in their connection form viacontributes.connections[].form, rendered by a new icon picker in the declarative form: Auto, a grid of built-in OS icons, and a local image upload tile.{"icon": "<built-in id>"}or{"file": "<local absolute path>"}(mutually exclusive; Auto omits the key).defaultValue/options/secreton it.Centralized icon resolution (
crates/core/src/storage/connection_icon.rs,crates/universal-plugins/src/connection_icon.rs)Launched) tabs carry the icon too.Screenshot
How to Test
cargo run).Iconfield incontributes.connections[].form. Choose an icon (or leave Auto) and confirm the list, card, and tab show the user selection, otherwise the manifest-declared icon, otherwise the generic extension icon.Checklist
cargo runfor story tests related to the changes.