snappymail/CHANGELOG.md
2024-08-13 11:30:00 +02:00

2300 lines
86 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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 `<div><br></div>`
[#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 <span> 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)
- `<font>` 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 `<button>` in HTML message with innerHTML instead of remove
[#1125](https://github.com/the-djmaze/snappymail/issues/1125)
- Mailvelope failed
[#1126](https://github.com/the-djmaze/snappymail/issues/1126)
- Tabs labels row height
- Selecting not yet existing filter throws error message instead of opening edit box
[#1104](https://github.com/the-djmaze/snappymail/issues/1104)
- JavaScript Squire `node is null` error
- Config/Application.php: array_rand(): Argument
[#1](https://github.com/the-djmaze/snappymail/issues/1) cannot be empty
[#1123](https://github.com/the-djmaze/snappymail/issues/1123)
- Pressing Enter in Add Filter dialog results in "Leave page?" prompt
[#1112](https://github.com/the-djmaze/snappymail/issues/1112)
- Issue with certain Amazon emails
[#1086](https://github.com/the-djmaze/snappymail/issues/1086)
- HTML font 8px and 10px issue
[#1082](https://github.com/the-djmaze/snappymail/issues/1082)
- Exception when executed on command line on the first-time
[#1085](https://github.com/the-djmaze/snappymail/issues/1085)
- Folders missing pagination
[#1070](https://github.com/the-djmaze/snappymail/issues/1070)
- Nextcloud WYSIWYG button style
[#1138](https://github.com/the-djmaze/snappymail/issues/1138)
- Nextcloud .btn-group > .btn layout
- Nextcloud Bulleted items do not show the bullets in the preview window.
[#1117](https://github.com/the-djmaze/snappymail/issues/1117)
- Nextcloud Contacts integration
[#1083](https://github.com/the-djmaze/snappymail/issues/1083)
## 2.27.3 2023-04-04
### Added
- Squire visualize some active buttons states
- Hard coded string "Message body is empty"
[#1048](https://github.com/the-djmaze/snappymail/issues/1048)
- Split SPAM label in user.json for directory and action
[#1065](https://github.com/the-djmaze/snappymail/issues/1065)
- A solution for
[#1056](https://github.com/the-djmaze/snappymail/issues/1056) to support dates in different language/calendar
- Log \nonexistent folder for
[#1008](https://github.com/the-djmaze/snappymail/issues/1008)
### Changed
- Cleanup some enums to consts
- Workaround Upgrade with Nextcloud stuck in Maintenance mode
[#1046](https://github.com/the-djmaze/snappymail/issues/1046)
- Use Actions()->decodeRawKey()
- French language updated
[#1045](https://github.com/the-djmaze/snappymail/pull/1045) by @hguilbert
- Sorting in folders not working
[#1022](https://github.com/the-djmaze/snappymail/issues/1022)
- Allow saving draft with empty body
[#1052](https://github.com/the-djmaze/snappymail/issues/1052)
### Fixed
- GnuPG decrypt failed
- Clear folder link should be hidden if "dangerous actions" is not active
[#1037](https://github.com/the-djmaze/snappymail/issues/1037)
- 500 error generating preview with GD2
[#1009](https://github.com/the-djmaze/snappymail/issues/1009)
- Text and Links Jumping While Writing
[#1004](https://github.com/the-djmaze/snappymail/issues/1004)
- Odd annoying behaviour when copy/ pasting anything into an email and then attempting to edit it.
[#1054](https://github.com/the-djmaze/snappymail/issues/1054)
- Check if $rImapLiteralStream is open resource and not closed
- Save as eml to nextcloud not working anymore
[#1057](https://github.com/the-djmaze/snappymail/issues/1057)
- AuthError and Call to a member function ImapConnectAndLogin() on null
[#1060](https://github.com/the-djmaze/snappymail/issues/1060)
- Thread count missing/shown
[#1003](https://github.com/the-djmaze/snappymail/issues/1003)
## 2.27.2 2023-03-22
### Added
- authentication with smtp freenet.de
[#1038](https://github.com/the-djmaze/snappymail/issues/1038)
### Changed
- SASL always base64 by default
### Fixed
- Cache issue with index
[#1024](https://github.com/the-djmaze/snappymail/issues/1024)
## 2.27.1 2023-03-21
### Changed
- Improved attachmentIcon glyph coloring
- Better design for .accountPlace text
[#1025](https://github.com/the-djmaze/snappymail/issues/1025)
### Fixed
- Reply is broken
[#1027](https://github.com/the-djmaze/snappymail/issues/1027)
- Endless loop at login - Cannot assign array to property MailSo\Imap\Folder::$MAILBOXID
[#1032](https://github.com/the-djmaze/snappymail/issues/1032)
## 2.27.0 2023-03-20
### Added
- Unique attachments.zip filename
[#992](https://github.com/the-djmaze/snappymail/issues/992)
- Select next email after (re)move current
[#968](https://github.com/the-djmaze/snappymail/issues/968)
### Changed
- Improved FolderCollection handling
- MODSEQ requires 64-bit int
- Update russian language
[#994](https://github.com/the-djmaze/snappymail/pull/994) by @Akrobs
- Don't make font bigger when screen > 1400px
- Put top menu "accountPlace" inside top-system-dropdown-id
- Put attachment controls inside attachmentsPlace
- Show message toolbar on screens > 1400px
[#970](https://github.com/the-djmaze/snappymail/issues/970)
- Chinese updated
[#1011](https://github.com/the-djmaze/snappymail/pull/1011) by @mayswind
- Prevent folder/messages flags conflict by using the right name `attributes` for Folders
- FolderInformation() use jsonSerialize()
- Squire space handling on paste use `\u00A0` instead of `&nbsp;` for
[#1004](https://github.com/the-djmaze/snappymail/issues/1004)
- Better line-height for QR code
### Fixed
- Composer src is null
- Image in Signature disappears in Sent/Draft
[#932](https://github.com/the-djmaze/snappymail/issues/932)
- Mail list is empty
[#998](https://github.com/the-djmaze/snappymail/issues/998)
- Cache handling issues
[#1003](https://github.com/the-djmaze/snappymail/issues/1003)
- No message notification popup when installed in sub-directory
[#1007](https://github.com/the-djmaze/snappymail/issues/1007)
- ERROR: Undefined constant "MailSo\Log\Drivers\STDERR"
[#965](https://github.com/the-djmaze/snappymail/issues/965)
- 'Location:' headers using proper '302 Found' header
- Can't send email
[#1006](https://github.com/the-djmaze/snappymail/issues/1006)
- Attachment preview
[#1005](https://github.com/the-djmaze/snappymail/issues/1005)
- When decrypt message, subject was replaced empty
### Removed
- \MailSo\Imap\ImapClient::GetConnectedPort()
### Nextcloud
- CSS `--panel-bg-clr` was missing
- SnappyMail Menu under Nextcloud top bar
[#1017](https://github.com/the-djmaze/snappymail/issues/1017)
## 2.26.4 2023-02-24
### Added
- Add CSP frame-ancestors for
[#537](https://github.com/the-djmaze/snappymail/issues/537)
### Changed
- Reduce/simplify CSS footprint
- Use the System/Browser font by default
[#988](https://github.com/the-djmaze/snappymail/pull/988) by @HeySora
- Make layout fully responsive using matchMedia('(max-width: 799px)')
- Move brotli and gzip compress option to application.ini
- After page refreshes in background whilst editing a draft, the space bar stops working
[#860](https://github.com/the-djmaze/snappymail/issues/860)
- Updated Portuguese
[#984](https://github.com/the-djmaze/snappymail/pull/984) by @ner00
- Updated French
[#985](https://github.com/the-djmaze/snappymail/pull/985) by @hguilbert
### Fixed
- unset border-box for message body
[#990](https://github.com/the-djmaze/snappymail/issues/990)
- Unread email count badge shows -1
[#989](https://github.com/the-djmaze/snappymail/issues/989)
- unicode mailto: addresses not decoded
- Unicode email/url address matching
[#955](https://github.com/the-djmaze/snappymail/issues/955)
- Invalid Token if run in IFrame
[#537](https://github.com/the-djmaze/snappymail/issues/537)
### Removed
- rl.initData
## 2.26.3 2023-02-21
### Added
- Translate "Are you sure you want to exit?"
- stderr as Logger
### Changed
- Moved rl.fetch and rl.fetchJSON to boot.js so that AppData can be fetched as JSON
- Many AppData properties to JavaScript camelCase
- Cleanup Identity handling
- Merge GnuPG and OpenPGP.js passphrases
### Fixed
- Notification enum conflicts with window.Notification
- language selector didn't show current language in green
- Threads indicator got lost with new message cache handling
- messagesBodiesDom never cached previous messages
- Nextcloud File picker doesn't insert multiple links
[#981](https://github.com/the-djmaze/snappymail/issues/981)
- Call to protected method RainLoop\Enumerations\UploadError::getUserMessage()
[#982](https://github.com/the-djmaze/snappymail/issues/982)
- Issue with the top logo and text of a certain e-mail
[#953](https://github.com/the-djmaze/snappymail/issues/953)
- Facebook logo missing from emails sent out by it
[#954](https://github.com/the-djmaze/snappymail/issues/954)
### Removed
- Unused Squire code
## 2.26.2 2023-02-17
### Added
- Remove CSS white-space from messages to prevent annoying side scrolling
- Show error when trying to send empty message
[#974](https://github.com/the-djmaze/snappymail/issues/974)
- max_sys_loadavg as setting
[#971](https://github.com/the-djmaze/snappymail/issues/971)
### Changed
- Speedup and improved cleanHtml() and cleanCSS() handling
- Better handling of upload .eml files to a mailbox
- Rename Folder Hash to ETag as it is the more obvious name
- Moved AllowDraftAutosave option from Settings -> Security to Settings -> General -> Compose
- SmtpClient->Connect() use $oSettings->Ehlo
- Improved handling of `<style>` elements in messages
- French updated by @hguilbert
### Fixed
- Remove SVG elements properly from messages
[#972](https://github.com/the-djmaze/snappymail/issues/972)
- Sending large HTML messages slow/fail
[#962](https://github.com/the-djmaze/snappymail/issues/962)
- Nextcloud login failed
[#969](https://github.com/the-djmaze/snappymail/issues/969)
- DoMessageList() hash check was incorrect
- "Move to folder" button overlays folder sidebar on mobile
[#961](https://github.com/the-djmaze/snappymail/issues/961)
- Spanish translation SPAM and NOT SPAM strings are reversed
[#964](https://github.com/the-djmaze/snappymail/issues/964)
- Can't open Thunderbird PGP keys from decrypted message
[#958](https://github.com/the-djmaze/snappymail/issues/958)
- Can't close Sieve dialog
[#960](https://github.com/the-djmaze/snappymail/issues/960)
## 2.26.1 2023-02-14
### Added
- Option to allow `<style>` in messages (beta)
- Message in new tab/window was missing BCC
### Changed
- Don't clone message for viewing, so that there is instant interaction with messagelist item
- emailArrayToStringLineHelper() now filters addresses without email address
- Cleanup EmailModel and better email address parsing and handling
- Workaround "server connection error"
[#936](https://github.com/the-djmaze/snappymail/issues/936)
- Cleanup AbstractViewPopup handling
- Italian translation
[#948](https://github.com/the-djmaze/snappymail/pull/948) by @lota
- Replace Element.fromHTML() with createElement()
### Fixed
- New subfolder not visible
[#937](https://github.com/the-djmaze/snappymail/issues/937)
- OpenPGP decrypted attachments `friendlySize` not a function
- Message @media print was broken due to new `display:flex`
- addressparser() didn't handle groups properly
- middleclick in messages list failed when messagesDom not yet initialized
- Cannot open messages that have an email address without an @ in the From header
[#950](https://github.com/the-djmaze/snappymail/issues/950)
- CSS don't display:flex when `[hidden]`
- Default theme handling by @Niveshkrishna
## 2.26.0 2023-02-10
### Added
- Whitelist advanced SPF/DKIM/DMARC valid feature
[#938](https://github.com/the-djmaze/snappymail/issues/938)
### Changed
- \RainLoop\Providers\AddressBook\Utils functions param `Contact` changed to `VCard`
### Fixed
- Issue with themes and Chrome cache
[#188](https://github.com/the-djmaze/snappymail/issues/188)
- Settings panel width due to display:flex
[#940](https://github.com/the-djmaze/snappymail/issues/940)
- Not respecting default theme setting
[#941](https://github.com/the-djmaze/snappymail/issues/941)
- Some files had 0755 instead of 0644
- Some spacing between message "view images" buttons for
[#201](https://github.com/the-djmaze/snappymail/issues/201)
- Whitelist failed when empty or when using `:`
[#938](https://github.com/the-djmaze/snappymail/issues/938)
- Cosmetics of the external images whitelist menu
[#939](https://github.com/the-djmaze/snappymail/issues/939)
- PdoAddressBook ORDER BY deleted DESC to prevent sync and export issues
- Undefined variable $items in upgrade.php
- qq.com not supporting literal-string in search
[#836](https://github.com/the-djmaze/snappymail/issues/836)
## 2.25.5 2023-02-09
### Added
- New dark themes
[#925](https://github.com/the-djmaze/snappymail/pull/925) by @TheCuteFoxxy
- External images option 'Always when DKIM is valid' for
[#201](https://github.com/the-djmaze/snappymail/issues/201)
- Image whitelist menu on message for
[#201](https://github.com/the-djmaze/snappymail/issues/201)
### Changed
- pt-PT translation by @ner00
[#917](https://github.com/the-djmaze/snappymail/issues/917) and
[#920](https://github.com/the-djmaze/snappymail/issues/920)
- fr-FR translation by @hguilbert
[#919](https://github.com/the-djmaze/snappymail/issues/919)
- Layout section rl-right now is `display: flex` and solves
[#928](https://github.com/the-djmaze/snappymail/issues/928)
- Some Themes background to `cover`
[#918](https://github.com/the-djmaze/snappymail/issues/918)
- Speedup cleanHtml() parser
- Reduce memory usage on addressbook import
### Fixed
- Prevent loading loop between MessageList and FolderInformation requests
- Admin -> Config layout
- Inline images sometimes failed
- Undefined index: cid
[#921](https://github.com/the-djmaze/snappymail/issues/921)
- On upgrade prevent Apache access errors for
[#358](https://github.com/the-djmaze/snappymail/issues/358)
- Import contacts as CSV is broken
[#931](https://github.com/the-djmaze/snappymail/issues/931)
### Removed
- Blockquote height calculator for
[#902](https://github.com/the-djmaze/snappymail/issues/902)
## 2.25.4 2023-02-06
### Added
- message maximum quoted text level for speed.
[#902](https://github.com/the-djmaze/snappymail/issues/902)
- LoveDark Theme
[#913](https://github.com/the-djmaze/snappymail/pull/913) by @TheCuteFoxxy
### Changed
- Moved pluginEnable() to \SnappyMail\Repository::enablePackage()
- Updrate French language by @hguilbert
- Cleanup material-design checkbox
- Some style change for settings panels
- Some MailMessageView styling
- Disabled blockquotes height calculation for
[#902](https://github.com/the-djmaze/snappymail/issues/902)
- Enhance Add domain dialog
[#916](https://github.com/the-djmaze/snappymail/issues/916)
### Fixed
- Fixed arrows in thread view while scrolling
[#908](https://github.com/the-djmaze/snappymail/issues/908)
- CSS btn-thin were too high
- Whitelist to show images directly
[#201](https://github.com/the-djmaze/snappymail/issues/201)
- MailSo\Base\Http::GetHost(): Return value must be of type string
[#910](https://github.com/the-djmaze/snappymail/issues/910)
- Nextcloud undefined variable $sUser
[#915](https://github.com/the-djmaze/snappymail/issues/915)
- Hopefull improved styling for Firefox mobile fixes
- Scroll display error
[#912](https://github.com/the-djmaze/snappymail/issues/912)
- Autofocus was triggered when view resized
- Better solution for Settings Page is bigger than the Account Page
[#897](https://github.com/the-djmaze/snappymail/issues/897)
### Removed
- $bUrlEncode as it was always false
## 2.25.3 2023-02-03
### Added
- Make message collapse quotes optional
[#902](https://github.com/the-djmaze/snappymail/issues/902)
### Changed
- Improved loginErrorDelay to prevent timing attacks and default to 5 seconds
- Moved message collapse quotes to HTML parser
- Moved some application.ini settings to other sections
- Moved source "/assets/*" to proper location in /snappymail/v/0.0.0/static/
- Set checkMailInterval to 15 minutes by default (now that it is configurable)
### Fixed
- Prevent plugin property decrypt error
[#859](https://github.com/the-djmaze/snappymail/issues/859)
- Index.html cache issue
[#891](https://github.com/the-djmaze/snappymail/issues/891)
- Images whitelist regular expression failed
[#201](https://github.com/the-djmaze/snappymail/issues/201)
- Undefined index: ShowImages
[#901](https://github.com/the-djmaze/snappymail/issues/901)
- Chrome shows LSep boxes in certain emails
[#900](https://github.com/the-djmaze/snappymail/issues/900)
- Don't remember OpenPGP/GnuPGP key passphrase when it fails
[#840](https://github.com/the-djmaze/snappymail/issues/840)
## 2.25.2 2023-02-02
### Added
- Refresh frequency of the mailboxes
[#486](https://github.com/the-djmaze/snappymail/issues/486)
- Temporarily save password for private key during session
[#840](https://github.com/the-djmaze/snappymail/issues/840)
- Upgrade from Rainloop, password not migrated
[#898](https://github.com/the-djmaze/snappymail/issues/898)
- Whitelist to show images directly
[#201](https://github.com/the-djmaze/snappymail/issues/201)
- HTML editor paste image makes it max 1024px width/height
[#262](https://github.com/the-djmaze/snappymail/issues/262)
- SnappyMail\TAR::extractTo support the $files and $overwrite parameters
### Changed
- Issue with themes when Chrome crashes
[#188](https://github.com/the-djmaze/snappymail/issues/188)
- /static/.htaccess as mentioned by @dbiczo in
[#895](https://github.com/the-djmaze/snappymail/issues/895)
- Update nb-NO language
[#896](https://github.com/the-djmaze/snappymail/pull/896) by @master3395
- \RainLoop\Utils::SetCookie() to \SnappyMail\Cookies::set()
- Merge \MailSo\Base\Utils::RecRmDir() and \MailSo\Base\Utils::RecTimeDirRemove()
### Fixed
- Two issues with images being delivered via ProxyExternal
[#887](https://github.com/the-djmaze/snappymail/issues/887)
- Multiple accounts conflicts when using multiple tabs
[#892](https://github.com/the-djmaze/snappymail/issues/892)
- Spaces in attached file names are not preserved
[#893](https://github.com/the-djmaze/snappymail/issues/893)
- Prevent empty area scroll on body
### Removed
- Floating HTML text formatting menu on mobile
[#828](https://github.com/the-djmaze/snappymail/issues/828)
- Unused AUTH_SPEC_LOGOUT_TOKEN_KEY and AUTH_SPEC_LOGOUT_CUSTOM_MSG_KEY
## 2.25.1 2023-01-30
### Added
- Support RFC 8689
- Nextcloud move themes outside of app folder
[#875](https://github.com/the-djmaze/snappymail/issues/875)
- Add check to unregister system addressbook
[#879](https://github.com/the-djmaze/snappymail/pull/879) by @akhil1508
### Changed
- material-design checkbox use hidden input for accessibility
- Always subscribe to new folder by default
- Merge NoScript, NoCookie and BadBrowser pages in Index.html
- Cleanup translations. Also see https://snappymail.eu/translate.php
### Fixed
- PHP < 8.1 ini_set() only accepts strings when `declare(strict_types=1);` is used
- Nextcloud also fix settings on upgrade
- Nextcloud workaround upgrade OPCache issue
[#880](https://github.com/the-djmaze/snappymail/issues/880)
- SMTP error while using PHP mail()
[#884](https://github.com/the-djmaze/snappymail/issues/884)
- Cannot create folder
[#885](https://github.com/the-djmaze/snappymail/issues/885)
- Image stretching when image hasd max-width
[#869](https://github.com/the-djmaze/snappymail/issues/869)
## 2.25.0 2023-01-26
### Changed
- Right margin to folder search input wrapper
[#871](https://github.com/the-djmaze/snappymail/pull/871) by @codiflow
- Almost all request params now use JavaScript camelCase instead of CamelCase
- #rl-content to use flex for better layout control
- Decode some Copernica link tracking
- Cleanup some CSS and JS code
- Better Sieve rainloop.user script handling
- Improve MailSo\Imap\BodyStructure
- Cleanup MIME part FileName handling
### Fixed
- CardDAV sync error - Request aborted
[#866](https://github.com/the-djmaze/snappymail/issues/866)
- PDF not possible to be viewed in the browser
[#867](https://github.com/the-djmaze/snappymail/issues/867)
- ZIP Files cannot be uploaded from Desktop to attachments (other files can be uploaded)
[#878](https://github.com/the-djmaze/snappymail/issues/878)
- Mobile view issues with leftside menu
- Default messageListItem border left color for dark mode
- Nextcloud layout in ?admin
- Nextcloud `_htaccess` to `.htaccess` failed
### Removed
- Some unused PHP functions
## 2.24.6 2023-01-18
### Added
- Preparations for RFC 8689
- Add admin setting for the contacts suggestions limit
- A button to clear folder search input field
[#847](https://github.com/the-djmaze/snappymail/pull/847) by @codiflow
- Preparations for custom SMTP credentials handling for
[#859](https://github.com/the-djmaze/snappymail/issues/859)
[#458](https://github.com/the-djmaze/snappymail/issues/458)
[#431](https://github.com/the-djmaze/snappymail/issues/431)
[#233](https://github.com/the-djmaze/snappymail/issues/233)
### Changed
- Display the time of emails, not just the size and date
[#843](https://github.com/the-djmaze/snappymail/issues/843)
- Made thread number a bit wider
[#844](https://github.com/the-djmaze/snappymail/issues/844)
- Improved contacts suggestions limit handling
[#849](https://github.com/the-djmaze/snappymail/issues/849)
- 64-bit PHP was required
[#852](https://github.com/the-djmaze/snappymail/issues/852)
- Update fr-FR translations
[#854](https://github.com/the-djmaze/snappymail/pull/854) by @dominiquefournier
- Move createDomain & createDomainAlias buttons below table
- Move some Nextcloud SnappyMailHelper code to new InstallStep
- Cleanup messages cache handling
- Improved visibility Admin Domain Test errors
### Fixed
- LiteSpeed does not disable compression although .htaccess says so
[#525](https://github.com/the-djmaze/snappymail/issues/525)
[#855](https://github.com/the-djmaze/snappymail/issues/855)
- "Move to folder" functionality displays in desktop view when on mobile
[#858](https://github.com/the-djmaze/snappymail/issues/858)
- matchAnyRule() Return value must be of type bool, none returned
- Unknown CSP directive 'strict-dynamic' in Safari 13.1.2
- Wrong timeStyle issue in Safari 13.1.2
- Language SETTINGS_LABELS got lost
- Nextcloud failed loading app data when path didn't end with /
[#864](https://github.com/the-djmaze/snappymail/issues/864)
- Workaround Nextcloud session_start issue
[#813](https://github.com/the-djmaze/snappymail/issues/813)
## 2.24.5 2023-01-12
### Added
- Support for search criterias ON, SENTON, SENTSINCE and SENTBEFORE
- New 'forward as attachment' glyph
- NC integration app metadata: add links to admin and dev docs
[#820](https://github.com/the-djmaze/snappymail/pull/820) by @p-bo
- Clicking on messagelist grouped date/from searches on that date/from
[#815](https://github.com/the-djmaze/snappymail/issues/815)
- Nextcloud Improved file picker layout
[#825](https://github.com/the-djmaze/snappymail/issues/825)
### Changed
- Move release.php to cli/release.php
- Moved sort options "FROM" direct below "DATE" for better understanding
- Added DAV path error to log for
[#822](https://github.com/the-djmaze/snappymail/issues/822)
- Resolve layout issues by changing from `fixed` to `relative`
[#686](https://github.com/the-djmaze/snappymail/issues/686)
- Cache handling of messagelist changed due to etag issues
- Improve german and italian translation
[#846](https://github.com/the-djmaze/snappymail/pull/846) by @cm-schl
### Fixed
- Searching on Nextcloud search
[#787](https://github.com/the-djmaze/snappymail/issues/787)
- Workaround another Nextcloud disallowed .htaccess
[#790](https://github.com/the-djmaze/snappymail/issues/790)
- Compact display of folders in nextcloud
[#824](https://github.com/the-djmaze/snappymail/pull/824) by @makoehr
- Admin -> Contacts PDO test failed when using different AddressBookInterface
- KolabAddressBook errors
- Forgot debug js/css setting change in Nextcloud
- Typed property MailSo\Mail\MessageListParams::$sSearch must not be accessed before initialization
- Unable to change font/text colour when composing message using Safari
[#826](https://github.com/the-djmaze/snappymail/issues/826)
- auth_logging failed
[#489](https://github.com/the-djmaze/snappymail/issues/489)
- Class "RainLoop\Actions\Notifications" not found
[#839](https://github.com/the-djmaze/snappymail/issues/839)
### Removed
- 'set-version' argument for release.php
## 2.24.4 2022-12-30
### Added
- Check PHP_INT_SIZE if SnappyMail runs on 64bit
### Changed
- A lot of MessageList sorting improvements
[#796](https://github.com/the-djmaze/snappymail/issues/796)
- On upgrade also update plugins in Nextcloud due to many misunderstandings and prevent invalid open issues
- Moved application.ini labs.use_app_debug_* to debug.*
### Fixed
- Dutch translation for confusing message (threads vs grouped)
- Workaround Nextcloud disallowed .htaccess
[#790](https://github.com/the-djmaze/snappymail/issues/790)
- Searching on Nextcloud search failed
[#787](https://github.com/the-djmaze/snappymail/issues/787)
## 2.24.3 2022-12-28
### Changed
- When sorting on FROM also sort on REVERSE DATE
### Fixed
- F5 and Ctrl-F5 reload logs out of Snappymail in Chrome.
[#800](https://github.com/the-djmaze/snappymail/issues/800)
- Switching accounts does not work anymore with 2.24.2
[#802](https://github.com/the-djmaze/snappymail/issues/802)
## 2.24.2 2022-12-27
### Changed
- Disable sorting when viewing message thread
[#445](https://github.com/the-djmaze/snappymail/issues/445)
- Update Chinese translation
[#794](https://github.com/the-djmaze/snappymail/pull/794) by @mayswind
- No need to call IMAP EXAMINE when current folder already SELECT
- Thread view now has tree indentation
### Fixed
- Nextcloud failed on Integrity check
[#790](https://github.com/the-djmaze/snappymail/issues/790)
- Deleting message fails with message "Cannot move message" on hMailServer
[#793](https://github.com/the-djmaze/snappymail/issues/793)
- List messages per day feature is enabled by default and breaks sorting
[#796](https://github.com/the-djmaze/snappymail/issues/796)
- Custom page login not working for first time due to smctoken security
[#798](https://github.com/the-djmaze/snappymail/issues/798)
- Message list is always empty due to wrong implementation of RFC 8474
[#799](https://github.com/the-djmaze/snappymail/issues/799)
## 2.24.1 2022-12-23
### Changed
- Intl.DateTimeFormat() into toLocaleString() for iOS < 14
- Cleanup locale date/time handling
- Make MessageList per day optional
[#737](https://github.com/the-djmaze/snappymail/issues/737)
### Fixed
- Typed property MailSo\Cache\Drivers\Redis::$sKeyPrefix must not be accessed before initialization
[#792](https://github.com/the-djmaze/snappymail/issues/792)
- Attachments in mails in 2.24 not loading in reply/forward
[#789](https://github.com/the-djmaze/snappymail/issues/789)
- Rollback #280 due to complications
[#280](https://github.com/the-djmaze/snappymail/issues/280)
## 2.24.0 2022-12-22
### Added
- Option to enable additional account unread messages count
- Prevent godaddy click tracking
- Dark theme use `color-scheme: dark;`
- More imapsync.php CLI options and help
### Changed
- MessageList now grouped/split per day
[#737](https://github.com/the-djmaze/snappymail/issues/737)
- Account switcher still shown when allow_additional_accounts is set to Off
[#280](https://github.com/the-djmaze/snappymail/issues/280)
- PHP classes use typed properties
- Speedup Contacts Suggestions handling
- Check SMTP SIZE
[#779](https://github.com/the-djmaze/snappymail/issues/779)
### Fixed
- Handle multiple DKIM signatures authentication results
- Reload admin extensions on update
- SieveClient quoted string parsing failed
- Invalid Attachments (PDF)
[#466](https://github.com/the-djmaze/snappymail/issues/466)
- Email HTML images rendering issue
[#564](https://github.com/the-djmaze/snappymail/issues/564)
- "Server message: No supported SASL mechanism found, remote server wants:" in hMailServer
[#780](https://github.com/the-djmaze/snappymail/issues/780)
### Removed
- Some unused plugin hooks to improve Action handling speed
## 2.23.1 2022-12-15
### Changed
- More JMAP RFC matching including role
- Speedup fetch all Folders/mailboxes
- Disable unused folder_list_limit
- Merge MailSo\Mail\Folder into MailSo\Imap\Folder and speedup process
- SnappyMail\Imap\Sync now matches folders based on JMAP role
- Added the new imapsync.php command line script for
[#744](https://github.com/the-djmaze/snappymail/issues/744)
- Added manual setting for 12/24h clock
[#760](https://github.com/the-djmaze/snappymail/issues/760)
- Add options to mark the message I'm viewing as unread and return to the inbox
[#766](https://github.com/the-djmaze/snappymail/issues/766)
### Fixed
- Extension menu shows only some available extensions
[#778](https://github.com/the-djmaze/snappymail/issues/778)
- New solution for [#423](https://github.com/the-djmaze/snappymail/issues/423) due to [#774](https://github.com/the-djmaze/snappymail/issues/774)
- Avatars extension error on smartphone
[#764](https://github.com/the-djmaze/snappymail/issues/764)
- Don't fetch Unread count for main account
- CSS .e-checkbox.material-design invisible on show/hide
## 2.23.0 2022-12-08
### Added
- Show the number of unread mails on all mail addresses/accounts
[#437](https://github.com/the-djmaze/snappymail/issues/437)
- Show OpenSSL version in Admin => About
### Changed
- Redirect to login page instead of "invalid token" popup
[#752](https://github.com/the-djmaze/snappymail/issues/752)
- Make all dialogs fit in mobile view
- Changed some Plugin hooks for better handling:
* json.action-pre-call => json.before-{actionname}
* json.action-post-call => json.after-{actionname}
- Cleaner accounts list in systemdropdown
- Multiple imapConnect handling for new import mail feature
[#744](https://github.com/the-djmaze/snappymail/issues/744)
### Fixed
- Loosing HTML signature in account identity under settings
[#750](https://github.com/the-djmaze/snappymail/issues/750)
- Plugin configuration did not load anymore when type was SELECTION
[#753](https://github.com/the-djmaze/snappymail/pull/753) by @cm-schl
- Nextcloud Default theme shows gray text on gray background
[#754](https://github.com/the-djmaze/snappymail/issues/754)
- Only run JSON hooks when $sAction is set
[#755](https://github.com/the-djmaze/snappymail/issues/755)
- Unsupported SASL mechanism OAUTHBEARER
[#756](https://github.com/the-djmaze/snappymail/issues/756)
[#758](https://github.com/the-djmaze/snappymail/issues/758)
[#759](https://github.com/the-djmaze/snappymail/issues/759)
- border-box issue with .buttonCompose
### Removed
- Deprecate \RainLoop\Account->Login() and \RainLoop\Account->Password()
## 2.22.7 2022-12-06
### Changed
- Scroll bar with the mobile version in "Advanced search" screen
[#712](https://github.com/the-djmaze/snappymail/issues/712)
### Fixed
- Undefined property: MailSo\Mail\FolderCollection::$capabilities
- PHP 8.2 Creation of dynamic property is deprecated
- Attempt to solve #745 in v2.22.6 failed and resulted in errors #746 and #748
[#745](https://github.com/the-djmaze/snappymail/issues/745)
[#746](https://github.com/the-djmaze/snappymail/issues/746)
[#748](https://github.com/the-djmaze/snappymail/issues/748)
- Admin domain test undefined matched domain should say email@example matched domain
## 2.22.6 2022-12-05
### Changed
- Narrow MessageList wraps star icon
[#737](https://github.com/the-djmaze/snappymail/issues/737)
- Use UIDVALIDITY when HIGHESTMODSEQ not available, maybe solves
[#745](https://github.com/the-djmaze/snappymail/issues/745)
- No need to generate 1000's of ID's for MessageListByRequestIndexOrUids()
- Update Chinese translation by @mayswind
### Fixed
- PluginProperty DefaultValue contained array while it should not
[#741](https://github.com/the-djmaze/snappymail/issues/741)
### Removed
- IMAP SELECT/EXAMINE unset `UNSEEN` because IMAP4rev2 deprecated
## 2.22.5 2022-12-02
### Added
- Support plugin minified .min.js and .min.css
- ZIP Download multiple emails
[#717](https://github.com/the-djmaze/snappymail/issues/717)
### Changed
- Replaced some data-bind="click: function(){} with object functions to prevent eval()
- Improved plugins hash when there are changes
### Fixed
- Settings Themes style due to border-box change
- "Remember me" failed due to v2.22.4 Session token change
[#719](https://github.com/the-djmaze/snappymail/issues/719)
[#731](https://github.com/the-djmaze/snappymail/issues/731)
### Removed
- Vacation filter: Button to add recipients (+)
[#728](https://github.com/the-djmaze/snappymail/issues/728)
## 2.22.4 2022-11-28
### Changed
- Contacts dialog layout using flex
- Session token is related to the user agent string
[#713](https://github.com/the-djmaze/snappymail/issues/713)
- Better browser cache handling for avatars plugin
[#714](https://github.com/the-djmaze/snappymail/issues/714)
- Force HTML editor when set as default when replying to message
[#355](https://github.com/the-djmaze/snappymail/issues/355)
### Fixed
- Contact Error - object Object
[#716](https://github.com/the-djmaze/snappymail/issues/716)
- Unable to move messages to different folder by drag and drop
[#710](https://github.com/the-djmaze/snappymail/issues/710)
- v2.22.3 unknown error
[#709https://github.com/the-djmaze/snappymail/issues/709)
## 2.22.3 2022-11-25
### Added
- application.ini config logs.path and cache.path to improve custom data structure.
### Changed
- Improved cPanel integration
[#697](https://github.com/the-djmaze/snappymail/issues/697)
- Update to OpenPGP.js v5.5.0
### Fixed
- drag & drop folder expansion
[#707](https://github.com/the-djmaze/snappymail/issues/707)
- Save selected messages as .eml in Nextcloud failed
[#704](https://github.com/the-djmaze/snappymail/issues/704)
## 2.22.2 2022-11-24
### Added
- Support cPanel
[#697](https://github.com/the-djmaze/snappymail/issues/697)
## 2.22.1 2022-11-23
### Added
- AddressBookInterface::GetContactByEmail() to support sender image/avatar extension
[#115](https://github.com/the-djmaze/snappymail/issues/115)
### Changed
- All the attachment zone is not clickable, even if the cursor is a hand
[#691](https://github.com/the-djmaze/snappymail/issues/691)
- Different approach for "update button duplicated in admin panel"
[#677](https://github.com/the-djmaze/snappymail/issues/677)
- Better drag & drop solution for leftPanel
### Fixed
- The page does not change after batch deletion
[#684](https://github.com/the-djmaze/snappymail/issues/684)
- Prevent domain uppercase issues found in
[#689](https://github.com/the-djmaze/snappymail/issues/689)
- Login invalid response: VXNlcm5hbWU6CG
[#693](https://github.com/the-djmaze/snappymail/issues/693)
## 2.21.4 2022-11-22
### Added
- Added domain matcher test for
[#689](https://github.com/the-djmaze/snappymail/issues/689)
- Download all Attachments of selected Emails
[#361](https://github.com/the-djmaze/snappymail/issues/361)
### Changed
- Log current shortcuts scope for
[#690](https://github.com/the-djmaze/snappymail/issues/690)
- CSS everything to be box-sizing: border-box;
- Make messageview a bit larger so that it is the same height as the messagelist
- Cleanup and rearrange some fontastic glyphs
- Also show From email address by default
[#683](https://github.com/the-djmaze/snappymail/issues/683)
### Fixed
- Contact.display() returns [object Object]
- When left panel disabled and drag messages, show it
- Issue with admin domain connection type settings selectbox
[#689](https://github.com/the-djmaze/snappymail/issues/689)
- Mobile View on cellphones: automatic scrolling not working near the visual keyboard
[#686](https://github.com/the-djmaze/snappymail/issues/686)
- Unable to separate runtime from installation
[#685](https://github.com/the-djmaze/snappymail/issues/685)
### Removed
- Removed inline parameter of checkbox and select components
## 2.21.3 2022-11-16
### Added
- Click on PGP KEY attachment opens "Import key" dialog
### Changed
- Increase visible reading area for small screens
[#672](https://github.com/the-djmaze/snappymail/issues/672)
- Improved message spam score detailed view
- Improved DAV connection logging
### Fixed
- Handling attachments MIME type / content-type
- Message responsive resizing width/height of elements
[#678](https://github.com/the-djmaze/snappymail/issues/678)
- Focus on textarea when creating a new plain text email
[#501](https://github.com/the-djmaze/snappymail/issues/501)
- CardDav remove photos of my contacts when synchronizing
[#679](https://github.com/the-djmaze/snappymail/issues/679)
### Removed
- \MailSo\Mime\Enumerations\MimeType
### Nextcloud
- Use fontastic in Nextcloud Files selector dialog
- Firefox < 98 dialogs
[#673](https://github.com/the-djmaze/snappymail/issues/673)
## 2.21.2 2022-11-15
### Added
- Allow browser Spellchecker
[#574](https://github.com/the-djmaze/snappymail/issues/574)
- Decode MIME charset of .EML attachments
[#662](https://github.com/the-djmaze/snappymail/issues/662)
### Changed
- Increase message visible text area
[#672](https://github.com/the-djmaze/snappymail/issues/672)
- When copy/paste image use the raw data instead of clipboard HTML
[#654](https://github.com/the-djmaze/snappymail/issues/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/issues/622)
[#661](https://github.com/the-djmaze/snappymail/issues/661)
- Added share public/internal file link
[#569](https://github.com/the-djmaze/snappymail/issues/569)
## 2.21.1 2022-11-13
### Fixed
- Crypt crashes when Sodium not installed
[#641](https://github.com/the-djmaze/snappymail/issues/641)
[#657](https://github.com/the-djmaze/snappymail/issues/657)
[#663](https://github.com/the-djmaze/snappymail/issues/663)
[#664](https://github.com/the-djmaze/snappymail/issues/664)
[#668](https://github.com/the-djmaze/snappymail/issues/668)
[#669](https://github.com/the-djmaze/snappymail/issues/669)
- Personalised favicon not working - default Snappymail favicon showing
[#665](https://github.com/the-djmaze/snappymail/issues/665)
### Nextcloud
- v23 ContentSecurityPolicy versions issue
[#666](https://github.com/the-djmaze/snappymail/issues/666)
## 2.21.0 2022-11-11
### Added
- Put messagelist top bar buttons also in dropdown
- Allow setting additional Sec-Fetch rules, as discussed by
[#585](https://github.com/the-djmaze/snappymail/issues/585)
- Light/Dark favicon.svg
[#643](https://github.com/the-djmaze/snappymail/issues/643)
- Allow an account name/label
[#571](https://github.com/the-djmaze/snappymail/issues/571)
### Changed
- Moved ServiceRemoteAutoLogin to plugin/extension
- Moved ServiceExternalSso to plugin/extension
- Moved ServiceExternalLogin to plugin/extension
- Renamed ManageSieveClient to SieveClient
- New Net/Imap/Smtp/Sieve Settings object system which allows
setting SSL options per domain and verify_certificate by default
- Update plugins to use new Net/Imap/Smtp/Sieve Settings object
- Removed message double-click to full screen
[#638](https://github.com/the-djmaze/snappymail/issues/638)
### Fixed
- ldap-identities-plugin
[#647](https://github.com/the-djmaze/snappymail/pull/647) by @cm-schl
- OpenSSL v3 ciphers issue
[#641](https://github.com/the-djmaze/snappymail/issues/641)
### Nextcloud
- Style PopupsNextcloudFiles view
- Link to internal files in composer
## 2.20.6 2022-11-08
### Fixed
- ?admin login failed
[#642](https://github.com/the-djmaze/snappymail/issues/642)
- Resolve PHP 8.2 Creation of dynamic property is deprecated
## 2.20.5 2022-11-08
### Nextcloud
- Improved workaround for Nextcloud Content-Security-Policy bug
Safari [#631](https://github.com/the-djmaze/snappymail/issues/631)
Edge [#633](https://github.com/the-djmaze/snappymail/issues/633)
Reported [#35013](https://github.com/nextcloud/server/issues/35013)
## 2.20.4 2022-11-07
### Fixed
- Nextcloud no-embed use iframe mode failed
### Nextcloud
- Workaround Nextcloud Content-Security-Policy bug
Safari [#631](https://github.com/the-djmaze/snappymail/issues/631)
Edge [#633](https://github.com/the-djmaze/snappymail/issues/633)
Reported [#35013](https://github.com/nextcloud/server/issues/35013)
## 2.20.3 2022-11-07
### Added
- Throw decrypt errors
[#632](https://github.com/the-djmaze/snappymail/issues/632)
### Changed
- Better multiple WYSIWYG registration system (not finished)
- Better handling of admin token cookie
### Fixed
- Cookie name has been rejected because it is already expired.
[#636](https://github.com/the-djmaze/snappymail/issues/636)
- Content-Security-Policy 'strict-dynamic' was missing
### Nextcloud
- Better handling of Content-Security-Policy
[#631](https://github.com/the-djmaze/snappymail/issues/631)
[#633](https://github.com/the-djmaze/snappymail/issues/633)
- Nextcloud 23 Error Call to undefined method useStrictDynamic()
[#634](https://github.com/the-djmaze/snappymail/issues/634)
- Use snappymail icon as favicon-mask.svg instead default nextcloud logo
[#635](https://github.com/the-djmaze/snappymail/issues/635)
## 2.20.2 2022-11-05
### Added
- Add more search operators (i.e. copy lots of Gmail ones)
[#625](https://github.com/the-djmaze/snappymail/issues/625)
### Changed
- Some CSS borders to var(--border-color)
### Fixed
- pgpDecrypt() using MailVelope the decrypt message was not green
- Shift + F in search bar resulted in forwarding message
[#624](https://github.com/the-djmaze/snappymail/issues/624)
### Nextcloud
- auto login mechanism not working anymore
[#627](https://github.com/the-djmaze/snappymail/issues/627)
## 2.20.1 2022-11-04
### Added
- Added CSS --dialog-border-clr and --dialog-border-radius
- Show lock (lock) glyph in messagelist for encrypted messages
### Fixed
- Decrypt failed when OpenPGP.js not loaded
### Nextcloud
- Now integrate with Nextcloud by default, but keep iframe option available
- Better theme integration with Nextcloud
- Use Nextcloud 18+ IEventDispatcher
- Solve Nextcloud 25 CSS issues
[#620](https://github.com/the-djmaze/snappymail/issues/620)
- PutinICS does is not working for all calendar events
[#622](https://github.com/the-djmaze/snappymail/issues/622)
- Update readme
[#617](https://github.com/the-djmaze/snappymail/pull/617) by @cm-schl
## 2.20.0 2022-11-03
### Added
- Strip mailchimp tracking
### Changed
- Use some PHP typed properties
- Move bootstrap @less variables to CSS var()
- Improved theme styling
### Fixed
- CSS --dropdown-menu-background-color should be --dropdown-menu-bg-color
### Nextcloud
- Disable Nextcloud Impersonate check due to login/logout complications
[#561](https://github.com/the-djmaze/snappymail/issues/561)
- Improved theme integration and be compatible with Breeze Dark
## 2.19.7 2022-11-02
### Added
- Make it clear that you are on the admin panel login screen
- Force PHP opcache_invalidate due to upgrade error reports "Missing version directory"
### Fixed
- Switching user (impersonate plugin) keeps old Email logged in
[#561](https://github.com/the-djmaze/snappymail/issues/561)
- PGP Decryption / Encryption Failures
[#600](https://github.com/the-djmaze/snappymail/issues/600)
- Undefined constant "OCA\SnappyMail\Util\RAINLOOP_APP_LIBRARIES_PATH
[#601](https://github.com/the-djmaze/snappymail/issues/601)
- Cannot access admin panel
[#602](https://github.com/the-djmaze/snappymail/issues/602)
- Wont show my emails
[#604](https://github.com/the-djmaze/snappymail/issues/604)
- Return type of MailSo\Base\StreamFilters\LineEndings::filter
[#610](https://github.com/the-djmaze/snappymail/issues/610)
- Create .pgp directory was missing
### Security
- Logger leaked some passwords
## 2.19.6 2022-10-31
### Added
- Put sign and encrypt options in composer dropdown menu and simplify te two existing buttons with a glyph
- Filter scripts UI let user understand which filter is active
[#590](https://github.com/the-djmaze/snappymail/issues/590)
### Fixed
- Method 'GetRequest' not found in \MailSo\Base\Http
[#585](https://github.com/the-djmaze/snappymail/issues/585)
### Changed
- Base Domain setup enhancements
- Cleanup MailSo MailClient using __call()
- Domain settings handling and store as JSON instead of ini
- Some JavaScript changes
- When try to login IMAP/SMTP/SIEVE but STARTTLS is required, force STARTTLS
- Embed admin panel into Nextcloud (with autologin, no need for separate login)
- Don't set default_domain in Nextcloud when already set
### Removed
- Nextcloud dark mode, it is incomplete
### Deprecated
- nothing
## 2.21.0 2022-11-11
### Added
- Put messagelist top bar buttons also in dropdown
- Allow setting additional Sec-Fetch rules, as discussed by
[#585](https://github.com/the-djmaze/snappymail/issues/585)
- Light/Dark favicon.svg
[#643](https://github.com/the-djmaze/snappymail/issues/643)
- Allow an account name/label
[#571](https://github.com/the-djmaze/snappymail/issues/571)
### Changed
- Moved ServiceRemoteAutoLogin to plugin/extension
- Moved ServiceExternalSso to plugin/extension
- Moved ServiceExternalLogin to plugin/extension
- Renamed ManageSieveClient to SieveClient
- New Net/Imap/Smtp/Sieve Settings object system which allows
setting SSL options per domain and verify_certificate by default
- Update plugins to use new Net/Imap/Smtp/Sieve Settings object
- Removed message double-click to full screen
[#638](https://github.com/the-djmaze/snappymail/issues/638)
### Fixed
- ldap-identities-plugin
[#647](https://github.com/the-djmaze/snappymail/pull/647) by @cm-schl
- OpenSSL v3 ciphers issue
[#641](https://github.com/the-djmaze/snappymail/issues/641)
### Nextcloud
- Style PopupsNextcloudFiles view
- Link to internal files in composer
## 2.20.6 2022-11-08
### Fixed
- ?admin login failed
[#642](https://github.com/the-djmaze/snappymail/issues/642)
- Resolve PHP 8.2 Creation of dynamic property is deprecated
## 2.20.5 2022-11-08
### Nextcloud
- Improved workaround for Nextcloud Content-Security-Policy bug
Safari [#631](https://github.com/the-djmaze/snappymail/issues/631)
Edge [#633](https://github.com/the-djmaze/snappymail/issues/633)
Reported [#35013](https://github.com/nextcloud/server/issues/35013)
## 2.20.4 2022-11-07
### Fixed
- Nextcloud no-embed use iframe mode failed
### Nextcloud
- Workaround Nextcloud Content-Security-Policy bug
Safari [#631](https://github.com/the-djmaze/snappymail/issues/631)
Edge [#633](https://github.com/the-djmaze/snappymail/issues/633)
Reported [#35013](https://github.com/nextcloud/server/issues/35013)
## 2.20.3 2022-11-07
### Added
- Throw decrypt errors
[#632](https://github.com/the-djmaze/snappymail/issues/632)
### Changed
- Better multiple WYSIWYG registration system (not finished)
- Better handling of admin token cookie
### Fixed
- Cookie name has been rejected because it is already expired.
[#636](https://github.com/the-djmaze/snappymail/issues/636)
- Content-Security-Policy 'strict-dynamic' was missing
### Nextcloud
- Better handling of Content-Security-Policy
[#631](https://github.com/the-djmaze/snappymail/issues/631)
[#633](https://github.com/the-djmaze/snappymail/issues/633)
- Nextcloud 23 Error Call to undefined method useStrictDynamic()
[#634](https://github.com/the-djmaze/snappymail/issues/634)
- Use snappymail icon as favicon-mask.svg instead default nextcloud logo
[#635](https://github.com/the-djmaze/snappymail/issues/635)
## 2.20.2 2022-11-05
### Added
- Add more search operators (i.e. copy lots of Gmail ones)
[#625](https://github.com/the-djmaze/snappymail/issues/625)
### Changed
- Some CSS borders to var(--border-color)
### Fixed
- pgpDecrypt() using MailVelope the decrypt message was not green
- Shift + F in search bar resulted in forwarding message
[#624](https://github.com/the-djmaze/snappymail/issues/624)
### Nextcloud
- auto login mechanism not working anymore
[#627](https://github.com/the-djmaze/snappymail/issues/627)
## 2.20.1 2022-11-04
### Added
- Added CSS --dialog-border-clr and --dialog-border-radius
- Show lock (lock) glyph in messagelist for encrypted messages
### Fixed
- Decrypt failed when OpenPGP.js not loaded
### Nextcloud
- Now integrate with Nextcloud by default, but keep iframe option available
- Better theme integration with Nextcloud
- Use Nextcloud 18+ IEventDispatcher
- Solve Nextcloud 25 CSS issues
[#620](https://github.com/the-djmaze/snappymail/issues/620)
- PutinICS does is not working for all calendar events
[#622](https://github.com/the-djmaze/snappymail/issues/622)
- Update readme
[#617](https://github.com/the-djmaze/snappymail/pull/617) by @cm-schl
## 2.20.0 2022-11-03
### Added
- Strip mailchimp tracking
### Changed
- Use some PHP typed properties
- Move bootstrap @less variables to CSS var()
- Improved theme styling
### Fixed
- CSS --dropdown-menu-background-color should be --dropdown-menu-bg-color
### Nextcloud
- Disable Nextcloud Impersonate check due to login/logout complications
[#561](https://github.com/the-djmaze/snappymail/issues/561)
- Improved theme integration and be compatible with Breeze Dark
## 2.19.7 2022-11-02
### Added
- Make it clear that you are on the admin panel login screen
- Force PHP opcache_invalidate due to upgrade error reports "Missing version directory"
### Fixed
- Switching user (impersonate plugin) keeps old Email logged in
[#561](https://github.com/the-djmaze/snappymail/issues/561)
- PGP Decryption / Encryption Failures
[#600](https://github.com/the-djmaze/snappymail/issues/600)
- Undefined constant "OCA\SnappyMail\Util\RAINLOOP_APP_LIBRARIES_PATH
[#601](https://github.com/the-djmaze/snappymail/issues/601)
- Cannot access admin panel
[#602](https://github.com/the-djmaze/snappymail/issues/602)
- Wont show my emails
[#604](https://github.com/the-djmaze/snappymail/issues/604)
- Return type of MailSo\Base\StreamFilters\LineEndings::filter
[#610](https://github.com/the-djmaze/snappymail/issues/610)
- Create .pgp directory was missing
### Security
- Logger leaked some passwords
## 2.19.6 2022-10-31
### Added
- Put sign and encrypt options in composer dropdown menu and simplify te two existing buttons with a glyph
- Filter scripts UI let user understand which filter is active
[#590](https://github.com/the-djmaze/snappymail/issues/590)
### Fixed
- Method 'GetRequest' not found in \MailSo\Base\Http
[#585](https://github.com/the-djmaze/snappymail/issues/585)
### Changed
- Base Domain setup enhancements
- Cleanup MailSo MailClient using __call()
- Domain settings handling and store as JSON instead of ini
- Some JavaScript changes
- When try to login IMAP/SMTP/SIEVE but STARTTLS is required, force STARTTLS
- Embed admin panel into Nextcloud (with autologin, no need for separate login)
- Don't set default_domain in Nextcloud when already set
### Removed
- Nextcloud dark mode, it is incomplete
### Deprecated
- nothing