Foreman v1.5.9
v1.5.9The canvas is where sessions live now
Foreman had two places to work on a session — the Sessions page and the canvas — and they had quietly stopped being equals. The canvas drawer had grown into the real thing months ago, the same transcript, composer and Diff panel, so the Sessions page was a second route to the same surface that had to be kept in step and sometimes wasn't. It is gone. The canvas is the only session view, the header calls it Canvas, and anything that used to send you to the Sessions page — a schedule's finished run, a review finding's "Fix this", a session picked from the command palette — now opens that session on the canvas with the right tab already showing. Clicking a session node also selects its project, which is what the Git page and the fan-out, bulk and issue dialogs read, so those stop asking you to go and pick a project you were plainly already looking at. The docked preview pane and the terminal rail retired with the page; both have been canvas nodes for a while. Project Review, which used to be labelled just Review, now says what it is.
Drive a laptop's sessions from your phone
The dashboard could only ever show sessions you had shared one at a time from the desktop, which meant deciding at the desk what you might want later. Turn on "Manage this laptop's sessions from the dashboard" — a new switch in the Share dialog, separate from Share Laptop and deliberately not implied by it — and foremanapps.com lists everything running on that machine, live status included, over a single encrypted connection rather than one per row. From there you can open any of them, start a new session in a project you already have, and read your saved handoffs. It cannot run commands, browse files or delete anything: a new session names a project id and the laptop resolves the directory from its own records, so a browser can only start work somewhere you already added, and detaching a session is the strongest thing it can undo. You can also stop a running turn from the phone now, and cancel a background task individually — a turn interrupt cannot reach one of those by definition. Your phone can be notified too, on the same per-event preferences your desktop already uses: a notification names which session wants you and never what it wants, because the wording is composed from the label the server already holds rather than sent from your laptop.
Saved context, on the canvas
The ✦ Memory shelf above each project box held two unrelated things — memories you had saved and Claude Code's own internal memory files — and offered to delete either. It is now ✦ Saved context and holds what you actually own: your saved memories and your handoff digests, newest first. Clicking a handoff opens the load composer straight from the canvas, with a picker for which session to load it into, so continuing yesterday's work no longer starts by hunting for the session that owns the file. Claude's own memory files are no longer listed or deletable from here; they are the CLI's to manage, and offering a delete button for a format we only read was the wrong side of that line.
The context meter says how many turns you have left
A percentage tells you how full the window is but not whether that matters in the next five minutes or the next hour. The meter now learns how fast a session is filling and turns it into "≈N more turns", on the button's tooltip and above the bar, with the measured growth per turn in the breakdown. It appears once there is a real rate to report and stays away when there isn't, rather than turning a single reading into a forecast. The rate is measured per turn rather than per message from the agent, which matters more than it sounds: a turn with six tool calls reports its usage six times, and counting those as six turns would have promised roughly six times the headroom you have. Two figures got more honest alongside it. The window Codex reports is now explained as the effective one — its input limit minus the slice held back for the reply — because a 258k sitting next to a model advertised at 400k reads as a bug when it isn't. And a learned window can now be corrected downward: a direct reading used to lose to whatever larger number had been inferred earlier, so one bad guess stuck forever.
Claude and Codex keep their own session defaults
Session defaults held one record, so it had to be wiped every time you changed which agent starts new sessions — a Claude model id means nothing to Codex, and an effort level like max is not one Codex has. Switching agent therefore threw away the model and effort you had set. The pane now has a tab for each agent, each with its own model, effort, permission mode and credential, and picking the default agent just moves which one is in front. Switch back and forth as often as you like; neither side forgets. Claude-only settings — output style, and whether other sessions may message this one — no longer appear on the Codex tab, where they were controls that did nothing. The handoff digest picker follows the same rule, defaulting to the cheap summarising model on Claude and to the source session's own model on Codex.
Fixes
An AI review's toolbar used to keep its agent, model and file pickers live while the review ran, so changing one mid-run — or the diff simply moving underneath it — left the bar describing a run that wasn't happening; it now states what the running review was actually given, and the file count and line total are frozen from launch. Context loaded into a session that was parked on an approval was sent straight at a CLI that could not read it and was lost; it is queued now, the same as text typed into a session mid-turn. The canvas layout menu gained a "Check laptop connections" button, for when you have just noticed a stale rail and would rather not wait out the heartbeat. A subagent's token usage no longer counts toward its parent session's context meter — it is a separate conversation with its own window, and it made the reading jump and settle back for the length of every Task call. "View this session's changes" in the command palette no longer sits there enabled with no session selected, doing nothing when picked. And the light theme's accent is the same clay as the dark themes', instead of a blue that belonged to no other part of the app.
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.