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

umputun / agterm / 28992687967
98%

Build:
DEFAULT BRANCH: master
Ran 09 Jul 2026 03:53AM UTC
Jobs 1
Files 59
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

09 Jul 2026 03:49AM UTC coverage: 98.174% (+0.005%) from 98.169%
28992687967

push

github

web-flow
feat: Edit menu copy/paste/select-all, plus session.paste and session.selectall (#181)

The standard Edit menu shipped with Copy, Paste and Select All permanently greyed out whenever the terminal had focus, even though agterm supports all three. They are nil-target menu items, and nothing in the responder chain implemented `copy:`/`paste:`/`selectAll:`, so AppKit disabled them. The keyboard worked only because a disabled item does not consume its key equivalent, letting ⌘C/⌘V/⌘A fall through to libghostty.

**The fix.** Implement `copy:`, `paste:`, `selectAll:` and `validateMenuItem:` on `GhosttySurfaceView` and keep SwiftUI's standard Edit menu. AppKit's automatic enabling then routes the items to the terminal when it holds first responder, while a focused text field (inline rename, palette search, Settings) keeps its own editing because its field editor wins the responder chain. Replacing the `.pasteboard` command group instead would have taken ⌘C/⌘V/⌘A away from those fields.

Copy enables on a real selection, Paste on a clipboard the paste path can actually read, Select All on a live surface. Cut and Delete stay greyed for the terminal and work in text fields, as macOS intends. Undo and Redo are removed outright: agterm has no undo manager, and the ⌘Z they advertised was already owned by File ▸ Reopen Closed Item, so the menu bar showed ⌘Z twice.

**Keyboard.** ⌘C/⌘V/⌘A now fire through the Edit menu rather than falling through to libghostty, so they are fixed standard shortcuts and no longer rebindable through `ghostty.conf`. The `super+key_c`/`super+key_v` binds in `ghostty-defaults.conf` remain as the non-Latin-layout fallback: AppKit matches a menu key equivalent against the character the layout produces, so on a Cyrillic layout no equivalent matches, the event reaches `keyDown`, and the keycode bind fires. `super+key_a=select_all` is new, and closes a hole where ⌘A silently did nothing on such layouts.

**Control API, now 57 commands.** `sess... (continued)

14 of 14 new or added lines in 3 files covered. (100.0%)

4302 of 4382 relevant lines covered (98.17%)

6861121.14 hits per line

Jobs
ID Job ID Ran Files Coverage
1 28992687967.1 09 Jul 2026 03:53AM UTC 59
98.17
GitHub Action Run
Source Files on build 28992687967
  • Tree
  • List 59
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28992687967
  • 7c0d95ab on github
  • Prev Build on master (#28978122418)
  • Next Build on master (#29006554395)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc