feat: move the terminal fully into the ssh-terminal plugin (B9)

This commit is contained in:
LukeGus committed 2026-09-23 21:41:22 -05:00
1 parent 535126fd1b
commit 79d77678c9
309 files changed
+41789 -14958

No files matched your search

+1 -2
View File
@@ -8,8 +8,7 @@
* needs from a plugin comes through the registries instead.
*
* A few literals are data rather than knowledge of a plugin: host protocol
* names that are columns on the host until Phase B moves them, and the
* terminal's own websocket, which lives in core until the terminal moves.
* names that are columns on the host until Phase B moves them.
* Those are listed with a reason in scripts/shell-plugin-id-allowlist.json,
* which fails too when an entry stops being needed, so it only shrinks.
*/
-6
View File
@@ -5,7 +5,6 @@
"plugins/ai/src/frontend/AiProviderSettings.tsx",
"plugins/ai/src/frontend/ProposalCard.tsx",
"plugins/ai/src/frontend/ai-api.ts",
"plugins/ai/src/frontend/index.tsx",
"plugins/ai/src/frontend/settings/AiUserSettings.tsx",
"plugins/ai/src/frontend/terminal/TerminalAiPanel.tsx",
"plugins/ai/src/frontend/terminal/TerminalProposalCard.tsx",
@@ -122,11 +121,7 @@
"plugins/remote-desktop/src/frontend/index.tsx",
"plugins/remote-desktop/src/frontend/quick-connect-guac-host.ts",
"plugins/remote-desktop/src/frontend/rdp-credential-prompt.ts",
"plugins/ssh-terminal/src/frontend/TerminalTabWithRegistry.tsx",
"plugins/ssh-terminal/src/frontend/index.tsx",
"plugins/ssh-terminal/src/frontend/session-registry.ts",
"plugins/tailscale/src/frontend/TailscaleCheckDialog.tsx",
"plugins/tailscale/src/frontend/TailscaleCheckOverlay.tsx",
"plugins/tailscale/src/frontend/TailscaleDevicesPanel.tsx",
"plugins/tailscale/src/frontend/TailscaleDevicesStatus.tsx",
"plugins/tailscale/src/frontend/TailscaleManagerShell.tsx",
@@ -202,7 +197,6 @@
"plugins/remote-desktop/src/backend/guacamole-server.ts",
"plugins/remote-desktop/src/backend/routes.ts",
"plugins/remote-desktop/src/backend/token-service.ts",
"plugins/ssh-terminal/src/backend/index.ts",
"plugins/tailscale/src/backend/host-metrics-manager.ts",
"plugins/tailscale/src/backend/routes.ts"
],
+7 -75
View File
@@ -1,10 +1,6 @@
{
"$comment": "Literals src/ui may still spell that name a plugin id or a plugin-owned view. Each is data or the core terminal, not knowledge of a plugin. Checked by scripts/check-shell-plugin-ids.cjs; D1 and Phase B empty it.",
"$comment": "Literals src/ui may still spell that name a plugin id or a plugin-owned view. Each is data, not knowledge of a plugin. Checked by scripts/check-shell-plugin-ids.cjs; D1 and Phase B empty it.",
"files": {
"src/ui/AppShell.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/api/collab-api.ts": {
"literals": ["rdp", "telnet", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
@@ -17,70 +13,14 @@
"literals": ["rdp", "telnet", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
},
"src/ui/contexts/ConnectionDefaultsContext.tsx": {
"literals": ["rdp", "terminal"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/features/collab/CollabRoomTab.tsx": {
"literals": ["rdp", "ssh-terminal", "telnet", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it. The core terminal opens its own websocket, served by the ssh-terminal plugin, until the terminal moves into it in Phase B."
},
"src/ui/features/homepage/widgets/QuickConnectWidget.tsx": {
"literals": ["files", "terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered. A default widget config value (connectionTypes), not a code branch on the plugin: quick connect offers terminal and files by default regardless of which plugins are enabled."
},
"src/ui/features/session-sharing/SharedSessionView.tsx": {
"literals": ["ssh-terminal"],
"reason": "The core terminal opens its own websocket, served by the ssh-terminal plugin, until the terminal moves into it in Phase B."
},
"src/ui/features/terminal/Terminal.tsx": {
"literals": ["ssh-terminal", "terminal"],
"reason": "The core terminal opens its own websocket, served by the ssh-terminal plugin, until the terminal moves into it in Phase B. The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/features/terminal/TerminalTabContent.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/features/terminal/TerminalToolbar.tsx": {
"literals": ["files", "terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered. The toolbar's \"open file manager here\" button needs the terminal's current working directory before opening the tab, so it special-cases the files host action instead of using the generic opener; folds into the terminal's own Phase B step."
},
"src/ui/features/tmux-monitor/TmuxMonitor.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
"literals": ["rdp", "telnet", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
},
"src/ui/lib/connection-origin.ts": {
"literals": ["rdp", "telnet", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
},
"src/ui/lib/host-connection-tabs.ts": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/onboarding/steps/WelcomeStep.tsx": {
"literals": ["files", "terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered. The fixed 3-item first-run welcome card (hosts, terminal, files) is core promotional copy, not an extensible list a plugin contributes to."
},
"src/ui/shell/TabBar.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/shell/TabContext.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/sidebar/ConnectionDefaultsSettings.tsx": {
"literals": ["rdp", "terminal"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/sidebar/ConnectionsPanel.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/sidebar/HostEditor.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/sidebar/HostEditorData.ts": {
"literals": ["docker", "rdp", "telnet", "vnc"],
"reason": "Host data: the enableDocker column filter and the container runtime name, until Phase B moves them. Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
@@ -89,25 +29,17 @@
"literals": ["rdp", "telnet", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
},
"src/ui/sidebar/HostManagerTabs.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
},
"src/ui/sidebar/HostsPanel.tsx": {
"literals": ["docker", "rdp", "telnet", "terminal", "vnc"],
"reason": "Host data: the enableDocker column filter and the container runtime name, until Phase B moves them. Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it. The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
"literals": ["docker", "rdp", "telnet", "vnc"],
"reason": "Host data: the enableDocker column filter and the container runtime name, until Phase B moves them. Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableTelnet, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
},
"src/ui/sidebar/QuickConnectPanel.tsx": {
"literals": ["files", "rdp", "terminal", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it. The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered. The quick-connect-for-an-unsaved-host flow offers a fixed terminal/files button pair, not an extensible list a plugin contributes to."
"literals": ["files", "rdp", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it. The quick-connect-for-an-unsaved-host flow offers a fixed Files button next to the default connect button, not an extensible list a plugin contributes to."
},
"src/ui/sidebar/quick-connect-host.ts": {
"literals": ["rdp", "vnc"],
"reason": "Host protocol value (connectionType, enableRdp, session protocol), a host column until Phase B moves it. Host protocol value (connectionType, enableVnc, session protocol), a host column until Phase B moves it."
},
"src/ui/sidebar/tree/HostItem/HostItem.tsx": {
"literals": ["terminal"],
"reason": "The terminal tab type. The terminal component, split view and file-manager hooks stay in core until the terminal's Phase B step; the ssh-terminal plugin only decides whether it is offered."
}
}
}