All features

Every Tabby build on this machine

Try the real interface

Explore this workspace.

Real Torbie UI · mock sessions
Tab bar
Loading Torbie…
Technical background

Settings → Builds lists the installed app, the webpack output this fork runs from, electron-builder output inside a checkout, frozen build slots and installer files — with live process counts, memory and uptime, size on disk, build time, arch, branch and provenance. Processes are attributed by executable path, because two builds both called Tabby.exe are otherwise indistinguishable.

The problem

Once there is more than one Tabby on the machine — the installed app, a source build, a frozen slot, an installer someone downloaded — nothing tells you which is which, which is running, which is stale, or what any of them cost on disk.

How it works

Settings → Builds lists every one of them, with live process counts, memory and uptime; size on disk, build time, arch, branch and provenance. Two tabs: the list, with a kind filter and a cards/table switch, and Options. Discovery is one walk of the search roots that classifies each directory — checkout, application directory, or neither — and stops descending as soon as it knows, because a build holds three thousand files nobody needs to list.

Settings
  • builds.searchRoots: ['~/projects','~/Downloads','~/Tabby']

    Where to look. ~/Tabby is a default because frozen slots live outside any checkout.

  • builds.searchDepth: 3

    How deep to descend before giving up.

  • builds.processPollMs: 3000

    How often running processes are re-read.

  • builds.pauseWhenUnfocused: true

    Stop polling while the window is unfocused — it costs a subprocess.

  • builds.autoSize: true

    Walk each build's size off the render path, one at a time, and cache it.

  • builds.autoDiagnose: true

    Health-check each build on every scan.

  • builds.watchForNewBuilds: true

    Offer to switch when a newer slot or installed build of the same product appears. An installed release is never offered one, a build of the running commit or of an ancestor of it is not newer however recently it was copied, and only a slot that is not the active build can be deleted on the way out.

Details
  • Processes are attributed by executable path, from one PowerShell call per poll. tasklist cannot report a path, and two builds both called Tabby.exe are otherwise indistinguishable. Linux reads /proc directly rather than spawning ps.
  • Every fs call here goes through original-fs, because Electron's patched fs mounts an .asar as a directory and the first patched call on one opens the archive and keeps the handle for the life of the process. Sizing a build is such a call, so every packaged build the page listed was pinned by the renderer itself — and Delete then died on the archive it had pinned. Measured: a single lstat, stat, access or readdir through the patched fs is enough, and only a process that never touched the archive can remove it.
  • A Windows junction is not a directory to lstat. A slot's data\plugins is a junction into the shared plugin directory; Node reports it as a symlink, so the size walk skips it and a delete unlinks it rather than following it. Verified on a decoy, and confirmed by arithmetic.
  • Versions come from the executable's own version resource, not from a bundled plugin's package.json — that stamp goes stale, and the installed 1.0.230 here still carries a 1.0.197 plugin stamp.
  • root for a source build is app/dist, never the checkout. Delete means "delete the build", so it must not be able to mean "delete the repo".
  • Delete on a running build quits it first with a WM_CLOSE so the app can save state, forces only after a grace period, and never offers to delete the build this window is running from.
  • Arch is read out of the PE header, except for installers: an NSIS stub is a 32-bit executable whatever it installs, so there the file name wins.
What this does not claim
  • The source catalogue records no separate caveats for this entry. The implementation and evidence above define its scope.
Source commits
BuildsAdded 2026-08-1089 files+4,660 / −220 lines