niobe v0.8.0
Niobe 0.8.0 — the Changes pane knows about your repository
Until now the Changes pane showed one thing: the files the agent's own edit
tools said they had touched, six of them, with "and n more" underneath. It now
shows the repository you are working in.
The branch, and how far it has drifted from its upstream. The working tree,
file by file, with the directory written once and the files grouped under it.
The commits made since the session started, each with its age and its subject,
and the ones your upstream has not got yet marked. All of it measured from the
repository by asking git the same questions you would.
The pane scrolls, and its sections fold, so twenty-three changed files no
longer push everything else off the bottom. The mouse wheel goes to whichever
pane the pointer is over, and the pane you are scrolling shows a scrollbar so
you can tell there is more.
Two kinds of number about the same files, and Niobe will not blend them. The
"Working tree" section is git's count, exact, for every changed file in the
tree — including files this session never touched. "This session" is what the
agent's edit tools reported, which is a floor rather than a measurement: it
carries a "≥" where a call did not say how much it changed, and an em dash
where none of them did. They are separate sections with separate headings
because they are different claims by different parties.
Nothing is invented where nothing was read. A repository Niobe has not
finished reading says so rather than showing you a confident "+0 −0". A
directory that is not a repository grows no branch line and no commits section
instead of empty ones. A file git declines to count lines in keeps an em dash,
which a file that genuinely changed by no lines does not. A branch with no
upstream is not zero commits ahead — it is ahead of nothing, and the figure is
absent. A commit whose upstream git cannot compare against is marked as not
known rather than guessed either way, and the mark is a symbol as well as a
colour, so it survives a sixteen-colour terminal.
Reading a repository is not free — around a tenth of a second on a small tree,
which is six frames' worth — so none of it happens while the screen is being
drawn. Niobe reads on a thread of its own, follows an edit the moment it
lands, and otherwise paces itself against its own cost, so a large repository
never spends more than a sliver of a core keeping the pane current. A read
that is slow or fails leaves what you were looking at alone rather than
blanking it.
F6 folds the working tree away; F7 folds the tool list.