feat: move terminal settings, look and ssh tools into ssh-terminal plugin

This commit is contained in:
LukeGus committed 2026-09-29 02:38:37 -05:00
1 parent ffa872ebd3
commit d9bba10612
242 files changed
+25071 -7207

No files matched your search

+14 -72
View File
@@ -1,3 +1,4 @@
import type { HostSshOptions } from "@termix/plugin-sdk/frontend";
import type { Request } from "express";
import type { RefObject } from "react";
import type { HostAuthOverrides } from "./auth-protocols.js";
@@ -95,7 +96,8 @@ export type Host = {
statusCheckEnabled?: boolean;
/** Seconds between status checks; null follows the global setting. */
statusCheckInterval?: number | null;
terminalConfig?: Partial<TerminalConfig>;
terminalConfig?: HostTerminalConfig;
sshOptions?: HostSshOptions;
notes?: string;
useSocks5?: boolean;
@@ -219,7 +221,8 @@ export interface HostData {
statusCheckEnabled?: boolean;
/** Seconds between status checks; null follows the global setting. */
statusCheckInterval?: number | null;
terminalConfig?: Partial<TerminalConfig>;
terminalConfig?: HostTerminalConfig;
sshOptions?: HostSshOptions;
notes?: string;
useSocks5?: boolean;
@@ -353,78 +356,17 @@ export interface Tab {
// TERMINAL CONFIGURATION TYPES
// ============================================================================
export interface TerminalConfig {
localEcho?: "default" | "off" | "auto" | "on";
cursorBlink: boolean;
cursorStyle: "block" | "underline" | "bar";
fontSize: number;
fontFamily: string;
letterSpacing: number;
lineHeight: number;
theme: string;
scrollback: number;
bellStyle: "none" | "sound" | "visual" | "both";
rightClickSelectsWord: boolean;
macOptionIsMeta: boolean;
fastScrollModifier: "alt" | "ctrl" | "shift";
fastScrollSensitivity: number;
minimumContrastRatio: number;
backspaceMode: "normal" | "control-h";
agentForwarding: boolean;
environmentVariables: Array<{ key: string; value: string }>;
startupSnippetId: number | null;
autoMosh: boolean;
moshCommand: string;
passwordPromptAutoFill?: boolean;
sudoPasswordAutoFill: boolean;
sudoPassword?: string | null;
keepaliveInterval?: number;
keepaliveCountMax?: number;
autoTmux: boolean;
syntaxHighlighting: boolean;
syntaxHighlightingOptions?: {
logLevels: boolean;
paths: boolean;
timestamps: boolean;
ipAddresses: boolean;
urls: boolean;
numbers: boolean;
};
backgroundImage?: string;
backgroundImageOpacity?: number;
allowLegacyAlgorithms?: boolean;
linkClickBehavior?: "confirm" | "direct";
useSSHTitle?: boolean;
agentSocketPath?: string;
agentIdentity?: string;
customThemeColors?: {
background: string;
foreground: string;
cursor?: string;
cursorAccent?: string;
selectionBackground?: string;
selectionForeground?: string;
black: string;
red: string;
green: string;
yellow: string;
blue: string;
magenta: string;
cyan: string;
white: string;
brightBlack: string;
brightRed: string;
brightGreen: string;
brightYellow: string;
brightBlue: string;
brightMagenta: string;
brightCyan: string;
brightWhite: string;
};
/**
* What core still keeps in ssh_data.terminal_config. The terminal's look and
* behavior are the ssh-terminal plugin's host settings, and the connection
* options have their own column (sshOptions).
*/
export interface HostTerminalConfig {
startupSnippetId?: number | null;
}
export type { HostSshOptions } from "@termix/plugin-sdk/frontend";
// ============================================================================
// TAB TYPES
// ============================================================================
-1
View File
@@ -135,7 +135,6 @@ const CORE_HIDEABLE_RAIL_VIEWS = [
"credentials",
"connections",
"quick-connect",
"ssh-tools",
"macros",
];
+8 -4
View File
@@ -1,4 +1,8 @@
import type { SSHAuthType, TerminalConfig } from "./index.js";
import type {
HostSshOptions,
HostTerminalConfig,
SSHAuthType,
} from "./index.js";
import type { HostAuthOverrides } from "./auth-protocols.js";
export type Host = {
@@ -44,7 +48,8 @@ export type Host = {
/** Stable identity across a desktop/server sync pair. */
syncId?: string | null;
terminalConfig?: Partial<TerminalConfig>;
terminalConfig?: HostTerminalConfig;
sshOptions?: HostSshOptions;
useSocks5?: boolean;
socks5Host?: string;
@@ -155,7 +160,6 @@ type KnownTabType =
| "admin-settings"
// Rail panels that can also open full-width in the main area.
| "macros"
| "ssh-tools"
| "split-screen";
/**
@@ -252,7 +256,7 @@ export type UiFontId =
| "caskaydia-cove";
/** A tools panel view: core's own, or a rail panel a plugin registered. */
export type ToolsTab = "ssh-tools" | "macros" | (string & {});
export type ToolsTab = "macros" | (string & {});
/** "row" lays children side by side, "column" stacks them. */
export type SplitDirection = "row" | "column";