ui

package
v0.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Event type colors
	ColorPush    = lipgloss.Color("#22c55e") // green
	ColorPR      = lipgloss.Color("#3b82f6") // blue
	ColorReview  = lipgloss.Color("#a855f7") // purple
	ColorComment = lipgloss.Color("#06b6d4") // cyan
	ColorIssue   = lipgloss.Color("#eab308") // yellow
	ColorCreate  = lipgloss.Color("#22c55e") // green
	ColorDelete  = lipgloss.Color("#ef4444") // red
	ColorRelease = lipgloss.Color("#f97316") // orange
	ColorLocal   = lipgloss.Color("#a78bfa") // light purple
	ColorDim     = lipgloss.Color("#6b7280") // gray

	// Layout styles
	TitleStyle = lipgloss.NewStyle().
				Bold(true).
				Foreground(lipgloss.Color("#ffffff")).
				PaddingLeft(1)

	SubtitleStyle = lipgloss.NewStyle().
					Foreground(ColorDim).
					PaddingLeft(1)

	TimeStyle = lipgloss.NewStyle().
				Foreground(ColorDim).
				Width(20)

	RepoStyle = lipgloss.NewStyle().
				Foreground(lipgloss.Color("#ffffff")).
				Bold(true).
				Width(18)

	ActorStyle = lipgloss.NewStyle().
				Foreground(lipgloss.Color("#d1d5db")).
				Width(22)

	DetailStyle = lipgloss.NewStyle().
				Foreground(lipgloss.Color("#9ca3af"))

	StatusBarStyle = lipgloss.NewStyle().
					Foreground(ColorDim).
					PaddingLeft(1)

	HelpStyle = lipgloss.NewStyle().
				Foreground(ColorDim)

	// Status panel styles
	PanelBorderStyle = lipgloss.NewStyle().
						Border(lipgloss.RoundedBorder()).
						BorderForeground(lipgloss.Color("#3b3b3b")).
						Padding(0, 1)

	PanelTitleStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.Color("#ffffff"))

	PanelDividerStyle = lipgloss.NewStyle().
						Foreground(lipgloss.Color("#3b3b3b"))

	PanelRepoStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.Color("#3b82f6"))

	PanelDimStyle = lipgloss.NewStyle().
					Foreground(ColorDim)

	PanelCleanStyle = lipgloss.NewStyle().
					Foreground(lipgloss.Color("#22c55e"))

	PanelDirtyStyle = lipgloss.NewStyle().
					Foreground(lipgloss.Color("#eab308"))

	PanelWarnStyle = lipgloss.NewStyle().
					Foreground(lipgloss.Color("#f97316"))

	PanelCIFailStyle = lipgloss.NewStyle().
						Foreground(lipgloss.Color("#ef4444"))

	DividerStyle = lipgloss.NewStyle().
					Foreground(lipgloss.Color("#3b3b3b"))

	DetailRepoStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.Color("#ffffff"))

	DetailActorStyle = lipgloss.NewStyle().
						Foreground(lipgloss.Color("#d1d5db"))

	DetailTimeStyle = lipgloss.NewStyle().
					Foreground(lipgloss.Color("#6b7280"))
)

Functions

func DetailLabelStyle added in v0.3.0

func DetailLabelStyle(color lipgloss.Color) lipgloss.Style

DetailLabelStyle returns a bold label style with a given color.

func EventColor

func EventColor(eventType string) lipgloss.Color

EventColor returns the color for a given event type.

func LabelStyle

func LabelStyle(eventType string) lipgloss.Style

LabelStyle returns a styled label for a given event type.

Types

type DebugLog added in v0.2.0

type DebugLog struct {
	// contains filtered or unexported fields
}

DebugLog is a thread-safe circular log buffer.

func NewDebugLog added in v0.2.0

func NewDebugLog() *DebugLog

func (*DebugLog) Error added in v0.2.0

func (d *DebugLog) Error(format string, args ...interface{})

func (*DebugLog) GetEntries added in v0.2.0

func (d *DebugLog) GetEntries() []LogEntry

func (*DebugLog) GetStats added in v0.2.0

func (d *DebugLog) GetStats() FetchStats

func (*DebugLog) Info added in v0.2.0

func (d *DebugLog) Info(format string, args ...interface{})

func (*DebugLog) Log added in v0.2.0

func (d *DebugLog) Log(level LogLevel, format string, args ...interface{})

func (*DebugLog) RecordFetch added in v0.2.0

func (d *DebugLog) RecordFetch(repo string, success bool, eventCount int, usingCache bool)

func (*DebugLog) SetRateLimit added in v0.2.5

func (d *DebugLog) SetRateLimit(remaining, limit int)

func (*DebugLog) Warn added in v0.2.0

func (d *DebugLog) Warn(format string, args ...interface{})

type DebugOverlay added in v0.3.0

type DebugOverlay struct {
	// contains filtered or unexported fields
}

DebugOverlay shows API stats and recent log entries. Implements tuikit.Overlay.

func NewDebugOverlay added in v0.3.0

func NewDebugOverlay(debugLog *DebugLog) *DebugOverlay

func (*DebugOverlay) Close added in v0.3.0

func (d *DebugOverlay) Close()

func (*DebugOverlay) Focused added in v0.3.0

func (d *DebugOverlay) Focused() bool

func (*DebugOverlay) Init added in v0.3.0

func (d *DebugOverlay) Init() tea.Cmd

