Repository navigation
v1.1.0
Every project in the workspace, each committed on its own
The panel used to read one repository. A session whose working directory is a
monorepo checkout saw one of them, and the rest were invisible however much was
pending in each.
It now finds the repositories around the working directory — the one the session
sits in, plus those directly below it, skipping node_modules, which is how
editors scan — and offers each as a project with its own branch, markers and
commit. Nothing is committed across repositories.
Projects with nothing pending fold into a single row, and the repository the
session is sitting in is named by its whole path while nested projects are named
by their folder.
What made that usable
- Listing a project costs no git. The list is a filesystem walk; asking git
about each project was the expensive half, and it used to be in front of the
first paint. - Markers arrive after the tree draws, because on a wide workspace they
compete with it and the tree is what you are looking at. - The workspace is walked once, when the panel opens and when a refresh asks
for it — never on a poll. It costs 2.6 s here, almost all sandbox ACL checks. - Answers are remembered for twenty seconds, and dropped the moment anything
is staged. - A failed scan no longer looks like an empty workspace, and two scans at
once can no longer overwrite each other. - A nested repository is a project, not a folder in its parent's file list:
git will not describe what is inside it to the parent, so opening one showed
nothing.
Known limitation
A change made outside the panel — in a terminal, say — keeps its marker for up to
twenty seconds, or until you refresh. There is no file watcher.