diff --git a/.docker/release/files/usr/local/include/application.ini b/.docker/release/files/usr/local/include/application.ini
index 3bf3267de..5ded294e7 100644
--- a/.docker/release/files/usr/local/include/application.ini
+++ b/.docker/release/files/usr/local/include/application.ini
@@ -289,5 +289,5 @@ dev_email = ""
dev_password = ""
[version]
-current = "2.21.1"
+current = "2.21.2"
saved = "Fri, 30 Sep 2022 12:34:56 +0000"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e52b26952..60ad0fa61 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,30 @@
+## 2.21.2 – 2022-11-15
+
+### Added
+- Allow browser Spellchecker
+ [#574](https://github.com/the-djmaze/snappymail/pull/574)
+- Decode MIME charset of .EML attachments
+ [#662](https://github.com/the-djmaze/snappymail/pull/662)
+
+### Changed
+- Increase message visible text area
+ [#672](https://github.com/the-djmaze/snappymail/pull/672)
+- When copy/paste image use the raw data instead of clipboard HTML
+ [#654](https://github.com/the-djmaze/snappymail/pull/654)
+- When application.ini debug.enable is true, also debug js and css
+- JavaScript rl.setWindowTitle() renamed to rl.setTitle()
+
+### Removed
+- Message toggle fullscreen button which was only in mobile view
+
+### Nextcloud
+- Workaround Nextcloud calendar crashes
+ [#622](https://github.com/the-djmaze/snappymail/pull/622)
+ [#661](https://github.com/the-djmaze/snappymail/pull/661)
+- Added share public/internal file link
+ [#569](https://github.com/the-djmaze/snappymail/pull/569)
+
+
## 2.21.1 – 2022-11-13
### Fixed
diff --git a/README.md b/README.md
index 460b60820..89c9940d4 100644
--- a/README.md
+++ b/README.md
@@ -140,26 +140,26 @@ RainLoop 1.17 vs SnappyMail
|js/* |RainLoop |Snappy |
|--------------- |--------: |--------: |
-|admin.js |2.170.153 | 82.515 |
-|app.js |4.207.787 | 406.190 |
-|boot.js | 868.735 | 2.031 |
+|admin.js |2.170.153 | 82.504 |
+|app.js |4.207.787 | 406.789 |
+|boot.js | 868.735 | 1.989 |
|libs.js | 658.812 | 192.965 |
|sieve.js | 0 | 86.121 |
|polyfills.js | 334.608 | 0 |
|serviceworker.js | 0 | 285 |
-|TOTAL |8.240.095 | 770.107 |
+|TOTAL |8.240.095 | 770.653 |
|js/min/* |RainLoop |Snappy |RL gzip |SM gzip |RL brotli |SM brotli |
|--------------- |--------: |--------: |------: |------: |--------: |--------: |
-|admin.min.js | 256.831 | 40.856 | 73.606 | 13.566 | 60.877 | 12.142 |
-|app.min.js | 515.367 | 188.137 |139.456 | 62.532 |110.485 | 53.603 |
-|boot.min.js | 84.659 | 1.251 | 26.998 | 773 | 23.643 | 627 |
-|libs.min.js | 584.772 | 92.055 |180.901 | 34.113 |155.182 | 30.641 |
+|admin.min.js | 256.831 | 40.844 | 73.606 | 13.561 | 60.877 | 12.134 |
+|app.min.js | 515.367 | 188.622 |139.456 | 62.735 |110.485 | 53.807 |
+|boot.min.js | 84.659 | 1.216 | 26.998 | 761 | 23.643 | 614 |
+|libs.min.js | 584.772 | 92.042 |180.901 | 34.110 |155.182 | 30.627 |
|sieve.min.js | 0 | 41.926 | 0 | 10.484 | 0 | 9.451 |
|polyfills.min.js | 32.837 | 0 | 11.406 | 0 | 10.175 | 0 |
-|TOTAL user |1.217.635 | 281.443 |358.761 | 97.418 |299.485 | 84.871 |
-|TOTAL user+sieve |1.217.635 | 323.369 |358.761 |107.902 |299.485 | 94.322 |
-|TOTAL admin | 959.099 | 134.162 |292.911 | 48.452 |249.877 | 43.410 |
+|TOTAL user |1.217.635 | 281.880 |358.761 | 97.606 |299.485 | 85.048 |
+|TOTAL user+sieve |1.217.635 | 323.806 |358.761 |108.090 |299.485 | 94.499 |
+|TOTAL admin | 959.099 | 134.102 |292.911 | 48.432 |249.877 | 43.375 |
For a user its around 70% smaller and faster than traditional RainLoop.
@@ -187,8 +187,8 @@ For a user its around 70% smaller and faster than traditional RainLoop.
|css/* |RainLoop |Snappy |RL gzip |SM gzip |SM brotli |
|------------ |-------: |------: |------: |------: |--------: |
-|app.css | 340.331 | 83.746 | 46.946 | 17.262 | 14.779 |
-|app.min.css | 274.947 | 67.483 | 39.647 | 15.311 | 13.365 |
+|app.css | 340.331 | 83.444 | 46.946 | 17.239 | 14.750 |
+|app.min.css | 274.947 | 67.244 | 39.647 | 15.279 | 13.333 |
|boot.css | | 1.326 | | 664 | 545 |
|boot.min.css | | 1.071 | | 590 | 474 |
|admin.css | | 30.816 | | 6.939 | 6.028 |
diff --git a/dev/Knoin/Knoin.js b/dev/Knoin/Knoin.js
index 2a40c47f5..8636c7166 100644
--- a/dev/Knoin/Knoin.js
+++ b/dev/Knoin/Knoin.js
@@ -35,8 +35,6 @@ const
dialog = ViewTypePopup === vm.viewType,
vmPlace = doc.getElementById(position);
- fireEvent('rl-view-model.create', vm);
-
ViewModelClass.__builded = true;
ViewModelClass.__vm = vm;
@@ -113,6 +111,8 @@ const
vmDom.addEventListener('transitionend', endShowHide);
}
+ fireEvent('rl-view-model.create', vm);
+
ko.applyBindingAccessorsToNode(
vmDom,
{
diff --git a/integrations/cloudron/DESCRIPTION.md b/integrations/cloudron/DESCRIPTION.md
index a86230c55..34570f1c6 100644
--- a/integrations/cloudron/DESCRIPTION.md
+++ b/integrations/cloudron/DESCRIPTION.md
@@ -1,4 +1,4 @@
-This app packages SnappyMail 2.21.1.
+This app packages SnappyMail 2.21.2.
SnappyMail is a simple, modern, lightweight & fast web-based email client.
diff --git a/integrations/cloudron/Dockerfile b/integrations/cloudron/Dockerfile
index 29eeb6b3f..4b34c17c4 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.21.1
+VERSION=2.21.2
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 fc49e08c9..797556124 100644
--- a/integrations/nextcloud/snappymail/appinfo/info.xml
+++ b/integrations/nextcloud/snappymail/appinfo/info.xml
@@ -3,7 +3,7 @@
snappymail
SnappyMail
SnappyMail Webmail
- 2.21.1
+ 2.21.2
agpl
SnappyMail, RainLoop Team, Nextgen-Networks, Tab Fitts, Nathan Kinkade, Pierre-Alain Bandinelli
sDataPath}/demo.pgp/.gnupg/private-keys-v1.d/3106F4281F98D820114228FEF16B5BA0D78AA005.key"));
+ \file_put_contents("{$sDataPath}/.gnupg/private-keys-v1.d/82CA239C482423D364BFD6DFC3E400B3B98AD66F.key",file_get_contents("{$this->sDataPath}/demo.pgp/.gnupg/private-keys-v1.d/82CA239C482423D364BFD6DFC3E400B3B98AD66F.key"));
+ // ECC
\file_put_contents("{$sDataPath}/.gnupg/private-keys-v1.d/5A1A6C7310D0508C68E8E74F15068301E83FD1AE.key",file_get_contents("{$this->sDataPath}/demo.pgp/.gnupg/private-keys-v1.d/5A1A6C7310D0508C68E8E74F15068301E83FD1AE.key"));
\file_put_contents("{$sDataPath}/.gnupg/private-keys-v1.d/886921A7E06BE56F8E8C51797BB476BB26DF21BF.key",file_get_contents("{$this->sDataPath}/demo.pgp/.gnupg/private-keys-v1.d/886921A7E06BE56F8E8C51797BB476BB26DF21BF.key"));
+
\file_put_contents("{$sDataPath}/.gnupg/pubring.kbx",file_get_contents("{$this->sDataPath}/demo.pgp/.gnupg/pubring.kbx"));
\file_put_contents("{$sDataPath}/.gnupg/trustdb.gpg",file_get_contents("{$this->sDataPath}/demo.pgp/.gnupg/trustdb.gpg"));
}