Skip to content

3.1 - Fresh as lemon

Latest

Choose a tag to compare

@nekromoff nekromoff released this 19 Aug 21:47

Security

  • Remote content opt-in now covers images only. Remote stylesheets (, @import) and web fonts are refused in both the CSP and the request interceptor, closing the dynamic-CSS and font-metric-oracle channels from PortSwigger's "CSS: the bomb inside your inbox".
  • URL attributes are normalised the way a browser normalises them - character references resolved (numeric refs with optional semicolon, named via KCharsets plus the HTML 5 names it lacks), tab/LF/CR/NUL stripped - before the scheme is judged. Schemes are now allow-listed; mailove: is refused in sender markup.

Update check

  • Fires 30s after launch, on reconnect and on opening Settings; gated on (last-check time, version checked against). Result cached so the marker shows at startup. Amber badge in the title row that erases itself after 30s and rests as a lemon glyph.

Bug fixes

  • Tag scanning is quote-aware: a '>' inside a quoted attribute value no longer truncates a tag and leave the rest unexamined.
  • Settings backup now copies the file at exit, refuses to copy an empty file over a good spare, and is never read back (=backup only).
  • UI state no longer uses QML Settings, which rewrote every key from memory and reverted concurrent edits; each key is written on its own.

New tests added.