Documentation
¶
Overview ¶
Package tui is the umbrella for the `jira tui` full-screen dashboard (alpha — the headless commands are the stable surface). The directory holds no code of its own; this file maps how the subpackages layer so a new view or widget starts in the right place.
Layers, bottom-up by import direction:
- theme: lipgloss styles derived from the clib theme, applied once per process so every layer above shares one look.
- keys: the global key map and the config-driven rebinding.
- components: reusable Bubble Tea widgets (inputs, pickers, list viewport, markdown renderer, …) — Jira-free and core-free, so they stay testable in isolation.
- core: the data-agnostic orchestration — the Section contract, the shared ProgramContext, the task manager, the registry, and the root App that routes messages without knowing what any view displays.
- sections: the actual views (issues, settings), each implementing core.Section.
Command wiring — resolving a client, registering sections, running the program — lives in internal/cli/tui, keeping this tree free of cobra and profile concerns. goldens pins rendered frames across all layers.
Directories
¶
| Path | Synopsis |
|---|---|
|
components
|
|
|
action
Package action provides a single controller that collects input for the Jira verbs (transition, comment, assign, labels, worklog, edit) through one Mode-dispatched component, instead of a bespoke flow per action.
|
Package action provides a single controller that collects input for the Jira verbs (transition, comment, assign, labels, worklog, edit) through one Mode-dispatched component, instead of a bespoke flow per action. |
|
activity
Package activity is the observational record of user-facing mutations for the `jira tui` dashboard: it feeds the footer's status slot (the most-recent operation and an in-flight count) and the scrollable operation-log overlay (every recorded mutation, newest-first).
|
Package activity is the observational record of user-facing mutations for the `jira tui` dashboard: it feeds the footer's status slot (the most-recent operation and an in-flight count) and the scrollable operation-log overlay (every recorded mutation, newest-first). |
|
carousel
Package carousel renders a horizontal strip of labels with one active, and wraps navigation around the ends.
|
Package carousel renders a horizontal strip of labels with one active, and wraps navigation around the ends. |
|
dialog
Package dialog is a domain-free stack of modal overlays for a Bubble Tea application.
|
Package dialog is a domain-free stack of modal overlays for a Bubble Tea application. |
|
form
Package form is the modal text-input controller for overlay forms: an ordered set of single- and multi-line fields with one focus ring, a dirty-discard guard (esc on edited content asks yes/no instead of dropping it), a submit/cancel/editor event contract with a consumed-key signal, and a pluggable autocomplete seam (a trigger rune such as @ starts a query; suggestions are fetched asynchronously as commands).
|
Package form is the modal text-input controller for overlay forms: an ordered set of single- and multi-line fields with one focus ring, a dirty-discard guard (esc on edited content asks yes/no instead of dropping it), a submit/cancel/editor event contract with a consumed-key signal, and a pluggable autocomplete seam (a trigger rune such as @ starts a query; suggestions are fetched asynchronously as commands). |
|
input
Package input is the TUI's shared text-entry substrate: thin themed wrappers over bubbles/textinput and textarea, plus the external-editor hop.
|
Package input is the TUI's shared text-entry substrate: thin themed wrappers over bubbles/textinput and textarea, plus the external-editor hop. |
|
keybind
Package keybind is the name-indexed key-rebinding registry: a map of stable lower-case names to bubbles key.Binding pointers, with config-driven overrides and enumeration.
|
Package keybind is the name-indexed key-rebinding registry: a map of stable lower-case names to bubbles key.Binding pointers, with config-driven overrides and enumeration. |
|
listviewport
Package listviewport is a scrollable, single-selection list of pre-rendered rows.
|
Package listviewport is a scrollable, single-selection list of pre-rendered rows. |
|
markdown
Package markdown renders GFM (produced by internal/adf) for the TUI and the release-notes plain view through glamour, with a style derived from the active clib theme so issue bodies and comments match the rest of the dashboard.
|
Package markdown renders GFM (produced by internal/adf) for the TUI and the release-notes plain view through glamour, with a style derived from the active clib theme so issue bodies and comments match the rest of the dashboard. |
|
palette
Package palette is a fuzzy, type-to-filter command list for a command-palette dialog.
|
Package palette is a fuzzy, type-to-filter command list for a command-palette dialog. |
|
picker
Package picker is a vertical, type-to-filter select list for modal choices (workflow transitions today; assignees, labels and facet values next).
|
Package picker is a vertical, type-to-filter select list for modal choices (workflow transitions today; assignees, labels and facet values next). |
|
pill
Package pill renders a labeled cycle selector — "type ‹ Task ›" — a compact one-of chooser for a form field that needs no text area.
|
Package pill renders a labeled cycle selector — "type ‹ Task ›" — a compact one-of chooser for a form field that needs no text area. |
|
suggest
Package suggest is a session-scoped, in-memory TTL cache for slow keyed lookups behind the TUI create form — issue-type lists per project and the assignee/label suggestion queries that would otherwise re-hit Jira on every keystroke or reopen.
|
Package suggest is a session-scoped, in-memory TTL cache for slow keyed lookups behind the TUI create form — issue-type lists per project and the assignee/label suggestion queries that would otherwise re-hit Jira on every keystroke or reopen. |
|
task
Package task is the generation-tracked async work manager for a Bubble Tea app: named scopes group work, every start bumps the scope's monotonic generation, and a finished result is accepted only while its generation is still the latest — so a superseded fetch (the user refreshed again, changed filters, moved on) is dropped instead of overwriting newer state.
|
Package task is the generation-tracked async work manager for a Bubble Tea app: named scopes group work, every start bumps the scope's monotonic generation, and a finished result is accepted only while its generation is still the latest — so a superseded fetch (the user refreshed again, changed filters, moved on) is dropped instead of overwriting newer state. |
|
titlebox
Package titlebox draws a rounded box with its title embedded in the top border — "╭ title ─────╮" — around a body the caller has already rendered.
|
Package titlebox draws a rounded box with its title embedded in the top border — "╭ title ─────╮" — around a body the caller has already rendered. |
|
Package core defines the contracts every TUI view is built on: the Section interface, the shared ProgramContext, the async task manager, the section registry and the typed message set.
|
Package core defines the contracts every TUI view is built on: the Section interface, the shared ProgramContext, the async task manager, the section registry and the typed message set. |
|
Package icons is the TUI's glyph table: one Set per icon mode (Nerd Font or plain Unicode) so both stay complete, selected by the tui.icons config key.
|
Package icons is the TUI's glyph table: one Set per icon mode (Nerd Font or plain Unicode) so both stay complete, selected by the tui.icons config key. |
|
Package keys holds the global key map for the section-based TUI and the config-driven rebinding that lets users override any binding by name.
|
Package keys holds the global key map for the section-based TUI and the config-driven rebinding that lets users override any binding by name. |
|
sections
|
|
|
issues
Package issues is the triage-home section: the personal queue a reviewer works down.
|
Package issues is the triage-home section: the personal queue a reviewer works down. |
|
settings
Package settings is the dashboard's configuration view: it shows where the active config came from and what it resolved to, offers a manual reload, and watches the file (on the shared refresh heartbeat) so edits hot-apply without restarting the TUI.
|
Package settings is the dashboard's configuration view: it shows where the active config came from and what it resolved to, offers a manual reload, and watches the file (on the shared refresh heartbeat) so edits hot-apply without restarting the TUI. |
|
Package theme defines lipgloss styles shared across the Jira TUI.
|
Package theme defines lipgloss styles shared across the Jira TUI. |
Click to show internal directories.
Click to hide internal directories.