If the message was beyond the first loaded page, the background refresh
kept its stale row in the retained tail, so the list and reading pane
never reflected that it had left the current view.
make_rows built each row's label-chip list from project_label_rows,
a helper meant for the "apply label" picker: it returns the entire
label catalog annotated with an applied flag, for checkbox UI. The
chip list rendered that whole catalog with no filter, so every row
showed the same two entries - Marketing and News, the built-in
auto-categories seeded first in catalog order - regardless of which
labels, if any, were actually on the message.
Add applied_label_rows, which filters the catalog down to applied
labels before building rows instead of after, and use it for the
chip list. Strengthen the existing test with a second, unapplied
label so the regression can't reappear silently.
macOS's bundled Helvetica.ttc digitizes "|" sitting flush on the baseline
instead of dipping below it, so it renders squashed and reads as "l" in
HTML email signatures that fall through to the generic sans-serif family.
Confirmed directly against CoreText: it's a property of that font file,
not a bug in fontique/skrifa or this app. Prefer "Helvetica Neue" for the
generic sans-serif family when rendering email bodies, since it shares
the type family but isn't affected.