What's Changed
- Correct undefined const DEFAULT_NO_PASSWORD_SAVE in Docker by @Shadow243 in #1243
- Update docker image to latest version released v2.4.0 by @Shadow243 in #1248
- Allow the execution of a presave draft handler, enabling third-party software integrating with Cypht to customize how a draft is stored by @mercihabam in #1247
- [FIX]setup_database.php: Check if the required MySQL extensions are loaded by @Baraka24 in #1251
- [FIX]hm-smtp.php: Initialize to avoid undefined variable warning by @Baraka24 in #1250
- [FIX]Imap quota: fixing quota appears more than once by @Baraka24 in #1218
- Fix quota appears more than once 2x by @Baraka24 in #1255
- [FIX] Make server page responsive by @Bienvenumoringa in #1240
- Fix reload_folder_list browser test by @indridieinarsson in #1253
- [Fix]Extension check introduced for Docker builds by @goldenmean58 in #1258
- [FIX] Make the send button enabled on compose page by @GedeonTS in #1246
- Improve messages caching to ensure a message isn't fetched more than once when viewing its content by @mercihabam in #1252
- Add linux/arm64 and linux/386 architectures building by @rodriguezny in #1261
- Fixed AllInkl provider in Cypht V2 by @josaphatim in #1260
- Add linux/arm/v7 and linux/arm/v6 building by @rodriguezny in #1262
- Automate running local tests by @jonocodes in #1042
- Fix phpunit command according to 1042 by @Shadow243 in #1263
- Include js_modules files content in the final generated site.js by @mercihabam in #1264
- Added code to raise exception on database errors by @josaphatim in #1257
- Should be off by default | Address the controversial part in read rec… by @Shadow243 in #1181
- [FIX]Blocklist:can not edit a block by @christer77 in #1079
- [FIX]hm-smtp.php: Declare properties to avoid deprecated dynamic prop… by @Baraka24 in #1249
- [FIX]hm-smtp.php: Declare properties to avoid deprecated dynamic prop… by @Baraka24 in #1271
- Fix executing handler sieve filters enabled message content when server is configured without sieve by @josaphatim in #1268
- [FIX]apache errors in its log:Already registered module for compose re-attempted: load_contacts AND Already registered module for contacts re-attempted: process_import_contact by @christer77 in #1167
- [FIX]hm-mime-message.php: Replace the mb_convert_encoding() function … by @Baraka24 in #1272
- [FIX]hm-mime-message.php: Replace the mb_convert_encoding() function … by @Baraka24 in #1280
- [FIX] output_modules.php : fixing Call to a member function get() on null by @Bienvenumoringa in #1276
- [ENH] Implement Expose IMAP capabilities for sharing folders by @Shadow243 in #1270
- [FIX] modules.php PHP Warning Undefined array key of redirect uri and… by @amaninyumu1 in #1254
- Correct ajax_imap_accept_special_folders condition on quick_servers_setup by @Shadow243 in #1283
- Disable duplicate redis extension from Github actions by @Shadow243 in #1284
- Implement browser history API based navigation, preventing page reloads between routings by @mercihabam in #1266
- [FIX]Imap quota: Fixing quota appears only once folders are expanded by @Baraka24 in #1275
- Correct settings.py & tags.py selenium tests and uncomment it by @Shadow243 in #1193
- Fix selenium load_settings_page test by @josaphatim in #1286
- merge all to 2.x by @Shadow243 in #1273
- [FIX]Fix deprecated warnings for preg_match() and mb_strtolower() in … by @Baraka24 in #1318
- [FIX]Bulk-import accounts using yaml or csv template: Allow both text… by @Baraka24 in #1319
- [FIX].env.example: DISABLE_ORIGIN_CHECK assigns twice by @Baraka24 in #1320
- [DOC]Dev Page: Reviewing documentation links by @Baraka24 in #1361
- [FIX]DEFAULT_TEXT_ONLY value must be false by @Baraka24 in #1362
- docs(other): remove duplication for installation notes by @Baraka24 in #1474
- feat(other): add HTML email sanitizer to remove external background i… by @Baraka24 in #1513
Full Changelog: v2.4.0...v2.4.1