Documentation
¶
Overview ¶
Package views provides the individual screens for the workspace TUI.
Index ¶
- type Activity
- func (v *Activity) FocusedItem() workspace.FocusedItemScope
- func (v *Activity) FullHelp() [][]key.Binding
- func (v *Activity) Init() tea.Cmd
- func (v *Activity) InputActive() bool
- func (v *Activity) SetSize(w, h int)
- func (v *Activity) ShortHelp() []key.Binding
- func (v *Activity) StartFilter()
- func (v *Activity) Title() string
- func (v *Activity) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Activity) View() string
- type Assignments
- func (v *Assignments) FocusedItem() workspace.FocusedItemScope
- func (v *Assignments) FullHelp() [][]key.Binding
- func (v *Assignments) Init() tea.Cmd
- func (v *Assignments) InputActive() bool
- func (v *Assignments) SetSize(w, h int)
- func (v *Assignments) ShortHelp() []key.Binding
- func (v *Assignments) StartFilter()
- func (v *Assignments) Title() string
- func (v *Assignments) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Assignments) View() string
- type Campfire
- func (v *Campfire) FocusedItem() workspace.FocusedItemScope
- func (v *Campfire) FullHelp() [][]key.Binding
- func (v *Campfire) Init() tea.Cmd
- func (v *Campfire) InputActive() bool
- func (v *Campfire) SetSize(w, h int)
- func (v *Campfire) ShortHelp() []key.Binding
- func (v *Campfire) Title() string
- func (v *Campfire) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Campfire) View() string
- type Cards
- func (v *Cards) FullHelp() [][]key.Binding
- func (v *Cards) Init() tea.Cmd
- func (v *Cards) InputActive() bool
- func (v *Cards) IsModal() bool
- func (v *Cards) SetSize(w, h int)
- func (v *Cards) ShortHelp() []key.Binding
- func (v *Cards) Title() string
- func (v *Cards) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Cards) View() string
- type Checkins
- func (v *Checkins) FullHelp() [][]key.Binding
- func (v *Checkins) HasSplitPane() bool
- func (v *Checkins) Init() tea.Cmd
- func (v *Checkins) InputActive() bool
- func (v *Checkins) IsModal() bool
- func (v *Checkins) SetSize(w, h int)
- func (v *Checkins) ShortHelp() []key.Binding
- func (v *Checkins) StartFilter()
- func (v *Checkins) Title() string
- func (v *Checkins) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Checkins) View() string
- type Compose
- func (v *Compose) FullHelp() [][]key.Binding
- func (v *Compose) Init() tea.Cmd
- func (v *Compose) InputActive() bool
- func (v *Compose) IsModal() bool
- func (v *Compose) SetSize(w, h int)
- func (v *Compose) ShortHelp() []key.Binding
- func (v *Compose) Title() string
- func (v *Compose) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Compose) View() string
- type Detail
- func (v *Detail) FullHelp() [][]key.Binding
- func (v *Detail) Init() tea.Cmd
- func (v *Detail) InputActive() bool
- func (v *Detail) IsModal() bool
- func (v *Detail) SetSize(w, h int)
- func (v *Detail) ShortHelp() []key.Binding
- func (v *Detail) Title() string
- func (v *Detail) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Detail) View() string
- type Dock
- func (v *Dock) FullHelp() [][]key.Binding
- func (v *Dock) Init() tea.Cmd
- func (v *Dock) InputActive() bool
- func (v *Dock) SetSize(w, h int)
- func (v *Dock) ShortHelp() []key.Binding
- func (v *Dock) StartFilter()
- func (v *Dock) Title() string
- func (v *Dock) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Dock) View() string
- type DocsFiles
- func (v *DocsFiles) FullHelp() [][]key.Binding
- func (v *DocsFiles) Init() tea.Cmd
- func (v *DocsFiles) InputActive() bool
- func (v *DocsFiles) IsModal() bool
- func (v *DocsFiles) SetSize(w, h int)
- func (v *DocsFiles) ShortHelp() []key.Binding
- func (v *DocsFiles) StartFilter()
- func (v *DocsFiles) Title() string
- func (v *DocsFiles) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *DocsFiles) View() string
- type Forwards
- func (v *Forwards) FullHelp() [][]key.Binding
- func (v *Forwards) Init() tea.Cmd
- func (v *Forwards) InputActive() bool
- func (v *Forwards) SetSize(w, h int)
- func (v *Forwards) ShortHelp() []key.Binding
- func (v *Forwards) StartFilter()
- func (v *Forwards) Title() string
- func (v *Forwards) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Forwards) View() string
- type Hey
- func (v *Hey) FocusedItem() workspace.FocusedItemScope
- func (v *Hey) FullHelp() [][]key.Binding
- func (v *Hey) Init() tea.Cmd
- func (v *Hey) InputActive() bool
- func (v *Hey) SetSize(w, h int)
- func (v *Hey) ShortHelp() []key.Binding
- func (v *Hey) StartFilter()
- func (v *Hey) Title() string
- func (v *Hey) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Hey) View() string
- type Home
- func (v *Home) FullHelp() [][]key.Binding
- func (v *Home) Init() tea.Cmd
- func (v *Home) InputActive() bool
- func (v *Home) SetSize(w, h int)
- func (v *Home) ShortHelp() []key.Binding
- func (v *Home) StartFilter()
- func (v *Home) Title() string
- func (v *Home) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Home) View() string
- type Messages
- func (v *Messages) FocusedItem() workspace.FocusedItemScope
- func (v *Messages) FullHelp() [][]key.Binding
- func (v *Messages) Init() tea.Cmd
- func (v *Messages) InputActive() bool
- func (v *Messages) SetSize(w, h int)
- func (v *Messages) ShortHelp() []key.Binding
- func (v *Messages) StartFilter()
- func (v *Messages) Title() string
- func (v *Messages) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Messages) View() string
- type MyStuff
- func (v *MyStuff) FullHelp() [][]key.Binding
- func (v *MyStuff) Init() tea.Cmd
- func (v *MyStuff) InputActive() bool
- func (v *MyStuff) SetSize(w, h int)
- func (v *MyStuff) ShortHelp() []key.Binding
- func (v *MyStuff) StartFilter()
- func (v *MyStuff) Title() string
- func (v *MyStuff) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *MyStuff) View() string
- type People
- func (v *People) FullHelp() [][]key.Binding
- func (v *People) Init() tea.Cmd
- func (v *People) InputActive() bool
- func (v *People) SetSize(w, h int)
- func (v *People) ShortHelp() []key.Binding
- func (v *People) StartFilter()
- func (v *People) Title() string
- func (v *People) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *People) View() string
- type Pings
- func (v *Pings) FullHelp() [][]key.Binding
- func (v *Pings) Init() tea.Cmd
- func (v *Pings) InputActive() bool
- func (v *Pings) SetSize(w, h int)
- func (v *Pings) ShortHelp() []key.Binding
- func (v *Pings) StartFilter()
- func (v *Pings) Title() string
- func (v *Pings) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Pings) View() string
- type Projects
- func (v *Projects) FullHelp() [][]key.Binding
- func (v *Projects) Init() tea.Cmd
- func (v *Projects) InputActive() bool
- func (v *Projects) IsModal() bool
- func (v *Projects) SetSize(w, h int)
- func (v *Projects) ShortHelp() []key.Binding
- func (v *Projects) StartFilter()
- func (v *Projects) Title() string
- func (v *Projects) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Projects) View() string
- type Pulse
- func (v *Pulse) FocusedItem() workspace.FocusedItemScope
- func (v *Pulse) FullHelp() [][]key.Binding
- func (v *Pulse) Init() tea.Cmd
- func (v *Pulse) InputActive() bool
- func (v *Pulse) SetSize(w, h int)
- func (v *Pulse) ShortHelp() []key.Binding
- func (v *Pulse) StartFilter()
- func (v *Pulse) Title() string
- func (v *Pulse) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Pulse) View() string
- type Schedule
- func (v *Schedule) FullHelp() [][]key.Binding
- func (v *Schedule) Init() tea.Cmd
- func (v *Schedule) InputActive() bool
- func (v *Schedule) IsModal() bool
- func (v *Schedule) SetSize(w, h int)
- func (v *Schedule) ShortHelp() []key.Binding
- func (v *Schedule) StartFilter()
- func (v *Schedule) Title() string
- func (v *Schedule) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Schedule) View() string
- type Search
- func (v *Search) FocusedItem() workspace.FocusedItemScope
- func (v *Search) FullHelp() [][]key.Binding
- func (v *Search) Init() tea.Cmd
- func (v *Search) InputActive() bool
- func (v *Search) IsModal() bool
- func (v *Search) SetSize(w, h int)
- func (v *Search) ShortHelp() []key.Binding
- func (v *Search) StartFilter()
- func (v *Search) Title() string
- func (v *Search) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Search) View() string
- type Timeline
- func (v *Timeline) FocusedItem() workspace.FocusedItemScope
- func (v *Timeline) FullHelp() [][]key.Binding
- func (v *Timeline) Init() tea.Cmd
- func (v *Timeline) InputActive() bool
- func (v *Timeline) SetSize(w, h int)
- func (v *Timeline) ShortHelp() []key.Binding
- func (v *Timeline) StartFilter()
- func (v *Timeline) Title() string
- func (v *Timeline) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Timeline) View() string
- type Todos
- func (v *Todos) FocusedItem() workspace.FocusedItemScope
- func (v *Todos) FullHelp() [][]key.Binding
- func (v *Todos) HasSplitPane() bool
- func (v *Todos) Init() tea.Cmd
- func (v *Todos) InputActive() bool
- func (v *Todos) IsModal() bool
- func (v *Todos) SetSize(w, h int)
- func (v *Todos) ShortHelp() []key.Binding
- func (v *Todos) StartFilter()
- func (v *Todos) Title() string
- func (v *Todos) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (v *Todos) View() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Activity ¶
type Activity struct {
// contains filtered or unexported fields
}
Activity is the timeline feed view showing rich activity events across all accounts. Uses the Timeline.Progress() API for action-level detail.
func NewActivity ¶
NewActivity creates the Activity timeline feed view.
func (*Activity) FocusedItem ¶
func (v *Activity) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Activity) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Activity) StartFilter ¶
func (v *Activity) StartFilter()
StartFilter implements workspace.Filterable.
type Assignments ¶
type Assignments struct {
// contains filtered or unexported fields
}
Assignments shows cross-account todo assignments for the current user, grouped by due date (overdue, this week, later).
func NewAssignments ¶
func NewAssignments(session *workspace.Session) *Assignments
NewAssignments creates the cross-account assignments view.
func (*Assignments) FocusedItem ¶
func (v *Assignments) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Assignments) FullHelp ¶
func (v *Assignments) FullHelp() [][]key.Binding
func (*Assignments) Init ¶
func (v *Assignments) Init() tea.Cmd
func (*Assignments) InputActive ¶
func (v *Assignments) InputActive() bool
InputActive implements workspace.InputCapturer.
func (*Assignments) SetSize ¶
func (v *Assignments) SetSize(w, h int)
func (*Assignments) ShortHelp ¶
func (v *Assignments) ShortHelp() []key.Binding
func (*Assignments) StartFilter ¶
func (v *Assignments) StartFilter()
StartFilter implements workspace.Filterable.
func (*Assignments) Title ¶
func (v *Assignments) Title() string
func (*Assignments) View ¶
func (v *Assignments) View() string
type Campfire ¶
type Campfire struct {
// contains filtered or unexported fields
}
Campfire is the chat stream view for a project campfire.
func NewCampfire ¶
NewCampfire creates the campfire chat view.
func (*Campfire) FocusedItem ¶
func (v *Campfire) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Campfire) InputActive ¶
InputActive implements workspace.InputCapturer.
type Cards ¶
type Cards struct {
// contains filtered or unexported fields
}
Cards is the kanban board view for a card table.
func (*Cards) InputActive ¶
InputActive implements workspace.InputCapturer.
type Checkins ¶
type Checkins struct {
// contains filtered or unexported fields
}
Checkins is the split-pane view for check-in questions and their answers.
func NewCheckins ¶
NewCheckins creates the check-ins view.
func (*Checkins) HasSplitPane ¶
HasSplitPane implements workspace.SplitPaneFocuser.
func (*Checkins) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Checkins) StartFilter ¶
func (v *Checkins) StartFilter()
StartFilter implements workspace.Filterable.
type Compose ¶
type Compose struct {
// contains filtered or unexported fields
}
Compose is a general-purpose compose view for creating messages.
func NewCompose ¶
NewCompose creates a new compose view.
func (*Compose) InputActive ¶
InputActive implements workspace.InputCapturer.
type Detail ¶
type Detail struct {
// contains filtered or unexported fields
}
Detail shows a single recording with its content and metadata.
func NewDetail ¶
func NewDetail(session *workspace.Session, recordingID int64, recordingType, originView, originHint string) *Detail
NewDetail creates a detail view for a specific recording.
func (*Detail) InputActive ¶
InputActive implements workspace.InputCapturer.
type Dock ¶
type Dock struct {
// contains filtered or unexported fields
}
Dock shows a project's tool grid with peek previews.
func (*Dock) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Dock) StartFilter ¶
func (v *Dock) StartFilter()
StartFilter implements workspace.Filterable.
type DocsFiles ¶
type DocsFiles struct {
// contains filtered or unexported fields
}
DocsFiles is the list view for a project's vault (Docs & Files).
func NewDocsFiles ¶
NewDocsFiles creates the docs & files view.
func (*DocsFiles) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*DocsFiles) IsModal ¶
IsModal implements workspace.ModalActive. Modal when inside a sub-folder (Esc should pop the folder, not navigate back).
func (*DocsFiles) StartFilter ¶
func (v *DocsFiles) StartFilter()
StartFilter implements workspace.Filterable.
type Forwards ¶
type Forwards struct {
// contains filtered or unexported fields
}
Forwards shows email forwards in the project inbox.
func NewForwards ¶
NewForwards creates the email forwards view.
func (*Forwards) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Forwards) StartFilter ¶
func (v *Forwards) StartFilter()
StartFilter implements workspace.Filterable.
type Hey ¶
type Hey struct {
// contains filtered or unexported fields
}
Hey is the activity feed view showing recently updated recordings across all accounts. It replaces the empty notifications stub with real data from Recordings().List() fan-out.
func (*Hey) FocusedItem ¶
func (v *Hey) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Hey) InputActive ¶
InputActive implements workspace.InputCapturer.
type Home ¶
type Home struct {
// contains filtered or unexported fields
}
Home is a combined dashboard view that shows recents, activity, assignments, and bookmarked projects in a single scrollable list with section headers. It renders instantly with local recents data, then progressively fills in API-sourced sections via shared Hub pools.
type Messages ¶
type Messages struct {
// contains filtered or unexported fields
}
Messages is the split-pane view for a project's message board.
func NewMessages ¶
NewMessages creates the split-pane messages view.
func (*Messages) FocusedItem ¶
func (v *Messages) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Messages) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Messages) StartFilter ¶
func (v *Messages) StartFilter()
StartFilter implements workspace.Filterable.
type MyStuff ¶
type MyStuff struct {
// contains filtered or unexported fields
}
MyStuff is the personal dashboard view showing recent projects and items.
func NewMyStuff ¶
NewMyStuff creates the My Stuff personal dashboard view.
func (*MyStuff) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*MyStuff) StartFilter ¶
func (v *MyStuff) StartFilter()
StartFilter implements workspace.Filterable.
type People ¶
type People struct {
// contains filtered or unexported fields
}
People is the people directory view showing all account members.
func (*People) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*People) StartFilter ¶
func (v *People) StartFilter()
StartFilter implements workspace.Filterable.
type Pings ¶
type Pings struct {
// contains filtered or unexported fields
}
Pings shows 1:1 campfire threads across all accounts. Discovery: list all campfires per account, identify 1:1 rooms, fetch the latest line from each.
func (*Pings) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Pings) StartFilter ¶
func (v *Pings) StartFilter()
StartFilter implements workspace.Filterable.
type Projects ¶
type Projects struct {
// contains filtered or unexported fields
}
Projects is the dashboard view showing all projects with an inline dock. When multiple accounts are available, projects are grouped by account with section headers.
The view has two focus phases:
- Left panel (default): navigate projects with j/k, Enter/l opens inline dock
- Right panel (inline dock): navigate tools with j/k, Enter opens tool view
func NewProjects ¶
NewProjects creates the projects dashboard view.
func (*Projects) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Projects) IsModal ¶
IsModal implements workspace.ModalActive. When the right panel (inline dock) is focused, Esc returns to the project list instead of triggering global back navigation.
func (*Projects) StartFilter ¶
func (v *Projects) StartFilter()
StartFilter implements workspace.Filterable.
type Pulse ¶
type Pulse struct {
// contains filtered or unexported fields
}
Pulse shows recent activity across all accounts — a unified timeline of recently updated recordings grouped by time bucket.
func (*Pulse) FocusedItem ¶
func (v *Pulse) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Pulse) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Pulse) StartFilter ¶
func (v *Pulse) StartFilter()
StartFilter implements workspace.Filterable.
type Schedule ¶
type Schedule struct {
// contains filtered or unexported fields
}
Schedule is the list view for a project's schedule entries.
func NewSchedule ¶
NewSchedule creates the schedule view.
func (*Schedule) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Schedule) StartFilter ¶
func (v *Schedule) StartFilter()
StartFilter implements workspace.Filterable.
type Search ¶
type Search struct {
// contains filtered or unexported fields
}
Search is the full-screen search view with text input and results list. When multiple accounts are available, search fans out across all accounts.
func (*Search) FocusedItem ¶
func (v *Search) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Search) InputActive ¶
InputActive implements workspace.InputCapturer. Active only when the text input has focus (not the results list), or the results list is in filter mode.
func (*Search) StartFilter ¶
func (v *Search) StartFilter()
StartFilter implements workspace.Filterable.
type Timeline ¶
type Timeline struct {
// contains filtered or unexported fields
}
Timeline is a project-scoped timeline view showing activity events for a single project. Structurally similar to Activity but uses the project-realm pool and project context.
func NewTimeline ¶
NewTimeline creates a project-scoped timeline view.
func (*Timeline) FocusedItem ¶
func (v *Timeline) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Timeline) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Timeline) StartFilter ¶
func (v *Timeline) StartFilter()
StartFilter implements workspace.Filterable.
type Todos ¶
type Todos struct {
// contains filtered or unexported fields
}
Todos is the split-pane view for todolists and their todos.
func (*Todos) FocusedItem ¶
func (v *Todos) FocusedItem() workspace.FocusedItemScope
FocusedItem implements workspace.FocusedRecording.
func (*Todos) HasSplitPane ¶
HasSplitPane implements workspace.SplitPaneFocuser.
func (*Todos) InputActive ¶
InputActive implements workspace.InputCapturer.
func (*Todos) StartFilter ¶
func (v *Todos) StartFilter()
StartFilter implements workspace.Filterable.