Six fixes, four of them things you would only hit while actually using the thing rather than testing it.
Deleting inside a filtered list threw you out of it
Click the unread count beside a folder, pick a message, press Delete. The list jumped back to the unfiltered folder, the search box emptied, and "request is aborted" appeared for good measure.
Deleting asks for the next message to be selected by firing the same event a desktop notification click fires. That handler was written for the notification case and navigates to the folder with no page and no search attached, so it walked out of the filtered list every time. It now navigates only when the message is not already on screen, which is the case the notification path actually needs.
The error was a side effect: the stray navigation started a message list request that the delete then cancelled a moment later. Cancelling is deliberate and the list stays quiet about it, but a cancel landing while the response body is still being read arrives in a different shape and slipped past that check. An aborted list request is never worth reporting, so it no longer is.
Notification clicks for a message already visible in your list now select it where it stands instead of resetting the view.
The main account's name followed whichever account you were in
Set a name on the account you log in with, switch to another account, and the main entry fell back to its bare address.
The accounts list comes from the main account, but the identities list comes from whichever account is active, and the label was resolving through the second. The fallback is worked out on the server now, against the main account, and what you typed is kept separate from what it falls back to. The popup had the same fault and clearing the field now lands where the next page load will land, rather than dropping to the address until you reload.
An icon on a table cell broke the row (#45)
Reported by @lvarnava in Settings > Filters > Simple: after editing a filter, the checkbox and drag handle sit below the rest of the row.
The icon classes carry display: inline-block, which was safe while they only ever appeared on inline elements. The 4.0.0 icon migration moved them onto the table cells that draw the glyph, and an inline-block cell leaves the table, so the browser wraps the survivors in an anonymous table underneath. Cells keep being cells now.
Fifteen cells across four templates had this, not just the reported one. The keyboard shortcuts help table was the worst of it, and the enable toggles in Filters and Admin > Domains had it too. The shortcuts icons are centred in their column while I was in there.
Address fields had no hints (#44)
Reported by @m0urs. Add an address to a contact and you get seven identical empty boxes with no way to tell street from city.
The placeholders were in the template the whole time and the keys exist in all five shipped languages. What was missing is the pass that turns them into text: it runs when a contact is loaded and not again, so rows added afterwards were never touched. Each of these lists refreshes its own translations now. The delete button tooltip on email, phone, IM and URL rows was quietly missing for the same reason and is fixed with it.
Upgrading
Nothing to do beyond the usual. No plugin updates this time, unlike 4.0.8.
The delete-inside-a-search fix applies to SnappyMail too: that handler has been
there since 2015. The rest are ours to own, since the broken row comes from our
own icon migration and the address fields and the account name are Tachyon
features to begin with.