Files
Maestro/CLAUDE-SESSION.md
Pedram Amini bc036c32de MAESTRO: Add File Preview Tab System documentation
- 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
2026-02-02 16:19:04 -06:00

132 lines
4.6 KiB
Markdown

# 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):
```typescript
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.ts` for renderer
### React Components
- Functional components with hooks
- Tailwind for layout, inline styles for theme colors
- `tabIndex={-1}` + `outline-none` for 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.