Documentation
¶
Index ¶
- Variables
- func FormatSessionDetail(detail SessionDetail) string
- func IsTTY() bool
- func PrintSessionDetail(detail SessionDetail)
- func ReconnectNote(detail SessionDetail) string
- func RunModel(model tea.Model) (tea.Model, error)
- func StatusHint(detail SessionDetail) string
- func StatusText(detail SessionDetail) string
- func TermWidth() int
- func WrapProse(text string, width int) []string
- type HostSessionConfirmResult
- type HostSessionModel
- type SessionDetail
- type SessionListModel
Constants ¶
This section is empty.
Variables ¶
var ( // Title/Header style - bright cyan, bold TitleStyle = renderer.NewStyle(). Bold(true). Foreground(lipgloss.Color("14")) // Label style - white (terminal's default light color) LabelStyle = renderer.NewStyle(). Foreground(lipgloss.Color("7")) // Value style - bright white ValueStyle = renderer.NewStyle(). Foreground(lipgloss.Color("15")) // Command style - bright green, bold (for SSH commands) CommandStyle = renderer.NewStyle(). Foreground(lipgloss.Color("10")). Bold(true) FooterStyle = renderer.NewStyle(). Foreground(lipgloss.Color("8")) // Empty/placeholder style - dark gray, italic EmptyStyle = renderer.NewStyle(). Foreground(lipgloss.Color("8")). Italic(true) )
Common styles used across TUI components Using basic ANSI colors (0-15) which adapt to terminal themes, ensuring readability on both light and dark backgrounds.
Functions ¶
func FormatSessionDetail ¶ added in v0.21.0
func FormatSessionDetail(detail SessionDetail) string
FormatSessionDetail renders a SessionDetail to a string using terminal width
func PrintSessionDetail ¶ added in v0.21.0
func PrintSessionDetail(detail SessionDetail)
PrintSessionDetail prints session detail to stdout
func ReconnectNote ¶ added in v0.35.0
func ReconnectNote(detail SessionDetail) string
ReconnectNote says the relay can't bring a dropped session back, from the first connection on and at every status, since it stays true until the session ends. Empty when the relay can, or isn't known to yet.
func RunModel ¶ added in v0.21.0
RunModel runs a bubbletea model with automatic TTY detection. For non-TTY environments, just prints View() once and returns.
func StatusHint ¶ added in v0.35.0
func StatusHint(detail SessionDetail) string
StatusHint is what the user can do about the outage, for the statuses that have one: a reconnecting session, and a disconnected one, whose reason says why it will not come back. Empty for every other status and for a reason without a hint.
func StatusText ¶ added in v0.35.0
func StatusText(detail SessionDetail) string
StatusText is the status row's value. A reconnecting session says why it is down, since when, and when it tries next; every other status is its plain word. A disconnected session's hint row says why, and the outage an ended session's record keeps is not something to act on. Times are local, to the second.
Each piece is left out when it isn't known. A next attempt that is not ahead of the clock is left out too: it is stamped as each wait starts, so it is already past during every attempt and after a sleeping machine wakes mid-wait, and printing it would promise a retry that has already happened.
func TermWidth ¶ added in v0.35.0
func TermWidth() int
TermWidth returns the terminal width, defaulting to 80 if unavailable
func WrapProse ¶ added in v0.35.0
WrapProse wraps a sentence to width at spaces, as the detail view does for its status and hint rows. Unlike the view it does not look at the terminal: the caller decides whether to wrap at all. Empty text comes back as one empty line, so a row with no value still has a line to print.
Types ¶
type HostSessionConfirmResult ¶
type HostSessionConfirmResult int
HostSessionConfirmResult represents the outcome of a confirmation prompt
const ( // HostSessionConfirmAccepted indicates the user accepted (pressed 'y') HostSessionConfirmAccepted HostSessionConfirmResult = iota // HostSessionConfirmRejected indicates the user rejected (pressed 'n') HostSessionConfirmRejected // HostSessionConfirmInterrupted indicates the user interrupted (pressed Ctrl+C) HostSessionConfirmInterrupted )
type HostSessionModel ¶
type HostSessionModel struct {
// contains filtered or unexported fields
}
HostSessionModel handles both session display and confirmation for the host command. It renders the session information and waits for user confirmation (y/n/Ctrl+C) unless auto-accept is enabled.
func NewHostSessionModel ¶
func NewHostSessionModel(detail SessionDetail, autoAccept bool) HostSessionModel
NewHostSessionModel creates a model for displaying session and getting confirmation
func (HostSessionModel) Init ¶
func (m HostSessionModel) Init() tea.Cmd
func (HostSessionModel) Result ¶
func (m HostSessionModel) Result() HostSessionConfirmResult
Result returns the confirmation result
func (HostSessionModel) View ¶
func (m HostSessionModel) View() string
type SessionDetail ¶ added in v0.21.0
type SessionDetail struct {
IsCurrent bool
AdminSocket string
Name string
Status string
SessionID string
Command string
ForceCommand string
Host string
SSHCommand string
SFTPEnabled bool // Whether SFTP/SCP is enabled
SFTPCommand string // SFTP command
SCPUpload string // SCP upload example
SCPDownload string // SCP download example
AuthorizedKeys string
ConnectedClients []string
// Reconnect is "supported" or "unsupported" once the first connection has
// shown whether the relay lets a dropped session come back under the same
// connect string. The tunnel fields describe the latest outage: why the
// latest attempt failed (one of sessiondir's TunnelReason values), when
// the outage began, and when the next attempt is due. A live session
// clears them when its tunnel comes back; only an ended session's record
// keeps its last outage. They are zero when there has been none or the
// caller has no record to read them from.
Reconnect string
TunnelReason string
TunnelLostAt time.Time
NextAttemptAt time.Time
}
SessionDetail holds session information for display
type SessionListModel ¶ added in v0.21.0
type SessionListModel struct {
// contains filtered or unexported fields
}
SessionListModel provides an interactive session list using bubbles/table
func NewSessionListModel ¶ added in v0.21.0
func NewSessionListModel(sessions []SessionDetail) SessionListModel
NewSessionListModel creates a new interactive session list
func (SessionListModel) Init ¶ added in v0.21.0
func (m SessionListModel) Init() tea.Cmd
func (SessionListModel) View ¶ added in v0.21.0
func (m SessionListModel) View() string