factorai v0.8.0
Sessions
Sub-agents fold under the session that spawned them. A session that ran six agents used to put seven rows on the project page, burying the sessions you actually go back into. Groups are collapsed by default now, behind a disclosure chevron, with a count badge that says how many are hidden. Expanding indents them under the parent, and the sub-agent / read-only markers are right-aligned so they share a column instead of landing wherever a truncated title happened to end.
The session header asks before it kills. Its Stop button was the one place in the app where a single click ended a running agent with no undo and no question. It is now an × opening the same confirmation a tab's × opens — one shared dialog, so the two can't drift apart. Closing from the header also drops the session's tab immediately instead of waiting for an exit event that might never arrive.
Files
Right-click menu on file tree rows. Open · Open in default app · Copy contents · Copy absolute path · Copy relative path. The contents row disables itself, with the reason in its label, for a directory, a binary, or a file too large to have been read whole — half a file on the clipboard that looks like a whole one is worse than no row at all.
The WebView's own context menu is gone from the app's chrome. Right-clicking anywhere factorai didn't draw a menu used to produce a browser's: Back, Forward, Reload, Inspect Element — and Reload in a desktop window drops every terminal you have open. The terminal keeps its native menu, because right-clicking it pastes, and that is the only mouse-driven paste a session has.
Indexing
Sessions whose transcript has been deleted are reaped from the index. The index only ever added, so a deleted .jsonl stayed in it forever — 147 rows against 80 files on one real machine. Worse than a stale count: the row kept its title, so a search hit opened it, found nothing on disk, and started an empty new session wearing a long conversation's name. A scan now drops rows whose file is gone, while leaving alone anything it could not read and any session with a live process behind it.
Under the hood
- Formatting is clean across the whole repo and checked in CI, on both the TypeScript and Rust sides.
- The dead
get_sessioncommand was removed.
Installing
macOS — the .dmg is unsigned, so Gatekeeper blocks it on first open. Clear the quarantine flag after copying the app across:
xattr -dr com.apple.quarantine /Applications/factorai.app
Linux — the .AppImage needs glibc 2.39 or newer (Ubuntu 24.04+, Debian 13+, Fedora 40+). chmod +x it and run it.
Already running factorai? It will offer this version itself — the update badge appears in the header.
Full Changelog: v0.7.0...v0.8.0