mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 22:25:24 +00:00
feat: move snippets, keybinding actions and macros out of core into plugins
This commit is contained in:
1 parent
d9bba10612
commit
e0c30a4e6f
262 files changed
+9091
-10744
No files matched your search
+4
-18
@@ -61,11 +61,6 @@ export interface JumpHost {
|
||||
hostId: number;
|
||||
}
|
||||
|
||||
export interface QuickAction {
|
||||
name: string;
|
||||
snippetId: number;
|
||||
}
|
||||
|
||||
export type Host = {
|
||||
id: number;
|
||||
name: string;
|
||||
@@ -92,7 +87,6 @@ export type Host = {
|
||||
overrideCredentialUsername?: boolean;
|
||||
userId?: string;
|
||||
jumpHosts?: JumpHost[];
|
||||
quickActions?: QuickAction[];
|
||||
statusCheckEnabled?: boolean;
|
||||
/** Seconds between status checks; null follows the global setting. */
|
||||
statusCheckInterval?: number | null;
|
||||
@@ -176,11 +170,6 @@ export interface JumpHostData {
|
||||
hostId: number;
|
||||
}
|
||||
|
||||
export interface QuickActionData {
|
||||
name: string;
|
||||
snippetId: number;
|
||||
}
|
||||
|
||||
export interface ProxyNode {
|
||||
host: string;
|
||||
port: number;
|
||||
@@ -217,7 +206,6 @@ export interface HostData {
|
||||
overrideCredentialUsername?: boolean;
|
||||
forceKeyboardInteractive?: boolean;
|
||||
jumpHosts?: JumpHostData[];
|
||||
quickActions?: QuickActionData[];
|
||||
statusCheckEnabled?: boolean;
|
||||
/** Seconds between status checks; null follows the global setting. */
|
||||
statusCheckInterval?: number | null;
|
||||
@@ -357,13 +345,11 @@ export interface Tab {
|
||||
// ============================================================================
|
||||
|
||||
/**
|
||||
* 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).
|
||||
* What 2.8 kept in ssh_data.terminal_config. Core reads none of it any more:
|
||||
* the terminal's look and behavior and the startup command are plugins' host
|
||||
* settings, and the connection options have their own column (sshOptions).
|
||||
*/
|
||||
export interface HostTerminalConfig {
|
||||
startupSnippetId?: number | null;
|
||||
}
|
||||
export type HostTerminalConfig = Record<string, unknown>;
|
||||
|
||||
export type { HostSshOptions } from "@termix/plugin-sdk/frontend";
|
||||
|
||||
|
||||
@@ -7,23 +7,16 @@ export interface KeyCombo {
|
||||
meta: boolean;
|
||||
}
|
||||
|
||||
export type KeybindingActionType =
|
||||
| "copy"
|
||||
| "paste"
|
||||
| "sendControlCode"
|
||||
| "sendText"
|
||||
| "runSnippet"
|
||||
| "nextTab"
|
||||
| "previousTab"
|
||||
| "openCommandPalette"
|
||||
| "reconnectSession";
|
||||
/**
|
||||
* The shell's own actions (nextTab, previousTab, openCommandPalette,
|
||||
* reconnectSession) or one a plugin declared in contributes.keybindingActions.
|
||||
*/
|
||||
export type KeybindingActionType = string;
|
||||
|
||||
/** A bound action: its type plus the parameters its declaration lists. */
|
||||
export interface KeybindingAction {
|
||||
type: KeybindingActionType;
|
||||
text?: string;
|
||||
controlCode?: string;
|
||||
snippetId?: string;
|
||||
appendEnter?: boolean;
|
||||
[param: string]: unknown;
|
||||
}
|
||||
|
||||
export interface CustomKeybinding {
|
||||
|
||||
@@ -135,7 +135,6 @@ const CORE_HIDEABLE_RAIL_VIEWS = [
|
||||
"credentials",
|
||||
"connections",
|
||||
"quick-connect",
|
||||
"macros",
|
||||
];
|
||||
|
||||
const SIMPLE_HIDDEN_RAIL_TABS = CORE_HIDEABLE_RAIL_VIEWS.filter(
|
||||
|
||||
+2
-16
@@ -75,7 +75,6 @@ export type Host = {
|
||||
statusCheckEnabled?: boolean;
|
||||
/** Seconds between status checks; null follows the global setting. */
|
||||
statusCheckInterval?: number | null;
|
||||
quickActions: { name: string; snippetId: string }[];
|
||||
|
||||
enableSsh: boolean;
|
||||
|
||||
@@ -158,8 +157,6 @@ type KnownTabType =
|
||||
| "host-manager"
|
||||
| "user-profile"
|
||||
| "admin-settings"
|
||||
// Rail panels that can also open full-width in the main area.
|
||||
| "macros"
|
||||
| "split-screen";
|
||||
|
||||
/**
|
||||
@@ -255,8 +252,8 @@ export type UiFontId =
|
||||
| "source-code-pro"
|
||||
| "caskaydia-cove";
|
||||
|
||||
/** A tools panel view: core's own, or a rail panel a plugin registered. */
|
||||
export type ToolsTab = "macros" | (string & {});
|
||||
/** A tools panel view: a rail panel a plugin registered. */
|
||||
export type ToolsTab = string & {};
|
||||
|
||||
/** "row" lays children side by side, "column" stacks them. */
|
||||
export type SplitDirection = "row" | "column";
|
||||
@@ -339,17 +336,6 @@ export type WorkspacePayload = {
|
||||
};
|
||||
};
|
||||
|
||||
export type Snippet = {
|
||||
id: number;
|
||||
name: string;
|
||||
description?: string;
|
||||
content: string;
|
||||
folder: string | null;
|
||||
order: number;
|
||||
hostIds?: number[];
|
||||
isNote?: boolean;
|
||||
};
|
||||
|
||||
const FOLDER_ICONS = [
|
||||
"folder",
|
||||
"server",
|
||||
|
||||
Reference in new issue
Block a user