• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / agterm
98%

Build:
DEFAULT BRANCH: master
Repo Added 04 Jul 2026 04:46AM UTC
Files 115
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH master
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • a11y-dictation
  • agent-status-followups
  • agent-status-shapes
  • audio-capture-usage-string
  • auto-follow-attention
  • autofollow-mute
  • backlog-fixes
  • backlog-fruit
  • claude-ownership-guard
  • close-session-chord
  • close-split
  • codex-agent-status-hooks
  • codex-hooks-alert
  • codex/clamp-restored-window-frame
  • codex/reopen-recent-items
  • codex/sidebar-finder-drag-drop
  • codex/sidebar-multi-select-batch-actions
  • codex/terminal-zoom
  • codex/upstream-control-dispatcher-backfill
  • codex/upstream-control-dispatcher-session-text-restore
  • codex/upstream-control-dispatcher-window-controls
  • codex/upstream-control-dispatcher-window-lifecycle
  • command-wait
  • control-pick
  • control-socket-ownership
  • cookbook
  • cookbook-skill-and-version
  • copy-name-context-menu
  • cross-window-session-move
  • cursor-drained-event-subscription
  • cursor-settings-polish
  • custom-cmd-empty-window
  • dashboard-click
  • dashboard-grid-impl
  • dashboard-pane-refs
  • dock-bounce
  • dock-menu-followups
  • dock-new-window
  • docs-files-and-folders-tcc
  • docs-wait-supervision-idiom
  • docs/agent-skill-foreground-wording
  • docs/agterm-env-leak-wrong-session
  • docs/custom-command-gui-path
  • edit-menu-paste-selectall
  • entitlements-split
  • feat/agent-status-tooltips
  • feat/cursor-style-setting
  • feat/dashboard-status-pill
  • feat/dock-menu
  • feat/file-link-reveal
  • feat/geometry-ratio-readback
  • feat/horizontal-split
  • feat/hud-placement-color
  • feat/light-dark-theme
  • feat/link-cursor
  • feat/low-tier-readback
  • feat/new-session-button
  • feat/overlay-size-in-tree
  • feat/pi-agent-status
  • feat/promote-pane
  • feat/quick-terminal-type
  • feat/restore-capture
  • feat/split-divider-double-click
  • feat/workspace-row-click-setting
  • feature/notification-sound
  • feature/reduce-motion-transparency
  • feature/session-seen-badge-clear
  • first-run-welcome
  • fix-cursor-flicker
  • fix-flagged-rename-suffix
  • fix-foreground-pgroup
  • fix-fullscreen-hairline
  • fix-peer-chat-labelled-prompt
  • fix-scroll-refocus-mouse-pos
  • fix-sidebar-focus-overlay
  • fix-split-focus-flicker
  • fix/201-term-program
  • fix/373-performable-key-report
  • fix/agtermctl-path-fallback
  • fix/badge-refocus-clear
  • fix/capture-slot-reset-owned-by-session
  • fix/claude-resume-bridge-transcript
  • fix/codex-autoapproved-permissions
  • fix/codex-question-status
  • fix/ctl-sigpipe-request-cap
  • fix/ctrl-c-clears-active-status
  • fix/cursor-divider-324
  • fix/custom-command-path
  • fix/custom-command-split-pane-cwd
  • fix/disable-cursor-click-to-move
  • fix/duplicate-workspace-on-undo
  • fix/font-pane-targeting
  • fix/fullscreen-menu-duplicate
  • fix/fullscreen-titlebar-hairline
  • fix/fuzzy-substring-band-clamp
  • fix/hidden-split-promotion
  • fix/keymap-starter-example
  • fix/light-theme-hairlines
  • fix/link-cursor-shape
  • fix/live-menu-test-stock-title
  • fix/microphone-usage-description
  • fix/name-cwd-control-char-sanitize
  • fix/overlay-open-size-percent
  • fix/palette-arrow-scroll
  • fix/palette-corner-clip
  • fix/palette-row-hover
  • fix/pane-overlay-dim
  • fix/reopen-fallback-frontmost
  • fix/restore-pane-id-silent-downgrade
  • fix/settings-window-close-chord
  • fix/sidebar-mode-lossy-decode
  • fix/sidebar-row-expand-animation
  • fix/sidebar-selection-light-dark-theme
  • fix/sidebar-selection-stale-tint
  • fix/sidebar-terminal-padding
  • fix/sidebar-triangle-theme-appearance
  • fix/split-divider-cursor
  • fix/split-toggle-over-scratch
  • fix/status-blink-333
  • fix/system-quit-capture
  • fix/tcc-resource-access-entitlements
  • fix/type-noselect-poll
  • fix/wake-repaint
  • fix/window-close-capture
  • fix/workspace-targeting
  • focus-reselect
  • followup-session-placement-cleanup
  • foreground-setuid-doc
  • ghostty-conf-keys
  • ghostty-repin-and-layer-fix
  • highlight-active-workspace
  • idle-shell-readback
  • intel-mac-support
  • interface-font-size
  • interface-toggles
  • keymap-arrows
  • keymap-bind-alternatives
  • keymap-list
  • keymap-order-independent-overrides
  • keymap-rebind-tests
  • keymap-symbol-keys
  • layout-independent-chords
  • master
  • mru-reselection-on-close
  • native-fullscreen
  • notify-diagnosability
  • occlusion-followups
  • open-cwd
  • osc-color-change
  • osc111-reset
  • overlay-anchor-sizing
  • overlay-follow-spike
  • overlay-mute
  • overlay-resize
  • overlay-surface-reads
  • pane-aware-status
  • pane-id-status
  • pane-scoped-overlays
  • pane-status-precedence
  • pane-swap
  • persist-workspace-expansion
  • persistent-sessions
  • pick-followups-270
  • quick-terminal-panel
  • quick-terminal-size
  • recent-sessions-button
  • reduce-memory-usage
  • remote-sessions
  • restore-capture-followups
  • restore-control-bytes
  • restore-env-dual-theme
  • scratch-pane
  • session-context
  • session-hud
  • session-new-no-select
  • session-placement-flags
  • session-restore-override
  • sidebar-add-session-toggle
  • sidebar-autohide
  • sidebar-font-size
  • sidebar-truncation-tooltip
  • sidebar-width-command
  • skill-command-prefixes
  • skill-plugin
  • split-divider-dblclick
  • split-focus-and-sidebar-visibility
  • ssh-wrapper-463
  • status-changed-at
  • status-color
  • surface-binding-realized
  • surface-cursor
  • test-comment-sweep
  • toolbar-hidden-mode
  • type-nul-reject
  • upstream-agtermcore-linux-portability
  • window-minimize
  • workspace-collapse
  • workspace-focus-set
  • workspace-nav
  • workspace-root-dir
  • worktree-session-theme
  • wrapper-osc7-docs