func (*DebugOverlay) IsActive added in v0.3.0

func (d *DebugOverlay) IsActive() bool

func (*DebugOverlay) KeyBindings added in v0.3.0

func (d *DebugOverlay) KeyBindings() []tuikit.KeyBind

func (*DebugOverlay) SetActive added in v0.3.0

func (d *DebugOverlay) SetActive(v bool)

func (*DebugOverlay) SetFocused added in v0.3.0

func (d *DebugOverlay) SetFocused(f bool)

func (*DebugOverlay) SetSize added in v0.3.0

func (d *DebugOverlay) SetSize(w, h int)

func (*DebugOverlay) Update added in v0.3.0

func (d *DebugOverlay) Update(msg tea.Msg) (tuikit.Component, tea.Cmd)

func (*DebugOverlay) View added in v0.3.0

func (d *DebugOverlay) View() string

type DisplayEvent

type DisplayEvent struct {
	Event   github.Event
	AddedAt time.Time
}

DisplayEvent holds a parsed event for display.

type EventStream added in v0.3.0

type EventStream struct {
	DetailOverlay *tuikit.DetailOverlay[DisplayEvent]
	// contains filtered or unexported fields
}

EventStream displays a scrollable list of GitHub events. Implements tuikit.Component.

func NewEventStream added in v0.3.0

func NewEventStream(cfg *config.Config, debugLog *DebugLog) *EventStream

func (*EventStream) ClearFilters added in v0.3.0

func (s *EventStream) ClearFilters()

func (*EventStream) CycleTypeFilter added in v0.3.0

func (s *EventStream) CycleTypeFilter(forward bool)

func (*EventStream) DebugLog added in v0.3.0

func (s *EventStream) DebugLog() *DebugLog

func (*EventStream) Focused added in v0.3.0

func (s *EventStream) Focused() bool

func (*EventStream) ForceRefresh added in v0.3.0

func (s *EventStream) ForceRefresh()

func (*EventStream) HasLocalRepos added in v0.3.0

func (s *EventStream) HasLocalRepos() bool

func (*EventStream) Init added in v0.3.0

func (s *EventStream) Init() tea.Cmd

func (*EventStream) IsNewestFirst added in v0.3.0

func (s *EventStream) IsNewestFirst() bool

func (*EventStream) IsPaused added in v0.3.0

func (s *EventStream) IsPaused() bool

func (*EventStream) KeyBindings added in v0.3.0

func (s *EventStream) KeyBindings() []tuikit.KeyBind

func (*EventStream) RepoFilter added in v0.3.0

func (s *EventStream) RepoFilter() string

func (*EventStream) SetFocused added in v0.3.0

func (s *EventStream) SetFocused(f bool)

func (*EventStream) SetRepoFilter added in v0.3.0

func (s *EventStream) SetRepoFilter(repo string)

func (*EventStream) SetSize added in v0.3.0

func (s *EventStream) SetSize(w, h int)

func (*EventStream) TogglePause added in v0.3.0

func (s *EventStream) TogglePause()

func (*EventStream) ToggleSort added in v0.3.0

func (s *EventStream) ToggleSort()

func (*EventStream) TypeFilter added in v0.3.0

func (s *EventStream) TypeFilter() string

func (*EventStream) Update added in v0.3.0

func (s *EventStream) Update(msg tea.Msg) (tuikit.Component, tea.Cmd)

func (*EventStream) View added in v0.3.0

func (s *EventStream) View() string

type FetchStats added in v0.2.0

type FetchStats struct {
	TotalCalls   int
	SuccessCalls int
	FailedCalls  int
	TotalEvents  int
	LastFetchAt  time.Time
	RepoHealth   map[string]*RepoHealth
	RateRemain   int // GitHub API rate limit remaining
	RateLimit    int // GitHub API rate limit total
}

FetchStats tracks API call statistics.

type LogEntry added in v0.2.0

type LogEntry struct {
	Time    time.Time
	Level   LogLevel
	Message string
}

LogEntry is a single debug log entry.

type LogLevel added in v0.2.0

type LogLevel int

LogLevel indicates severity.

const (
	LogInfo LogLevel = iota
	LogWarn
	LogError
)

type RepoHealth added in v0.2.5

type RepoHealth struct {
	LastSuccess bool
	FailStreak  int
	UsingCache  bool // true when serving cached events due to fetch failure
}

RepoHealth tracks per-repo fetch health.

type StatusPanel added in v0.3.0

type StatusPanel struct {
	// contains filtered or unexported fields
}

StatusPanel displays local repo git status. Implements tuikit.Component.

func NewStatusPanel added in v0.3.0

func NewStatusPanel() *StatusPanel

func (*StatusPanel) Focused added in v0.3.0

func (p *StatusPanel) Focused() bool

func (*StatusPanel) Init added in v0.3.0

func (p *StatusPanel) Init() tea.Cmd

func (*StatusPanel) KeyBindings added in v0.3.0

func (p *StatusPanel) KeyBindings() []tuikit.KeyBind

func (*StatusPanel) SetFocused added in v0.3.0

func (p *StatusPanel) SetFocused(f bool)

func (*StatusPanel) SetSize added in v0.3.0

func (p *StatusPanel) SetSize(w, h int)

func (*StatusPanel) Update added in v0.3.0

func (p *StatusPanel) Update(msg tea.Msg) (tuikit.Component, tea.Cmd)

func (*StatusPanel) View added in v0.3.0

func (p *StatusPanel) View() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL