Documentation
¶
Index ¶
- Constants
- Variables
- 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 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 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 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
- 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 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) 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
- 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("#565f89") // Dim text 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("#565f89") // Comment gray )
Tokyo Night Color Palette
const ( IconClaude = "🤖" IconGemini = "✨" IconAider = "🔧" 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 RenderLogoCompact ¶
RenderLogoCompact renders the compact inline logo for the header Shows REAL status: running=●, waiting=◐, idle=○ Format: [●│◐│○]
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
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 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 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
type List ¶
type List struct {
// contains filtered or unexported fields
}
List manages session list display
func (*List) ToggleFolder ¶
ToggleFolder toggles the current folder
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) 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
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