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

umputun / agterm / 31075733421
98%

Build:
DEFAULT BRANCH: master
Ran 06 Aug 2026 06:02AM UTC
Jobs 1
Files 90
Run time 1min
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

06 Aug 2026 05:53AM UTC coverage: 97.881% (+0.04%) from 97.839%
31075733421

push

github

umputun
fix(restore): make a captured foreground command replay exactly once

Closing the last window captured each pane's running command, but nothing
consumed that capture durably. The surface factory cleared it in memory and
restore(from:) never wrote back, so the argv sat in windows/<id>.json until an
unrelated structural save — for a window the user only types into, possibly
never. A crash or force-quit in that interval re-ran the command on the next
launch: an `ssh prod` or `npm run dev` the user saw restore once started a
second time unasked.

loadStore now strips the captures as the launch arms them, and the arming moved
to transient pendingForegroundCommand/pendingSplitForegroundCommand slots that
snapshot() does not serialize. Both halves are needed: the strip alone left the
persisted fields live until each surface spawned, and any save in that gap wrote
the argv straight back — applyInactiveWindowSidebarHiding does, and so does the
debounced save reselectIfSelectionHidden schedules from inside restore(from:).
A failed strip disarms instead, since losing a restore to a disk error beats
repeating a command.

Every site that cancels an armed replay moves with it or silently stops working:
recoverOrphanedWindows and restore.clear cleared the persisted fields, now
always nil there, and clearPendingRestoreOverrides has to drop the capture
payloads so one armed at bootstrap does not survive a soft-close round trip.
The split slot is seeded only for a shown split, matching pendingSplitRestoreCommand
and the capture side, so a hidden split's argv can no longer fire on a later ⌘D.

Snapshot conversion moves to AppStore+Snapshot.swift; AppStore.swift was at 999
of its 1000-line budget. restore(from:) stays behind, touching two properties
private to that file.

121 of 122 new or added lines in 3 files covered. (99.18%)

1 existing line in 1 file now uncovered.

7392 of 7552 relevant lines covered (97.88%)

4549988.25 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
99.1
-0.41% agtermCore/Sources/agtermCore/Session.swift

Coverage Regressions

Lines Coverage ∆ File
1
99.1
-0.41% agtermCore/Sources/agtermCore/Session.swift
Jobs
ID Job ID Ran Files Coverage
1 31075733421.1 06 Aug 2026 06:02AM UTC 90
97.88
GitHub Action Run
Source Files on build 31075733421
  • Tree
  • List 90
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #31075733421
  • a8b52523 on github
  • Prev Build on master (#31072326264)
  • Next Build on master (#31082125472)
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