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) AtTop() bool
- 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) tea.Cmd
- func (p *ClaudeOptionsPanel) View() string
- type ConfirmDialog
- func (c *ConfirmDialog) GetConfirmType() ConfirmType
- func (c *ConfirmDialog) GetPendingSession() (name, path, command, groupPath string, toolOptionsJSON json.RawMessage)
- 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, toolOptionsJSON json.RawMessage)
- func (c *ConfirmDialog) ShowDeleteGroup(groupPath, groupName string)
- func (c *ConfirmDialog) ShowDeleteSession(sessionID, sessionName string)
- func (c *ConfirmDialog) ShowInstallHooks()
- 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) GetCodexYoloMode() bool
- 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) 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 OptionsPanel
- 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) SetProfile(profile string)
- 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 SkillColumn
- type SkillDialog
- func (d *SkillDialog) Apply() error
- func (d *SkillDialog) GetError() error
- func (d *SkillDialog) GetSessionID() string
- func (d *SkillDialog) HasChanged() bool
- func (d *SkillDialog) Hide()
- func (d *SkillDialog) IsVisible() bool
- func (d *SkillDialog) Move()
- func (d *SkillDialog) SetSize(width, height int)
- func (d *SkillDialog) Show(projectPath, sessionID, tool string) error
- func (d *SkillDialog) Update(msg tea.KeyMsg) (*SkillDialog, tea.Cmd)
- func (d *SkillDialog) View() string
- type SkillDialogItem
- type StorageWatcher
- type Theme
- type ThemeWatcher
- 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
- type WorktreeFinishDialog
- func (d *WorktreeFinishDialog) GetOptions() (mergeEnabled bool, targetBranch string, keepBranch bool)
- func (d *WorktreeFinishDialog) GetSessionID() string
- func (d *WorktreeFinishDialog) HandleKey(key string) (action string)
- func (d *WorktreeFinishDialog) Hide()
- func (d *WorktreeFinishDialog) IsVisible() bool
- func (d *WorktreeFinishDialog) SetDirtyStatus(isDirty bool)
- func (d *WorktreeFinishDialog) SetError(msg string)
- func (d *WorktreeFinishDialog) SetExecuting(executing bool)
- func (d *WorktreeFinishDialog) SetSize(width, height int)
- func (d *WorktreeFinishDialog) Show(...)
- func (d *WorktreeFinishDialog) UpdateTargetInput(msg interface{})
- func (d *WorktreeFinishDialog) View() string
- type YoloOptionsPanel
- func (p *YoloOptionsPanel) AtTop() bool
- func (p *YoloOptionsPanel) Blur()
- func (p *YoloOptionsPanel) Focus()
- func (p *YoloOptionsPanel) GetYoloMode() bool
- func (p *YoloOptionsPanel) IsFocused() bool
- func (p *YoloOptionsPanel) SetDefaults(yoloMode bool)
- func (p *YoloOptionsPanel) Update(msg tea.Msg) tea.Cmd
- func (p *YoloOptionsPanel) View() string
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. Read-locked to protect against concurrent map access during live theme switches.
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. Read-locked to protect against concurrent style access during live theme switches. 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) AtTop ¶ added in v0.10.18
func (p *ClaudeOptionsPanel) AtTop() bool
AtTop returns true if focus is on the first element
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) 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, toolOptionsJSON json.RawMessage)
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, toolOptionsJSON json.RawMessage)
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) ShowInstallHooks ¶ added in v0.16.0
func (c *ConfirmDialog) ShowInstallHooks()
ShowInstallHooks shows confirmation for installing Claude Code hooks
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 ConfirmInstallHooks )
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.
func NewHomeWithProfileAndMode ¶ added in v0.8.74
NewHomeWithProfileAndMode creates a new Home with the specified profile. All instances manage the notification bar equally via shared SQLite state.
func (*Home) SetWebMenuData ¶ added in v0.19.0
func (h *Home) SetWebMenuData(menuData *web.MemoryMenuData)
SetWebMenuData configures an optional in-memory menu sink for web mode.
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) GetCodexYoloMode ¶ added in v0.10.18
GetCodexYoloMode returns the Codex YOLO mode state
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) 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. When enabling, auto-populates the branch name from the session name.
type OptionsPanel ¶ added in v0.10.18
type OptionsPanel interface {
Focus()
Blur()
IsFocused() bool
AtTop() bool
Update(tea.Msg) tea.Cmd
View() string
}
OptionsPanel is the interface for tool-specific option panels in session dialogs. Implemented by ClaudeOptionsPanel and YoloOptionsPanel.
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 SettingCodexYoloMode 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) SetProfile ¶ added in v0.19.1
func (s *SettingsPanel) SetProfile(profile string)
SetProfile sets the active profile for profile-aware settings.
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 SkillColumn ¶ added in v0.19.1
type SkillColumn int
SkillColumn identifies the focused column.
const ( SkillColumnAttached SkillColumn = iota SkillColumnAvailable )
type SkillDialog ¶ added in v0.19.1
type SkillDialog struct {
// contains filtered or unexported fields
}
SkillDialog manages project-scoped Claude skills.
func NewSkillDialog ¶ added in v0.19.1
func NewSkillDialog() *SkillDialog
NewSkillDialog creates a skill manager dialog instance.
func (*SkillDialog) Apply ¶ added in v0.19.1
func (d *SkillDialog) Apply() error
Apply saves project skills according to attached column state.
func (*SkillDialog) GetError ¶ added in v0.19.1
func (d *SkillDialog) GetError() error
GetError returns the latest apply error.
func (*SkillDialog) GetSessionID ¶ added in v0.19.1
func (d *SkillDialog) GetSessionID() string
GetSessionID returns the managed session ID.
func (*SkillDialog) HasChanged ¶ added in v0.19.1
func (d *SkillDialog) HasChanged() bool
HasChanged indicates whether user moved any item.
func (*SkillDialog) IsVisible ¶ added in v0.19.1
func (d *SkillDialog) IsVisible() bool
IsVisible returns whether dialog is shown.
func (*SkillDialog) Move ¶ added in v0.19.1
func (d *SkillDialog) Move()
Move toggles one item between attached and available lists.
func (*SkillDialog) SetSize ¶ added in v0.19.1
func (d *SkillDialog) SetSize(width, height int)
SetSize updates dialog dimensions.
func (*SkillDialog) Show ¶ added in v0.19.1
func (d *SkillDialog) Show(projectPath, sessionID, tool string) error
Show opens the dialog for a specific project/session.
func (*SkillDialog) Update ¶ added in v0.19.1
func (d *SkillDialog) Update(msg tea.KeyMsg) (*SkillDialog, tea.Cmd)
Update handles keyboard input while dialog is visible.
func (*SkillDialog) View ¶ added in v0.19.1
func (d *SkillDialog) View() string
View renders the dialog body.
type SkillDialogItem ¶ added in v0.19.1
type SkillDialogItem struct {
Candidate session.SkillCandidate
}
SkillDialogItem wraps one discovered skill.
type StorageWatcher ¶ added in v0.6.1
type StorageWatcher struct {
// contains filtered or unexported fields
}
StorageWatcher monitors the SQLite database for external changes by polling the metadata.last_modified timestamp. Replaces the previous fsnotify-based watcher which had reliability issues on certain filesystems (9p, NFS, WSL).
func NewStorageWatcher ¶ added in v0.6.1
func NewStorageWatcher(db *statedb.StateDB) (*StorageWatcher, error)
NewStorageWatcher creates a watcher that polls the SQLite metadata for changes.
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 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 polling for changes (non-blocking).
func (*StorageWatcher) TriggerReload ¶ added in v0.10.15
func (sw *StorageWatcher) TriggerReload()
TriggerReload sends a reload signal. Used as a manual trigger for reload (e.g., after CLI command changes).
func (*StorageWatcher) Warning ¶ added in v0.10.15
func (sw *StorageWatcher) Warning() string
Warning returns empty string. SQLite polling works on all filesystems.
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 ThemeWatcher ¶ added in v0.15.0
type ThemeWatcher struct {
// contains filtered or unexported fields
}
ThemeWatcher monitors OS dark mode changes and signals the UI to update. Follows the same pattern as StorageWatcher: goroutine + buffered channel + Close().
func NewThemeWatcher ¶ added in v0.15.0
func NewThemeWatcher(parentCtx context.Context) *ThemeWatcher
NewThemeWatcher creates and starts a theme watcher. Returns nil if WatchDarkMode fails (caller should fall back gracefully).
func (*ThemeWatcher) ChangeChannel ¶ added in v0.15.0
func (tw *ThemeWatcher) ChangeChannel() <-chan bool
ChangeChannel returns the channel that receives dark mode changes.
func (*ThemeWatcher) Close ¶ added in v0.15.0
func (tw *ThemeWatcher) Close()
Close stops the watcher goroutine. Safe to call multiple times.
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
type WorktreeFinishDialog ¶ added in v0.14.0
type WorktreeFinishDialog struct {
// contains filtered or unexported fields
}
WorktreeFinishDialog handles the two-step worktree finish flow: Step 0: Configure options (merge toggle, target branch, keep branch) Step 1: Confirm the destructive actions
func NewWorktreeFinishDialog ¶ added in v0.14.0
func NewWorktreeFinishDialog() *WorktreeFinishDialog
NewWorktreeFinishDialog creates a new worktree finish dialog
func (*WorktreeFinishDialog) GetOptions ¶ added in v0.14.0
func (d *WorktreeFinishDialog) GetOptions() (mergeEnabled bool, targetBranch string, keepBranch bool)
GetOptions returns the current dialog options
func (*WorktreeFinishDialog) GetSessionID ¶ added in v0.14.0
func (d *WorktreeFinishDialog) GetSessionID() string
GetSessionID returns the session ID this dialog is for
func (*WorktreeFinishDialog) HandleKey ¶ added in v0.14.0
func (d *WorktreeFinishDialog) HandleKey(key string) (action string)
HandleKey processes a key event and returns the action to take. Returns: action string ("close", "confirm", ""), and whether the dialog handled the key.
func (*WorktreeFinishDialog) Hide ¶ added in v0.14.0
func (d *WorktreeFinishDialog) Hide()
Hide hides the dialog and resets state
func (*WorktreeFinishDialog) IsVisible ¶ added in v0.14.0
func (d *WorktreeFinishDialog) IsVisible() bool
IsVisible returns whether the dialog is visible
func (*WorktreeFinishDialog) SetDirtyStatus ¶ added in v0.14.0
func (d *WorktreeFinishDialog) SetDirtyStatus(isDirty bool)
SetDirtyStatus updates the dirty check result
func (*WorktreeFinishDialog) SetError ¶ added in v0.14.0
func (d *WorktreeFinishDialog) SetError(msg string)
SetError sets an error message on the dialog
func (*WorktreeFinishDialog) SetExecuting ¶ added in v0.14.0
func (d *WorktreeFinishDialog) SetExecuting(executing bool)
SetExecuting sets the executing state
func (*WorktreeFinishDialog) SetSize ¶ added in v0.14.0
func (d *WorktreeFinishDialog) SetSize(width, height int)
SetSize sets the dialog dimensions for centering
func (*WorktreeFinishDialog) Show ¶ added in v0.14.0
func (d *WorktreeFinishDialog) Show(sessionID, sessionTitle, branchName, repoRoot, worktreePath, defaultBranch string)
Show displays the dialog for the given worktree session
func (*WorktreeFinishDialog) UpdateTargetInput ¶ added in v0.14.0
func (d *WorktreeFinishDialog) UpdateTargetInput(msg interface{})
UpdateTargetInput updates the target branch text input with a message
func (*WorktreeFinishDialog) View ¶ added in v0.14.0
func (d *WorktreeFinishDialog) View() string
View renders the dialog
type YoloOptionsPanel ¶ added in v0.10.18
type YoloOptionsPanel struct {
// contains filtered or unexported fields
}
YoloOptionsPanel is a UI panel for YOLO/dangerous mode options. Used for Gemini and Codex in NewDialog, matching ClaudeOptionsPanel's visual style.
func NewYoloOptionsPanel ¶ added in v0.10.18
func NewYoloOptionsPanel(toolName, label string) *YoloOptionsPanel
NewYoloOptionsPanel creates a new options panel for a tool with a single YOLO checkbox.
func (*YoloOptionsPanel) AtTop ¶ added in v0.10.18
func (p *YoloOptionsPanel) AtTop() bool
AtTop returns true (single element, always at top).
func (*YoloOptionsPanel) Blur ¶ added in v0.10.18
func (p *YoloOptionsPanel) Blur()
Blur removes focus from this panel.
func (*YoloOptionsPanel) Focus ¶ added in v0.10.18
func (p *YoloOptionsPanel) Focus()
Focus sets focus to this panel.
func (*YoloOptionsPanel) GetYoloMode ¶ added in v0.10.18
func (p *YoloOptionsPanel) GetYoloMode() bool
GetYoloMode returns the current YOLO mode state.
func (*YoloOptionsPanel) IsFocused ¶ added in v0.10.18
func (p *YoloOptionsPanel) IsFocused() bool
IsFocused returns true if the panel has focus.
func (*YoloOptionsPanel) SetDefaults ¶ added in v0.10.18
func (p *YoloOptionsPanel) SetDefaults(yoloMode bool)
SetDefaults applies default value from config.
func (*YoloOptionsPanel) Update ¶ added in v0.10.18
func (p *YoloOptionsPanel) Update(msg tea.Msg) tea.Cmd
Update handles key events.
func (*YoloOptionsPanel) View ¶ added in v0.10.18
func (p *YoloOptionsPanel) View() string
View renders the options panel matching ClaudeOptionsPanel's visual style.
Source Files
¶
- analytics_panel.go
- claudeoptions.go
- confirm_dialog.go
- forkdialog.go
- gemini_model_dialog.go
- global_search.go
- group_dialog.go
- help.go
- home.go
- list.go
- mcp_dialog.go
- menu.go
- newdialog.go
- options_panel.go
- preview.go
- search.go
- session_picker_dialog.go
- settings_panel.go
- setup_wizard.go
- skill_dialog.go
- storage_watcher.go
- styles.go
- theme_watcher.go
- tree.go
- worktree_finish_dialog.go
- yolooptions.go