## 2.36.4 – 2024-06-25 ### Added - Customize private key passphrase expiration interval [#1545](https://github.com/the-djmaze/snappymail/discussions/1545) - AdvancedSearch support for filtering mails before a given date [#1606](https://github.com/the-djmaze/snappymail/pull/1606) by @codiflow - Control valid spam and virus headers [#1607](https://github.com/the-djmaze/snappymail/issues/1607) - Remember S/MIME private Key without function [#1611](https://github.com/the-djmaze/snappymail/issues/1611) - Resize compose dialog - Magnetic theme [#1637](https://github.com/the-djmaze/snappymail/pull/1637) by @TheCuteFoxxy ### Changed - Improved signing messages by allowing to choose between the options - Improved language detection code - More detailed Decrypt errors - Update French by @hguilbert - Update Polish by @tinola - Update Portuguese by @ner00 - Update Spanish by @huloza ### Fixed - Default language error - Undefined $sEmail in DoAdminDomainMatch - Handling Autocrypt header failed on `=` [#1608](https://github.com/the-djmaze/snappymail/issues/1608) - Blank lines are inserted when editing draft [#1609](https://github.com/the-djmaze/snappymail/issues/1609) - Workaround Cyrus MAILBOXID bug (disable OBJECTID capability by default due to impact) [#1640](https://github.com/the-djmaze/snappymail/issues/1640) - Workaround HTML with multiple body elements or MIME with multiple text/html [#1641](https://github.com/the-djmaze/snappymail/issues/1641) ### Nextcloud - OIDC stay logged in [#1620](https://github.com/the-djmaze/snappymail/pull/1620) by @avinash-0007 ## 2.36.3 – 2024-05-27 ### Changed - UserAuth prevent plugin errors (like the Nextcloud plugin did) ### Fixed - Undefined variable $aTokenData [#1567](https://github.com/the-djmaze/snappymail/issues/1567) ## 2.36.2 – 2024-05-26 ### Added - "copy to" action in menu's for [#1559](https://github.com/the-djmaze/snappymail/issues/1559) - Log signal info for [#1569](https://github.com/the-djmaze/snappymail/issues/1569) - OpenPGP.js automatically import backup keys from server ### Changed - Improved "remember me" cookie handling - Update Basque by @Thadah - Update Portuguese by @ner00 ### Fixed - "Account already exists" [#1561](https://github.com/the-djmaze/snappymail/issues/1561) - Properly escape path separator in tar.php file list regex [#1562](https://github.com/the-djmaze/snappymail/pull/1562) by @sevmonster - Prevent mkdir() error [#1565](https://github.com/the-djmaze/snappymail/issues/1565) - SCRAM Exception when trying to log in to SMTP [#1575](https://github.com/the-djmaze/snappymail/issues/1575) - Error when redirected back to instance after Gmail OAuth [#1580](https://github.com/the-djmaze/snappymail/issues/1580) - Uncaught TypeError: hasPublicKeyForEmails(...).then is not a function [#1589](https://github.com/the-djmaze/snappymail/issues/1589) - Undefined variable $sFilename - GPG/PGP exec() return false handling ### Nextcloud - OIDC login active again [#1572](https://github.com/the-djmaze/snappymail/pull/1572) by @avinash-0007 ## 2.36.1 – 2024-04-23 ### Added - Autoconfig detect through DNS SRV (RFC 6186 & 8314) and disable MX - Have I Been Pwned class to check breached passwords and email addresses - Handle RFC 5987 in Content-Disposition header - Ignore text/x-amp-html - Show SMTP error to user [#1521](https://github.com/the-djmaze/snappymail/issues/1521) - OAuth2 for login using gmail (and others) ### Changed - logMask all AUTHENTICATE requests - ErrorTip use white-space: pre - Simplify LoginProcess handling - ES2020 everywhere (require Safari 13.1) - Modified Squire to be more in line with v2.2.8 - CSS set min-width for .attachmentParent and .flagParent to line them up - cPanel use extension login-cpanel instead of login-remote - Improved login credentials handling - Speedup Knockout a bit - Update Belarusian by @spoooyders - Update Chinese by @mayswind - Update French by @hguilbert - Update Polish by @tinola - Update Portuguese by @ner00 ### Fixed - Content encoding and type detection in JavaScript could fail due to case-sensitivity. - Extensions set logger failed - GnuPG check open_basedir and if shell_exec is disabled [#1385](https://github.com/the-djmaze/snappymail/issues/1385) [#1496](https://github.com/the-djmaze/snappymail/issues/1496) [#1555](https://github.com/the-djmaze/snappymail/issues/1555) - Hide pagination when search result has no messages - Prevent mbstring error before setup.php - Prevent MessagesPerPage Infinity [#1540](https://github.com/the-djmaze/snappymail/issues/1540) - Reseal CryptKey failed [#1543](https://github.com/the-djmaze/snappymail/issues/1543) ### Nextcloud - Add an occ command to set up the login settings [#1552](https://github.com/the-djmaze/snappymail/issues/1552) ## 2.36.0 – 2024-03-18 ### Added - Allow setting the supported THREAD algorithm - Icon to system folders - Remove remembered password after 15 minutes of inactivity [#1142](https://github.com/the-djmaze/snappymail/issues/1142) - Swap background and text color for unreadable text on dark background [#1486](https://github.com/the-djmaze/snappymail/issues/1486) - Generate TOTP code at ?Admin -> Security [#1501](https://github.com/the-djmaze/snappymail/issues/1501) - Button to change S/MIME private key passphrase [#1505](https://github.com/the-djmaze/snappymail/issues/1505) - Belarusian [#1512](https://github.com/the-djmaze/snappymail/pull/1512) by @spoooyders - Log some domain idn_to_ascii issues [#1513](https://github.com/the-djmaze/snappymail/issues/1513) ### Changed - On folder/mailbox rename, also rename all children instead of reloading all - Seal MainAccount CryptKey and on error ask old login passphrase to reseal key. - Moved cache drivers outside core into extensions - Sieve always allow fileinto INBOX [#1510](https://github.com/the-djmaze/snappymail/issues/1510) - Moved application.ini `sieve_auth_plain_initial` to per domain config - Languages use rfc5646, by using the shortest ISO 639 code by default - Update French by @hguilbert - Update Portuguese by @ner00 ### Fixed - On folder/mailbox rename, the old fullName must be removed from cache - On folder/mailbox rename, the checkable option was not renamed - Sort accounts drag & drop - S/MIME encrypted and opaque signed not visible [#1450](https://github.com/the-djmaze/snappymail/issues/1450) - Wrong last UID of thread [#1507](https://github.com/the-djmaze/snappymail/issues/1507) - Creation of dynamic property SnappyMail\DAV\Client::$HTTP [#1509](https://github.com/the-djmaze/snappymail/issues/1509) - "Download as ZIP" fails for messages [#1514](https://github.com/the-djmaze/snappymail/issues/1514) - SMTP "Authentication failed" when IMAP uses `shortLogin` and SMTP not [#1517](https://github.com/the-djmaze/snappymail/issues/1517) ## 2.35.4 – 2024-03-16 ### Added - \SnappyMail\IDN::toAscii() ### Changed - OpenPGP.js to v5.11.1 - punycode.js lowercase domain names - application.ini `login_lowercase` removed and now configurable per domain JSON `lowerLogin` - Update Portuguese by @ner00 ### Fixed - Raise JS TypeEroor "toLowerCase" after update [#1491](https://github.com/the-djmaze/snappymail/issues/1491) - Call to undefined function shell_exec [#1496](https://github.com/the-djmaze/snappymail/issues/1496) - Download attachments as ZIP doesn't work for PGP encrypted mail [#1499](https://github.com/the-djmaze/snappymail/issues/1499) - Importing or downloading a PGP public key attachment from a PGP encrypted message doesn't work [#1500](https://github.com/the-djmaze/snappymail/issues/1500) - VCard PHP Notice: Undefined index: ENCODING ### Nextcloud - Changed stored password handling - Can't login from nextcloud with 2.35.3 bug Nextcloud [#1490](https://github.com/the-djmaze/snappymail/issues/1490) ## 2.35.3 – 2024-03-12 ### Added - GnuPG can be disabled - Missing strings for localization inside identity popup (Cryptography > S/MIME) [#1458](https://github.com/the-djmaze/snappymail/issues/1458) - Automatically verify PGP and S/MIME signed messages - TNEFDecoder for [#1012](https://github.com/the-djmaze/snappymail/discussions/1012) - RTF to HTML converter for [#1012](https://github.com/the-djmaze/snappymail/discussions/1012) - Polyfill for PHP ctype [#1250](https://github.com/the-djmaze/snappymail/issues/1250) ### Changed - `new Error()` to `Error()` - Reduce KnockoutJS footprint by removing unused code - CSS reposition rainloopErrorTip location - Improved error handling on PGP and S/MIME decrypt - Improved OpenPGP.js import keys - Use Identity S/MIME key and certificate from server instead of POST - application.ini `[webmail]language_admin` to `[admin_panel]language` - application.ini `[security]admin_panel_host` to `[admin_panel]host` - application.ini `[security]admin_panel_key` to `[admin_panel]key` - Drop deprecated Domain::SetConfig() - Internationalized domain names are now handled as punycode - Cacher->Get() can now return NULL - Update French by @hguilbert - Update Polish by @tinola - Update Portuguese by @ner00 ### Fixed - Handling of Internationalized Domain Names in several areas - Decrypt error message - Stalwart ManageSieve Error 352 when getting Filters [#1455](https://github.com/the-djmaze/snappymail/issues/1455) - Nextcloud V25+ theme slightly broken [#1463](https://github.com/the-djmaze/snappymail/issues/1463) - PGP decryption fails with "Not armored text" [#1462](https://github.com/the-djmaze/snappymail/issues/1462) - AUTH_BASIC falling through as AUTH_BEARER; change AUTH_BEARER to a different value [#1461](https://github.com/the-djmaze/snappymail/issues/1461) - SetPassword expects \SnappyMail\SensitiveString - Crash on importing corrupt OpenPGP keys - Crash on old browsers instead of showing error - Ignore popups on logoutReload() [#1467](https://github.com/the-djmaze/snappymail/issues/1467) - Custom SASLMechanisms fail in IMAP when the connection is secure [#1484](https://github.com/the-djmaze/snappymail/pull/1484) by @botsarenthuman ## 2.35.2 – 2024-02-27 ### Added - GnuPG error handling - Missing strings for localization inside identity popup (Cryptography > S/MIME) [#1458](https://github.com/the-djmaze/snappymail/issues/1458) ### Changed - Update Portuguese by @ner00 ### Fixed - Drop support for gnupg PECL extension as it fails with "no passphrase" issues - Error 352 when getting Filters [#1455](https://github.com/the-djmaze/snappymail/issues/1455) ### Nextcloud - SetPassword(): Argument #1 must be of type SensitiveString, string given [#1456](https://github.com/the-djmaze/snappymail/issues/1456) ## 2.35.1 – 2024-02-26 ### Added - Search functionality in Admin -> Config - Cache S/MIME passphrases when "remember" is checked - Import S/MIME certificate popup - pre-verify S/MIME opaque signed messages so we have a body to view - Sort PGP keys and S/MIME certificates on email address - Optionally use existing private key to generate S/MIME certificate ### Changed - Better handling to detect which PGP or S/MIME sign/encrypt to use - Improved StorageType handling - Cleanup and improved Capa handling - OPEN_PGP should be OPENPGP as it is one word - Use get_debug_type() instead of gettype() - Require OpenSSL due to S/MIME - AbstractProvider::IsActive() is now an abstract method and must be defined in child class - Make better use of SnappyMail\SensitiveString - Update Polish translation by @tinola ### Fixed - Verify S/MIME signatures got broken allong the way while implementing this - Generate S/MIME self-signed certificate failed to keep existing private key - MIME parser RegExp didn't escape boundary which caused issues - TypeError: b64Encode(...).match(...) is null on saving compose draft - Fix timestampToString() for future dates ## 2.35.0 – 2024-02-20 ### Added - S/MIME support [#259](https://github.com/the-djmaze/snappymail/issues/259) ### Changed - Disable IMAP METADATA by default (hardly used) - Update Polish translation by @tinola - Rename CSS .openpgp-control to .crypto-control - Renamed some methods in PHP ### Fixed - When moving a folder/mailbox check for parent delimiter - Mask `passphrase` in the logs for PHP < 8.2 - Added some missing translations - Sign messages using PGP - Check for CONDSTORE or QRESYNC to get the HIGHESTMODSEQ - Unable to login on certain IMAP server since 2.34.2 [#1438](https://github.com/the-djmaze/snappymail/issues/1438) ### Nextcloud - Save as .eml [#1425](https://github.com/the-djmaze/snappymail/issues/1425) ## 2.34.2 – 2024-02-14 ### Fixed - Message was sent but not saved to sent items folder [#1432](https://github.com/the-djmaze/snappymail/issues/1432) - Login with scram failed [#1433](https://github.com/the-djmaze/snappymail/issues/1433) ## 2.34.1 – 2024-02-13 ### Added - Autocrypt support [#342](https://github.com/the-djmaze/snappymail/issues/342) - Load the mailboxes/folders of all namespaces (other users, global, shared, etc.) - Load keys from server into OpenPGP.js [#973](https://github.com/the-djmaze/snappymail/issues/973) - Import PGP Keys from remote key servers - Sort Inbox Folders with Unread Messages First [#1427](https://github.com/the-djmaze/snappymail/issues/1427) - Define JMAP FolderModel.myRights - Identity Management: add identity display name [#1405](https://github.com/the-djmaze/snappymail/issues/1405) - Identity Management: add per-identity "sent" folder [#1404](https://github.com/the-djmaze/snappymail/issues/1404) - Some support for JSON-LD / Structured Email [#1422](https://github.com/the-djmaze/snappymail/issues/1422) - Domain Autoconfig and Microsoft's autodiscover (and also as extension/plugin) - View MMS messages that are received via email [#1294](https://github.com/the-djmaze/snappymail/issues/1294) - Draft code for S/MIME [#259](https://github.com/the-djmaze/snappymail/issues/259) ### Changed - Many OpenPGP improvements [#89](https://github.com/the-djmaze/snappymail/issues/89) - Allow CSP connect-src CORS for keys.openpgp.org to directly fetch PGP keys - Improved handling of visible folders - KnockoutJS Replace some ko.exportSymbol('*') in favour of ko['*'] - KnockoutJS use Symbol for isObservableArray() - Simplify generating folderListVisible - Drop the bSearchSecretWords param from logger - Transparent background for text [#1412](https://github.com/the-djmaze/snappymail/issues/1412) - Enable OpenPGP.js by default at install - Added folder edit popup for improved IMAP ACL Support [#157](https://github.com/the-djmaze/snappymail/issues/157) - Process all IMAP namespaces - Update Polish by @tinola - Update Portuguese by @ner00 ### Fixed - Make time_zone a select list due to PEBKAC - Workaround Outlook generated double spacing [#1415](https://github.com/the-djmaze/snappymail/issues/1415) - HTML Parser is not picking up the full Unsubscribe URL in the attached text file [#1225](https://github.com/the-djmaze/snappymail/issues/1225) - Contacts - it auto "Select All", after entry delete [#1411](https://github.com/the-djmaze/snappymail/issues/1411) - Message header parsing issue [#1403](https://github.com/the-djmaze/snappymail/issues/1403) - apple-touch-icon should not be transparent [#1408](https://github.com/the-djmaze/snappymail/issues/1408) - Creation of dynamic property is deprecated [#1409](https://github.com/the-djmaze/snappymail/issues/1409) - Ask/send readReceipt was broken - OpenPGP public key can not be removed anymore after importing private key of subkey [#1384](https://github.com/the-djmaze/snappymail/issues/1384) - KnockoutJS failed to output text '0' - JavaScript friendlySize() failed on 0 - Workaround Dovecot `PREAUTH [CAPABILITY (null)]` issue - Workaround disabled ACL could cause "Disconnected: Too many invalid IMAP commands" ### Nextcloud - Save multiple as .eml [#1425](https://github.com/the-djmaze/snappymail/issues/1425) - Disabled support for Nextcloud OpenID Connect [#1420](https://github.com/the-djmaze/snappymail/issues/1420) ## 2.33.0 – 2024-01-22 ### Added - Feature to use the SQLite AddressBook per login account instead of global (on by default). - Return all fetched messages headers in JSON. ### Changed - Docker hub use Alpine linux 3.18.5 and PHP 8.2 - Some InvalidArgumentException to the better suited ValueError - Removed some unused KnockoutJS code - KnockoutJS drop unused rateLimit method - Cleanup some data-bind="" - Drop the disabled KnockoutJS twoWayBindings - Drop support for KnockoutJS _ko_property_writers and for two-way binding they must be observables - Login form use method="POST" to prevent uri exposure when javascript fails - Merge code to generate MIME PGP parts and MIME Plain parts - SMTP sendRequestWithCheck for future support of RFC's - Cleanup mime header handling ### Fixed - Sorting not supported since 2.32.0 [#1373](https://github.com/the-djmaze/snappymail/issues/1373) - FILE_ON_SAVING_ERROR is not defined [#1379](https://github.com/the-djmaze/snappymail/issues/1379) - Saving EML files with same subject result in only saving latest email [#1381](https://github.com/the-djmaze/snappymail/issues/1381) - Some Sieve parser issues - Handling of RainLoop Sieve script - Sieve rfc5429 RejectCommand and ErejectCommand - KnockoutJS title:value was removed, use attr:{title:value} - dataBaseUpgrade() always runs on sqlite and pgsql - Message was sent but not saved to sent items folder [#1397](https://github.com/the-djmaze/snappymail/issues/1397) - DKIM `pass` detection sometimes failed ## 2.32.0 – 2023-12-26 ### Added - Run full GetUids() in background when message_list_limit is set - MessageListThreadsMap as background task when message_list_limit is set - Properly set CACHEDIR.TAG - Sending group email to all contact addresses [#1286](https://github.com/the-djmaze/snappymail/pull/1286) by @rezaei92 ### Changed - Default IMAP message_list_limit to 10000 - DoMessageCopy() return toFolder hash/etag - Improved Squire WYSIWYG - Sort real attachments and inline attachments for [#1360](https://github.com/the-djmaze/snappymail/issues/1360) - Nextcloud Theme fixes and improvements [#1363](https://github.com/the-djmaze/snappymail/pull/1363) by @hampoelz - Improve display of attachments [#1361](https://github.com/the-djmaze/snappymail/issues/1361) - Rename messageVisibility to messageVisible - All CSS font-size to % instead of px - Flip source code view of .eml attachments [#1332](https://github.com/the-djmaze/snappymail/issues/1332) ### Fixed - Folders array_filter(): Argument 1 must be of type array, null given - At upgrade set `static` and `themes` folder to 0755 - Preview tooltip shows "null" when PREVIEW capability is disabled ### Nextcloud - Improved language handling [#1362](https://github.com/the-djmaze/snappymail/pull/1362) by @avinash-0007 - FilterLanguage had wrong parameter order - Use NextcloudV25+ theme by default ## 2.31.0 – 2023-12-08 ### Added - PHP Hook `filter.language` to allow remote language selection ### Changed - Cleaner language detection - Get Squire in sync with v2.2.5 and some bugfixes - Update French by @Cwpute - Squire: drop support for iPod ### Fixed - Call to undefined method FolderMyRights() [#1344](https://github.com/the-djmaze/snappymail/issues/1344) - NO Mailbox does not exist, or must be subscribed to") [#1354](https://github.com/the-djmaze/snappymail/issues/1354) - Flag indicators are added to wrong message [#1347](https://github.com/the-djmaze/snappymail/pull/1347) by @SergeyMosin - Squire: issue when using the enter key in a reply window [#1296](https://github.com/the-djmaze/snappymail/issues/1296) - Squire: crash on cut/delete range ### Nextcloud - Use language as defined in Nextcloud settings [#1293](https://github.com/the-djmaze/snappymail/issues/1293) - Plugin Call to undefined method RainLoop\Model\MainAccount::ImapConnectAndLoginHelper() - SnappyMail failed due to Nextcloud Symfony polyfill ## 2.30.0 – 2023-12-04 ### Added - SnappyMail\SensitiveString class to secure passwords - Allow to disable all IMAP features through Admin -> Domain - Setting to open mails in a tab or new window [#951](https://github.com/the-djmaze/snappymail/issues/951) - Fully support IMAP PREVIEW [#1338](https://github.com/the-djmaze/snappymail/issues/1338) - Disable "Mark message as read after", offer manual toggle [#1289](https://github.com/the-djmaze/snappymail/issues/1289) - A "Move to" button inside message view as an icon/button and in the drop down menu. [#1295](https://github.com/the-djmaze/snappymail/issues/1295) - Support for IMAP WITHIN - Support \noinferiors to disallow creating subfolders - A test due to Failed loading libs.min.js [#358](https://github.com/the-djmaze/snappymail/issues/358), [#862](https://github.com/the-djmaze/snappymail/issues/862), [#890](https://github.com/the-djmaze/snappymail/issues/890), [#895](https://github.com/the-djmaze/snappymail/issues/895), [#1238](https://github.com/the-djmaze/snappymail/issues/1238), [#1320](https://github.com/the-djmaze/snappymail/issues/1320) ### Changed - Split PHP 8 polyfills from include.php - Disable snappymail/v/0.0.0/static/.htaccess for now as many servers have issues with it - Merged all Domain `disable_*` settings into `disabled_capabilities:[]` - Prioritize LIST-EXTENDED over LSUB (LSUB deprecated in IMAP4rev2) - Removed unused ImapClient::IsSupported() - Removed obsolete `$_ENV['SNAPPYMAIL_NEXTCLOUD']` - Removed unused Plugin->replaceTemplate() - Removed openDropdownTrigger ### Fixed - Move to button does not work [#1328](https://github.com/the-djmaze/snappymail/issues/1328) - Mark passwords as sensitive information [#1343](https://github.com/the-djmaze/snappymail/issues/1343) - Account sSmtpPassword wrong value - SCRAM sign-in failed [#1245](https://github.com/the-djmaze/snappymail/issues/1245) - Squire generates to many `

