Versions in this module Expand all Collapse all v0 v0.17.15 May 11, 2026 v0.17.14 May 11, 2026 Changes in this version + const KeyCtrlC + const KeyDown + const KeyEnter + const KeyEsc + const KeyQuit + const KeyTab + const KeyUp + const StatusActive + const StatusDone + const StatusError + const StatusPending + const StatusSkipped + const StatusWaiting + var ErrInteractiveDisabled = fmt.Errorf(...) + var PromptConfirm = func(prompt string, defaultValue bool) (bool, error) + var Stories = []Story + func BuildFullAnnotation(eng engine.Engine, branch engine.Branch, enrichment *AnnotationEnrichment) tree.BranchAnnotation + func CheckInteractiveAllowed() error + func GetBranchAnnotation(eng engine.BranchReader, branch engine.Branch) tree.BranchAnnotation + func GetEmptyWorktrees(eng engine.Engine) map[string]*engine.WorktreeInfo + func GetMinimalAnnotationWithWorktreeAndEmpty(eng engine.Engine, branch engine.Branch, wtData *WorktreeData) tree.BranchAnnotation + func IsTTY() bool + func NewBranchSelectModel(message string, choices []BranchChoice, initialIndex int) tea.Model + func NewConfirmModel(prompt string, defaultValue bool) tea.Model + func NewReorderModel(branches []string, trunk string) tea.Model + func NewSelectModel(title string, options []SelectOption, defaultIndex int) tea.Model + func NewStackTreeRenderer(eng engine.BranchReader) *tree.StackTreeRenderer + func NewStackTreeRendererWithEmptyWorktrees(eng engine.BranchReader, emptyWorktrees map[string]bool) *tree.StackTreeRenderer + func NewStackTreeRendererWithFilter(eng engine.BranchReader, filter func(string) bool) *tree.StackTreeRenderer + func NewStackTreeRendererWithOptions(eng engine.BranchReader, strategy engine.SortStrategy, ...) *tree.StackTreeRenderer + func NewStackTreeRendererWithStrategy(eng engine.BranchReader, strategy engine.SortStrategy, ...) *tree.StackTreeRenderer + func NewTextInputModel(prompt, defaultValue string) tea.Model + func OpenEditor(initialContent, filenamePattern string) (string, error) + func PromptBranchCheckout(branches []engine.Branch, eng engine.BranchReader) (string, error) + func PromptBranchSelection(message string, choices []BranchChoice, initialIndex int) (string, error) + func PromptLogSelect(ctx context.Context, eng engine.Engine, ghClient github.Client, ...) (string, error) + func PromptMultiSelect(title string, options []string) ([]string, error) + func PromptMultiSelectWithDefaults(title string, options []string, preSelected []bool) ([]string, error) + func PromptSelect(title string, options []SelectOption, defaultIndex int) (string, error) + func PromptSelectHunks(hunks []git.Hunk) ([]git.Hunk, error) + func PromptTextInput(prompt, defaultValue string) (string, error) + func RegisterStory(story Story) + func RenderFlattenPreview(preview FlattenPreviewData) string + func RenderMovePreviewSimple(preview MovePreviewData) string + func RunReorderTUI(branches []string, trunk string) ([]string, error) + func RunSubmitTUI(items []submit.Item, submitFunc func(idx int) tea.Cmd) error + func RunSubmitTUISimple(items []submit.Item, submitFunc func(idx int) (string, error), ...) error + func SafeCmd(name string, logger output.Logger, cmd tea.Cmd) tea.Cmd + func SafeCmdFunc(name string, logger output.Logger, fn func() tea.Msg) tea.Cmd + func SetInteractive(interactive bool) + type AllDoneMsg struct + type AnnotationEnrichment struct + CIStatuses map[string]*github.CheckStatus + EmptyWorktrees map[string]*engine.WorktreeInfo + WorktreeByStackRoot map[string]*engine.WorktreeInfo + type BaseModel = core.BaseModel + type BranchChoice struct + Display string + Value string + type CompleteMsg struct + Error error + Success bool + Summary string + type Direction string + const DirectionAbove + const DirectionBelow + func PromptDirectionSelect(eng engine.BranchReader, currentBranch, parentBranch string, children []string) (Direction, error) + type DirectionSelectModel struct + func NewDirectionSelectModel(eng engine.BranchReader, currentBranch, parentBranch string, children []string) *DirectionSelectModel + func (m *DirectionSelectModel) Back() bool + func (m *DirectionSelectModel) Direction() Direction + func (m *DirectionSelectModel) Err() error + func (m *DirectionSelectModel) Init() tea.Cmd + func (m *DirectionSelectModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) + func (m *DirectionSelectModel) View() tea.View + type FileGroup struct + Binary bool + File string + Hunks []int + type FlattenExcludedBranch struct + Branch string + Reason string + type FlattenPlannedMove struct + Branch string + NewParent string + OldParent string + type FlattenPreviewData struct + ExcludedBranches []FlattenExcludedBranch + Moves []FlattenPlannedMove + UnchangedCount int + type Handler interface + Cleanup func() + IsInteractive func() bool + type HunkItem struct + Expanded bool + Hunk git.Hunk + Selected bool + Splittable bool + type HunkSelectorModel struct + func NewHunkSelectorModel(hunks []git.Hunk) *HunkSelectorModel + func (m *HunkSelectorModel) Err() error + func (m *HunkSelectorModel) Init() tea.Cmd + func (m *HunkSelectorModel) Reset() + func (m *HunkSelectorModel) SelectedHunks() []git.Hunk + func (m *HunkSelectorModel) SetHunks(hunks []git.Hunk) + func (m *HunkSelectorModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) + func (m *HunkSelectorModel) View() tea.View + type LogMode int + const LogModeSelect + const LogModeView + type LogModel struct + func NewLogModel(ctx context.Context, eng engine.Engine, ghClient github.Client, ...) *LogModel + func (m *LogModel) Init() tea.Cmd + func (m *LogModel) SetAltScreen(enabled bool) + func (m *LogModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) + func (m *LogModel) View() tea.View + type LogOptions struct + AnnotationOverrides map[string]tree.BranchAnnotation + Exclude map[string]bool + Header string + Inline bool + Logger output.Logger + NonSelectable map[string]bool + ShowUntracked bool + SkipEnrichment bool + Style string + ValidateSelection func(branchName string) *SelectionValidation + type MessageRecorder struct + func NewMessageRecorder() *MessageRecorder + func (r *MessageRecorder) Count() int + func (r *MessageRecorder) HasMessage(predicate func(tea.Msg) bool) bool + func (r *MessageRecorder) Messages() []tea.Msg + func (r *MessageRecorder) Record(msg tea.Msg) + func (r *MessageRecorder) Reset() + type MockRunner struct + func NewMockRunner() *MockRunner + func (m *MockRunner) Cleanup() + func (m *MockRunner) IsHealthy() bool + func (m *MockRunner) MessageCount() int + func (m *MockRunner) Messages() []tea.Msg + func (m *MockRunner) Pause() + func (m *MockRunner) Reset() + func (m *MockRunner) Resume() + func (m *MockRunner) Send(msg tea.Msg) + func (m *MockRunner) Start() + func (m *MockRunner) Wait() + type MoveModel struct + func NewMoveModel(eng engine.Engine, config MoveModelConfig) *MoveModel + func (m *MoveModel) Init() tea.Cmd + func (m *MoveModel) Result() MoveResult + func (m *MoveModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) + func (m *MoveModel) View() tea.View + type MoveModelConfig struct + Descendants []engine.Branch + OldParent *engine.Branch + OldParentRev string + SourceBranch string + Validator MoveValidator + type MovePreviewData struct + Commits []string + ConflictBranch string + ConflictError string + Descendants []string + HasConflicts bool + NewParent string + OldParent string + SourceBranch string + type MoveResult struct + Canceled bool + RebaseSpecs []engine.RebaseSpec + SelectedParent string + func PromptMoveSelect(eng engine.Engine, config MoveModelConfig) (MoveResult, error) + type MoveValidation struct + Commits []string + ConflictBranch string + ConflictError string + HasConflicts bool + Message string + RebaseSpecs []engine.RebaseSpec + Valid bool + type MoveValidator func(ontoBranch string) (*MoveValidation, error) + type PanicError struct + Err error + Source string + Stack string + func (p PanicError) Error() string + type PhaseHandler interface + CompletePhase func(phase string) + PhaseDetail func(phase, detail string) + StartPhase func(phase string) + type PhaseMsg struct + Detail string + Phase string + Status Status + type ProgressHandler interface + Complete func(summary string) + Progress func(completed, total int) + Start func(totalOps int) + type ProgressMsg struct + Completed int + Total int + func (m ProgressMsg) Percent() float64 + type PromptHandler interface + SupportsPrompts func() bool + type ReadySignaler = core.ReadySignaler + type Runner struct + func NewRunner(model tea.Model, out output.Output, logger output.Logger) *Runner + func NewRunnerWithContext(ctx context.Context, model tea.Model, out output.Output, logger output.Logger) *Runner + func (r *Runner) Cleanup() + func (r *Runner) Context() context.Context + func (r *Runner) IsHealthy() bool + func (r *Runner) IsRunning() bool + func (r *Runner) MustSend(msg tea.Msg) + func (r *Runner) Pause() + func (r *Runner) Resume() + func (r *Runner) Send(msg tea.Msg) + func (r *Runner) SendWithTimeout(msg tea.Msg, timeout time.Duration) error + func (r *Runner) Start() + func (r *Runner) Wait() + type SelectOption struct + Label string + Value string + type SelectionValidation struct + Message string + Valid bool + type Sender interface + Cleanup func() + IsHealthy func() bool + Pause func() + Resume func() + Send func(msg tea.Msg) + Wait func() + type Status = core.Status + type Story struct + Category string + CreateModel func() tea.Model + Description string + Name string + type SubmitResultMsg struct + Error error + Idx int + URL string + type SubmitTUIModel struct + func NewSubmitTUIModel(items []submit.Item, submitFunc func(idx int) tea.Cmd) SubmitTUIModel + func (m SubmitTUIModel) Init() tea.Cmd + func (m SubmitTUIModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) + func (m SubmitTUIModel) View() tea.View + type WorktreeData struct + EmptyWorktrees map[string]*engine.WorktreeInfo + WorktreeByStackRoot map[string]*engine.WorktreeInfo + func GetWorktreeData(eng engine.Engine) *WorktreeData