Documentation
¶
Index ¶
- Constants
- Variables
- func GetToolStyle(tool string) lipgloss.Style
- func InitTheme(theme string)
- func MenuKey(key, description string) string
- func RenderLogoCompact(running, waiting, idle int) string
- func RenderLogoIndicator(indicator string) string
- func RenderLogoLarge(running, waiting, idle int) string
- func SetVersion(v string)
- func StatusIndicator(status string) string
- func ToolColor(tool string) lipgloss.Color
- func ToolIcon(tool string) string
- type AnalyticsPanel
- func (p *AnalyticsPanel) SetAnalytics(a *session.SessionAnalytics)
- func (p *AnalyticsPanel) SetDisplaySettings(settings session.AnalyticsDisplaySettings)
- func (p *AnalyticsPanel) SetGeminiAnalytics(a *session.GeminiSessionAnalytics)
- func (p *AnalyticsPanel) SetSize(width, height int)
- func (p *AnalyticsPanel) View() string
- type ClaudeOptionsPanel
- func (p *ClaudeOptionsPanel) Blur()
- func (p *ClaudeOptionsPanel) Focus()
- func (p *ClaudeOptionsPanel) GetOptions() *session.ClaudeOptions
- func (p *ClaudeOptionsPanel) IsFocused() bool
- func (p *ClaudeOptionsPanel) SetDefaults(config *session.UserConfig)
- func (p *ClaudeOptionsPanel) Update(msg tea.Msg) (*ClaudeOptionsPanel, tea.Cmd)
- func (p *ClaudeOptionsPanel) View() string
- type ConfirmDialog
- func (c *ConfirmDialog) GetConfirmType() ConfirmType
- func (c *ConfirmDialog) GetPendingSession() (name, path, command, groupPath string)
- func (c *ConfirmDialog) GetTargetID() string
- func (c *ConfirmDialog) Hide()
- func (c *ConfirmDialog) IsVisible() bool
- func (c *ConfirmDialog) SetSize(width, height int)
- func (c *ConfirmDialog) ShowCreateDirectory(path, sessionName, command, groupPath string)
- func (c *ConfirmDialog) ShowDeleteGroup(groupPath, groupName string)
- func (c *ConfirmDialog) ShowDeleteSession(sessionID, sessionName string)
- func (c *ConfirmDialog) ShowQuitWithPool(mcpCount int)
- func (c *ConfirmDialog) Update(msg tea.KeyMsg) (*ConfirmDialog, tea.Cmd)
- func (c *ConfirmDialog) View() string
- type ConfirmType
- type EmptyStateConfig
- type ForkDialog
- func (d *ForkDialog) ClearError()
- func (d *ForkDialog) GetOptions() *session.ClaudeOptions
- func (d *ForkDialog) GetValues() (name, group string)
- func (d *ForkDialog) GetValuesWithWorktree() (name, group, branch string, worktreeEnabled bool)
- func (d *ForkDialog) Hide()
- func (d *ForkDialog) IsVisible() bool
- func (d *ForkDialog) IsWorktreeEnabled() bool
- func (d *ForkDialog) SetError(msg string)
- func (d *ForkDialog) SetSize(width, height int)
- func (d *ForkDialog) Show(originalName, projectPath, groupPath string)
- func (d *ForkDialog) ToggleWorktree()
- func (d *ForkDialog) Update(msg tea.Msg) (*ForkDialog, tea.Cmd)
- func (d *ForkDialog) Validate() string
- func (d *ForkDialog) View() string
- type GeminiModelDialog
- func (d *GeminiModelDialog) HandleModelsFetched(msg modelsFetchedMsg)
- func (d *GeminiModelDialog) Hide()
- func (d *GeminiModelDialog) IsVisible() bool
- func (d *GeminiModelDialog) SetSize(width, height int)
- func (d *GeminiModelDialog) Show(instanceID, currentModel string) tea.Cmd
- func (d *GeminiModelDialog) Update(msg tea.KeyMsg) (*GeminiModelDialog, tea.Cmd)
- func (d *GeminiModelDialog) View() string
- type GlobalSearch
- func (gs *GlobalSearch) Hide()
- func (gs *GlobalSearch) IsVisible() bool
- func (gs *GlobalSearch) MarkInAgentDeck(instances []*session.Instance)
- func (gs *GlobalSearch) RefreshStats()
- func (gs *GlobalSearch) Selected() *GlobalSearchResult
- func (gs *GlobalSearch) SetIndex(index *session.GlobalSearchIndex)
- func (gs *GlobalSearch) SetSize(width, height int)
- func (gs *GlobalSearch) Show()
- func (gs *GlobalSearch) Update(msg tea.Msg) (*GlobalSearch, tea.Cmd)
- func (gs *GlobalSearch) View() string
- func (gs *GlobalSearch) WantsSwitchToLocal() bool
- type GlobalSearchResult
- type GroupDialog
- func (g *GroupDialog) CanToggle() bool
- func (g *GroupDialog) ClearError()
- func (g *GroupDialog) GetGroupPath() string
- func (g *GroupDialog) GetParentPath() string
- func (g *GroupDialog) GetSelectedGroup() string
- func (g *GroupDialog) GetSessionID() string
- func (g *GroupDialog) GetValue() string
- func (g *GroupDialog) HasParent() bool
- func (g *GroupDialog) Hide()
- func (g *GroupDialog) IsVisible() bool
- func (g *GroupDialog) Mode() GroupDialogMode
- func (g *GroupDialog) SetError(msg string)
- func (g *GroupDialog) SetSize(width, height int)
- func (g *GroupDialog) Show()
- func (g *GroupDialog) ShowCreateSubgroup(parentPath, parentName string)
- func (g *GroupDialog) ShowCreateWithContext(parentPath, parentName string)
- func (g *GroupDialog) ShowCreateWithContextDefaultRoot(parentPath, parentName string)
- func (g *GroupDialog) ShowMove(groups []string)
- func (g *GroupDialog) ShowRename(currentPath, currentName string)
- func (g *GroupDialog) ShowRenameSession(sessionID, currentName string)
- func (g *GroupDialog) ToggleRootSubgroup()
- func (g *GroupDialog) Update(msg tea.KeyMsg) (*GroupDialog, tea.Cmd)
- func (g *GroupDialog) Validate() string
- func (g *GroupDialog) View() string
- type GroupDialogMode
- type HelpOverlay
- type Home
- type List
- func (l *List) Cursor() int
- func (l *List) Len() int
- func (l *List) MoveDown()
- func (l *List) MoveUp()
- func (l *List) Selected() *session.Instance
- func (l *List) SetItems(items []*session.Instance)
- func (l *List) SetSize(width, height int)
- func (l *List) ToggleFolder(name string)
- func (l *List) View() string
- type MCPColumn
- type MCPDialog
- func (m *MCPDialog) Apply() error
- func (m *MCPDialog) GetError() error
- func (m *MCPDialog) GetProjectPath() string
- func (m *MCPDialog) GetSessionID() string
- func (m *MCPDialog) HasChanged() bool
- func (m *MCPDialog) HasItems() bool
- func (m *MCPDialog) Hide()
- func (m *MCPDialog) IsVisible() bool
- func (m *MCPDialog) Move()
- func (m *MCPDialog) SetSize(width, height int)
- func (m *MCPDialog) Show(projectPath string, sessionID string, tool string) error
- func (m *MCPDialog) Update(msg tea.KeyMsg) (*MCPDialog, tea.Cmd)
- func (m *MCPDialog) View() string
- type MCPItem
- type MCPScope
- type MaintenanceCompleteMsg
- type Menu
- type NewDialog
- func (d *NewDialog) ClearError()
- func (d *NewDialog) GetClaudeOptions() *session.ClaudeOptions
- func (d *NewDialog) GetSelectedCommand() string
- func (d *NewDialog) GetSelectedGroup() string
- func (d *NewDialog) GetValues() (name, path, command string)
- func (d *NewDialog) GetValuesWithWorktree() (name, path, command, branch string, worktreeEnabled bool)
- func (d *NewDialog) Hide()
- func (d *NewDialog) IsGeminiYoloMode() bool
- func (d *NewDialog) IsVisible() bool
- func (d *NewDialog) IsWorktreeEnabled() bool
- func (d *NewDialog) SetDefaultTool(tool string)
- func (d *NewDialog) SetError(msg string)
- func (d *NewDialog) SetGeminiYoloMode(enabled bool)
- func (d *NewDialog) SetPathSuggestions(paths []string)
- func (d *NewDialog) SetSize(width, height int)
- func (d *NewDialog) Show()
- func (d *NewDialog) ShowInGroup(groupPath, groupName, defaultPath string)
- func (d *NewDialog) ToggleWorktree()
- func (d *NewDialog) Update(msg tea.Msg) (*NewDialog, tea.Cmd)
- func (d *NewDialog) Validate() string
- func (d *NewDialog) View() string
- type Preview
- type PreviewMode
- type Search
- func (s *Search) Hide()
- func (s *Search) IsVisible() bool
- func (s *Search) Selected() *session.Instance
- func (s *Search) SetItems(items []*session.Instance)
- func (s *Search) SetSize(width, height int)
- func (s *Search) Show()
- func (s *Search) Update(msg tea.Msg) (*Search, tea.Cmd)
- func (s *Search) View() string
- func (s *Search) WantsSwitchToGlobal() bool
- type SessionPickerDialog
- func (d *SessionPickerDialog) GetSelected() *session.Instance
- func (d *SessionPickerDialog) GetSource() *session.Instance
- func (d *SessionPickerDialog) Hide()
- func (d *SessionPickerDialog) IsVisible() bool
- func (d *SessionPickerDialog) SetSize(w, h int)
- func (d *SessionPickerDialog) Show(source *session.Instance, allInstances []*session.Instance)
- func (d *SessionPickerDialog) Update(msg tea.KeyMsg) (*SessionPickerDialog, tea.Cmd)
- func (d *SessionPickerDialog) View() string
- type SettingType
- type SettingsPanel
- func (s *SettingsPanel) GetConfig() *session.UserConfig
- func (s *SettingsPanel) Hide()
- func (s *SettingsPanel) IsVisible() bool
- func (s *SettingsPanel) LoadConfig(config *session.UserConfig)
- func (s *SettingsPanel) NeedsRestart() bool
- func (s *SettingsPanel) SetSize(width, height int)
- func (s *SettingsPanel) Show()
- func (s *SettingsPanel) Update(msg tea.KeyMsg) (*SettingsPanel, tea.Cmd, bool)
- func (s *SettingsPanel) View() string
- type SetupWizard
- func (w *SetupWizard) GetConfig() *session.UserConfig
- func (w *SetupWizard) Hide()
- func (w *SetupWizard) IsComplete() bool
- func (w *SetupWizard) IsVisible() bool
- func (w *SetupWizard) SetSize(width, height int)
- func (w *SetupWizard) Show()
- func (w *SetupWizard) Update(msg tea.Msg) (*SetupWizard, tea.Cmd)
- func (w *SetupWizard) View() string
- type StorageWatcher
- type Theme
- type Tree
- func (t *Tree) AddFolder(name string)
- func (t *Tree) Clear()
- func (t *Tree) GetFolder(name string) *TreeFolder
- func (t *Tree) GetFolders() []string
- func (t *Tree) IsFolderExpanded(name string) bool
- func (t *Tree) SetFolderCount(name string, count int)
- func (t *Tree) ToggleFolder(name string)
- func (t *Tree) View(selectedFolder string) string
- type TreeFolder
Constants ¶
const ( LayoutModeSingle = "single" // <50 cols: list only LayoutModeStacked = "stacked" // 50-79 cols: vertical stack LayoutModeDual = "dual" // 80+ cols: side-by-side )
Layout mode names
const ( IconClaude = "🤖" IconGemini = "✨" IconOpenCode = "🌐" IconCodex = "💻" IconShell = "🐚" )
Tool Icons
const MaxNameLength = 50
MaxNameLength is the maximum allowed length for session and group names. Used by dialog CharLimits and Validate() methods to ensure consistency.
Variables ¶
var ( ColorBg lipgloss.Color ColorSurface lipgloss.Color ColorBorder lipgloss.Color ColorText lipgloss.Color ColorTextDim lipgloss.Color ColorAccent lipgloss.Color ColorPurple lipgloss.Color ColorCyan lipgloss.Color ColorGreen lipgloss.Color ColorYellow lipgloss.Color ColorOrange lipgloss.Color ColorRed lipgloss.Color ColorComment lipgloss.Color )
Active color variables (set by InitTheme)
var ( BaseStyle lipgloss.Style TitleStyle lipgloss.Style PanelStyle lipgloss.Style HighlightStyle lipgloss.Style DimStyle lipgloss.Style ErrorStyle lipgloss.Style SuccessStyle lipgloss.Style WarningStyle lipgloss.Style InfoStyle lipgloss.Style )
Base Styles
var ( RunningStyle lipgloss.Style WaitingStyle lipgloss.Style IdleStyle lipgloss.Style ErrorIndicatorStyle lipgloss.Style )
Status Indicator Styles
var ( MenuBarStyle lipgloss.Style MenuKeyStyle lipgloss.Style MenuDescStyle lipgloss.Style MenuSeparatorStyle lipgloss.Style )
Menu Bar Styles
var ( SearchBoxStyle lipgloss.Style SearchPromptStyle lipgloss.Style SearchMatchStyle lipgloss.Style )
Search Styles
var ( DialogBoxStyle lipgloss.Style DialogTitleStyle lipgloss.Style DialogButtonStyle lipgloss.Style DialogButtonActiveStyle lipgloss.Style )
Dialog Styles
var ( PreviewPanelStyle lipgloss.Style PreviewTitleStyle lipgloss.Style PreviewHeaderStyle lipgloss.Style PreviewContentStyle lipgloss.Style PreviewMetaStyle lipgloss.Style )
Preview Pane Styles
var ( ListItemStyle lipgloss.Style ListItemActiveStyle lipgloss.Style )
List Item Styles (used by legacy list.go component in tests)
var ( TagStyle lipgloss.Style TagActiveStyle lipgloss.Style TagErrorStyle lipgloss.Style )
Tag Styles
var ( FolderStyle lipgloss.Style FolderCollapsedStyle lipgloss.Style )
Folder Styles
var ( SessionItemStyle lipgloss.Style SessionItemSelectedStyle lipgloss.Style )
Session Item Styles
var ( // Tree connector styles TreeConnectorStyle lipgloss.Style TreeConnectorSelStyle lipgloss.Style // Session status indicator styles SessionStatusRunning lipgloss.Style SessionStatusWaiting lipgloss.Style SessionStatusIdle lipgloss.Style SessionStatusError lipgloss.Style SessionStatusSelStyle lipgloss.Style // Session title styles by state SessionTitleDefault lipgloss.Style SessionTitleActive lipgloss.Style SessionTitleError lipgloss.Style SessionTitleSelStyle lipgloss.Style // Selection indicator SessionSelectionPrefix lipgloss.Style // Group item styles GroupExpandStyle lipgloss.Style GroupNameStyle lipgloss.Style GroupCountStyle lipgloss.Style GroupHotkeyStyle lipgloss.Style GroupStatusRunning lipgloss.Style GroupStatusWaiting lipgloss.Style // Group selected styles GroupNameSelStyle lipgloss.Style GroupCountSelStyle lipgloss.Style GroupExpandSelStyle lipgloss.Style )
Session List Rendering Styles (PERFORMANCE: cached at package level) These styles are used by renderSessionItem() and renderGroupItem() to avoid repeated allocations on every View() call
var ( SubtitleStyle lipgloss.Style ColorError lipgloss.Color ColorSuccess lipgloss.Color ColorWarning lipgloss.Color ColorPrimary lipgloss.Color )
Additional Styles
var DefaultToolStyle lipgloss.Style
DefaultToolStyle is used when tool is not in cache
var LogoBorderStyle lipgloss.Style
LogoBorderStyle for the grid lines
var LogoFrames = [][]string{
{"●", "◐", "○"},
}
LogoFrames kept for backward compatibility (empty state default)
var MenuStyle lipgloss.Style
Menu Styles
var TimestampStyle lipgloss.Style
Timestamp Style
var ToolStyleCache map[string]lipgloss.Style
ToolStyleCache provides pre-allocated styles for each tool type Avoids repeated lipgloss.NewStyle() calls in renderSessionItem()
var Version = "0.0.0"
Version is set by main.go for update checking
Functions ¶
func GetToolStyle ¶ added in v0.8.9
GetToolStyle returns cached style for tool or default
func InitTheme ¶ added in v0.8.16
func InitTheme(theme string)
InitTheme sets the active color palette based on theme name Must be called before any UI rendering
func RenderLogoCompact ¶
RenderLogoCompact renders the compact inline logo for the header Shows REAL status: running=●, waiting=◐, idle=○ Format: ⟨ ● │ ◐ │ ○ ⟩ (using angle brackets for modern look)
func RenderLogoIndicator ¶
RenderLogoIndicator renders a single indicator with appropriate color
func RenderLogoLarge ¶
RenderLogoLarge renders the large logo for empty state Shows REAL status: running=●, waiting=◐, idle=○ Format:
┌──┬──┬──┐ │● │◐ │○ │ └──┴──┴──┘
func SetVersion ¶ added in v0.4.0
func SetVersion(v string)
SetVersion sets the current version for update checking
func StatusIndicator ¶
StatusIndicator returns a styled status indicator Standard symbols: ● running, ◐ waiting, ○ idle, ✕ error, ⟳ starting
Types ¶
type AnalyticsPanel ¶ added in v0.8.27
type AnalyticsPanel struct {
// contains filtered or unexported fields
}
AnalyticsPanel displays session analytics in a formatted panel
func NewAnalyticsPanel ¶ added in v0.8.27
func NewAnalyticsPanel() *AnalyticsPanel
NewAnalyticsPanel creates a new analytics panel
func (*AnalyticsPanel) SetAnalytics ¶ added in v0.8.27
func (p *AnalyticsPanel) SetAnalytics(a *session.SessionAnalytics)
SetAnalytics sets the Claude analytics data to display
func (*AnalyticsPanel) SetDisplaySettings ¶ added in v0.8.53
func (p *AnalyticsPanel) SetDisplaySettings(settings session.AnalyticsDisplaySettings)
SetDisplaySettings configures which sections to show
func (*AnalyticsPanel) SetGeminiAnalytics ¶ added in v0.8.35
func (p *AnalyticsPanel) SetGeminiAnalytics(a *session.GeminiSessionAnalytics)
SetGeminiAnalytics sets the Gemini analytics data to display
func (*AnalyticsPanel) SetSize ¶ added in v0.8.27
func (p *AnalyticsPanel) SetSize(width, height int)
SetSize sets the panel dimensions
func (*AnalyticsPanel) View ¶ added in v0.8.27
func (p *AnalyticsPanel) View() string
View renders the analytics panel
type ClaudeOptionsPanel ¶ added in v0.8.39
type ClaudeOptionsPanel struct {
// contains filtered or unexported fields
}
ClaudeOptionsPanel is a UI panel for Claude-specific launch options Used in both ForkDialog and NewDialog
func NewClaudeOptionsPanel ¶ added in v0.8.39
func NewClaudeOptionsPanel() *ClaudeOptionsPanel
NewClaudeOptionsPanel creates a new panel for NewDialog
func NewClaudeOptionsPanelForFork ¶ added in v0.8.39
func NewClaudeOptionsPanelForFork() *ClaudeOptionsPanel
NewClaudeOptionsPanelForFork creates a panel for ForkDialog (fewer options)
func (*ClaudeOptionsPanel) Blur ¶ added in v0.8.39
func (p *ClaudeOptionsPanel) Blur()
Blur removes focus from this panel
func (*ClaudeOptionsPanel) Focus ¶ added in v0.8.39
func (p *ClaudeOptionsPanel) Focus()
Focus sets focus to this panel
func (*ClaudeOptionsPanel) GetOptions ¶ added in v0.8.39
func (p *ClaudeOptionsPanel) GetOptions() *session.ClaudeOptions
GetOptions returns current options as ClaudeOptions
func (*ClaudeOptionsPanel) IsFocused ¶ added in v0.8.39
func (p *ClaudeOptionsPanel) IsFocused() bool
IsFocused returns true if any element in the panel has focus
func (*ClaudeOptionsPanel) SetDefaults ¶ added in v0.8.39
func (p *ClaudeOptionsPanel) SetDefaults(config *session.UserConfig)
SetDefaults applies default values from config
func (*ClaudeOptionsPanel) Update ¶ added in v0.8.39
func (p *ClaudeOptionsPanel) Update(msg tea.Msg) (*ClaudeOptionsPanel, tea.Cmd)
Update handles key events
func (*ClaudeOptionsPanel) View ¶ added in v0.8.39
func (p *ClaudeOptionsPanel) View() string
View renders the options panel
type ConfirmDialog ¶
type ConfirmDialog struct {
// contains filtered or unexported fields
}
ConfirmDialog handles confirmation for destructive actions
func NewConfirmDialog ¶
func NewConfirmDialog() *ConfirmDialog
NewConfirmDialog creates a new confirmation dialog
func (*ConfirmDialog) GetConfirmType ¶
func (c *ConfirmDialog) GetConfirmType() ConfirmType
GetConfirmType returns the type of confirmation
func (*ConfirmDialog) GetPendingSession ¶ added in v0.8.99
func (c *ConfirmDialog) GetPendingSession() (name, path, command, groupPath string)
GetPendingSession returns the pending session creation data
func (*ConfirmDialog) GetTargetID ¶
func (c *ConfirmDialog) GetTargetID() string
GetTargetID returns the session ID or group path being confirmed
func (*ConfirmDialog) IsVisible ¶
func (c *ConfirmDialog) IsVisible() bool
IsVisible returns whether the dialog is visible
func (*ConfirmDialog) SetSize ¶
func (c *ConfirmDialog) SetSize(width, height int)
SetSize updates dialog dimensions
func (*ConfirmDialog) ShowCreateDirectory ¶ added in v0.8.99
func (c *ConfirmDialog) ShowCreateDirectory(path, sessionName, command, groupPath string)
ShowCreateDirectory shows confirmation for creating a missing directory
func (*ConfirmDialog) ShowDeleteGroup ¶
func (c *ConfirmDialog) ShowDeleteGroup(groupPath, groupName string)
ShowDeleteGroup shows confirmation for group deletion
func (*ConfirmDialog) ShowDeleteSession ¶
func (c *ConfirmDialog) ShowDeleteSession(sessionID, sessionName string)
ShowDeleteSession shows confirmation for session deletion
func (*ConfirmDialog) ShowQuitWithPool ¶ added in v0.8.70
func (c *ConfirmDialog) ShowQuitWithPool(mcpCount int)
ShowQuitWithPool shows confirmation for quitting with MCP pool running
func (*ConfirmDialog) Update ¶
func (c *ConfirmDialog) Update(msg tea.KeyMsg) (*ConfirmDialog, tea.Cmd)
Update handles key events
func (*ConfirmDialog) View ¶
func (c *ConfirmDialog) View() string
View renders the confirmation dialog
type ConfirmType ¶
type ConfirmType int
ConfirmType indicates what action is being confirmed
const ( ConfirmDeleteSession ConfirmType = iota ConfirmDeleteGroup ConfirmQuitWithPool ConfirmCreateDirectory )
type EmptyStateConfig ¶ added in v0.5.8
type EmptyStateConfig struct {
Icon string
Title string
Subtitle string
Hints []string // Full list of hints (will be reduced based on space)
}
EmptyStateConfig holds content for responsive empty state rendering
type ForkDialog ¶ added in v0.4.1
type ForkDialog struct {
// contains filtered or unexported fields
}
ForkDialog handles the fork session dialog
func NewForkDialog ¶ added in v0.4.1
func NewForkDialog() *ForkDialog
NewForkDialog creates a new fork dialog
func (*ForkDialog) ClearError ¶ added in v0.8.80
func (d *ForkDialog) ClearError()
ClearError clears the inline validation error
func (*ForkDialog) GetOptions ¶ added in v0.8.39
func (d *ForkDialog) GetOptions() *session.ClaudeOptions
GetOptions returns the current Claude options
func (*ForkDialog) GetValues ¶ added in v0.4.1
func (d *ForkDialog) GetValues() (name, group string)
GetValues returns the current input values
func (*ForkDialog) GetValuesWithWorktree ¶ added in v0.9.0
func (d *ForkDialog) GetValuesWithWorktree() (name, group, branch string, worktreeEnabled bool)
GetValuesWithWorktree returns all values including worktree settings
func (*ForkDialog) IsVisible ¶ added in v0.4.1
func (d *ForkDialog) IsVisible() bool
IsVisible returns whether the dialog is visible
func (*ForkDialog) IsWorktreeEnabled ¶ added in v0.9.0
func (d *ForkDialog) IsWorktreeEnabled() bool
IsWorktreeEnabled returns whether worktree mode is enabled
func (*ForkDialog) SetError ¶ added in v0.8.80
func (d *ForkDialog) SetError(msg string)
SetError sets an inline validation error displayed inside the dialog
func (*ForkDialog) SetSize ¶ added in v0.4.1
func (d *ForkDialog) SetSize(width, height int)
SetSize sets the dialog dimensions
func (*ForkDialog) Show ¶ added in v0.4.1
func (d *ForkDialog) Show(originalName, projectPath, groupPath string)
Show displays the dialog with pre-filled values
func (*ForkDialog) ToggleWorktree ¶ added in v0.9.0
func (d *ForkDialog) ToggleWorktree()
ToggleWorktree toggles the worktree checkbox
func (*ForkDialog) Update ¶ added in v0.4.1
func (d *ForkDialog) Update(msg tea.Msg) (*ForkDialog, tea.Cmd)
Update handles input events
func (*ForkDialog) Validate ¶ added in v0.8.80
func (d *ForkDialog) Validate() string
Validate checks if the dialog values are valid and returns an error message if not
func (*ForkDialog) View ¶ added in v0.4.1
func (d *ForkDialog) View() string
View renders the dialog
type GeminiModelDialog ¶ added in v0.8.79
type GeminiModelDialog struct {
// contains filtered or unexported fields
}
GeminiModelDialog allows selecting a Gemini model for the current session
func NewGeminiModelDialog ¶ added in v0.8.79
func NewGeminiModelDialog() *GeminiModelDialog
NewGeminiModelDialog creates a new model selection dialog
func (*GeminiModelDialog) HandleModelsFetched ¶ added in v0.8.79
func (d *GeminiModelDialog) HandleModelsFetched(msg modelsFetchedMsg)
HandleModelsFetched processes the async model fetch result
func (*GeminiModelDialog) Hide ¶ added in v0.8.79
func (d *GeminiModelDialog) Hide()
Hide closes the dialog
func (*GeminiModelDialog) IsVisible ¶ added in v0.8.79
func (d *GeminiModelDialog) IsVisible() bool
IsVisible returns whether the dialog is visible
func (*GeminiModelDialog) SetSize ¶ added in v0.8.79
func (d *GeminiModelDialog) SetSize(width, height int)
SetSize updates the dialog dimensions
func (*GeminiModelDialog) Show ¶ added in v0.8.79
func (d *GeminiModelDialog) Show(instanceID, currentModel string) tea.Cmd
Show opens the dialog and triggers async model fetching
func (*GeminiModelDialog) Update ¶ added in v0.8.79
func (d *GeminiModelDialog) Update(msg tea.KeyMsg) (*GeminiModelDialog, tea.Cmd)
Update handles input for the dialog
func (*GeminiModelDialog) View ¶ added in v0.8.79
func (d *GeminiModelDialog) View() string
View renders the dialog
type GlobalSearch ¶ added in v0.5.3
type GlobalSearch struct {
// contains filtered or unexported fields
}
GlobalSearch represents the global session search overlay
func NewGlobalSearch ¶ added in v0.5.3
func NewGlobalSearch() *GlobalSearch
NewGlobalSearch creates a new global search overlay
func (*GlobalSearch) IsVisible ¶ added in v0.5.3
func (gs *GlobalSearch) IsVisible() bool
IsVisible returns whether the overlay is visible
func (*GlobalSearch) MarkInAgentDeck ¶ added in v0.5.3
func (gs *GlobalSearch) MarkInAgentDeck(instances []*session.Instance)
MarkInAgentDeck marks which results are already in Agent Deck
func (*GlobalSearch) RefreshStats ¶ added in v0.5.3
func (gs *GlobalSearch) RefreshStats()
RefreshStats updates the stats from the index
func (*GlobalSearch) Selected ¶ added in v0.5.3
func (gs *GlobalSearch) Selected() *GlobalSearchResult
Selected returns the currently selected result
func (*GlobalSearch) SetIndex ¶ added in v0.5.3
func (gs *GlobalSearch) SetIndex(index *session.GlobalSearchIndex)
SetIndex sets the search index reference
func (*GlobalSearch) SetSize ¶ added in v0.5.3
func (gs *GlobalSearch) SetSize(width, height int)
SetSize sets the dimensions of the overlay
func (*GlobalSearch) Show ¶ added in v0.5.3
func (gs *GlobalSearch) Show()
Show makes the overlay visible
func (*GlobalSearch) Update ¶ added in v0.5.3
func (gs *GlobalSearch) Update(msg tea.Msg) (*GlobalSearch, tea.Cmd)
Update handles messages for the overlay
func (*GlobalSearch) View ¶ added in v0.5.3
func (gs *GlobalSearch) View() string
View renders the overlay with split-pane layout
func (*GlobalSearch) WantsSwitchToLocal ¶ added in v0.5.3
func (gs *GlobalSearch) WantsSwitchToLocal() bool
WantsSwitchToLocal returns true if user pressed Tab to switch to local search
type GlobalSearchResult ¶ added in v0.5.3
type GlobalSearchResult struct {
SessionID string
Summary string
Snippet string
Content string // Full conversation content for preview
CWD string
ModTime time.Time // Last modified time
Score int // Fuzzy match score (higher = better match)
MatchCount int // Number of query matches in content
InAgentDeck bool // True if this session is already in Agent Deck
InstanceID string // Agent Deck instance ID if exists
}
GlobalSearchResult wraps a search result for UI display
type GroupDialog ¶
type GroupDialog struct {
// contains filtered or unexported fields
}
GroupDialog handles group creation, renaming, and moving sessions
func (*GroupDialog) CanToggle ¶ added in v0.8.93
func (g *GroupDialog) CanToggle() bool
CanToggle returns true when the Tab toggle between Root and Subgroup is available. Only applies in Create mode when the cursor was on a group context.
func (*GroupDialog) ClearError ¶ added in v0.8.80
func (g *GroupDialog) ClearError()
ClearError clears the inline validation error
func (*GroupDialog) GetGroupPath ¶
func (g *GroupDialog) GetGroupPath() string
GetGroupPath returns the group path being edited (or parent path for subgroup creation)
func (*GroupDialog) GetParentPath ¶
func (g *GroupDialog) GetParentPath() string
GetParentPath returns the parent path for subgroup creation
func (*GroupDialog) GetSelectedGroup ¶
func (g *GroupDialog) GetSelectedGroup() string
GetSelectedGroup returns the selected group for move mode
func (*GroupDialog) GetSessionID ¶
func (g *GroupDialog) GetSessionID() string
GetSessionID returns the session ID being renamed
func (*GroupDialog) GetValue ¶
func (g *GroupDialog) GetValue() string
GetValue returns the input value
func (*GroupDialog) HasParent ¶
func (g *GroupDialog) HasParent() bool
HasParent returns true if creating a subgroup under a parent
func (*GroupDialog) IsVisible ¶
func (g *GroupDialog) IsVisible() bool
IsVisible returns whether the dialog is visible
func (*GroupDialog) Mode ¶
func (g *GroupDialog) Mode() GroupDialogMode
Mode returns the current dialog mode
func (*GroupDialog) SetError ¶ added in v0.8.80
func (g *GroupDialog) SetError(msg string)
SetError sets an inline validation error displayed inside the dialog
func (*GroupDialog) SetSize ¶
func (g *GroupDialog) SetSize(width, height int)
SetSize sets the dialog size
func (*GroupDialog) Show ¶
func (g *GroupDialog) Show()
Show shows the dialog in create mode (root level group)
func (*GroupDialog) ShowCreateSubgroup ¶
func (g *GroupDialog) ShowCreateSubgroup(parentPath, parentName string)
ShowCreateSubgroup shows the dialog for creating a subgroup under a parent
func (*GroupDialog) ShowCreateWithContext ¶ added in v0.8.93
func (g *GroupDialog) ShowCreateWithContext(parentPath, parentName string)
ShowCreateWithContext opens the create dialog with cursor context for Tab toggling. If parentPath is non-empty, defaults to subgroup mode with Tab toggle available. If parentPath is empty, opens as root-level group with no toggle.
func (*GroupDialog) ShowCreateWithContextDefaultRoot ¶ added in v0.10.0
func (g *GroupDialog) ShowCreateWithContextDefaultRoot(parentPath, parentName string)
ShowCreateWithContextDefaultRoot opens the create dialog defaulting to root mode, but stores the cursor context so Tab toggle can switch to subgroup mode. Used when the cursor is on a session inside a group (not on the group header itself).
func (*GroupDialog) ShowMove ¶
func (g *GroupDialog) ShowMove(groups []string)
ShowMove shows the dialog for moving a session to a group
func (*GroupDialog) ShowRename ¶
func (g *GroupDialog) ShowRename(currentPath, currentName string)
ShowRename shows the dialog in rename mode
func (*GroupDialog) ShowRenameSession ¶
func (g *GroupDialog) ShowRenameSession(sessionID, currentName string)
ShowRenameSession shows the dialog for renaming a session
func (*GroupDialog) ToggleRootSubgroup ¶ added in v0.8.93
func (g *GroupDialog) ToggleRootSubgroup()
ToggleRootSubgroup swaps between root-level and subgroup creation modes.
func (*GroupDialog) Update ¶
func (g *GroupDialog) Update(msg tea.KeyMsg) (*GroupDialog, tea.Cmd)
Update handles input
func (*GroupDialog) Validate ¶
func (g *GroupDialog) Validate() string
Validate checks if the dialog values are valid and returns an error message if not
type GroupDialogMode ¶
type GroupDialogMode int
GroupDialogMode represents the dialog mode
const ( GroupDialogCreate GroupDialogMode = iota GroupDialogRename GroupDialogMove GroupDialogRenameSession )
type HelpOverlay ¶ added in v0.3.0
type HelpOverlay struct {
// contains filtered or unexported fields
}
HelpOverlay shows keyboard shortcuts in a modal
func NewHelpOverlay ¶ added in v0.3.0
func NewHelpOverlay() *HelpOverlay
NewHelpOverlay creates a new help overlay
func (*HelpOverlay) IsVisible ¶ added in v0.3.0
func (h *HelpOverlay) IsVisible() bool
IsVisible returns whether the help overlay is visible
func (*HelpOverlay) SetSize ¶ added in v0.3.0
func (h *HelpOverlay) SetSize(width, height int)
SetSize sets the dimensions for centering
func (*HelpOverlay) Show ¶ added in v0.3.0
func (h *HelpOverlay) Show()
Show makes the help overlay visible
func (*HelpOverlay) Update ¶ added in v0.3.0
func (h *HelpOverlay) Update(msg tea.Msg) (*HelpOverlay, tea.Cmd)
Update handles messages for the help overlay
func (*HelpOverlay) View ¶ added in v0.3.0
func (h *HelpOverlay) View() string
View renders the help overlay
type Home ¶
type Home struct {
// contains filtered or unexported fields
}
Home is the main application model
func NewHomeWithProfile ¶ added in v0.3.0
NewHomeWithProfile creates a new home model with the specified profile as the primary instance. This is the default constructor for backward compatibility.
func NewHomeWithProfileAndMode ¶ added in v0.8.74
NewHomeWithProfileAndMode creates a new Home with the specified profile and instance mode. isPrimary controls whether this instance manages the notification bar:
- true: Primary instance - manages notification bar, key bindings, signal file
- false: Secondary instance - read-only for notifications, full functionality otherwise
type List ¶
type List struct {
// contains filtered or unexported fields
}
List manages session list display
func (*List) ToggleFolder ¶
ToggleFolder toggles the current folder
type MCPColumn ¶ added in v0.5.3
type MCPColumn int
MCPColumn represents Attached or Available column
type MCPDialog ¶ added in v0.5.3
type MCPDialog struct {
// contains filtered or unexported fields
}
MCPDialog handles MCP management for Claude and Gemini sessions
func NewMCPDialog ¶ added in v0.5.3
func NewMCPDialog() *MCPDialog
NewMCPDialog creates a new MCP management dialog
func (*MCPDialog) Apply ¶ added in v0.5.3
Apply saves the changes to LOCAL (.mcp.json), GLOBAL (Claude/Gemini config), and USER (~/.claude.json)
func (*MCPDialog) GetProjectPath ¶ added in v0.5.3
GetProjectPath returns the project path being managed
func (*MCPDialog) GetSessionID ¶ added in v0.5.4
GetSessionID returns the session ID being managed
func (*MCPDialog) HasChanged ¶ added in v0.5.3
HasChanged returns true if any MCPs were changed (any scope)
func (*MCPDialog) Move ¶ added in v0.5.3
func (m *MCPDialog) Move()
Move moves the selected item between Attached <-> Available
type MCPItem ¶ added in v0.5.3
type MCPItem struct {
Name string
Description string
IsOrphan bool // True if MCP is attached but not in config.toml pool
IsPooled bool // True if this MCP uses socket pool
Transport string // "stdio", "http", or "sse"
HTTPStatus string // For HTTP MCPs: "running", "stopped", "external", etc.
HasServerCfg bool // True if HTTP MCP has [mcps.X.server] config
}
MCPItem represents an MCP in the dialog list
type MaintenanceCompleteMsg ¶ added in v0.8.79
type MaintenanceCompleteMsg struct {
Result session.MaintenanceResult
}
MaintenanceCompleteMsg is the exported type for sending from main.go via p.Send()
type Menu ¶
type Menu struct {
// contains filtered or unexported fields
}
Menu shows bottom menu bar
type NewDialog ¶
type NewDialog struct {
// contains filtered or unexported fields
}
NewDialog represents the new session creation dialog
func (*NewDialog) ClearError ¶ added in v0.8.80
func (d *NewDialog) ClearError()
ClearError clears the inline validation error
func (*NewDialog) GetClaudeOptions ¶ added in v0.8.39
func (d *NewDialog) GetClaudeOptions() *session.ClaudeOptions
GetClaudeOptions returns the Claude-specific options (only relevant if command is "claude")
func (*NewDialog) GetSelectedCommand ¶ added in v0.8.35
GetSelectedCommand returns the currently selected command/tool
func (*NewDialog) GetSelectedGroup ¶
GetSelectedGroup returns the parent group path
func (*NewDialog) GetValuesWithWorktree ¶ added in v0.8.22
func (d *NewDialog) GetValuesWithWorktree() (name, path, command, branch string, worktreeEnabled bool)
GetValuesWithWorktree returns all values including worktree settings
func (*NewDialog) IsGeminiYoloMode ¶ added in v0.8.35
IsGeminiYoloMode returns whether YOLO mode is enabled for Gemini
func (*NewDialog) IsWorktreeEnabled ¶ added in v0.8.22
IsWorktreeEnabled returns whether worktree mode is enabled
func (*NewDialog) SetDefaultTool ¶ added in v0.4.3
SetDefaultTool sets the pre-selected command based on tool name Call this before Show/ShowInGroup to apply user's preferred default
func (*NewDialog) SetError ¶ added in v0.8.80
SetError sets an inline validation error displayed inside the dialog
func (*NewDialog) SetGeminiYoloMode ¶ added in v0.8.35
SetGeminiYoloMode sets the YOLO mode state
func (*NewDialog) SetPathSuggestions ¶
SetPathSuggestions sets the available path suggestions for autocomplete
func (*NewDialog) Show ¶
func (d *NewDialog) Show()
Show makes the dialog visible (uses default group)
func (*NewDialog) ShowInGroup ¶
ShowInGroup shows the dialog with a pre-selected parent group and optional default path
func (*NewDialog) ToggleWorktree ¶ added in v0.8.22
func (d *NewDialog) ToggleWorktree()
ToggleWorktree toggles the worktree checkbox
type Preview ¶
type Preview struct {
// contains filtered or unexported fields
}
Preview shows session terminal content
func (*Preview) SetContent ¶
SetContent sets the preview content
type PreviewMode ¶ added in v0.8.61
type PreviewMode int
PreviewMode defines what to show in the preview pane
const ( PreviewModeBoth PreviewMode = iota // Show both analytics and output (default) PreviewModeOutput // Show output only (content preview) PreviewModeAnalytics // Show analytics only )
type Search ¶
type Search struct {
// contains filtered or unexported fields
}
Search represents the search overlay component
func (*Search) Update ¶
Update handles messages for the search overlay Returns the updated Search and any command to execute
func (*Search) WantsSwitchToGlobal ¶ added in v0.5.3
WantsSwitchToGlobal returns true if user pressed Tab to switch to global search
type SessionPickerDialog ¶ added in v0.8.80
type SessionPickerDialog struct {
// contains filtered or unexported fields
}
SessionPickerDialog presents a list of sessions for the user to select from. Used by the "x" (send output) feature to pick a target session.
func NewSessionPickerDialog ¶ added in v0.8.80
func NewSessionPickerDialog() *SessionPickerDialog
NewSessionPickerDialog creates a new session picker dialog.
func (*SessionPickerDialog) GetSelected ¶ added in v0.8.80
func (d *SessionPickerDialog) GetSelected() *session.Instance
GetSelected returns the session at the current cursor position, or nil.
func (*SessionPickerDialog) GetSource ¶ added in v0.8.80
func (d *SessionPickerDialog) GetSource() *session.Instance
GetSource returns the source session.
func (*SessionPickerDialog) Hide ¶ added in v0.8.80
func (d *SessionPickerDialog) Hide()
Hide closes the dialog and resets state.
func (*SessionPickerDialog) IsVisible ¶ added in v0.8.80
func (d *SessionPickerDialog) IsVisible() bool
IsVisible returns whether the dialog is currently shown.
func (*SessionPickerDialog) SetSize ¶ added in v0.8.80
func (d *SessionPickerDialog) SetSize(w, h int)
SetSize updates the dialog dimensions for centering.
func (*SessionPickerDialog) Show ¶ added in v0.8.80
func (d *SessionPickerDialog) Show(source *session.Instance, allInstances []*session.Instance)
Show opens the picker with the source session and all available instances. Filters out the source session and sessions in error status.
func (*SessionPickerDialog) Update ¶ added in v0.8.80
func (d *SessionPickerDialog) Update(msg tea.KeyMsg) (*SessionPickerDialog, tea.Cmd)
Update handles key events for the picker.
func (*SessionPickerDialog) View ¶ added in v0.8.80
func (d *SessionPickerDialog) View() string
View renders the session picker dialog.
type SettingType ¶ added in v0.8.16
type SettingType int
SettingType identifies which setting is being edited
const ( SettingTheme SettingType = iota // Theme must be first (index 0) SettingDefaultTool SettingDangerousMode SettingClaudeConfigDir SettingGeminiYoloMode SettingCheckForUpdates SettingAutoUpdate SettingLogMaxSize SettingLogMaxLines SettingRemoveOrphans SettingGlobalSearchEnabled SettingSearchTier SettingRecentDays SettingShowOutput SettingShowAnalytics SettingMaintenanceEnabled )
type SettingsPanel ¶ added in v0.8.16
type SettingsPanel struct {
// contains filtered or unexported fields
}
SettingsPanel displays and edits user configuration
func NewSettingsPanel ¶ added in v0.8.16
func NewSettingsPanel() *SettingsPanel
NewSettingsPanel creates a new settings panel
func (*SettingsPanel) GetConfig ¶ added in v0.8.16
func (s *SettingsPanel) GetConfig() *session.UserConfig
GetConfig returns a UserConfig with current panel values
func (*SettingsPanel) Hide ¶ added in v0.8.16
func (s *SettingsPanel) Hide()
Hide hides the settings panel
func (*SettingsPanel) IsVisible ¶ added in v0.8.16
func (s *SettingsPanel) IsVisible() bool
IsVisible returns whether the panel is visible
func (*SettingsPanel) LoadConfig ¶ added in v0.8.16
func (s *SettingsPanel) LoadConfig(config *session.UserConfig)
LoadConfig populates panel values from a UserConfig
func (*SettingsPanel) NeedsRestart ¶ added in v0.8.16
func (s *SettingsPanel) NeedsRestart() bool
NeedsRestart returns true if changes require a restart
func (*SettingsPanel) SetSize ¶ added in v0.8.16
func (s *SettingsPanel) SetSize(width, height int)
SetSize sets the panel dimensions
func (*SettingsPanel) Show ¶ added in v0.8.16
func (s *SettingsPanel) Show()
Show displays the settings panel and loads current config
func (*SettingsPanel) Update ¶ added in v0.8.16
func (s *SettingsPanel) Update(msg tea.KeyMsg) (*SettingsPanel, tea.Cmd, bool)
Update handles input and returns (panel, cmd, valueChanged)
func (*SettingsPanel) View ¶ added in v0.8.16
func (s *SettingsPanel) View() string
View renders the settings panel
type SetupWizard ¶ added in v0.8.16
type SetupWizard struct {
// contains filtered or unexported fields
}
SetupWizard represents the first-time setup wizard dialog It guides users through initial configuration when config.toml doesn't exist
func NewSetupWizard ¶ added in v0.8.16
func NewSetupWizard() *SetupWizard
NewSetupWizard creates a new setup wizard
func (*SetupWizard) GetConfig ¶ added in v0.8.16
func (w *SetupWizard) GetConfig() *session.UserConfig
GetConfig returns the user configuration based on wizard selections
func (*SetupWizard) IsComplete ¶ added in v0.8.16
func (w *SetupWizard) IsComplete() bool
IsComplete returns whether the wizard has been completed
func (*SetupWizard) IsVisible ¶ added in v0.8.16
func (w *SetupWizard) IsVisible() bool
IsVisible returns whether the wizard is visible
func (*SetupWizard) SetSize ¶ added in v0.8.16
func (w *SetupWizard) SetSize(width, height int)
SetSize updates the wizard dimensions
func (*SetupWizard) Show ¶ added in v0.8.16
func (w *SetupWizard) Show()
Show makes the wizard visible
func (*SetupWizard) Update ¶ added in v0.8.16
func (w *SetupWizard) Update(msg tea.Msg) (*SetupWizard, tea.Cmd)
Update handles key events for the wizard
func (*SetupWizard) View ¶ added in v0.8.16
func (w *SetupWizard) View() string
View renders the wizard dialog
type StorageWatcher ¶ added in v0.6.1
type StorageWatcher struct {
// contains filtered or unexported fields
}
StorageWatcher monitors sessions.json for external changes
func NewStorageWatcher ¶ added in v0.6.1
func NewStorageWatcher(storagePath string) (*StorageWatcher, error)
NewStorageWatcher creates a watcher for the given storage file
func (*StorageWatcher) Close ¶ added in v0.6.1
func (sw *StorageWatcher) Close() error
Close stops the watcher and releases resources. Safe to call multiple times.
func (*StorageWatcher) NotifySave ¶ added in v0.7.0
func (sw *StorageWatcher) NotifySave()
NotifySave should be called by the TUI right before it saves to storage. This marks the current time so the watcher can ignore the resulting file change.
func (*StorageWatcher) ReloadChannel ¶ added in v0.6.1
func (sw *StorageWatcher) ReloadChannel() <-chan struct{}
ReloadChannel returns the channel that signals when reload is needed
func (*StorageWatcher) Start ¶ added in v0.6.1
func (sw *StorageWatcher) Start()
Start begins watching for file changes (non-blocking)
type Theme ¶ added in v0.8.16
type Theme string
Theme represents the current color scheme
func GetCurrentTheme ¶ added in v0.8.16
func GetCurrentTheme() Theme
GetCurrentTheme returns the active theme
type Tree ¶
type Tree struct {
// contains filtered or unexported fields
}
Tree manages folder structure
func (*Tree) GetFolder ¶
func (t *Tree) GetFolder(name string) *TreeFolder
GetFolder returns a folder by name
func (*Tree) GetFolders ¶
GetFolders returns all folder names in order
func (*Tree) IsFolderExpanded ¶
IsFolderExpanded returns whether a folder is expanded
func (*Tree) SetFolderCount ¶
SetFolderCount sets the session count for a folder
func (*Tree) ToggleFolder ¶
ToggleFolder toggles folder expansion
type TreeFolder ¶
TreeFolder represents a folder in the tree