## 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 by @rezaei92
[#1286](https://github.com/the-djmaze/snappymail/pull/1286)
### 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 by @hampoelz
[#1363](https://github.com/the-djmaze/snappymail/pull/1363)
- 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 by @avinash-0007
[#1362](https://github.com/the-djmaze/snappymail/pull/1362)
- 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 by @SergeyMosin
[#1347](https://github.com/the-djmaze/snappymail/pull/1347)
- Squire: issue when using the enter key in a reply window
[#1296](https://github.com/the-djmaze/snappymail/issues/1296)
- Squire: crash on cut/delete range
### Nextcloud
- Use language as defined in Nextcloud settings
[#1293](https://github.com/the-djmaze/snappymail/issues/1293)
- Plugin Call to undefined method RainLoop\Model\MainAccount::ImapConnectAndLoginHelper()
- SnappyMail failed due to Nextcloud Symfony polyfill
## 2.30.0 – 2023-12-04
### Added
- SnappyMail\SensitiveString class to secure passwords
- Allow to disable all IMAP features through Admin -> Domain
- Setting to open mails in a tab or new window
[#951](https://github.com/the-djmaze/snappymail/issues/951)
- Fully support IMAP PREVIEW
[#1338](https://github.com/the-djmaze/snappymail/issues/1338)
- Disable "Mark message as read after", offer manual toggle
[#1289](https://github.com/the-djmaze/snappymail/issues/1289)
- A "Move to" button inside message view as an icon/button and in the drop down menu.
[#1295](https://github.com/the-djmaze/snappymail/issues/1295)
- Support for IMAP WITHIN
- Support \noinferiors to disallow creating subfolders
- A test due to Failed loading libs.min.js
[#358](https://github.com/the-djmaze/snappymail/issues/358),
[#862](https://github.com/the-djmaze/snappymail/issues/862),
[#890](https://github.com/the-djmaze/snappymail/issues/890),
[#895](https://github.com/the-djmaze/snappymail/issues/895),
[#1238](https://github.com/the-djmaze/snappymail/issues/1238),
[#1320](https://github.com/the-djmaze/snappymail/issues/1320)
### Changed
- Split PHP 8 polyfills from include.php
- Disable snappymail/v/0.0.0/static/.htaccess for now as many servers have issues with it
- Merged all Domain `disable_*` settings into `disabled_capabilities:[]`
- Prioritize LIST-EXTENDED over LSUB (LSUB deprecated in IMAP4rev2)
- Removed unused ImapClient::IsSupported()
- Removed obsolete `$_ENV['SNAPPYMAIL_NEXTCLOUD']`
- Removed unused Plugin->replaceTemplate()
- Removed openDropdownTrigger
### Fixed
- Move to button does not work
[#1328](https://github.com/the-djmaze/snappymail/issues/1328)
- Mark passwords as sensitive information
[#1343](https://github.com/the-djmaze/snappymail/issues/1343)
- Account sSmtpPassword wrong value
- SCRAM sign-in failed
[#1245](https://github.com/the-djmaze/snappymail/issues/1245)
- Squire generates to many `
`
[#1339](https://github.com/the-djmaze/snappymail/issues/1339)
- Creation of dynamic property SnappyMail\Stream\ZipEntry::$compression is deprecated
- `json.after-*` hooks didn't send $aResponse as recursive array
- Sieve: Move to folder with trailing space does not work
[#1329](https://github.com/the-djmaze/snappymail/issues/1329)
- Squire: cantFocusEmptyTextNodes var is always undefined
[#1337](https://github.com/the-djmaze/snappymail/issues/1337)
- Squire: Remove redundant after replacing styles
- Squire: Handle empty nodes in moveRangeBoundariesDownTree
- Theme "Nextcloud V25+" can't be translated
[#1331](https://github.com/the-djmaze/snappymail/issues/1331)
## 2.29.4 – 2023-11-21
### Fixed
- Contacts not work
[#1319](https://github.com/the-djmaze/snappymail/issues/1319)
## 2.29.3 – 2023-11-21
### Added
- Docker Hub image
[#965](https://github.com/the-djmaze/snappymail/pull/965) by @leojonathanoh
### Changed
- Sabre/VObject 4.5.4 and Sabre/Xml 4.0.4
[#1311](https://github.com/the-djmaze/snappymail/issues/1311)
### Fixed
- '#/mailbox/folder/mUID/search' uri/route handling
[#1301](https://github.com/the-djmaze/snappymail/pull/1301) by @SergeyMosin
- "Remember me" doesn't work when browser is closed
[#1313](https://github.com/the-djmaze/snappymail/issues/1313)
- Blank email displayed when "Prefer HTML to plain text" is unchecked and the message is html only
[#1302](https://github.com/the-djmaze/snappymail/issues/1302)
- Parent folder of Sub folder not useable.
[#1008](https://github.com/the-djmaze/snappymail/issues/1008)
- Large detailed header don't display body
[#1284](https://github.com/the-djmaze/snappymail/issues/1284)
### Nextcloud
- Improvements for Install / update issues #929
[#929](https://github.com/the-djmaze/snappymail/issues/929)
- Should use language as defined in cloud settings #1293
[#1293](https://github.com/the-djmaze/snappymail/issues/1293)
## 2.29.2 – 2023-11-14
### Added
- Show size of folders in folders list #1303
[#1303](https://github.com/the-djmaze/snappymail/issues/1303)
### Fixed
- Configuration failed when using special chars in MySQL password #1308
[#1308](https://github.com/the-djmaze/snappymail/issues/1308)
- With email open, "delete" doesn't delete #1274
[#1274](https://github.com/the-djmaze/snappymail/issues/1274)
- Fix threading view in Thunderbird (others?) by @tkasch
[#1304](https://github.com/the-djmaze/snappymail/pull/1304)
## 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 by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- 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 by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- in mobile mode hide folders(left) panel when a folder is clicked by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- spellcheck the subject when 'allowSpellcheck' setting is true by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- 'collapse_blockquotes', 'allow_spellcheck' and 'mail_list_grouped' to admin settings ('defaults' section) by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- 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 by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- if applicable set '\\answered' or '$forwarded' flag after a message is sent so the proper icon is shown in the message list view by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
### 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 by @SergeyMosin
[#1234](https://github.com/the-djmaze/snappymail/pull/1234)
- Extra wrapper div is added in Squire every time a Draft is open (or closed) after save.
[#1208](https://github.com/the-djmaze/snappymail/issues/1208)
- foreach() argument must be of type array|object
[#1237](https://github.com/the-djmaze/snappymail/issues/1237)
- `` tag 'style' is lost in replies by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- unseen indicator is not shown in thread view when 'listGrouped' settings is false by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- 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 by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- 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. by @SergeyMosin
[#1248](https://github.com/the-djmaze/snappymail/pull/1248)
- Improve UX of "Put in Calendar" option in plugin by @theronakpatel
[#1259](https://github.com/the-djmaze/snappymail/pull/1259)
## 2.28.4 – 2023-07-10
### Added
- application.ini msg_default_action by @SergeyMosin
[#1204](https://github.com/the-djmaze/snappymail/pull/1204)
- application.ini view_show_next_message by @SergeyMosin
[#1204](https://github.com/the-djmaze/snappymail/pull/1204)
- application.ini view_images by @SergeyMosin
[#1204](https://github.com/the-djmaze/snappymail/pull/1204)
- nextcloud add ability to include custom php file in InstallStep migration by @SergeyMosin
[#1197](https://github.com/the-djmaze/snappymail/pull/1197)
- 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 by @rezaei92
[#1200](https://github.com/the-djmaze/snappymail/pull/1200)
### 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 by @SergeyMosin
[#1204](https://github.com/the-djmaze/snappymail/pull/1204)
- 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 by @mayswind
[#1157](https://github.com/the-djmaze/snappymail/pull/1157)
- Update Polish translation by @tinola
[#1156](https://github.com/the-djmaze/snappymail/pull/1156)
### 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 by @ner00
[#1124](https://github.com/the-djmaze/snappymail/pull/1124)
- Update Traditional Chinese (Taiwan) by @chiyi4488
[#1107](https://github.com/the-djmaze/snappymail/pull/1107)
- Update Russian by @konkere
[#1108](https://github.com/the-djmaze/snappymail/pull/1108)
- Update Italian by @cm-schl
[#1094](https://github.com/the-djmaze/snappymail/pull/1094)
- Update French by @hguilbert
[#1102](https://github.com/the-djmaze/snappymail/pull/1102)
- Update German by @cm-schl
[#1087](https://github.com/the-djmaze/snappymail/pull/1087)
### 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 `