Stage, commit and push
from a panel that cannot force, reset or merge.

A git panel inside an editor is normal. What is worth describing here is the shape of the permission behind it: which calls exist at all, which ones the user has to switch on, and which ones were left out because a sidebar is the wrong place to finish them.

Studio 1.6.1 · macOS 14+6.8 MB download

What the API is, and what it deliberately is not.

Two gates, no shell interpolation, and an omission list chosen so that nothing reachable from a panel can destroy work that is not already committed.

01

No plugin string reaches git’s command line

Branch, status, history, remotes and diffs are read through arguments the host builds. There is no place for a plugin to inject an option, which is why reading needs no permission at all.

02

Writing is gated twice, and checked late

The manifest declares "git": "write"; you grant it in Manage Plugins. Consent is recorded against a fingerprint of the capabilities you agreed to and read at the moment of each call, so an update that asks for more has to ask again, and revoking stops a plugin already running.

03

The commit message goes in on stdin

Never as an argument. Paths, refs, remote names and remote URLs are refused outright if they could be read as options.

04

Panels can take input

A field node with an onSubmit handler is what makes a commit message possible in a sidebar. The plugin supplies the initial value and the view owns what is typed after it, so a redraw does not take half a sentence away.

05

Destructive confirmations belong to the host

Discarding tracked edits and removing a remote are confirmed by Linelark itself, in front of the call. A plugin cannot show that dialog and one that could would be the wrong thing to trust with it.

06

Diffs open as two files, not as a patch

A plugin hands over a unified diff and the editor draws the two versions side by side, aligned, numbered in their own files, with long lines wrapped. A plugin that offers merges adds arrows down the middle.

07

Long operations are asynchronous

Fetch, pull, push and the async readers run off the main thread, so a panel does not freeze the editor while the network is slow.

What is in the API, and what is not.

The right-hand column is not a roadmap. Each omission is either destructive or leaves the tree in a state a sidebar cannot finish, and the terminal is one keystroke away.

In the APINot in the API
Stage, unstage, commitMerge, rebase, cherry-pick
Fetch, pull (fast-forward only), pushForce push, reset, clean
Switch and create branchesTags, stash, submodules
Add, retarget and remove remotesAmend, per-hunk staging
Read branch, status, log, diffAnything that rewrites history

Read from the Linelark Studio 1.6.1 source, not from its documentation. Where the two disagree, this is the one that ships.

Before you grant it.

Nothing here destroys committed work. That is a narrower promise than “safe”, and the difference is worth reading.

  • A granted plugin acts in your nameIt reaches whatever remote the repository is configured with — not the hosts its manifest declared, which describe network requests only. A commit or a push it makes is a real one.
  • No progress, and no cancelA push is one call that answers when it is done or when 120 seconds have passed. A very large push looks like a stalled panel until it returns.
  • Studio onlyThe sandboxed App Store edition does not compile the git reader at all and reports it as unavailable, for the same reason it has no terminal.
  • The panel does not watch the repositoryA commit made in the terminal appears in a plugin panel after its refresh button, the same limitation the folder tree has.
  • Large repositories are feltThe synchronous readers run on the main thread, and repoLog is capped at 2,000 commits for that reason. The async variants are the way out of it.
  • No credential promptA repository that needs one fails with git’s own message rather than hanging on a prompt no window is showing. Configure the credential helper or the SSH key outside the editor.

Open it on
your own files.

Apple-notarized, macOS 14 and newer, Intel and Apple silicon.

Download Studio 1.6.1 6.8 MB · every version, with checksums