Documentation
¶
Index ¶
- Constants
- Variables
- func MenuKey(key, description string) string
- func RenderEmptyStateResponsiveForTest(config EmptyStateConfig, width, height int) 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 ConfirmDialog
- func (c *ConfirmDialog) GetConfirmType() ConfirmType
- func (c *ConfirmDialog) GetTargetID() string
- func (c *ConfirmDialog) Hide()
- func (c *ConfirmDialog) IsVisible() bool
- func (c *ConfirmDialog) SetSize(width, height int)
- func (c *ConfirmDialog) ShowDeleteGroup(groupPath, groupName string)
- func (c *ConfirmDialog) ShowDeleteSession(sessionID, sessionName string)
- func (c *ConfirmDialog) Update(msg tea.KeyMsg) (*ConfirmDialog, tea.Cmd)
- func (c *ConfirmDialog) View() string
- type ConfirmType
- type EmptyStateConfig
- type ForkDialog
- func (d *ForkDialog) GetValues() (name, group string)
- func (d *ForkDialog) Hide()
- func (d *ForkDialog) IsVisible() bool
- func (d *ForkDialog) SetSize(width, height int)
- func (d *ForkDialog) Show(originalName, projectPath, groupPath string)
- func (d *ForkDialog) Update(msg tea.Msg) (*ForkDialog, tea.Cmd)
- func (d *ForkDialog) 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) 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) SetSize(width, height int)
- func (g *GroupDialog) Show()
- func (g *GroupDialog) ShowCreateSubgroup(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) Update(msg tea.KeyMsg) (*GroupDialog, tea.Cmd)
- func (g *GroupDialog) Validate() string
- func (g *GroupDialog) View() string
- type GroupDialogMode
- type HelpOverlay
- type Home
- func (h *Home) Init() tea.Cmd
- func (h *Home) RenderPanelTitleForTest(title string, width int) string
- func (h *Home) RenderPreviewPaneForTest(width, height int) string
- func (h *Home) RenderSessionListForTest(width, height int) string
- func (h *Home) SetCursorForTest(cursor int)
- func (h *Home) SetFlatItemsForTest(items []session.Item)
- func (h *Home) SetSizeForTest(width, height int)
- func (h *Home) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (h *Home) View() string
- 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) error
- func (m *MCPDialog) Update(msg tea.KeyMsg) (*MCPDialog, tea.Cmd)
- func (m *MCPDialog) View() string
- type MCPItem
- type MCPScope
- type Menu
- type NewDialog
- func (d *NewDialog) GetSelectedGroup() string
- func (d *NewDialog) GetValues() (name, path, command string)
- func (d *NewDialog) Hide()
- func (d *NewDialog) IsVisible() bool
- func (d *NewDialog) SetDefaultTool(tool string)
- func (d *NewDialog) SetPathSuggestions(paths []string)
- func (d *NewDialog) SetSize(width, height int)
- func (d *NewDialog) Show()
- func (d *NewDialog) ShowInGroup(groupPath, groupName string)
- func (d *NewDialog) Update(msg tea.Msg) (*NewDialog, tea.Cmd)
- func (d *NewDialog) Validate() string
- func (d *NewDialog) View() string
- type Preview
- 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 StorageWatcher
- 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 ( ColorBg = lipgloss.Color("#1a1b26") // Dark background ColorSurface = lipgloss.Color("#24283b") // Surface background ColorBorder = lipgloss.Color("#414868") // Border color ColorText = lipgloss.Color("#c0caf5") // Primary text ColorTextDim = lipgloss.Color("#787fa0") // Dim text (WCAG AA compliant - 4.6:1 contrast) ColorAccent = lipgloss.Color("#7aa2f7") // Accent blue ColorPurple = lipgloss.Color("#bb9af7") // Purple ColorCyan = lipgloss.Color("#7dcfff") // Cyan ColorGreen = lipgloss.Color("#9ece6a") // Green ColorYellow = lipgloss.Color("#e0af68") // Yellow ColorOrange = lipgloss.Color("#ff9e64") // Orange ColorRed = lipgloss.Color("#f7768e") // Red ColorComment = lipgloss.Color("#787fa0") // Comment gray (WCAG AA compliant - 4.6:1 contrast) )
Tokyo Night Color Palette
const ( IconClaude = "🤖" IconGemini = "✨" IconOpenCode = "🌐" IconCodex = "💻" IconShell = "🐚" )
Tool Icons
Variables ¶
var ( BaseStyle = lipgloss.NewStyle(). Foreground(ColorText). Background(ColorBg) TitleStyle = lipgloss.NewStyle(). Bold(true). Foreground(ColorAccent). Background(ColorSurface). Padding(0, 1) PanelStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(ColorBorder). Padding(0, 1) HighlightStyle = lipgloss.NewStyle(). Foreground(ColorBg). Background(ColorAccent). Bold(true) DimStyle = lipgloss.NewStyle(). Foreground(ColorComment) ErrorStyle = lipgloss.NewStyle(). Foreground(ColorRed). Bold(true) SuccessStyle = lipgloss.NewStyle(). Foreground(ColorGreen). Bold(true) WarningStyle = lipgloss.NewStyle(). Foreground(ColorYellow). Bold(true) InfoStyle = lipgloss.NewStyle(). Foreground(ColorCyan) )
Base Styles
var ( RunningStyle = lipgloss.NewStyle(). Foreground(ColorGreen). Bold(true) WaitingStyle = lipgloss.NewStyle(). Foreground(ColorYellow). Bold(true) IdleStyle = lipgloss.NewStyle(). Foreground(ColorComment) ErrorIndicatorStyle = lipgloss.NewStyle(). Foreground(ColorRed). Bold(true) )
Status Indicator Styles
var ( MenuBarStyle = lipgloss.NewStyle(). Background(ColorSurface). Foreground(ColorText). Padding(0, 1) MenuKeyStyle = lipgloss.NewStyle(). Foreground(ColorAccent). Bold(true) MenuDescStyle = lipgloss.NewStyle(). Foreground(ColorText) MenuSeparatorStyle = lipgloss.NewStyle(). Foreground(ColorBorder) )
Menu Bar Styles
var ( SearchBoxStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(ColorAccent). Padding(0, 1). Foreground(ColorText) SearchPromptStyle = lipgloss.NewStyle(). Foreground(ColorPurple). Bold(true) SearchMatchStyle = lipgloss.NewStyle(). Background(ColorYellow). Foreground(ColorBg). Bold(true) )
Search Styles
var ( DialogBoxStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(ColorPurple). Padding(1, 2). Background(ColorSurface) DialogTitleStyle = lipgloss.NewStyle(). Foreground(ColorPurple). Bold(true). Align(lipgloss.Center) DialogButtonStyle = lipgloss.NewStyle(). Foreground(ColorAccent). Background(ColorBorder). Padding(0, 2). MarginRight(1) DialogButtonActiveStyle = lipgloss.NewStyle(). Foreground(ColorBg). Background(ColorAccent). Padding(0, 2). MarginRight(1). Bold(true) )
Dialog Styles
var ( PreviewPanelStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(ColorBorder). Padding(1) PreviewTitleStyle = lipgloss.NewStyle(). Foreground(ColorCyan). Bold(true). Underline(true) PreviewHeaderStyle = lipgloss.NewStyle(). Foreground(ColorPurple). Bold(true) PreviewContentStyle = lipgloss.NewStyle(). Foreground(ColorText) PreviewMetaStyle = lipgloss.NewStyle(). Foreground(ColorComment). Italic(true) )
Preview Pane Styles
var ( ListItemStyle = lipgloss.NewStyle(). Foreground(ColorText). PaddingLeft(2) ListItemSelectedStyle = lipgloss.NewStyle(). Foreground(ColorBg). Background(ColorAccent). Bold(true). PaddingLeft(1) ListItemActiveStyle = lipgloss.NewStyle(). Foreground(ColorAccent). Bold(true). PaddingLeft(2) )
List Item Styles
var ( TagStyle = lipgloss.NewStyle(). Foreground(ColorBg). Background(ColorPurple). Padding(0, 1). MarginRight(1) TagActiveStyle = lipgloss.NewStyle(). Foreground(ColorBg). Background(ColorGreen). Padding(0, 1). MarginRight(1) TagErrorStyle = lipgloss.NewStyle(). Foreground(ColorBg). Background(ColorRed). Padding(0, 1). MarginRight(1) )
Tag Styles
var ( FolderStyle = lipgloss.NewStyle(). Foreground(ColorAccent). Bold(true) FolderCollapsedStyle = lipgloss.NewStyle(). Foreground(ColorComment) )
Folder Styles
var ( SessionItemStyle = lipgloss.NewStyle(). Foreground(ColorText). PaddingLeft(2) SessionItemSelectedStyle = lipgloss.NewStyle(). Foreground(ColorBg). Background(ColorAccent). Bold(true). PaddingLeft(0) )
Session Item Styles
var ( SubtitleStyle = lipgloss.NewStyle(). Foreground(ColorComment). Italic(true) ColorError = ColorRed ColorSuccess = ColorGreen ColorWarning = ColorYellow ColorPrimary = ColorAccent )
Additional Styles
var LogoBorderStyle = lipgloss.NewStyle().Foreground(ColorBorder)
LogoBorderStyle for the grid lines
var LogoFrames = [][]string{
{"●", "◐", "○"},
}
LogoFrames kept for backward compatibility (empty state default)
var ( MenuStyle = lipgloss.NewStyle(). Background(ColorSurface). Foreground(ColorText). Padding(0, 1) )
Menu Styles
var ( TimestampStyle = lipgloss.NewStyle(). Foreground(ColorComment). Italic(true) )
Timestamp Style
var Version = "0.0.0"
Version is set by main.go for update checking
Functions ¶
func RenderEmptyStateResponsiveForTest ¶ added in v0.6.1
func RenderEmptyStateResponsiveForTest(config EmptyStateConfig, width, height int) string
RenderEmptyStateResponsiveForTest exposes renderEmptyStateResponsive for testing
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
Types ¶
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) 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) 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) 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 )
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) GetValues ¶ added in v0.4.1
func (d *ForkDialog) GetValues() (name, group string)
GetValues returns the current input values
func (*ForkDialog) IsVisible ¶ added in v0.4.1
func (d *ForkDialog) IsVisible() bool
IsVisible returns whether the dialog is visible
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) Update ¶ added in v0.4.1
func (d *ForkDialog) Update(msg tea.Msg) (*ForkDialog, tea.Cmd)
Update handles input events
func (*ForkDialog) View ¶ added in v0.4.1
func (d *ForkDialog) 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) 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) 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) 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) 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 NewTestHome ¶ added in v0.6.1
func NewTestHome() *Home
NewTestHome creates a minimal Home instance for testing
func (*Home) RenderPanelTitleForTest ¶ added in v0.6.1
RenderPanelTitleForTest exposes renderPanelTitle for testing
func (*Home) RenderPreviewPaneForTest ¶ added in v0.6.1
RenderPreviewPaneForTest exposes renderPreviewPane for testing
func (*Home) RenderSessionListForTest ¶ added in v0.6.1
RenderSessionListForTest exposes renderSessionList for testing
func (*Home) SetCursorForTest ¶ added in v0.6.1
SetCursorForTest sets the cursor field for testing
func (*Home) SetFlatItemsForTest ¶ added in v0.6.1
SetFlatItemsForTest sets the flatItems field for testing
func (*Home) SetSizeForTest ¶ added in v0.6.1
SetSizeForTest sets the width and height fields for testing
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 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) and GLOBAL (Claude config)
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 (either 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
}
MCPItem represents an MCP in the dialog list
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) GetSelectedGroup ¶
GetSelectedGroup returns the parent group path
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) 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
type Preview ¶
type Preview struct {
// contains filtered or unexported fields
}
Preview shows session terminal content
func (*Preview) SetContent ¶
SetContent sets the preview content
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 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
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 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