There is a small plus sign at the foot of the left rail in Write and in Plot. For three weeks it sat seven points off centre. It is plain in my screenshots from 26 September. The review of that set, ten agents hunting for faults and eight more checking before and after, passed it.
I found out on 14 October, when I stopped looking and started measuring.
01Why it hid
An offset that is the same everywhere reads as the design. I had got used to seeing it in every screenshot. A reviewer, human or not, compares one part of a picture to another, and the plus looked like the others. Measuring the gap showed what I had missed.
02What I measured
All 57 states of the screenshot set, in light and dark: every destination, every right-hand pane, a book's three pages, Plot's views.
- Every icon button, 1,036 of them across the set: where the image sits inside the button, and where the ink lands.
- Every line of text, 2,366 of them: its contrast against the pixels behind it, by the WCAG web-accessibility measure (4.5 to 1, or 3 to 1 for large type).
- Every sidebar: where each label and each rule starts.
- Every selectable row, selected in turn, measured on its highlight.
Before trusting the tool that reads the pixels, I checked it against colours I already knew. Ink on the panel came out at 13.2 to 1 and the quiet grey at 4.9 to 1, which is what the colours themselves give.
03What it found
The plus sign went back to the middle of its square in its own commit. There were other fixes too. The act names in Write and the chapters caption in Analysis started two points to the left of every other row in the rail, because they are labels and the rows are buttons, whose titles start two points in. The beat numbers in Plot were set in the line's stripe colour, and in light mode teal measured 1.71 to 1 and purple 3.31 to 1. They are now 4.96 and 4.79.
One change is waiting on me: the quiet grey sits near the floor in a few places, and I still have to decide whether to darken it. I still need to decide how dark it should be while keeping the text readable.
04Feel
My standard for a click is 5 milliseconds. I had not measured the whole app click by click, so I built a timing tool that runs 71 of them, from the click to the frame that shows it and the work queued after.
The measured times improved, but none of the 69 actions that returned a result met my 5ms target. Write to Plot went from 179ms to 77ms. Desk to Plot from 186 to 94. Desk to Library from 104 to 54. The median page switch went from 61ms to 54ms. Of the 69 that gave a result, 11 returned times below 16.7ms. None of the 69 is under 5.
The cause was dull: arriving at a page rebuilt the page, every time, whether or not anything had changed. Plot rebuilt its rail twice and every plotline card. The Library rebuilt its shelf. The fix is to rebuild only when something moved. On a 40-chapter novel, arriving at Write takes 14.4ms, opening a chapter 13.6ms. A keystroke, measured separately, takes 0.5ms.
05The awards shelf
On 18 September I chased a stutter in the awards shelf and suspected the emblems. It was not their fault. On the version of macOS on my Mac, the shelf was redrawing views that were off screen on every wheel tick. Fifty-seven laurels cost 60ms a tick, and 150ms where the emblems are, against a 16.7ms frame.
The fix was that a laurel at rest should be pixels. Each one draws itself once into a bitmap and hands that over. A scroll tick now costs 0.6ms, and the process uses 26MB where it used 105.
06Why this one had an answer
For these checks I had a defined target: the centre of the button and a contrast threshold. I checked the measuring tool against colours I knew before trusting its results. Judging a story needs an agreed basis for what counts as a right answer. These alignment checks were more straightforward.
Thanks for reading.
J.H.
How this post was made
Figures are from SWEEP_2026-10-14.md, PERFORMANCE_2026-10-14.md and AWARDS_2026-09-18.md in the Mac app's deliverables folder. Drafted by Grok Bot and GPT-6 Astra on behalf of Jamie Heerlyn.
