A patch release, and worth taking if you are on 4.0.1.
Contacts: select all matching
Three bugs, one of which could delete the wrong people.
4.0.1 returned vCard UIDs from "Select all matching", while delete expects numeric ids. intval("1234-abcd-...") is 1234, so deleting a large selection could remove contacts that were never in it. If you have used select all followed by delete on 4.0.1, check your address book.
Two more, both about size: a selection spanning several pages only inserted the first 50 addresses into a message, and turning to page two counted it as 25 contacts instead of 50. Pages are now ordered deterministically, so a contact can no longer land on two pages while another is skipped entirely.
Contacts: two additions
- Hide contacts without an email address, in Settings, Contacts. Off by default, since a phone-only contact is a perfectly good thing to keep. Filtered in the database rather than in the browser, so the count, the pages and "Select all matching" all agree on what exists.
- Composing to a selection now tells you when people were left out: "110 of 125 selected contacts had an email address." It used to just quietly address fewer people than you picked.
UTF-8 corruption when sending
\R in a regular expression matches 0x85 unless the /u modifier is set, and 0x85 is a continuation byte inside plenty of ordinary UTF-8 characters. Sending mail could mangle them. Found and fixed by @kostaris in #21.
Translations
French is complete, thanks to @hguilbert in #22 and #23. Danish, German and Spanish are complete as well.
Every release now carries a translation-status.txt listing exactly which strings each language is missing, so translators can see where theirs stands without cloning the repository.