🚀 LePatron Email Builder v3.1.0
LePatron v3.1.0 is here!
This release brings a major visual upgrade to your email creation workflow — smarter image management, sharper visuals, and new integration capabilities.
🖼️ Advanced Image Editor #842
You can now edit your images directly inside LePatron!
Crop, resize, rotate, adjust brightness or contrast — all without leaving the builder.
This new editor makes it much easier to fine-tune your visuals before exporting your templates or emails.
Highlights
- Inline image edition (no external tool required)
- Non-destructive editing (original image preserved)
- Smart cropping for responsive designs
💎 Retina Image Support #844
Your visuals now look crisp on all devices — including Retina and high-DPI screens.
LePatron automatically handles @2x images and ensures they’re served with proper sizing and attributes for optimal rendering in emails.
What’s new
- Automatic Retina compatibility for uploaded images
- Smarter scaling and
width/heightattributes - Better balance between image quality and file weight
🔗 Adobe Campaign Connector #878
A brand-new connector for Adobe Campaign users!
You can now export your templates and emails directly to Adobe Campaign, with full metadata support and improved workspace management.
Features
- Direct export from LePatron to Adobe Campaign
- Compatible with multi-workspace setups
- Syncs template fields and image assets seamlessly
🧰 Other improvements
- Minor UI fixes and performance optimizations
- Better error handling during export
- Small enhancements in the text editing experience
📦 Update instructions
As usual:
git pull origin main
npm install
npm run build💬 Feedback and contributions are always welcome!
If you encounter a bug or want to propose a feature, open an issue on [GitHub](https://github.com/Badsender-com/LePatron.email/issues).
Changelog
- adding word break for too long link by @medamineziraoui in #621
- Staging by @medamineziraoui in #622
- Fix 620 dsc bug by @medamineziraoui in #623
- Fix image template generation by @medamineziraoui in #624
- Develop by @medamineziraoui in #625
- Fix template generation by @medamineziraoui in #626
- Develop by @medamineziraoui in #627
- Add Fix for keeping connection event generation template by @medamineziraoui in #628
- Develop by @medamineziraoui in #629
- Add second Fix for keeping connection event generation template by @medamineziraoui in #630
- Develop by @medamineziraoui in #631
- Change header params orders by @medamineziraoui in #632
- Develop by @medamineziraoui in #633
- Revert commit after DSC fix by @medamineziraoui in #634
- Revert commit after DSC fix by @DecampsRenan in #635
- Fix async call for DSC and SendinBlue by @medamineziraoui in #638
- Develop by @medamineziraoui in #639
- Staging by @DecampsRenan in #640
- fix: update node version in .nvmrc file by @DecampsRenan in #641
- Update contrast on the modal when exporting with esp by @FlorianGille in #642
- Update color for labels of disabled input by @FlorianGille in #650
- Feat/keep images url in template build by @FlorianGille in #643
- Fix 649: remove duplicate images by @FlorianGille in #651
- Fix data raw feature by @FlorianGille in #653
- Reduce image name length by @FlorianGille in #654
- Release to staging by @FlorianGille in #656
- Fix ftp issues by @FlorianGille in #658
- Fix issue when sorting mail data by @FlorianGille in #657
- Keep images with filename with same name but not same location by @FlorianGille in #659
- Fix connector DSC by @FlorianGille in #655
- New release by @FlorianGille in #660
- fix: rollback image hotlinked by @FlorianGille in #663
- Fix length for hash when reducing image names by @FlorianGille in #665
- Fix hotlinked image by @FlorianGille in #666
- chore: fix yarn version in package.json by @DecampsRenan in #667
- Hotlinked images by @FlorianGille in #669
- Release staging by @FlorianGille in #670
- Control quality links by @FlorianGille in #661
- Tracking urls by @FlorianGille in #668
- Control quality background images by @FlorianGille in #671
- Staging by @FlorianGille in #674
- Fix inputs disabled by @FlorianGille in #675
- fix: add checks if there is not bg options and bg image by @FlorianGille in #676
- Fix lot 2 by @FlorianGille in #677
- Release staging by @FlorianGille in #678
- Release staging by @FlorianGille in #679
- Fix tracking/background image by @FlorianGille in #680
- Release staging by @FlorianGille in #681
- Release staging by @FlorianGille in #682
- Release staging by @FlorianGille in #683
- Release staging by @FlorianGille in #684
- Release staging by @FlorianGille in #685
- Support <#list></#list> tag by @FlorianGille in #690
- Display warnings for control quality when exporting with connectors by @FlorianGille in #689
- Fix: picto url names by @FlorianGille in #692
- Remove format on links by @FlorianGille in #691
- Release staging by @FlorianGille in #693
- Release staging (revert commit #601f390) by @FlorianGille in #695
- Improve image names management by @FlorianGille in #697
- Fix + character in texts with np6 connector by @FlorianGille in #699
- Release staging by @FlorianGille in #700
- Release staging by @FlorianGille in #701
- Backend: add variables collection and needed endpoints for the personalization variables by @omar-bear in #706
- Gestion des variable personnalisées front end by @omar-bear in #709
- personalized variables:Editor by @omar-bear in #711
- Release staging by @FlorianGille in #713
- Save Customized Block in LePatron by @omar-bear in #712
- Personalized variable improving UX by @omar-bear in #717
- Feat:storage and management of personalized blocks by @omar-bear in #714
- Feat connect create personnalized block by @omar-bear in #719
- Add Tabs for "Blocs par défaut" and "Blocs personnalisés" in the Left Sidebar by @omar-bear in #720
- fix remove align option by @omar-bear in #721
- Display Custom Blocks Listing in the Second Tab of the Left Sidebar by @omar-bear in #722
- Feature: Edit and Delete Custom Blocks in the Left Sidebar of the Editor by @omar-bear in #724
- Fix modal obsolete template by @FlorianGille in #725
- Feat add filtering custom blocks by @omar-bear in #726
- WIP: Feature: Filter Personalized Blocks by Template Origin Using Mailing ID by @omar-bear in #727
- Feature: Filter Personalized Blocks by Template Origin Using Mailing ID by @omar-bear in #728
- fix the search input api call by @omar-bear in #729
- fix aggregate query for PersonalizedBlocks by @omar-bear in #730
- delete block fix by @omar-bear in #731
- Release staging by @FlorianGille in #718
- Implement custom style handling for unlinked blocks by @omar-bear in #732
- Implement custom style handling for unlinked blocks (#732) by @FlorianGille in #733
- remove linked style by @omar-bear in #734
- fix delete and edit block and fix undefined problem by @omar-bear in #735
- Release staging by @FlorianGille in #736
- Fix style block template by @FlorianGille in #737
- Release staging by @FlorianGille in #738
- Release staging by @FlorianGille in #739
- Fix last feedbacks by @FlorianGille in #740
- Release staging by @FlorianGille in #741
- Style css image tabs by @FlorianGille in #742
- Release staging by @FlorianGille in #743
- Fix: improve blockInformation deletion for unwrapped blocks by @FlorianGille in #745
- Release staging by @FlorianGille in #746
- Fix knockout properties with
_character by @FlorianGille in #748 - Release staging by @FlorianGille in #749
- Fix don't decode href values (remove decoded formats) by @FlorianGille in #751
- Release staging (href encode URL) by @FlorianGille in #752
- Fix: don't encode href and src values by @FlorianGille in #754
- Release staging by @FlorianGille in #755
- Release staging by @FlorianGille in #757
- fix send mail and remove tracking by @omar-bear in #760
- Preserving URL Formatting During CDN Exports by @omar-bear in #759
- Release staging by @FlorianGille in #761
- add brevo smtp config by @omar-bear in #762
- remove code tracking for sendgrid by @omar-bear in #763
- Release staging by @FlorianGille in #764
- fix heroku doc and sending mail by @omar-bear in #768
- Release staging by @FlorianGille in #769
- Update API DSC by @omar-bear in #774
- Release staging by @FlorianGille in #775
- delete a mistake syntax for dsc by @omar-bear in #776
- fix dsc create / update by @omar-bear in #777
- Release staging by @FlorianGille in #780
- Decode href when html is processing by @FlorianGille in #779
- Release staging by @FlorianGille in #781
- fix charging mailings edit user page by @omar-bear in #782
- confirm delete folder always and remove time waiting by @omar-bear in #778
- Release staging by @FlorianGille in #784
- Update clever environment with last developments by @FlorianGille in #785
- add warning if size is higher than 102kb and remove minification of html by @omar-bear in #783
- Release clever dev by @FlorianGille in #787
- Release clever staging by @FlorianGille in #788
- Add paginations for mailings and optimise requests by @omar-bear in #786
- fix pagination for user details by @omar-bear in #790
- fix api templates by @omar-bear in #792
- Update develop-clever with develop by @FlorianGille in #800
- Feat: DSC API Request with User-Agent by @ntatoud in #795
- Fix: Improve DSC error handling by @ntatoud in #801
- Update develop-clever with develop by @FlorianGille in #806
- Release staging clever by @FlorianGille in #807
- Disable tags call and filter in mailings-filters.vue component by @omar-bear in #808
- chore: Update meta tags to include noindex, nofollow for SEO purposes by @omar-bear in #809
- Revert "Disable tags call and filter in mailings-filters.vue component" by @FlorianGille in #812
- Update develop clever with develop by @FlorianGille in #815
- chore: Add id field to finalTemplates in findForApi function by @omar-bear in #811
- merge staging clever by @omar-bear in #817
- Optimization of Tags for Emails by @omar-bear in #816
- add tags collection by @omar-bear in #819
- Update develop clever with develop by @FlorianGille in #823
- Update staging clever with develop clever by @FlorianGille in #825
- Add maintenance mode by @FlorianGille in #824
- Update staging clever with develop clever (for maintenance page) by @FlorianGille in #826
- Add try/catch for the downloadZip to add security on the FTP export part by @FlorianGille in #827
- Release production (Add try/catch for the downloadZip to add security on the FTP export part) by @FlorianGille in #828
- Test express with cluster by @hugperez in #829
- Release staging (add cluster) by @FlorianGille in #830
- Release production (add cluster) by @FlorianGille in #831
- Migration S3 by @FlorianGille in #832
- Fix migration s3 by @FlorianGille in #833
- Release staging by @FlorianGille in #834
- Release production (double upload) by @FlorianGille in #835
- Rollback migration S3 by @FlorianGille in #836
- Release staging (rollback migration) by @FlorianGille in #837
- Release production (rollback migration s3) by @FlorianGille in #838
- Release staging (remove encode + upload chunk size to 16Mo) by @FlorianGille in #839
- Release staging by @FlorianGille in #841
- Attempt to fix images upload via sftp by @MaximeBro in #845
- Release staging (fix upload sftp) by @FlorianGille in #846
- Release staging (special characters) by @FlorianGille in #847
- Release staging (revert useless change in github action) by @FlorianGille in #848
- Release production by @FlorianGille in #849
- Release staging (revert encode/decode html) by @FlorianGille in #850
- Release production by @FlorianGille in #851
- Release staging (fix CI) by @FlorianGille in #855
- Draft: Feat/advanced image editor by @MaximeBro in #854
- Feat/rich image editor by @MaximeBro in #853
- Release staging by @FlorianGille in #856
- fix: check image size and avoid image resizing if the size is below 6… by @FlorianGille in #857
- hotfix : change put method for sftp upload by @JeanneGrenet in #858
- fix : update put method for sftp uploads by @JeanneGrenet in #859
- Feat/display editor by @heloise-gllm in #861
- Fix feedbacks on the crop section of the editor by @JeanneGrenet in #860
- Release Staging by @heloise-gllm in #863
- chore: added badsender folder in /tmp by @heloise-gllm in #865
- fix: delete tmp images to free space on device by @heloise-gllm in #864
- fix tmp vips by @omar-bear in #866
- fix : upload bg image and upload image on the template blocks by @JeanneGrenet in #867
- Develop clever by @heloise-gllm in #868
- Release prod by @heloise-gllm in #869
- feat: image width resize x2 for small image for mobile version by @heloise-gllm in #870
- Develop clever by @heloise-gllm in #871
- fix: open editor from gaallery side and bg box+ bg box image preview by @heloise-gllm in #873
- fix : html export with image by @JeanneGrenet in #872
- Feat/zoom in cropper by @heloise-gllm in #874
- Release staging by @heloise-gllm in #875
- fix: upload image from block upload button by @heloise-gllm in #876
- Release staging by @heloise-gllm in #877
- fix : rollback changes for the mobile images resize by @JeanneGrenet in #879
- Merge pull request #879 from Badsender-com/fix/rollback-mobile-image
fix : rollback changes for the mobile images resize by @FlorianGille in #881
- Release production (editor image) by @FlorianGille in #882
- feat : resize the image when the width is larger than 2 times the container by @JeanneGrenet in #883
- Release Staging (resize mobile image) by @JeanneGrenet in #884
- Release prod (resize des images mobile) by @JeanneGrenet in #885
- Chore: rename branch without -clever in github workflows by @FlorianGille in #889
- Feat: soap request and parse XML response/queries by @FlorianGille in #887
- feat: create Adobe connector by @heloise-gllm in #886
- feat: encryption plugin and encrypt secret key by @hugperez in #892
- feat: adobe Campaign folder tree-selector by @heloise-gllm in #891
- feat: adobe delivery select tree by @heloise-gllm in #894
- Feat(adobe) : export button (update delivery) by @FlorianGille in #890
- Feat: export image for adobe esp by @FlorianGille in #893
- feat: update adobe connector by @heloise-gllm in #896
- Fix: UX improvements by @FlorianGille in #897
- Release staging (Adobe connector) by @FlorianGille in #895
- Feat: store errors from Adobe connector by @FlorianGille in #898
- FEAT: refresh adobe token on 401 by @hugperez in #900
- Feat/adobe campaign display error by @heloise-gllm in #899
- feat: display log id when creating/updating adobe connector by @heloise-gllm in #901
- feat: display error message when exporting by @heloise-gllm in #902
- Release staging by @hugperez in #903
- feat: improve export loading ui by @heloise-gllm in #904
- Release staging by @hugperez in #906
- fix: no ftp config necessary whith adobe profile by @heloise-gllm in #907
- fix: added condition on component and select disabled props by @heloise-gllm in #909
- fix: no condition on select by @heloise-gllm in #910
- Fix: no ftp needed for adobe profile by @heloise-gllm in #908
- fix: display adobe connector in mail download options by @heloise-gllm in #911
- Release Staging: fix display adobe profile in email without ftp conf by @heloise-gllm in #912
- feat: handle delivery and template by @heloise-gllm in #905
- fix: use email when getting groups by @heloise-gllm in #917
- Release Staging : handle delivery & template by @heloise-gllm in #913
- fix: ouverture&fermeture de la modale Adobe by @heloise-gllm in #919
- Release Staging : Affichage Modale Adobe by @heloise-gllm in #920
- fix: zero or one delivery case by @heloise-gllm in #921
- Release Staging : handle zero or one delivery by @heloise-gllm in #922
- feat: adobe modal size & delivery template labels by @heloise-gllm in #923
- Release Staging: improve adobe connector modal ui by @heloise-gllm in #924
- fix: adobe modal width to 90% by @heloise-gllm in #925
- Release Staging : adobe modal w90% by @heloise-gllm in #926
- feat: adobe do not rename delivery when exporting by @heloise-gllm in #927
- Release Staging : no delivery renaming for adobe export by @heloise-gllm in #928
- Added _operation="update" for save delivery by @heloise-gllm in #929
- Release Staging : operation update on save delivery by @heloise-gllm in #930
- feat: order deliveries by lastModified, utm tracking, and select othe… by @heloise-gllm in #931
- Release Staging : utm tracking, delivery orderby lastModified, select folder in tree by @heloise-gllm in #932
- feat: replace var env by adobe connector form var by @heloise-gllm in #933
- Release Staging : Replace Adobe Env Var by @heloise-gllm in #934
- fix: some trrad and connection to brevo by @heloise-gllm in #935
- Release Staging : fix trad and brevo connector creation by @heloise-gllm in #936
- fix: addded forgotten adobe urls and secretKey in provider build func… by @heloise-gllm in #937
- Release Staging : missing adobe url and secretkey in esp provider by @heloise-gllm in #938
- fix: ampersand encoding for adobe export by @heloise-gllm in #939
- Release Staging : & encoding for Adobe exports by @heloise-gllm in #940
- feat: add external username field for user and adobe by @heloise-gllm in #941
- Release Staging : add external username by @heloise-gllm in #942
- Release Production : Adobe Connector by @heloise-gllm in #943
- feat: update delivery status, remove isModel attribute by @heloise-gllm in #944
- Release Staging : delivery status and remove isCenter attribut by @heloise-gllm in #945
- Release Production : adobe delivery states and isModel attribute by @heloise-gllm in #946
New Contributors
- @ntatoud made their first contribution in #795
- @hugperez made their first contribution in #829
- @MaximeBro made their first contribution in #845
- @JeanneGrenet made their first contribution in #858
- @heloise-gllm made their first contribution in #861
Full Changelog: v2.0.0...v3.1.0