Pending non-interactive container action (restart, stop). Same shape
as ContainerExecRequest but plus an action tag and minus the askpass
handling for an interactive shell. these run in a worker thread, not
the foreground TUI. Reuses containers::ContainerAction so the
command formatter (container_action_command) is shared.
Pending request to drop the user into a remote container shell. Set
by the handler when Enter is pressed on a running container; drained
by handle_pending_container_exec in the main loop, which suspends
the TUI, runs ssh -t <alias> <runtime> exec -it <id> sh -c 'bash || sh', then restores the TUI on exit.
Pending request to fetch container logs from a remote host. Drained
by the main loop into a background SSH thread; the result returns
via AppEvent::ContainerLogsComplete and lands on the
Screen::ContainerLogs overlay the user opened with l.
Always-present container-domain state: cache and cross-host pending operations.
Separate from ContainerSession, which is the per-host overlay session state.
Host-form and bulk-tag editor state grouped off the App god-struct.
Holds the add/edit host form, its dirty-check baseline, the bulk-tag
editor, the last-apply snapshot used by u to revert bulk-tag changes
and the pending-discard confirmation flag. Pure state container.
Host, group, sort and view state grouped off the App god-struct. Holds
the parsed ~/.ssh/config, the resolved host + pattern entries, the
display list built from them, the render cache, the undo stack for
deletions, the multi-select set for bulk snippet runs and all sort /
group / view UI-state. Pure state container.
One cached docker inspect result, paired with the wall-clock seconds
at which it was fetched. The detail panel treats entries older than
INSPECT_CACHE_TTL_SECS as stale and re-fires the SSH call.
One cached docker logs --tail N result. Same TTL semantics as
InspectCacheEntry: the LOGS card on the detail panel re-fires the
SSH call once the entry is older than LOGS_CACHE_TTL_SECS.
Provider-owned state grouped off the App god-struct. Holds the
provider config, the edit form, the in-flight sync tracking
(cancel flags, completed names, error aggregate), the pending
delete alias, the on-disk sync history and the dirty-check baseline.
Pure state container.
State of a R batch refresh. None when no batch is active.
Drives a windowed concurrency: at most MAX_PARALLEL listings are
in flight at any time. Each ContainerListing event decrements
in_flight and pops the next queued item; the batch ends when
queue is empty and in_flight drops to zero.
Snippet-owned state grouped off the App god-struct. Holds the on-disk
snippet store, the edit form, the pending execution payload, the output
screen state, the param form, the terminal-submit flag, the dirty-check
baseline and the pending-delete index. Pure state container.
One running compose-stack member surfaced in the stack-restart
confirm dialog. Carried so the confirm body can list every
container that will be cycled, identity-and-state-clear.
Status/toast-owned state grouped off the App god-struct. Contains the
footer status message, the active toast and the toast queue. Pure state
container plus the routing helpers that only touch these three fields.
tick_status stays on App because it must read syncing_providers to
suppress expiry during in-flight provider syncs.
Tunnel-owned state grouped off the App god-struct. Contains the rule
list, the edit form, the live child-process map, form baseline for the
dirty check, the pending delete index and the cached per-host summary
strings. Pure state container; behaviour lives on App or on dedicated
methods here.
Which command set the jump bar displays. Determined by the screen that
opened the jump bar so the action list matches what the underlying
handler can dispatch.
Item in the ProxyJump picker list. Scored hosts (used elsewhere as
ProxyJump, matching a jump-host name pattern, or sharing the editing
host’s domain suffix) are promoted above a visual separator so the
likely pick is at the top and the rest stays alphabetical below.
SectionLabel renders a non-selectable heading (e.g. “Suggestions”)
above the scored section. Navigation skips both SectionLabel and
Separator.
TTL for the per-host docker ps cache used by the auto-list-refresh
helper. When the user scrolls to a row whose host has a stale (or
missing) entry in container_cache, we re-fire the listing so the
running/exited counts and uptime in the visible row reflect reality.
Same value as the inspect TTL so the two refresh streams stay
loosely in lockstep.
How many log lines the LOGS card requests via --tail. Sized for
the worst-case panel height we expect (a tall terminal can fit
dozens of lines inside the card); the renderer slices the trailing
inner_capacity rows so a short panel only paints what fits.
Cap on hits rendered per section. Broad queries (e.g. one character)
match thousands of candidates; capping keeps the jump bar legible without
virtualizing the render. The selected hit always falls within the cap
because results are sorted by score before truncation.
Cap on parallel SSH connections during a R batch refresh. Picked
to keep load on the local SSH agent and remote sshd reasonable
while still amortising connection setup.
Determine which field caused the host hit to match. The renderer uses
this to append a via user, via proxy, vault: <role> hint to the
row when the matched field is not part of the visible columns. Returns
None if the alias/hostname (already visible) matched.