## 2.38.0 – 2024-09-16 ### Added - Remove `tel:` links when converting HTML to plain [#1724](https://github.com/the-djmaze/snappymail/issues/1724) - Convert HTML to Markdown instead of plain, by using [Turndown](https://github.com/mixmark-io/turndown) [#1604](https://github.com/the-djmaze/snappymail/issues/1604) - Check HTMLInputElement.validity() for [#1733](https://github.com/the-djmaze/snappymail/issues/1733) ### Changed - Use a modified [Squire 2.3.2](https://github.com/the-djmaze/Squire/commits/snappymail/) - cleanHtml use allowedTags instead of disallowedTags and improved CSS handling - Update Portuguese by @ner00 ### Fixed - mXSS exploit found by SonarSource [CVE-2024-45800](https://github.com/the-djmaze/snappymail/security/advisories/GHSA-2rq7-79vp-ffxm) - Call to a member function Email() on null [#1706](https://github.com/the-djmaze/snappymail/issues/1706) - IMAP capabilities via IMAP Proxy [#1725](https://github.com/the-djmaze/snappymail/issues/1725) - Messages on page setting is not validated against 999 max [#1733](https://github.com/the-djmaze/snappymail/issues/1733) ## 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 [#1709](https://github.com/the-djmaze/snappymail/issues/1709) ### 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 ### Added - Validate Fetch JSON response ### Fixed - PATH_INFO bug due to Office365 OAuth login - Prevent logout loop on error ### Nextcloud - Failed loading due to Office365 OAuth2 attempt [#1703](https://github.com/the-djmaze/snappymail/issues/1703) ## 2.37.1 – 2024-08-12 ### Fixed - Gulp v5 broke the fonts ### Nextcloud - Support v30 ## 2.37.0 – 2024-08-12 ### Added - JavaScript event `rl-vm-visible` - Detailed error message on account switch failure for [#1594](https://github.com/the-djmaze/snappymail/issues/1594) - Workarounds for Microsoft OAuth2 (currently requires Apache AcceptPathInfo) [#1645](https://github.com/the-djmaze/snappymail/issues/1645) - Support "mark for deletion" [#1657](https://github.com/the-djmaze/snappymail/issues/1657) by @smsoft-ru - Invoke "Update Identity" pop up right after login (when not initialized) [#1689](https://github.com/the-djmaze/snappymail/issues/1689) - Keyboard shortcut for "Swap default (background) color" [#1690](https://github.com/the-djmaze/snappymail/issues/1690) ### Changed - Updated gulp to v5 - Replaced vulnerable gulp-header with gulp-append-prepend - Removed abandoned vulnerable rollup-plugin-html - Align save button in admin security settings - Made registerProtocolHandler('mailto') optional by activating at Settings -> General - Improved InvalidToken handling for [#1653](https://github.com/the-djmaze/snappymail/issues/1653) - Cleanup localizations - Update French by @hguilbert - Update German by @tkasch - Update Polish by @tinola - Update Portuguese by @ner00 ### Fixed - prevent multiple afterShow() and afterHide() due to `transitionend` on multiple CSS properties - Attempt to read property "smimeSigned" on null - Refreshing mail list doesn't update current message [#1654](https://github.com/the-djmaze/snappymail/issues/1654) - Deletion of CACHE folder causing error [#1660](https://github.com/the-djmaze/snappymail/issues/1660) - Multiple line breaks are not displayed [#1666](https://github.com/the-djmaze/snappymail/issues/1666) - RainLoop\Exceptions\ClientException::__construct(): Argument #2 ($oPrevious) must be of type ?Throwable, string given [#1686](https://github.com/the-djmaze/snappymail/issues/1686) - SpamAssassin Division by zero [#1694](https://github.com/the-djmaze/snappymail/issues/1694) - Failed to parse RFC 2822 date '6 Jul 2024 16:42:09 +0200' [#1694](https://github.com/the-djmaze/snappymail/issues/1694) - Fix capabilities when THREAD is disabled [#1698](https://github.com/the-djmaze/snappymail/pull/1698) by @akhil1508 ### Nextcloud - Failed loading due to incorrect `app_path` - Bugfix language detection - Allow multi-account in nc with oauth login [#1699](https://github.com/the-djmaze/snappymail/pull/1699) by @akhil1508 ## 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 `