Skip to content

v1.1.0

Choose a tag to compare

@shinchen6 shinchen6 released this 14 Oct 07:53
· 7 commits to main since this release

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.