` [#1339](https://github.com/the-djmaze/snappymail/issues/1339) - Creation of dynamic property SnappyMail\Stream\ZipEntry::$compression is deprecated - `json.after-*` hooks didn't send $aResponse as recursive array - Sieve: Move to folder with trailing space does not work [#1329](https://github.com/the-djmaze/snappymail/issues/1329) - Squire: cantFocusEmptyTextNodes var is always undefined [#1337](https://github.com/the-djmaze/snappymail/issues/1337) - Squire: Remove redundant after replacing styles - Squire: Handle empty nodes in moveRangeBoundariesDownTree - Theme "Nextcloud V25+" can't be translated [#1331](https://github.com/the-djmaze/snappymail/issues/1331) ## 2.29.4 – 2023-11-21 ### Fixed - Contacts not work [#1319](https://github.com/the-djmaze/snappymail/issues/1319) ## 2.29.3 – 2023-11-21 ### Added - Docker Hub image [#965](https://github.com/the-djmaze/snappymail/pull/965) by @leojonathanoh ### Changed - Sabre/VObject 4.5.4 and Sabre/Xml 4.0.4 [#1311](https://github.com/the-djmaze/snappymail/issues/1311) ### Fixed - '#/mailbox/folder/mUID/search' uri/route handling [#1301](https://github.com/the-djmaze/snappymail/pull/1301) by @SergeyMosin - "Remember me" doesn't work when browser is closed [#1313](https://github.com/the-djmaze/snappymail/issues/1313) - Blank email displayed when "Prefer HTML to plain text" is unchecked and the message is html only [#1302](https://github.com/the-djmaze/snappymail/issues/1302) - Parent folder of Sub folder not useable. [#1008](https://github.com/the-djmaze/snappymail/issues/1008) - Large detailed header don't display body [#1284](https://github.com/the-djmaze/snappymail/issues/1284) ### Nextcloud - Improvements for Install / update issues #929 [#929](https://github.com/the-djmaze/snappymail/issues/929) - Should use language as defined in cloud settings #1293 [#1293](https://github.com/the-djmaze/snappymail/issues/1293) ## 2.29.2 – 2023-11-14 ### Added - Show size of folders in folders list #1303 [#1303](https://github.com/the-djmaze/snappymail/issues/1303) ### Fixed - Configuration failed when using special chars in MySQL password #1308 [#1308](https://github.com/the-djmaze/snappymail/issues/1308) - With email open, "delete" doesn't delete #1274 [#1274](https://github.com/the-djmaze/snappymail/issues/1274) - Fix threading view in Thunderbird (others?) [#1304](https://github.com/the-djmaze/snappymail/pull/1304) by @tkasch ## 2.29.1 – 2023-10-02 ### Fixed - Some small messages list bugs ## 2.29.0 – 2023-10-02 ### Added - Modern UI / Nextcloud Theme [#629](https://github.com/the-djmaze/snappymail/pull/629) by @hampoelz - "Add/Edit signature" label to PopupsIdentity.html [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - use calendar icon in message list for messages with '.ics' or 'text/calendar' attachments by @SergeyMosin [#1248](https://github.com/the-djmaze/snappymail/pull/1248) - Show unseen message count when the message list is threaded [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - in mobile mode hide folders(left) panel when a folder is clicked [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - spellcheck the subject when 'allowSpellcheck' setting is true [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - 'collapse_blockquotes', 'allow_spellcheck' and 'mail_list_grouped' to admin settings ('defaults' section) [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - Browser support for autocompleting TOTP code [#1251](https://github.com/the-djmaze/snappymail/issues/1251) ### Changed - URL strip tracking for [#1225](https://github.com/the-djmaze/snappymail/issues/1225) - Color picker use color blind palette "Tableau 10" by Maureen Stone by default [#1199](https://github.com/the-djmaze/snappymail/issues/1199) - Draft code to improve mobile breakpoints [#1150](https://github.com/the-djmaze/snappymail/issues/1150) - address input: space character can trigger '_parseValue' if the email address looks complete [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - if applicable set '\\answered' or '$forwarded' flag after a message is sent so the proper icon is shown in the message list view [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin ### Fixed - CHARSET is not valid in UTF8 mode [#1230](https://github.com/the-djmaze/snappymail/issues/1230) - Spam score is always "acceptable" [#1228](https://github.com/the-djmaze/snappymail/issues/1228) - Undefined constant PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT [#1205](https://github.com/the-djmaze/snappymail/issues/1205) - Fetch controller.abort(reason) handling [#1220](https://github.com/the-djmaze/snappymail/issues/1220) - "Request failed" on message move [#1220](https://github.com/the-djmaze/snappymail/issues/1220) - Unwrapped text nodes attached to squire._root [#1234](https://github.com/the-djmaze/snappymail/pull/1234) by @SergeyMosin - Extra wrapper div is added in Squire every time a Draft is open (or closed) after save. [#1208](https://github.com/the-djmaze/snappymail/issues/1208) - foreach() argument must be of type array|object [#1237](https://github.com/the-djmaze/snappymail/issues/1237) - `` tag 'style' is lost in replies [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - unseen indicator is not shown in thread view when 'listGrouped' settings is false [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - TOTP plugin is dependent on ctype [#1250](https://github.com/the-djmaze/snappymail/issues/1250) ### Nextcloud - iFrame mode: click on unified search result opens inner iFrame [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - set 'smremember' cookie if 'sign_me_auto' is set to 'DefaultOn' when using 'snappymail-autologin*', otherwise nextcloud users need to re-login when the browser is re-opened [#1248](https://github.com/the-djmaze/snappymail/pull/1248) by @SergeyMosin - Improve UX of "Put in Calendar" option in plugin [#1259](https://github.com/the-djmaze/snappymail/pull/1259) by @theronakpatel ## 2.28.4 – 2023-07-10 ### Added - application.ini msg_default_action [#1204](https://github.com/the-djmaze/snappymail/pull/1204) by @SergeyMosin - application.ini view_show_next_message [#1204](https://github.com/the-djmaze/snappymail/pull/1204) by @SergeyMosin - application.ini view_images [#1204](https://github.com/the-djmaze/snappymail/pull/1204) by @SergeyMosin - nextcloud add ability to include custom php file in InstallStep migration [#1197](https://github.com/the-djmaze/snappymail/pull/1197) by @SergeyMosin - Support plugin for Squire editor [#1192](https://github.com/the-djmaze/snappymail/issues/1192) ### Changed - only show 'Add "domain.tld" as an application for mailto links?' message after login (firefox shows the message on every reload otherwise). [#1204](https://github.com/the-djmaze/snappymail/issues/1204) - Convert getPdoAccessData() : array to a RainLoop\Pdo\Settings object instance - New bidi buttons to Squire editor [#1200](https://github.com/the-djmaze/snappymail/pull/1200) by @rezaei92 ### Fixed - Undefined constant PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT [#1205](https://github.com/the-djmaze/snappymail/issues/1205) - 'reloadTime' function result is passed into 'setInterval' instead of the function [#1204](https://github.com/the-djmaze/snappymail/pull/1204) by @SergeyMosin - UNKNOWN-CTE Invalid data in MIME part [#1186](https://github.com/the-djmaze/snappymail/issues/1186) ## 2.28.3 – 2023-06-22 ### Added - Attachments in "new window" view [#1166](https://github.com/the-djmaze/snappymail/issues/1166) ### Changed - Update Portuguese by @ner00 - Update French by @hguilbert ### Fixed - Some emails with inline CSS break the UI [#1187](https://github.com/the-djmaze/snappymail/issues/1187) - Remote.get() Promise broken by previous change [#1185](https://github.com/the-djmaze/snappymail/issues/1185) - Class "MailSo\Base\Exceptions\InvalidArgumentException" not found [#1182](https://github.com/the-djmaze/snappymail/issues/1182) - First account not showed in the right list (dropbox) [#1180](https://github.com/the-djmaze/snappymail/issues/1180) ## 2.28.2 – 2023-06-19 ### Added - Detailed error for "Cannot access the repository at the moment" [#1164](https://github.com/the-djmaze/snappymail/issues/1164) - Bidi in Squire editor [#1158](https://github.com/the-djmaze/snappymail/issues/1158) - Translate Squire UI - Nextcloud 27 compatibility by @LarsBel - JWT class for handling JSON Web Tokens ### Changed - Update German by @cm-schl - Update French by @hguilbert - Update Polish by @tinola - Merge handling of local Account Settings. Found while investigating [#1170](https://github.com/the-djmaze/snappymail/issues/1170) - Image max-width now 100% instead of 90vw ### Fixed - Cannot modify header information [#929](https://github.com/the-djmaze/snappymail/issues/929) (comment) - Admin Panel broken when admin_panel_host is set [#1169](https://github.com/the-djmaze/snappymail/issues/1169) - Invalid CSP report-uri - Prevent MessageList multiple request at the same time [#1071](https://github.com/the-djmaze/snappymail/issues/1071) - Error in Addressbook Sync [#1179](https://github.com/the-djmaze/snappymail/issues/1179) - base64_decode() second parameter must be true ## 2.28.1 – 2023-06-05 ### Changed - Optical issue with input fields for mail and folder search [#1149](https://github.com/the-djmaze/snappymail/issues/1149) - Update Chinese translation [#1157](https://github.com/the-djmaze/snappymail/pull/1157) by @mayswind - Update Polish translation [#1156](https://github.com/the-djmaze/snappymail/pull/1156) by @tinola ### Fixed - Undefined SIG constants [#1147](https://github.com/the-djmaze/snappymail/issues/1147) ## 2.28.0 – 2023-05-30 ### Added - Threaded view make number orange when unread sub-messages [#1028](https://github.com/the-djmaze/snappymail/issues/1028) - Handle PHP pctnl messages - addEventListener('rl-view-model') missing for Settings [#1013](https://github.com/the-djmaze/snappymail/issues/1013) - CSS `--btn-border-radius` ### Changed - Improved RTL languages support [#1056](https://github.com/the-djmaze/snappymail/issues/1056) - Composer text/attachments as tabs [#1119](https://github.com/the-djmaze/snappymail/issues/1119) - Filter dialog doesn't refer to folder names consistently [#1111](https://github.com/the-djmaze/snappymail/issues/1111) - TLS connection for MYSQL contact db [#1078](https://github.com/the-djmaze/snappymail/issues/1078) - Allow empty message body when there are attachments [#1052](https://github.com/the-djmaze/snappymail/issues/1052) - PHP inherit logger as Trait - Update Portuguese [#1124](https://github.com/the-djmaze/snappymail/pull/1124) by @ner00 - Update Traditional Chinese (Taiwan) [#1107](https://github.com/the-djmaze/snappymail/pull/1107) by @chiyi4488 - Update Russian [#1108](https://github.com/the-djmaze/snappymail/pull/1108) by @konkere - Update Italian [#1094](https://github.com/the-djmaze/snappymail/pull/1094) by @cm-schl - Update French [#1102](https://github.com/the-djmaze/snappymail/pull/1102) by @hguilbert - Update German [#1087](https://github.com/the-djmaze/snappymail/pull/1087) by @cm-schl ### Fixed - Show messagelist timeout/abort error for [#1071](https://github.com/the-djmaze/snappymail/issues/1071) - DesktopNotifications setting not saved [#1137](https://github.com/the-djmaze/snappymail/issues/1137) - PHP Deprecation warning for $_openPipes [#1141](https://github.com/the-djmaze/snappymail/issues/1141) - Images size wrong [#1134](https://github.com/the-djmaze/snappymail/issues/1134) - Unable to preview body of encrypted mail in mailvelope reply-to [#1130](https://github.com/the-djmaze/snappymail/issues/1130) - Replace `