Commit Briefs
use $mid.$partno.$ext for attachments rather than random strings
Keeps the attachment file names stable while it also allows to drop the dep on Tempfile, the unveil of /tmp and the fattr pledge promise too.
build a cache of hashes for each thread
The idea is to use this cache to spot changed threads and re-export all the mail of the threads that changed. This will allow to add thread navigation hints on each exported mail and have them up-to-date. This makes the "skip if already exported" logic in mexp redundant and incomplete. pe will decide whether to export or not, and mexp blindly do the work.
pe: restrict pledge
the children are pre-forked, so at runtime only "stdio" is needed.
set binmode utf8 for the page file handler
avoids the "Wide character in print at ./mkindex line 152, <> line 2751" warnings.
fix last sender name/date in the index
pick up the *latest* From/Date for the indexes, not what happened to be the last mail rendered in that thread. spotted by stsp@