Skip to content

Foreman v1.5.5

Choose a tag to compare

@R3tter R3tter released this 01 Sep 09:44
62fd66a

Every branch shows its CI

The Git page could tell you what your branches were, but nothing about whether they built — you found that out by opening GitHub. The checked-out branch now carries its CI next to its name in the sync bar, every local branch in the drawer carries the same verdict as a dot, and the pull-request list shows each PR's rollup and expands to the named checks behind it, because "1 failed" without saying which job sends you to the browser anyway. Branches that have a PR get this for free, on the same call that lists the PRs; a branch with no PR is asked about when you select it, and there's a "Check CI status" in its right-click menu when you want to re-read one. Worst state wins, so a mostly-green rollup with one red job reads as red, and a check we can't classify counts as pending rather than being quietly dropped — a failure hiding behind a green badge is the one thing this surface must never do. A repo with no CI configured shows nothing at all instead of a reassuring dot it hasn't earned.

Choose what Foreman interrupts you for

Foreman fired six different desktop notifications and there was no way to change any of them short of silencing the whole app in your OS. There's now a Notifications pane in Settings listing each one — a session needing approval, background work finishing, a session erroring, a scheduled run, a chain step, a review settling — with a switch each and a master switch above them. Everything stays on by default, exactly as it behaved before the pane existed; a settings screen isn't a licence to quietly stop telling people things they never asked to stop hearing. Two of those events are new: a session that hits an error used to be the one outcome you most needed to hear about and the only one that waited silently until you came back, and a finished review now says how many findings it came back with. Notifications still stay quiet while Foreman is in front of you, but that's now a toggle too — on a second monitor the window is often focused and nobody is looking at it.

Stop one background task without stopping the session

A Workflow or background Agent outlives the turn that dispatched it, so the Stop button — which interrupts a turn — never reached one. A dispatch that hung could only be cleared by spending a fresh turn asking the agent to kill it, or by killing the session and losing everything else with it. Each running task in the background list now has its own Stop, with a "Stop all" once there's more than one, and stopping one leaves the session and every other task alone. The task closes the same way one that finished on its own does, so the row moves itself from Running to Finished; if nothing happens, the row says so rather than sitting disabled forever claiming it's stopping.

Errors stop taking the app down with them

Anything that went wrong deep in Foreman's own machinery — a stream, a timer, a background poll — arrived as the operating system's own "A JavaScript error occurred" dialog, with a stack trace in it, and the app exited when you dismissed it. Those now surface as a toast in the app's own voice, with the message available to copy for a bug report, and Foreman keeps running. Two specific crashes are fixed outright. Asking for a diff too large to hold in memory — which a checkout onto the wrong branch will produce — used to take the whole app down; the output is now capped, and any view showing a diff that got cut says so instead of presenting a fraction of the change as if it were all of it, which matters most if you were about to send it for review. And closing Foreman while a terminal was still producing output could throw on the way out and show that same dialog as the last thing you saw.

Send several handoffs at once, and get told when to

Loading a handoff into a session sent exactly one, so picking up work that spanned two sessions meant loading one and pasting the other. The load composer now has an "Also send" picker for other saved handoffs and memories to ride along, previewed exactly as it will be sent, with the handoff you clicked Load on kept as the current state and the extras framed as background — two handoffs both claiming to describe the present is worse than one. Separately, a session filling up used to be something you noticed by watching a meter: Foreman now offers a handoff once a session crosses a share of its context window, defaulting to 75%, adjustable or switchable off under Settings › New sessions. It's a share rather than a token count because the window differs by model and by CLI, and it asks once per crossing rather than on every turn afterwards.

Smaller fixes

If your project pointed at a package inside a monorepo, or at a linked worktree, Foreman couldn't tell you were halfway through a merge or a rebase — it looked in the wrong place for the marker files git leaves behind, found nothing, and showed you a clean tree with no conflict banner and no way to continue or abort, on the one checkout where you were actually stuck. Switching projects while the Git page was still fetching pull requests left it blank for up to a minute; it now loads the repo you switched to immediately. And a scheduled run that failed announced itself twice, once as the schedule and once as a generic session error — you now get the one that names the schedule, and turning schedule notifications off actually silences it.


macOS, Apple Silicon. Signed with a Developer ID certificate and notarized by Apple — opens normally with no Gatekeeper warning, and in-app silent auto-update is enabled.