mirror of
https://github.com/jlengrand/Maestro.git
synced 2026-03-10 00:21:21 +00:00
- Add comprehensive "File Preview Tab System" section to ARCHITECTURE.md documenting features, interfaces, unified tab system, session fields, behavior, extension color mapping, and key files - Update CLAUDE-SESSION.md with FilePreviewTab interface and session fields - Add file preview tab modification entry to CLAUDE.md Key Files table
4.6 KiB
4.6 KiB
CLAUDE-SESSION.md
Session interface and code conventions for the Maestro codebase. For the main guide, see CLAUDE.md.
Session Interface
Key fields on the Session object (abbreviated - see src/renderer/types/index.ts for full definition):
interface Session {
// Identity
id: string;
name: string;
groupId?: string; // Session grouping
toolType: ToolType; // 'claude-code' | 'codex' | 'opencode' | 'terminal'
state: SessionState; // 'idle' | 'busy' | 'error' | 'connecting'
inputMode: 'ai' | 'terminal'; // Which process receives input
bookmarked?: boolean; // Pinned to top
// Paths
cwd: string; // Current working directory (can change via cd)
projectRoot: string; // Initial directory (never changes, used for session storage)
fullPath: string; // Full resolved path
// Processes
aiPid: number; // AI process ID
port: number; // Web server communication port
// Multi-Tab Support (AI Tabs)
aiTabs: AITab[]; // Multiple conversation tabs
activeTabId: string; // Currently active AI tab
closedTabHistory: ClosedTab[]; // Undo stack for closed AI tabs
// File Preview Tabs
filePreviewTabs: FilePreviewTab[]; // Open file preview tabs
activeFileTabId: string | null; // Active file tab (null if AI tab active)
unifiedTabOrder: UnifiedTabRef[]; // Visual order of all tabs (AI + file)
closedUnifiedTabHistory: ClosedUnifiedTab[]; // Unified undo stack for Cmd+Shift+T
// Logs (per-tab)
shellLogs: LogEntry[]; // Terminal output history
// Execution Queue
executionQueue: QueuedItem[]; // Sequential execution queue
// Usage & Stats
usageStats?: UsageStats; // Token usage and cost
contextUsage: number; // Context window usage percentage
workLog: WorkLogItem[]; // Work tracking
// Git Integration
isGitRepo: boolean; // Git features enabled
changedFiles: FileArtifact[]; // Git change tracking
gitBranches?: string[]; // Branch cache for completion
gitTags?: string[]; // Tag cache for completion
// File Explorer
fileTree: any[]; // File tree structure
fileExplorerExpanded: string[]; // Expanded folder paths
fileExplorerScrollPos: number; // Scroll position
// Web/Live Sessions
isLive: boolean; // Accessible via web interface
liveUrl?: string; // Live session URL
// Auto Run
autoRunFolderPath?: string; // Auto Run document folder
autoRunSelectedFile?: string; // Selected document
autoRunMode?: 'edit' | 'preview'; // Current mode
// Command History
aiCommandHistory?: string[]; // AI input history
shellCommandHistory?: string[]; // Terminal input history
// Error Handling
agentError?: AgentError; // Current agent error (auth, tokens, rate limit, etc.)
agentErrorPaused?: boolean; // Input blocked while error modal shown
}
interface AITab {
id: string;
name: string;
logs: LogEntry[]; // Tab-specific conversation history
agentSessionId?: string; // Agent session for this tab
scrollTop?: number;
draftInput?: string;
}
interface FilePreviewTab {
id: string; // Unique tab ID (UUID)
path: string; // Full file path
name: string; // Filename without extension
extension: string; // File extension with dot (e.g., '.md')
content: string; // File content
scrollTop: number; // Preserved scroll position
searchQuery: string; // Preserved search query
editMode: boolean; // Whether tab was in edit mode
editContent?: string; // Unsaved edit content
createdAt: number; // Timestamp for ordering
lastModified: number; // File modification time
sshRemoteId?: string; // SSH remote ID for remote files
isLoading?: boolean; // True while loading remote content
}
// Unified tab references for ordering
type UnifiedTabRef = { type: 'ai' | 'file'; id: string };
Code Conventions
TypeScript
- Strict mode enabled
- Interface definitions for all data structures
- Types exported via
preload.tsfor renderer
React Components
- Functional components with hooks
- Tailwind for layout, inline styles for theme colors
tabIndex={-1}+outline-nonefor programmatic focus
Commit Messages
feat: new feature
fix: bug fix
docs: documentation
refactor: code refactoring
IMPORTANT: Do NOT create a CHANGELOG.md file. This project does not use changelogs - all change documentation goes in commit messages and PR descriptions only.