diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b9bcd2cf..cf59a52bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,14 @@ -## 2.37.3 – 2024-08-13 +## 2.37.3 – 2024-08-27 ### Added +- Mark images with width=1 as tracking pixel +- Show warning in Admin -> About when PHP runs in 32bit - Edit ACL rules [#157](https://github.com/the-djmaze/snappymail/issues/157) +- Show GnuPG version for + [#1560](https://github.com/the-djmaze/snappymail/issues/1560) +- Make sure only scalar values are allowed in $_ENV for + [#1560](https://github.com/the-djmaze/snappymail/issues/1560) - Change minimum new mail check interval [#1678](https://github.com/the-djmaze/snappymail/issues/1678) - Sieve editor does not support "index" extension @@ -10,17 +16,26 @@ ### Changed - Improved domain autoconfig interaction +- MS autodiscover priorities DNS over subdomain - Simplify sieve scripts list [#1675](https://github.com/the-djmaze/snappymail/issues/1675) - Handling of (token) errors due to [#1706](https://github.com/the-djmaze/snappymail/issues/1706) +- Sabre/Xml to v4.0.5 - Update Chinese by @Artoria2e5 +- Update French by @hguilbert ### Fixed - Thread sorting visible after disabling the imap capability [#1574](https://github.com/the-djmaze/snappymail/issues/1574) - Creating new message impossible as long as a draft exists? [#1710](https://github.com/the-djmaze/snappymail/issues/1710) +- InvalidToken error at login + [#1706](https://github.com/the-djmaze/snappymail/issues/1706) + +### Nextcloud +- Force Nextcloud personal language by default + [#1428](https://github.com/the-djmaze/snappymail/issues/1428) ## 2.37.2 – 2024-08-13 diff --git a/README.md b/README.md index 1a517101a..cf28becf0 100644 --- a/README.md +++ b/README.md @@ -140,26 +140,26 @@ RainLoop 1.17 vs SnappyMail |js/* |RainLoop |Snappy | |--------------- |--------: |--------: | -|admin.js |2.170.153 | 84.054 | -|app.js |4.207.787 | 441.754 | -|boot.js | 868.735 | 4.147 | +|admin.js |2.170.153 | 84.203 | +|app.js |4.207.787 | 445.359 | +|boot.js | 868.735 | 4.343 | |libs.js | 658.812 | 193.716 | -|sieve.js | 0 | 84.598 | +|sieve.js | 0 | 84.571 | |polyfills.js | 334.608 | 0 | |serviceworker.js | 0 | 285 | -|TOTAL |8.240.095 | 808.554 | +|TOTAL |8.240.095 | 812.477 | |js/min/* |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli | |--------------- |--------: |--------: |------: |------: |--------: |--------: | -|admin.min.js | 256.831 | 41.162 | 73.606 | 13.885 | 60.877 | 12.434 | -|app.min.js | 515.367 | 199.730 |139.456 | 67.669 |110.485 | 57.672 | -|boot.min.js | 84.659 | 2.087 | 26.998 | 1.204 | 23.643 | 1.002 | +|admin.min.js | 256.831 | 41.256 | 73.606 | 13.940 | 60.877 | 12.493 | +|app.min.js | 515.367 | 201.270 |139.456 | 68.096 |110.485 | 58.078 | +|boot.min.js | 84.659 | 2.231 | 26.998 | 1.271 | 23.643 | 1.067 | |libs.min.js | 584.772 | 92.365 |180.901 | 34.487 |155.182 | 30.830 | -|sieve.min.js | 0 | 41.093 | 0 | 10.325 | 0 | 9.327 | +|sieve.min.js | 0 | 41.288 | 0 | 10.327 | 0 | 9.318 | |polyfills.min.js | 32.837 | 0 | 11.406 | 0 | 10.175 | 0 | -|TOTAL user |1.217.635 | 294.182 |358.761 |103.360 |299.485 | 89.504 | -|TOTAL user+sieve |1.217.635 | 335.275 |358.761 |113.685 |299.485 | 98.831 | -|TOTAL admin | 959.099 | 135.614 |292.911 | 49.576 |249.877 | 44.266 | +|TOTAL user |1.217.635 | 295.866 |358.761 |103.854 |299.485 | 89.975 | +|TOTAL user+sieve |1.217.635 | 337.154 |358.761 |114.181 |299.485 | 99.293 | +|TOTAL admin | 959.099 | 135.852 |292.911 | 49.698 |249.877 | 44.390 | For a user it is around 68% smaller and faster than traditional RainLoop. diff --git a/integrations/cloudron/DESCRIPTION.md b/integrations/cloudron/DESCRIPTION.md index f4a440cd3..5f4778d97 100644 --- a/integrations/cloudron/DESCRIPTION.md +++ b/integrations/cloudron/DESCRIPTION.md @@ -1,4 +1,4 @@ -This app packages SnappyMail 2.37.2. +This app packages SnappyMail 2.37.3. SnappyMail is a simple, modern, lightweight & fast web-based email client. diff --git a/integrations/cloudron/Dockerfile b/integrations/cloudron/Dockerfile index 7c8c45707..7d0b64200 100644 --- a/integrations/cloudron/Dockerfile +++ b/integrations/cloudron/Dockerfile @@ -4,7 +4,7 @@ RUN mkdir -p /app/code WORKDIR /app/code # If you change the extraction below, be sure to test on scaleway -VERSION=2.37.2 +VERSION=2.37.3 RUN wget https://github.com/the-djmaze/snappymail/releases/download/v${VERSION}/snappymail-${VERSION}.zip -O /tmp/snappymail.zip && \ unzip /tmp/snappymail.zip -d /app/code && \ rm /tmp/snappymail.zip && \ diff --git a/integrations/nextcloud/snappymail/appinfo/info.xml b/integrations/nextcloud/snappymail/appinfo/info.xml index 84d90a880..de7367d97 100644 --- a/integrations/nextcloud/snappymail/appinfo/info.xml +++ b/integrations/nextcloud/snappymail/appinfo/info.xml @@ -3,7 +3,7 @@ snappymail SnappyMail SnappyMail Webmail - 2.37.2 + 2.37.3 agpl SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli getAvatar($sEmail, !empty($aBimi[0]), $sBimiSelector))) { + \header("Cache-Control: max-age={$maxAge}, private"); + \header('Expires: '.\gmdate('D, j M Y H:i:s', $maxAge + \time()).' UTC'); \header('Content-Type: '.$aResult[0]); echo $aResult[1]; } else { diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php index 4ad8d20d0..da6b9e199 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php @@ -184,6 +184,7 @@ trait Accounts $bReload = false; $oAccount = $this->getAccountFromToken(); if ($oAccount instanceof AdditionalAccount && $oAccount->Email() === $sEmailToDelete) { +// $this->SetAdditionalAuthToken(null); \SnappyMail\Cookies::clear(self::AUTH_ADDITIONAL_TOKEN_KEY); $bReload = true; } diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php index 74c474a7d..d94de5454 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/base.php @@ -76,12 +76,16 @@ abstract class Base function __destruct() { $this->proc_close(); - $gpgconf = static::findBinary('gpgconf'); if ($gpgconf) { + $cmd = $gpgconf . ' --kill gpg-agent'; + // https://github.com/the-djmaze/snappymail/issues/1560#issuecomment-2144817883 +// if (\version_compare($this->version, '2.4.0', '<')) { + $cmd .= ' ' . \escapeshellarg($this->options['homedir']); +// } $env = ['GNUPGHOME' => $this->options['homedir']]; $pipes = []; - if ($process = \proc_open($gpgconf . ' --kill gpg-agent --homedir ' . \escapeshellarg($this->options['homedir']), [], $pipes, null, $env)) { + if ($process = \proc_open($cmd, [], $pipes, null, $env)) { \proc_close($process); } } diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php index aaa1c839e..203a180b0 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/gpg/smime.php @@ -58,20 +58,6 @@ class SMIME extends Base } } - function __destruct() - { - $this->proc_close(); - - $gpgconf = static::findBinary('gpgconf'); - if ($gpgconf) { - $env = ['GNUPGHOME' => $this->options['homedir']]; - $pipes = []; - if ($process = \proc_open($gpgconf . ' --kill gpg-agent --homedir ' . \escapeshellarg($this->options['homedir']), [], $pipes, null, $env)) { - \proc_close($process); - } - } - } - public static function isSupported() : bool { return parent::isSupported() && static::findBinary('gpgsm'); diff --git a/vendors/knockout/src/utils.js b/vendors/knockout/src/utils.js index e47cbabf9..a2129c2e3 100644 --- a/vendors/knockout/src/utils.js +++ b/vendors/knockout/src/utils.js @@ -25,6 +25,7 @@ ko.utils = { : node => node.cloneNode(true)), setDomNodeChildren: (domNode, childNodes) => { +// domNode.replaceChildren(...childNodes); ko.utils.emptyDomNode(domNode); childNodes && domNode.append(...childNodes); },