We have now finally moved to WebKit2. This is a big change since
WebKit2 required all DOM manipulation to be moved to a WebExtension
running in a separate process.
The IPC with the extension is implemented using Google ProtoBufs (>= 3.0)
and Unix Domain Sockets.
WebKit2 is actively maintained and consequently a long list of CVEs in the
old WebKit no longer cause worries. Additionally, each part is shown in
separate IFRAMEs so that essentially all received content is sandboxed (some
metadata like addresses are escaped and shown in main page). This protects better
against EFAIL type attacks (which I believe we were not vulnerable to anyway).
Expect some instability while breaking in this new change!
Important: Make sure you update your plugins! If they try to use the old
WebKit GIO bindings with the new WebKit objects astroid will freeze.
* Show parts in IFRAME
* Toggle between parts without re-opening
* The default part shown (HTML or TEXT) is now configurable
* Optionally show HTML part if no other part
Images and EFAIL:
* Do not allow images in encrypted messages (#499)
* Show CID (attached) images in HTML parts (on C-i)
* Zoom messages with C-+ and C--
* Syntax highlighting through JS has been replaced by a syntax highlight
plugin based on Pygments.
* Add filter_part plugin method, which can be used to modify the displayed HTML
depending on either the text/plain or the text/html part.
* Logging can be configured to go to syslog (or stdout, default). File logging
is removed since we now have multiple processes and this would complicate
writing to one file.
* The configuration file is no longer written back by default if missing values
are found. This also means that values undefined by the user will be updated
if the default is changed.
Various checks for merging older versions of the configuration file to the
current version has been removed. The parser is more resilient and the old
versions are old.