SSH session management: - SshSession struct + ssh_sessions SQLite table in session.rs - CRUD Tauri commands (ssh_session_list/save/delete) in lib.rs - SshDialog.svelte (create/edit modal), SshSessionList.svelte (sidebar) - SSH pane routes to TerminalPane with shell=/usr/bin/ssh + args ctx context database integration: - ctx.rs: read-only CtxDb (SQLITE_OPEN_READ_ONLY for ~/.claude-context/context.db) - 5 Tauri commands (ctx_list_projects/get_context/get_shared/get_summaries/search) - ContextPane.svelte with project selector, tabs, search - ctx-bridge.ts adapter Catppuccin theme flavors (Latte/Frappe/Macchiato/Mocha): - themes.ts: all 4 palette definitions + buildXtermTheme/applyCssVariables - theme.svelte.ts: reactive store with SQLite persistence - SettingsDialog flavor dropdown, TerminalPane theme-aware Detached pane mode (pop-out windows): - detach.ts: isDetachedMode/getDetachedConfig from URL params - App.svelte: conditional rendering of single pane without chrome Other additions: - Shiki syntax highlighting (highlight.ts, lazy singleton, 13 languages) - Tauri auto-updater plugin (tauri-plugin-updater + updater.ts) - AgentPane markdown rendering with Shiki code highlighting - New deps: shiki, @tauri-apps/plugin-updater, tauri-plugin-updater
41 lines
972 B
TypeScript
41 lines
972 B
TypeScript
import { invoke } from '@tauri-apps/api/core';
|
|
|
|
export interface CtxProject {
|
|
name: string;
|
|
description: string;
|
|
work_dir: string | null;
|
|
created_at: string;
|
|
}
|
|
|
|
export interface CtxEntry {
|
|
project: string;
|
|
key: string;
|
|
value: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
export interface CtxSummary {
|
|
project: string;
|
|
summary: string;
|
|
created_at: string;
|
|
}
|
|
|
|
export async function ctxListProjects(): Promise<CtxProject[]> {
|
|
return invoke('ctx_list_projects');
|
|
}
|
|
|
|
export async function ctxGetContext(project: string): Promise<CtxEntry[]> {
|
|
return invoke('ctx_get_context', { project });
|
|
}
|
|
|
|
export async function ctxGetShared(): Promise<CtxEntry[]> {
|
|
return invoke('ctx_get_shared');
|
|
}
|
|
|
|
export async function ctxGetSummaries(project: string, limit: number = 5): Promise<CtxSummary[]> {
|
|
return invoke('ctx_get_summaries', { project, limit });
|
|
}
|
|
|
|
export async function ctxSearch(query: string): Promise<CtxEntry[]> {
|
|
return invoke('ctx_search', { query });
|
|
}
|