01 Sep 2026 09:05AM UTC coverage: 97.614% (+0.01%) from 97.604%
33490419939

push

github

web-flow
feat(control): report the foreground shell on a session node (#525)

* feat(control): report the foreground shell on a session node

`tree` omitted `foreground` both when a shell held the pane and whenever the
process could not be read, so a caller could not tell those apart.
`cookbook/park-and-resume` documents that as a data-loss limit: an unreadable
pane is parked as idle, replayed as a plain shell, and the record of what it was
running goes with the deleted workspace.

Session nodes now carry `foregroundShell`/`splitForegroundShell`, the basename of
the recognized shell holding each pane's foreground, present exactly when that
pane's `foreground` is absent because a shell holds it. For a pane that exists,
both absent now means agterm could not read the process.

The field deliberately does not claim the pane is at a prompt, and says so on
every surface. A builtin - `read`, `vared`, a `while` loop - runs inside the
shell process, so argv stays the shell's and a pane blocked waiting for input is
indistinguishable from one at a prompt; libghostty exposes no OSC 133 mark, so
there is no prompt signal to report instead. Treating it as permission to type
would inject into a running `read`. A regression test pins that contract so it
fails loudly if the classifier ever changes.

The split pair needs `hasSplit` to interpret: with no split pane both fields are
absent because there is no pane, not because anything was unreadable. `hasSplit`
stays omitted when false.

CommandRestore gains `PaneForeground` and a `paneForeground` classifier;
`ForegroundProcess.running` returns it while the restore capture collapses the
shell case back to nil, so what a pane re-runs at launch is unchanged. The
basename comes from the dash-stripped argv, in that order - `basename` splits on
`/`, so the reverse order leaves a bare `-zsh` intact.

`AppStore.controlTree`'s primary entry point takes one `PaneForeground` closure
per pane under new labels, and `ControlProtocolCompatibi... (continued)

41 of 41 new or added lines in 4 files covered. (100.0%)

9245 of 9471 relevant lines covered (97.61%)

4308450.17 hits per line

Relevant lines Covered
Build:
Build:
9471 RELEVANT LINES 9245 COVERED LINES
4308450.17 HITS PER LINE
Source Files on master
  • Tree
  • List 115
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
33490419939 master feat(control): report the foreground shell on a session node (#525) * feat(control): report the foreground shell on a session node `tree` omitted `foreground` both when a shell held the pane and whenever the process could not be read, so a calle... push 01 Sep 2026 09:09AM UTC web-flow github
97.61
33489923963 remote-sessions Merge e0893ea61 into cb31f445d Pull #524 01 Sep 2026 09:05AM UTC web-flow github
97.44
33488438262 remote-sessions Merge eefaf8b16 into cb31f445d Pull #524 01 Sep 2026 08:47AM UTC web-flow github
97.44
33485476716 idle-shell-readback Merge e46bbf19b into cb31f445d Pull #525 01 Sep 2026 08:11AM UTC web-flow github
97.61
33484618502 idle-shell-readback Merge abc21c7a1 into cb31f445d Pull #525 01 Sep 2026 08:01AM UTC web-flow github
97.61
33482168003 remote-sessions Merge 3d0e388db into cb31f445d Pull #524 01 Sep 2026 07:29AM UTC web-flow github
97.42
33480320103 remote-sessions Merge 14fb271d1 into cb31f445d Pull #524 01 Sep 2026 07:07AM UTC web-flow github
97.42
33448742734 master perf(sidebar): avoid redundant session lookup push 31 Aug 2026 11:04PM UTC umputun github
97.6
33441402834 master fix(status): stop one split pane's agent status erasing the other's block (#523) * feat(status): stop one pane's agent status erasing the other's block While a session is blocked, a session.status write from a different pane that is neither bloc... push 31 Aug 2026 09:31PM UTC web-flow github
97.6
33440850125 pane-status-precedence Merge cbc3cecbd into e04a2049a Pull #523 31 Aug 2026 09:25PM UTC web-flow github
97.6
See All Builds (561)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc