4.10.1 — A scrollbar attached to nothing, and prompts you can copy

A snapshot as of 4.10.1 (released 2026-08-20). It will go stale as the app moves on — that is expected, and the living reference is the guide each section links to.

npx mulmoterminal@latest

Nothing to configure. Both fixes below apply the moment you are on this version — there is no setting, no restart beyond the usual one, and nothing to switch on.


A zoomed cell grew a scrollbar that scrolled nothing

Before. Enlarging a cell — most reliably by picking a different session from the cockpit roster — could leave a scrollbar down the side of the terminal that was attached to nothing:

  • dragging the thumb moved the thumb and not the terminal (the agent received zero bytes)
  • the wheel still scrolled the agent, so the two disagreed about where you were
  • it did not go away. Switching cells, redrawing, waiting — it stayed until the next resize

Why. xterm stops drawing a cell that is off the screen. A resize that arrives while it is paused updates the row count straight away but defers the renderer’s dimensions, and the viewport builds its scroll range out of both — so it ends up combining the pre-zoom canvas height with the post-zoom content length. That range does not exist, and on the alternate screen (a full-screen TUI like vim, or claude itself, redraws in place rather than scrolling) nothing ever recalculates it.

The roster is what made it reproducible: until the moment you enlarge it, that cell is parked off-screen at left: -99999px, so the resize always arrived while xterm was paused.

Now. The fit is held while the cell is off-screen and run inside the delivery that brings it back on-screen, which flushes xterm’s own paused resize in the same batch.

How to tell you have it. Zoom into one cell, then use the roster to enlarge a different session — one running a full-screen program (vim, or a Claude cell) shows it best. No scrollbar appears beside the terminal. If one does, it is a different bug and worth reporting.

Also worth knowing. The size handed to the agent’s PTY was measured before and after the fix in every view state and is identical, so nothing about how your programs are laid out changes. The underlying defect is xterm.js’s own — a resize deferred while paused, with no re-sync of the viewport afterwards.

Reported as #1762. What the roster is and how to enlarge a cell from it: the basics.


You could read a prompt in the Prompts pane, but not copy it

Before. The Prompts pane (right panel, beside an enlarged cell) lists the prompts you sent. Dragging the mouse across one selected nothing at all — the text was right there and could not be taken out of the app by the ordinary route.

Why. Each row was one large <button>, and a browser makes a button’s contents unselectable. Not a styling problem and nothing to do with the pane: the markup itself said “this is a control, not text”.

Now. The button is just the header row — the time, plus an expand chevron — and the prompt text sits outside it as ordinary selectable text. Keyboard operation and aria-expanded are unchanged. A click that ends a drag-selection no longer collapses the row, which would have thrown away the selection you had just made.

How to tell you have it. Open the Prompts pane, drag across a prompt, and copy it with the usual shortcut. Two visible differences confirm you are on this version: rows now show an expand chevron at the right-hand end, and finishing a selection inside a row leaves it open.

One thing to know. A collapsed row is clipped to three lines on screen, but a drag-selection takes the whole prompt, not the three visible lines. That is deliberate — it is the text you asked for.

There is still no copy button; this was about the ordinary browser selection. What the pane is and where it lives: what you can do with it.


Everything fixed here

Fix Issue / PR
A zoomed cell grew a scrollbar that scrolled nothing #1762
The Prompts pane could be read but not selected or copied #1806

This release also carries shared-app work and a large test-suite change, neither of which changes anything you do in the app; both are in the changelog.

What the previous release added is in the 4.10.0 guide.


This site uses Just the Docs, a documentation theme for Jekyll.