feat: load plugin frontends at runtime and remove plugin ids from the shell

This commit is contained in:
LukeGus committed 2026-09-22 20:15:52 -05:00
1 parent 49f0286a14
commit e88d5a52e3
721 files changed
+54265 -44416

No files matched your search

+6 -12
View File
@@ -36,7 +36,8 @@ export type WidgetTypeId =
| "search_links"
| "link_tree"
| "docker_activity"
| "ssh_quick_connect";
| "ssh_quick_connect"
| (string & {});
export interface HomepageItemRow {
id: number;
@@ -177,8 +178,8 @@ export interface PingStatusConfig {
showLatency: boolean;
}
export type ActivityType =
"terminal" | "file_manager" | "docker" | "tunnel" | "rdp" | "vnc" | "telnet";
/** Core activity types; plugin tabs record their own. */
export type ActivityType = "file_manager" | "tunnel" | (string & {});
export interface RecentActivityConfig {
maxItems: number;
@@ -225,15 +226,8 @@ export interface SshTerminalConfig {
autoConnect: boolean;
}
export type QuickConnectType =
| "terminal"
| "files"
| "docker"
| "tunnel"
| "host-metrics"
| "rdp"
| "vnc"
| "telnet";
/** Tab types a quick connect widget opens: core tools or plugin actions. */
export type QuickConnectType = "files" | "tunnel" | (string & {});
export interface QuickConnectConfig {
hostIds: number[];
+8 -6
View File
@@ -316,10 +316,8 @@ export type Tab = {
initialFilePath?: string;
/** Directory to open a Files tab into, distinct from initialFilePath (a specific file to open in an editor window). */
initialPath?: string;
/** Which fleet a fleet-inventory tab is currently showing (singleton tab, re-targeted on reopen). */
fleetId?: number;
/** Which web endpoint this tab shows. Only set when type is "web-endpoint". */
endpointId?: string;
/** Payload owned by the tab's plugin, e.g. which fleet or endpoint it shows. */
data?: Record<string, unknown>;
/** Which collab room a collab tab is showing. */
collabRoomId?: string;
serialConfig?: SerialConfig;
@@ -343,15 +341,16 @@ export type Tab = {
} | null>;
};
/** Core cards are named here; plugin cards add their own ids. */
export type DashboardCardId =
| "stats_bar"
| "counters_bar"
| "quick_actions"
| "host_status"
| "recent_activity"
| "network_graph"
| "service_links"
| "homepage_preview";
| "homepage_preview"
| (string & {});
export type DashboardCardConfig = {
id: DashboardCardId;
@@ -425,7 +424,10 @@ export type WorkspaceTabSnapshot = {
customLabel?: string;
initialFilePath?: string;
initialPath?: string;
/** Read from payloads saved before tabs carried `data`. */
fleetId?: number;
/** The tab's plugin payload. */
data?: Record<string, unknown>;
/** Only present when type === "serial". Fully self-contained, no host resolution needed. */
serialConfig?: SerialConfig;
};