Documentation
¶
Index ¶
Constants ¶
const MinHeight = 15
MinHeight is the minimum terminal height for proper display
const MinWidth = 40
MinWidth is the minimum terminal width for proper display
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActivityItem ¶
type ActivityItem struct {
Timestamp time.Time
SessionID string
Type string // "log", "action", "comment"
IssueID string
Message string
LogType models.LogType // for logs
Action models.ActionType // for actions
}
ActivityItem represents a unified activity item (log, action, or comment)
type IssueDetailsMsg ¶
type IssueDetailsMsg struct {
IssueID string
Issue *models.Issue
Handoff *models.Handoff
Logs []models.Log
BlockedBy []models.Issue // Dependencies (issues blocking this one)
Blocks []models.Issue // Dependents (issues blocked by this one)
Error error
}
IssueDetailsMsg carries fetched issue details for the modal
type Model ¶
type Model struct {
// Database and session
DB *db.DB
SessionID string
// Window dimensions
Width int
Height int
// Panel data
FocusedIssue *models.Issue
InProgress []models.Issue
Activity []ActivityItem
TaskList TaskListData
RecentHandoffs []RecentHandoff // Handoffs since monitor started
ActiveSessions []string // Sessions with recent activity
// UI state
ActivePanel Panel
ScrollOffset map[Panel]int
Cursor map[Panel]int // Per-panel cursor position (selected row)
SelectedID map[Panel]string // Per-panel selected issue ID (preserved across refresh)
ShowHelp bool
LastRefresh time.Time
StartedAt time.Time // When monitor started, to track new handoffs
Err error // Last error, if any
// Flattened rows for selection
TaskListRows []TaskListRow // Flattened task list for selection
CurrentWorkRows []string // Issue IDs for current work panel (focused + in-progress)
// Modal state for issue details
ModalOpen bool
ModalIssueID string
ModalSourcePanel Panel // Panel the modal was opened from (for navigation)
ModalScroll int
ModalLoading bool
ModalError error
ModalIssue *models.Issue
ModalHandoff *models.Handoff
ModalLogs []models.Log
ModalBlockedBy []models.Issue // Dependencies (issues blocking this one)
ModalBlocks []models.Issue // Dependents (issues blocked by this one)
// Search state
SearchMode bool // Whether search mode is active
SearchQuery string // Current search query
IncludeClosed bool // Whether to include closed tasks
// Confirmation dialog state
ConfirmOpen bool
ConfirmAction string // "delete"
ConfirmIssueID string
ConfirmTitle string
// Configuration
RefreshInterval time.Duration
}
Model is the main Bubble Tea model for the monitor TUI
func (Model) SelectedIssueID ¶
SelectedIssueID returns the issue ID of the currently selected row in a panel
type RecentHandoff ¶
RecentHandoff represents a recent handoff for display
type RefreshDataMsg ¶
type RefreshDataMsg struct {
FocusedIssue *models.Issue
InProgress []models.Issue
Activity []ActivityItem
TaskList TaskListData
RecentHandoffs []RecentHandoff
ActiveSessions []string
Timestamp time.Time
}
RefreshDataMsg carries refreshed data
type TaskListCategory ¶
type TaskListCategory string
TaskListCategory represents the category of a task list row
const ( CategoryReviewable TaskListCategory = "REVIEW" CategoryReady TaskListCategory = "READY" CategoryBlocked TaskListCategory = "BLOCKED" CategoryClosed TaskListCategory = "CLOSED" )
type TaskListData ¶
type TaskListData struct {
Ready []models.Issue
Reviewable []models.Issue
Blocked []models.Issue
Closed []models.Issue
}
TaskListData holds categorized issues for the task list panel
type TaskListRow ¶
type TaskListRow struct {
Issue models.Issue
Category TaskListCategory
}
TaskListRow represents a single selectable row in the task list panel