168 changes from 22 contributors (of which 14 are new contributors). 337 files were affected.
This has tons of new features, but is a buggy release. If you need stability, stay with Cypht 1.4.x for now. All the details here: #879 (comment)
Main changes
- Minimum requirement is PHP 7.4 (all the way up to PHP 8.4)
- Migrate to Bootstrap 5 and Bootswatch themes
- JMAP support
- POP support removal
- Revamp account management (both back-end and UX to add/edit accounts)
- Environment variables via Symfony Dotenv
- Snooze emails
- IMAP folder subscriptions
- Collected Recipients and Trusted Senders
- A simpler way to show source of an email
List of changes
- Added possibility to see and edit sender behavior by @josaphatim in #731
- Fixed disposition attachment when it is not an array by @josaphatim in #736
- Handled unsupported charsets on mb_convert_encoding by @josaphatim in #738
- Set simple UI as the default in Cypht by @henochit in #735
- Contact bubbles: make it possible to copy-paste and edit by @henochit in #739
- Added a way to check supported sieve extensions by @josaphatim in #737
- Fix: broken icon image when trying to switch to a theme that alters icon colors by @Yannick243 in #742
- Renamed dropdown css class to not interfere with framework class when cypht is embedded by @josaphatim in #740
- Update composer.lock to match with composer.json requirements by @rodriguezny in #752
- Added snooze functionnality to imap by @josaphatim in #659
- Allow cypht integration to save message away from imap server by @josaphatim in #750
- No more losing search term when changing page by @mmarcwabo in #751
- Add Chinese by @wangxiaoerYah in #749
- Removed closing php tags by @josaphatim in #754
- Fixed draft id when getting uploaded files by @josaphatim in #753
- Fixed phpunit failing tests by @josaphatim in #755
- Fixed invalid argument passed to foreach by @josaphatim in #759
- Removed POP3 support by @josaphatim in #614
- fix for some attachments whose keys are exchanged by @josaphatim in #661
- Fixed cypht commit date due to wrong repos url by @josaphatim in #767
- Added all junk by @josaphatim in #704
- Added ssl/tls support for sieve by @josaphatim in #701
- Fixed broken tests by @josaphatim in #771
- Dirty fix for 500 on outgoing mail by @capocasa in #651
- Fixed allow images button not working in inline message by @josaphatim in #774
- [REM] zh Hans: remove POP 3 from zh-Hans.php by @Baraka24 in #775
- Added support for Migadu, postale.io and mailbox.org by @Yannick243 in #758
- workflows: add test ci by @wangxiaoerYah in #777
- Added try/catch on sieve manager getScript by @josaphatim in #787
- fix imap server deletion sanitizing server IDs by @kroky in #789
- fix selenium tests to run in different env by @kroky in #791
- Error message 'receipts' changed to 'recipients' when recipients variable is empty by @Shadow243 in #793
- [Feat] Better workflow for adding contacts from emails by @henochit in #666
- Added sieve to postale.io in nux module by @josaphatim in #799
- Fixed adding one server multiple times [Only nux module] by @josaphatim in #800
- Fixed already registered module by @josaphatim in #801
- Added migadu to nux module by @josaphatim in #802
- Fix: Menu icon for list controls on mobile by @Yannick243 in #768
- Fixed broken message list sort options design by @josaphatim in #807
- Migrate from erusev/parsedown to league/commonmark by @kambereBr in #812
- Fix: Menu icon for list controls on mobile (Reflecting changes in tests) by @Yannick243 in #808
- Fix broken menu icons in dark mode themes by @kambereBr in #811
- Fix unit tests failure related to menu icons by @kambereBr in #818
- Fix start_page setting not being saved by @Yannick243 in #831
- Resolve php82 & php83 exception: Creation of dynamic property is deprecated by @Shadow243 in #830
- Added imap account name as part of error message by @josaphatim in #833
- Switching the PDO extension suggestion to lowercase within composer.json by @Yannick243 in #838
- Switch cypht config hm3.* to dotenv by @Shadow243 in #823
- Fixed attachments not forwarded with emails by @josaphatim in #841
- Fixed Plain text showing as attachment by @josaphatim in #815
- Display the 'Reply-To' address if it is different from the sender's address by @Yannick243 in #781
- Fix composer minimum version for league/commonmark by @Yannick243 in #844
- Setting minimum requirement of php version to 7.4 by @Yannick243 in #782
- Added a one-way convert to code option for existing options in the GUI by @josaphatim in #843
- Reset sieve script textarea when adding script by @josaphatim in #842
- Added missing special folders types by @josaphatim in #840
- Added a warn when user closes tab or browser with unsaved changes to … by @josaphatim in #669
- Fix: DB auth has problems with the new dotenv config (fix included) #847 by @Shadow243 in #852
- Fix: HTML to text process is broken by @Shadow243 in #851
- .env.example added to cypht by @Shadow243 in #846
- [FIX] dotenv missing variable & enable/disable modules from .env by @Shadow243 in #858
- Tiki integration: refactoring environment & autoload import in framework.php to support tiki usage by @Shadow243 in #853
- Fixed travis and github tests by @josaphatim in #857
- Fixed spelling in .env and added missing parameters by @josaphatim in #856
- Remove forgotten Hm_Environment class usage from framework.php by @Shadow243 in #863
- [NEW] Add drag-and-drop feature to move messages between folders by @jacob-js in #834
- Login page rework by @ElvisAns in #623
- [PHP 8.4] Fix: Curl
CURLOPT_BINARYTRANSFER
deprecated by @Ayesh in #870 - Restored correct default modules by @josaphatim in #876
- [FIX] disable drag and drop of messages on mobile devices by @jacob-js in #874
- [NEW] add a modal dialog to warn the user about sending an email without a body by @jacob-js in #868
- Adding target blank to external links by @Yannick243 in #859
- Not showing page links when cypht shows 'So alone', ie when message l… by @mmarcwabo in #825
- Don't offer to block sender if sender is in our address book added by @Shadow243 in #810
- Fix ldap_contacts error running under php8.2 & remove unused and correct ldap .env variable by @Shadow243 in #869
- [ENH] allow contacts with the angle bracket format to become bubbles by @jacob-js in #867
- Added MDN/SDN to compose form by @josaphatim in #703
- Make sure the user has configured Google Authenticator before enabling 2FA authentication by @Yannick243 in #819
- Fixed imap list class not found by @josaphatim in #880
- Fix Warn about potential missing attachment when sending an email by @Shadow243 in #839
- Add SortableJs to $js_lib in config_gen to combine_includes by @Shadow243 in #881
- Move to Bootstrap 5 by @alvinBM in #828
- Format html message (adding target blank to external links) by @Yannick243 in #883
- Fixed move and copy buttons not working by @josaphatim in #884
- Fix SMTP to/cc/bcc fields loosing their content when they loose focus by @josaphatim in #886
- Replaced custom dropdowns by bootstrap dropdowns by @josaphatim in #888
- Added bootstrap to carddav and ldap contacts modules by @josaphatim in #891
- Ported sieve module to bootstrap by @josaphatim in #887
- Resolve the issue with the missing Dotenv class by @Shadow243 in #894
- Added bootstrap files to optimized css/js files by @josaphatim in #895
- Fixed printing js data to browser by @josaphatim in #898
- Added toggle icon functionality for menu options, providing visual indication of expanded or collapsed content state. by @alvinBM in #892
- Fixed lang defined as constant instead of string by @josaphatim in #899
- Allowing user to auto advance to next mail or return back to inbox when performing action by @Yannick243 in #896
- Add repository layer to handlers for better and centralized entity and session management by @henrique-borba in #625
- Fixed creating, deleting account and updating password by @josaphatim in #900
- Added bootstrap to inline message, pgp modules by @josaphatim in #901
- [FIX] Fix the contact autocompletion issue when composing a new message by @alvinBM in #885
- Replaced image icons by bootstrap icons by @josaphatim in #890
- Changed custom modals to bootstrap modals by @josaphatim in #889
- Fixed phpunit tests after migrating to bootstrap by @josaphatim in #906
- Fixed regex for list path by @josaphatim in #907
- [FIX] allow drag and drop of recipients with accents in the name by @jacob-js in #864
- Fixed smtp compose form not working by @josaphatim in #902
- Fixed bootstrap dropdowns by @josaphatim in #908
- Issue with module name during development on Windows by @ElvisAns in #872
- Fixed saving smtp servers by @josaphatim in #910
- Fixed calling ajax reload folders and unsnooze message functions when not looged in by @josaphatim in #911
- Fix servers count on server deletion by @josaphatim in #912
- [REF] use VENDOR_PATH constant for referencing files within the vendor folder for the config_gen.php script by @jacob-js in #913
- Fixed JS translation not working by @josaphatim in #916
- Add CSV import/export functionality to the contacts module by @kambereBr in #904
- Option to always allow external images by @jacob-js in #873
- Added subscription to folders by @josaphatim in #622
- Enhanced look of oauth2 in nux module by @josaphatim in #920
- [NEW] add a way to show and download the source of an email by @jacob-js in #918
- [ENH]Add a remark field to remember why you added a profile by @IrAlfred in #903
- Fix Spaces in passwords are not handled correctly when adding servers by @Shadow243 in #822
- Adding Collected Recipients and Trusted Senders by @Shadow243 in #816
- improve JMAP compatibilities with stalwart by @Shadow243 in #909
- Fixed No way to set junk/spam folder by @josaphatim in #923
- Fixed TypeError in ajax_imap_folder_display by @josaphatim in #922
- Removed reference to Hm_Image causing issue by @josaphatim in #924
- Fix adding one feed url multiple times by @josaphatim in #915
- [FIX]Profiles: setting the default filter for the profile_id parameter by @Baraka24 in #925
- Fixed submit issue on a non existing element by @josaphatim in #914
- Added translation for messages in JS files by @josaphatim in #917
- Reorganize system alert messages based on bootstrap alerts by @alvinBM in #905
- Added license to are you sure files by @josaphatim in #929
- Fixed failing tests by @josaphatim in #926
- Notifications not showing from ajax requests by @josaphatim in #927
- Refactor/stmp imap server configuration by @henochit in #855
- Output email menu content: for just one email account All and Everything removed by @Shadow243 in #809
- Fixed failing tests by @josaphatim in #933
- Integration of bootswatch themes for bootstrap by @alvinBM in #921
- Fixed failing tests and added translations by @josaphatim in #934
- Enhancement for broken styles by @josaphatim in #935
- Fix server configuration action buttons (test, delete,forget,hide) by @Yannick243 in #936
- Fixed production paths for themes files by @josaphatim in #938
- [FIX] JMAP Server: menu link not clickable by @Shadow243 in #939
- Enhanced reset setting icon placement by @josaphatim in #942
- [UPD]README.md: update installation instructions links (for version 1 and 2) by @IrAlfred in #946
- Ref: Check the state after connection by @henochit in #932
- Fixed redirection to server page when cypht is used as plugin in tiki by @josaphatim in #941
- Ref: Replace inline msg controls with dropdown by @henochit in #854
- Fixed phpunit tests by @josaphatim in #953
- Enhanced mobile appearance of title bar and alerts by @josaphatim in #952
- [UPD] language/zh-Hans.php: Better translate by @PJ-568 in #955
- Added junk and trash to translation files by @josaphatim in #957
- [UPD] language/zh-Hans.php by @PJ-568 in #958
- [FIX] remove preg_match from Hm_Handler_message_list_type by @Shadow243 in #960
- Check enable sieve and fill sieve host for providers which have sieve support by @josaphatim in #951
- [UPD] language/zh-Hans.php by @PJ-568 in #961
- [FIX] Stalwart: fix jmap 0.7.0 msg_header keys(message-id,message_id) by @Shadow243 in #944
- Remplace TM_ prefix with CYPHT_ by @Shadow243 in #967
- [UPD]composer.json: composer create-project installing older version by @christer77 in #943
- Workflows: add test-selenium by @wangxiaoerYah in #954
- Bump idna from 3.4 to 3.7 in /tests/selenium by @dependabot in #969
- Bump urllib3 from 2.0.6 to 2.0.7 in /tests/selenium by @dependabot in #968
- use WEB_ROOT consistently in output_modules.php by @TheDigitalOrchard in #964
- Fixed hidden folder list in folders page by @josaphatim in #970
- whitespace cleanup by @TheDigitalOrchard in #965
- [UX]Profiles: adding table-responsive class to profiles table so it l… by @Baraka24 in #972
- [FIX] Folders: fixing unable to set draft folder by @Baraka24 in #973
- Change the comparison value to show Everything from 2 to 1 by @Shadow243 in #984
- Lib framework code optimizations by @TheDigitalOrchard in #948
- [UPD]composer.josn&composer.lock, update package version of henrique-… by @christer77 in #986
- Added CREATE TABLE statements into config/database.php by @PaulTGG in #983
New Contributors
- @rodriguezny made their first contribution in #752
- @wangxiaoerYah made their first contribution in #749
- @capocasa made their first contribution in #651
- @Baraka24 made their first contribution in #775
- @Shadow243 made their first contribution in #793
- @kambereBr made their first contribution in #812
- @jacob-js made their first contribution in #834
- @Ayesh made their first contribution in #870
- @alvinBM made their first contribution in #828
- @IrAlfred made their first contribution in #903
- @PJ-568 made their first contribution in #955
- @dependabot made their first contribution in #969
- @TheDigitalOrchard made their first contribution in #964
- @PaulTGG made their first contribution in #983
Full Changelog: v1.4.1...v2.0.0