api log · follow-up to #98

A selection that stays, and prompts you can read

Three things from using it: the hover flicker, selections that would not stick, and prompts shown as source when they are written as markdown.

Prompts render as markdown

The card with the prompt rendered as markdown: a paragraph, bold text, a bullet list and a fenced code block, with Rendered/Source beside it.

Default view, using the file viewer's own renderer, control and wording — Rendered / Source — and nothing to edit. The card is pinned here: note the ✕, and the ring on the mark it belongs to up in the plot. Length and checksum stay in the JSON below.

…and the source is one click away

The same card in Source view: the prompt exactly as sent, in mono.

Exactly the text that was sent, unrendered. Neither view scrolls inside the card and neither follows a zoom — Settings has no text-size control to follow (#102 gave that to the file pane).

The flicker, and the selection

  1. The loop the operator diagnosed — card appears, page grows, scrollbar appears, layout narrows, plot shifts, cursor falls off the mark, card goes — is cut at both ends: scrollbar-gutter: stable on the settings scroller so an arriving scrollbar cannot change the layout width, and the card no longer empties when the pointer leaves a mark, so the loop has nothing to oscillate between.
  2. Selection was broken, not just hard to find. Brushing captures the pointer on the plot, and a captured pointer retargets the trailing click to the capture element — so the mark's own click handler never ran. Selection is now committed from the plot's own pointerup, reading what was pressed from the event target. Escape or the ✕ lets go; hovering something else does not steal it.

One thing I could not verify here

This container's Chromium has no layout-affecting scrollbars at all — a plain overflow-y: scroll box reserves 0px in every configuration I tried, with and without overlay-scrollbar flags. So the pixel-level flicker cannot be reproduced in it, and "it is fixed" measured only here would be worth nothing.

What is verified: the gutter is honoured (getComputedStyle(...).scrollbarGutter === 'stable'), the plot's left edge does not move when the card appears under an emulated 15px scrollbar, and the loop is broken independently by the card no longer disappearing. The pixel claim still wants one look on a machine with classic scrollbars.