From d448211653864c0b137601a690fa2405848a2961 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Thu, 7 Nov 2024 16:35:37 +1300 Subject: [PATCH 1/6] Fix: Fix browser notification request on Edge (#89) --- server/ui-src/components/AboutMailpit.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/server/ui-src/components/AboutMailpit.vue b/server/ui-src/components/AboutMailpit.vue index afc7f4eb5a..08077094cc 100644 --- a/server/ui-src/components/AboutMailpit.vue +++ b/server/ui-src/components/AboutMailpit.vue @@ -41,10 +41,12 @@ export default { // we need to ask the user for permission else if (Notification.permission !== "denied") { - Notification.requestPermission().then(function (permission) { + Notification.requestPermission().then((permission) => { if (permission === "granted") { mailbox.notificationsEnabled = true } + + this.modal('EnableNotificationsModal').hide() }) } }, @@ -239,8 +241,9 @@ export default { From 2c94c32722e201eb7591b9f55a7b2c25ffed8b69 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 8 Nov 2024 21:59:20 +1300 Subject: [PATCH 2/6] Feature: Add additional ignored flags to sendmail (#384) commit 5dc0ac63d414d88c516785cba26c5cec24fc817a Author: Ralph Slooten Date: Fri Nov 8 21:58:46 2024 +1300 Add new ignored flags to sendmail help commit 810e6ffc2348328bfd8a0a148c95ccfb7a13cbcb Author: Lucas dos Santos Abreu Date: Fri Nov 8 05:37:27 2024 -0300 Feature: Add additional ignored flags to sendmail (#384) --- cmd/sendmail.go | 15 +++++++++------ sendmail/cmd/cmd.go | 6 ++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/cmd/sendmail.go b/cmd/sendmail.go index 6d9305ae6a..81f8176599 100644 --- a/cmd/sendmail.go +++ b/cmd/sendmail.go @@ -12,13 +12,13 @@ var sendmailCmd = &cobra.Command{ Use: "sendmail [flags] [recipients]", Short: "A sendmail command replacement for Mailpit", Run: func(_ *cobra.Command, _ []string) { - sendmail.Run() }, } func init() { rootCmd.AddCommand(sendmailCmd) + var ignored string // print out manual help screen sendmailCmd.SetHelpTemplate(sendmail.HelpTemplate([]string{os.Args[0], "sendmail"})) @@ -27,10 +27,13 @@ func init() { // multi-letter single-dash variables (-bs) sendmailCmd.Flags().StringVarP(&sendmail.FromAddr, "from", "f", sendmail.FromAddr, "SMTP sender") sendmailCmd.Flags().StringVarP(&sendmail.SMTPAddr, "smtp-addr", "S", sendmail.SMTPAddr, "SMTP server address") - sendmailCmd.Flags().BoolVarP(&sendmail.UseB, "long-b", "b", false, "Handle SMTP commands on standard input (use as -bs)") - sendmailCmd.Flags().BoolVarP(&sendmail.UseS, "long-s", "s", false, "Handle SMTP commands on standard input (use as -bs)") + sendmailCmd.Flags().BoolVarP(&sendmail.UseB, "ignored-b", "b", false, "Handle SMTP commands on standard input (use as -bs)") + sendmailCmd.Flags().BoolVarP(&sendmail.UseS, "ignored-s", "s", false, "Handle SMTP commands on standard input (use as -bs)") sendmailCmd.Flags().BoolP("verbose", "v", false, "Verbose mode (sends debug output to stderr)") - sendmailCmd.Flags().BoolP("long-i", "i", false, "Ignored") - sendmailCmd.Flags().BoolP("long-o", "o", false, "Ignored") - sendmailCmd.Flags().BoolP("long-t", "t", false, "Ignored") + sendmailCmd.Flags().BoolP("ignored-i", "i", false, "Ignored") + sendmailCmd.Flags().BoolP("ignored-o", "o", false, "Ignored") + sendmailCmd.Flags().BoolP("ignored-t", "t", false, "Ignored") + sendmailCmd.Flags().StringVarP(&ignored, "ignored-name", "F", "", "Ignored") + sendmailCmd.Flags().StringVarP(&ignored, "ignored-bits", "B", "", "Ignored") + sendmailCmd.Flags().StringVarP(&ignored, "ignored-errors", "e", "", "Ignored") } diff --git a/sendmail/cmd/cmd.go b/sendmail/cmd/cmd.go index ccc998520a..ee40f6e3d5 100644 --- a/sendmail/cmd/cmd.go +++ b/sendmail/cmd/cmd.go @@ -82,6 +82,9 @@ func Run() { flag.BoolP("long-i", "i", false, "Ignored") flag.BoolP("long-o", "o", false, "Ignored") flag.BoolP("long-t", "t", false, "Ignored") + flag.StringP("from-name", "F", "", "Ignored") + flag.StringP("bits", "B", "", "Ignored") + flag.StringP("errors", "e", "", "Ignored") // set the default help flag.Usage = func() { @@ -198,6 +201,9 @@ Flags: -i Ignored -o Ignored -v Ignored + -F string Ignored + -B string Ignored + -e string Ignored `, config.Version, strings.Join(args, " "), FromAddr) } From 3f2457cc6ac8ae701ce859119fa97e88bd4e48ab Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 8 Nov 2024 22:07:11 +1300 Subject: [PATCH 3/6] Chore: Update node dependencies --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e26cc40b9..14aba9aa99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1894,9 +1894,9 @@ "optional": true }, "node_modules/modern-screenshot": { - "version": "4.4.39", - "resolved": "https://registry.npmjs.org/modern-screenshot/-/modern-screenshot-4.4.39.tgz", - "integrity": "sha512-p+I4yLZUDnoJMa5zoi+71nLQmoLQ6WRU4W8vZu1BZk2PlIYOz5mGnj9/7t2lGWKYeOr4zo6pajhY0/9TS5Zcdw==" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/modern-screenshot/-/modern-screenshot-4.5.1.tgz", + "integrity": "sha512-fEt7Oa4CfSOMnqfjoAbQ6Ubmqw2XbHn/kPBccbv84Yh1S4h0CwWLYzylSm1FuxYu/OkQ8oOqB7lfmdKXlaYmiw==" }, "node_modules/nan": { "version": "2.20.0", From 13caeb4f5b0b4f50ed3a0ce3384e3a31b945d786 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 8 Nov 2024 22:11:31 +1300 Subject: [PATCH 4/6] Chore: Update Go dependencies --- go.mod | 12 ++++++------ go.sum | 27 ++++++++++++++------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index 88565dd199..3677581fdd 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/PuerkitoBio/goquery v1.10.0 github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de github.com/axllent/semver v0.0.1 - github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 + github.com/gomarkdown/markdown v0.0.0-20241105142532-d03b89096d81 github.com/gorilla/mux v1.8.1 github.com/gorilla/websocket v1.5.3 github.com/jhillyerd/enmime v1.3.0 @@ -24,8 +24,8 @@ require ( github.com/tg123/go-htpasswd v1.2.3 github.com/vanng822/go-premailer v1.22.0 golang.org/x/net v0.30.0 - golang.org/x/text v0.19.0 - golang.org/x/time v0.7.0 + golang.org/x/text v0.20.0 + golang.org/x/time v0.8.0 gopkg.in/yaml.v3 v3.0.1 modernc.org/sqlite v1.33.1 ) @@ -53,10 +53,10 @@ require ( github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/vanng822/css v1.0.1 // indirect - golang.org/x/crypto v0.28.0 // indirect + golang.org/x/crypto v0.29.0 // indirect golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect - golang.org/x/image v0.21.0 // indirect - golang.org/x/sys v0.26.0 // indirect + golang.org/x/image v0.22.0 // indirect + golang.org/x/sys v0.27.0 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect modernc.org/gc/v3 v3.0.0-20241004144649-1aea3fae8852 // indirect modernc.org/libc v1.61.0 // indirect diff --git a/go.sum b/go.sum index da752b99cb..44bce06374 100644 --- a/go.sum +++ b/go.sum @@ -23,8 +23,8 @@ github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f h1:3BSP1Tbs2djlpprl7wCLuiqMaUh5SJkkzI2gDs+FgLs= github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14= -github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8 h1:4txT5G2kqVAKMjzidIabL/8KqjIK71yj30YOeuxLn10= -github.com/gomarkdown/markdown v0.0.0-20240930133441-72d49d9543d8/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= +github.com/gomarkdown/markdown v0.0.0-20241105142532-d03b89096d81 h1:5lyLWsV+qCkoYqsKUDuycESh9DEIPVKN6iCFeL7ag50= +github.com/gomarkdown/markdown v0.0.0-20241105142532-d03b89096d81/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo= github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= @@ -129,12 +129,12 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= -golang.org/x/image v0.21.0 h1:c5qV36ajHpdj4Qi0GnE0jUc/yuo33OLFaa0d+crTD5s= -golang.org/x/image v0.21.0/go.mod h1:vUbsLavqK/W303ZroQQVKQ+Af3Yl6Uz1Ppu5J/cLz78= +golang.org/x/image v0.22.0 h1:UtK5yLUzilVrkjMAZAZ34DXGpASN8i8pj8g+O+yd10g= +golang.org/x/image v0.22.0/go.mod h1:9hPFhljd4zZ1GNSIZJ49sqbp45GKK9t6w+iXvGqZUz4= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -161,8 +161,9 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -180,8 +181,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -202,10 +203,10 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= -golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= +golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= From 61cff513cb8a966ddfd06c4034e5ea6caac4c597 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 8 Nov 2024 23:02:27 +1300 Subject: [PATCH 5/6] Chore: Remove legacy Tags column from message DB table --- internal/storage/schemas.go | 72 ----------------------------- internal/storage/schemas/1.21.2.sql | 6 +++ 2 files changed, 6 insertions(+), 72 deletions(-) create mode 100644 internal/storage/schemas/1.21.2.sql diff --git a/internal/storage/schemas.go b/internal/storage/schemas.go index aaf26080fc..a1e5c2c4b4 100644 --- a/internal/storage/schemas.go +++ b/internal/storage/schemas.go @@ -2,20 +2,15 @@ package storage import ( "bytes" - "context" - "database/sql" "embed" - "encoding/json" "log" "path" "sort" "strings" "text/template" - "time" "github.com/axllent/mailpit/internal/logger" "github.com/axllent/semver" - "github.com/leporo/sqlf" ) //go:embed schemas/* @@ -63,13 +58,6 @@ func dbApplySchemas() error { } } } - - // delete legacy migration database after 01/10/2024 - if time.Now().After(time.Date(2024, 10, 1, 0, 0, 0, 0, time.Local)) { - if _, err := db.Exec(`DROP TABLE IF EXISTS ` + tenant("darwin_migrations")); err != nil { - return err - } - } } schemaFiles, err := schemaScripts.ReadDir("schemas") @@ -161,64 +149,4 @@ func dataMigrations() { if SettingGet("DeletedSize") == "" { _ = SettingPut("DeletedSize", "0") } - - migrateTagsToManyMany() -} - -// Migrate tags to ManyMany structure -// Migration task implemented 12/2023 -// TODO: Can be removed end 06/2024 and Tags column & index dropped from mailbox -func migrateTagsToManyMany() { - toConvert := make(map[string][]string) - q := sqlf. - Select("ID, Tags"). - From(tenant("mailbox")). - Where("Tags != ?", "[]"). - Where("Tags IS NOT NULL") - - if err := q.QueryAndClose(context.TODO(), db, func(row *sql.Rows) { - var id string - var jsonTags string - if err := row.Scan(&id, &jsonTags); err != nil { - logger.Log().Errorf("[migration] %s", err.Error()) - return - } - - tags := []string{} - - if err := json.Unmarshal([]byte(jsonTags), &tags); err != nil { - logger.Log().Errorf("[json] %s", err.Error()) - return - } - - toConvert[id] = tags - }); err != nil { - logger.Log().Errorf("[migration] %s", err.Error()) - } - - if len(toConvert) > 0 { - logger.Log().Infof("[migration] converting %d message tags", len(toConvert)) - for id, tags := range toConvert { - if _, err := SetMessageTags(id, tags); err != nil { - logger.Log().Errorf("[migration] %s", err.Error()) - } else { - if _, err := sqlf.Update(tenant("mailbox")). - Set("Tags", nil). - Where("ID = ?", id). - ExecAndClose(context.TODO(), db); err != nil { - logger.Log().Errorf("[migration] %s", err.Error()) - } - } - } - - logger.Log().Info("[migration] tags conversion complete") - } - - // set all legacy `[]` tags to NULL - if _, err := sqlf.Update(tenant("mailbox")). - Set("Tags", nil). - Where("Tags = ?", "[]"). - ExecAndClose(context.TODO(), db); err != nil { - logger.Log().Errorf("[migration] %s", err.Error()) - } } diff --git a/internal/storage/schemas/1.21.2.sql b/internal/storage/schemas/1.21.2.sql new file mode 100644 index 0000000000..580a24b96f --- /dev/null +++ b/internal/storage/schemas/1.21.2.sql @@ -0,0 +1,6 @@ +-- DROP LEGACY MIGRATION TABLE +DROP TABLE IF EXISTS {{ tenant "darwin_migrations" }}; + +-- DROP LEGACY TAGS COLUMN +DROP INDEX IF EXISTS {{ tenant "idx_tags" }}; +ALTER TABLE {{ tenant "mailbox" }} DROP COLUMN Tags; From 8f79fcd0d583793478e56c49ebb8729dfc80d2da Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 8 Nov 2024 23:19:34 +1300 Subject: [PATCH 6/6] Release v1.21.2 --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccff7d0141..9f4737cb60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ Notable changes to Mailpit will be documented in this file. +## [v1.21.2] + +### Feature +- Add additional ignored flags to sendmail ([#384](https://github.com/axllent/mailpit/issues/384)) + +### Chore +- Remove legacy Tags column from message DB table +- Update Go dependencies +- Update node dependencies + +### Fix +- Fix browser notification request on Edge ([#89](https://github.com/axllent/mailpit/issues/89)) + + ## [v1.21.1] ### Feature