Neomutt Versions Save

✉️ Teaching an Old Dog New Tricks -- IRC: #neomutt on irc.libera.chat

20240416

1 week ago

:book: Notes

This is a feature release, sort of :-) There are lots of bug fixes too.

The biggest change is to how NeoMutt handles format strings. Thanks János!

Format strings are now parsed when they are set, rather than every time they are used. This means we can check for errors, e.g.

set index_format = "%Q"
Option index_format: Unknown expando: %Q

Next, 8 config strings have been Localized. Localization (L10N) allows translators to provide language-specific defaults, e.g. $attribution_intro

  • English: "On %d, %n wrote:
  • Serbian: "Дана %d, %n написа:"
  • German: "Am %d, schrieb %n:"

These are the defaults: they can still be overridden.

:gem: Sponsors

Special thanks to our sponsors:

Jakub Jindra
(@jindraj)
Scott Kostyshak
(@scottkosty)
Ander Punnar
(@4nd3r)
Igor Serebryany
(@igor47)
Martin Spendiff
(@veebch)
Mark Korondi
(@kmARC)
Mateus Etto
(@yutsuten)
J Sheng
(@lamons)
  • Robert Labudda
  • Patrick Koetter (@patrickbenkoetter)
  • Sebastian Kowalczyk
  • 海老根蓉也
  • Reiko Kaps

Become a sponsor of NeoMutt

:heart: Thanks

Many thanks to our regular contributors:

  • Alejandro Colomar (@alejandro-colomar)
  • Gerrit Rüsing (@kbcb)
  • Emir Sari (@bitigchi)
  • Dennis Schön (@roccoblues)
  • Tóth János (@g0mb4)
  • Marius Gedminas (@mgedmin)
  • Страхиња Радић (@strahinja)
  • Mateus Etto (@yutsuten)
  • Pierre Colin (@Pierre-Colin)
  • Jakub Jindra (@jindraj)

and our sharp-eyed testers:

  • Scott Kostyshak (@scottkosty)
  • Jörg Sommer (@jo-so)
  • William Casarin (@jb55)
  • @dorsiflexion
  • Horacio Sanson (@hsanson)

:gift: Features

  • #4216 Compose: Hide MixMaster chain if chain is empty
  • Expando upgrade
  • version: bold labels

:sparkles: Contrib

  • mutt_oauth2.py: Detect recipient for oauth automatically
  • mutt_oauth2.py: imap_oauth_refresh_command does not need options

:lady_beetle: Bug Fixes

  • #4210 mbox: fix sorting for mbox_resync()
  • #4241 only wrap after first address in header lines
  • status: reset Buffer before reuse
  • history: truncate file before writing over it
  • notmuch: strip leading / from short path
  • Fix smtp client $envelope_from_address possible dangling pointer
  • Fix non-printable keyname printing to use <octal> syntax
  • Filter Arabic Letter Mark due to display corruption
  • Loosen imap_open_mailbox() SELECT response data parsing
  • Change mailto_allow to be exact match only
  • Fix mutt_read_rfc822_line() to use is_email_wsp()
  • Improve pattern compiler whitespace skipping
  • Fix gpgme crash when listing keys in a public key block
  • Add SigInt handler for pattern functions
  • Fix some mailbox prompts to use mailbox history ring
  • Improve GPGME inline processing
  • Reset SIGPIPE signal handler in child process before exec()
  • Filter headers passed via the command line
  • Remove trailing slashes when opening maildir/mh mailboxes
  • Fix mutt_paddstr() to properly filter unprintable chars
  • Minor fixes to match_body_patterns()
  • Fix mutt_ts_capability() fallback list loop
  • Ensure SIGALRM interrupts connect() in batch mode
  • Tighten $query_command parsing to allow empty name field

:wrench: Changed Config

  • #4224 config: add L10N support
  • New: set compose_confirm_detach_first = yes Prevent the accidental deletion of the composed message
  • Changed: set reply_regex = "^((re)(\\[[0-9]+\\])*:[ \t]*)*" Regex to match message reply subjects like 're: '
  • Changed: set pager = "" External command for viewing messages, or empty to use NeoMutt's

:black_flag: Translations

  • 100% :czech_republic: Czech
  • 100% :de: German
  • 100% :lithuania: Lithuanian
  • 100% :serbia: Serbian
  • 100% :slovakia: Slovak
  • 99% :tr: Turkish
  • l10n: document functions
  • config: add L10N support

:books: Docs

  • Clarify the manual section on POP3 support
  • Document the <1234> key syntax for bind
  • Document $sendmail invocation behavior
  • Clarify -H usage in batch mode is not a "pass through" option

:building_construction: Build

  • test: remove unnecessary setting of TZ var
  • build: make conn/getdomain.c dependent on DOMAIN
  • Improve w3m invocation for manual.txt generation
  • Include <term.h> before invoking tigetstr() and tigetflag()
  • Enable CodeQL for python

:gear: Code

  • factor out buf_make()
  • drop dupe signal_init() on startup
  • Convert mutt_create_alias() and helpers to use buffer pool
  • Factor out match_body_patterns() to make resolve_types() simpler
  • Rewrite mutt_apply_replace() to use buffers

20240329

4 weeks ago

:book: Notes

This is a small Bug-Fix release.

Last week's release was faulty. This one is much better.

:gem: Sponsors

Special thanks to our sponsors:

Jakub Jindra
(@jindraj)
Scott Kostyshak
(@scottkosty)
Ander Punnar
(@4nd3r)
Igor Serebryany
(@igor47)
Martin Spendiff
(@veebch)
Mark Korondi
(@kmARC)
Mateus Etto
(@yutsuten)
  • Robert Labudda
  • Patrick Koetter (@patrickbenkoetter)
  • Aboudoulaye Yatera
  • Sebastian Kowalczyk
  • 海老根蓉也
  • Reiko Kaps

Become a sponsor of NeoMutt

:heart: Thanks

Many thanks to our new contributors:

  • Mateus Etto (@yutsuten)
  • Tim Clifford (@tim-clifford)
  • Tomáš Karela Procházka (@prochac)
  • ashamedbit (@ashamedbit)

our regular contributors:

  • Dennis Schön (@roccoblues)
  • Alejandro Colomar (@alejandro-colomar)
  • Pietro Cerutti (@gahr)

:lady-beetle: Bug Fixes

  • #4185 c441f5957 Fix memory leak in trash_append()
  • #4189 Fix off-by-one error in %b with notmuch
  • #4190 Zero-out mailbox counters on delete
  • #4204 colour: honour the normal colour
  • #4205 match folder-hook also against mailbox name (fixes #4201)
  • wrap colour in
  • history: fix saving file
  • history: improve error message format

:books: Docs

  • #4182 docs: -C: Fix some accidents
  • #4188 Update oauth2 README
  • #4193 Update oauth2 README
  • fix typos, lots of tidying
  • tidy license info

:building_construction: Build

  • #4196 use FreeBSD 14.0 in Cirrus CI
  • actions: update cpu count
  • actions: use codeql v3

:gear: Code

  • #4186 Buffer refactoring: make_entry()
  • address: tidy config handling
  • coverage: buf, slist
  • graphviz: link labels
  • tidy buf_strcpy() calls
  • tidy char buffers
  • test: default timezone to UTC

20240323

1 month ago

:book: Notes

💀 IMPORTANT - DO NOT USE Release 2024-03-23 (or any build from main since that release)

This release can damage mbox type mailboxes.

I'm really sorry.

I'll create a new release as soon as I can.

Thanks to William Casarin and Szilárd Andai for their help and debugging.

20240201

2 months ago

:book: Notes

One new feature this month and plenty of bug fixes.

Alejandro's added neomutt -C to enable automatic signing/encryption of emails. See: https://neomutt.org/feature/cli-crypto

:gem: Sponsors

  • Jakub Jindra (@jindraj)
  • Scott Kostyshak (@scottkosty)
  • Ander Punnar (@4nd3r)
  • Igor Serebryany (@igor47)
  • Martin Spendiff (@veebch)
  • Mark Korondi (@kmARC)
  • Patrick Koetter (@patrickbenkoetter)
  • Robert Labudda
  • Aboudoulaye Yatera
  • Sebastian Kowalczyk

Become a sponsor of NeoMutt

:heart: Thanks

Many thanks to our new contributors:

  • Alejandro Colomar (@alejandro-colomar)
  • Pavel Savchenko (@asfaltboy)

our regular contributors:

  • Dennis Schön (@roccoblues)
  • Emir Sari (@bitigchi)
  • наб (@nabijaczleweli)
  • Austin Ray (@austin-ray)
  • Pierre Colin (@Pierre-Colin)
  • Jakub Jindra (@jindraj)
  • Gerrit Rüsing (@kbcb)
  • Marius Gedminas (@mgedmin)
  • Страхиња Радић (@strahinja)

:gift: Features

  • #4134 Command-line Crypto (neomutt -C)

:lady_beetle: Bug Fixes

  • #4065 track new-mail check time per mailbox
  • #4141 fix(change-folder): don't exclude notmuch
  • #4147 envelope: manage subject/real_subj together
  • #4155 fix parsing of $REPLYTO
  • #4158 status: fix refresh after sync-mailbox
  • #4166 Fix two memory leaks in notmuch support
  • progress: fix percentages

:black_flag: Translations

  • 100% :czech_republic: Czech
  • 100% :de: German
  • 100% :lithuania: Lithuanian
  • 100% :serbia: Serbian
  • 100% :slovakia: Slovak
  • 100% :tr: Turkish

:books: Docs

  • #4172 Several fixes for the manual pages

:building_construction: Build

  • build: openbsd workarounds

:gear: Code

  • #4142 add mutt_time_now()
  • #4146 config: factor out R_ flags
  • #4154 file: upgrade mutt_file_fopen/fclose()
  • #4159 upgrade mutt_str_append_item() to use struct Buffer
  • #4161 maildir: encapsulate the header cache
  • #4162 remove mutt_str_dequote_comment()
  • #4165 bufferize mutt_str_inline_replace() as buf_inline_replace()
  • #4167 bufferize mutt_strn_rfind() as buf_rfind()
  • #4168 replace buf_len() checks with buf_is_empty()
  • config: drop unused flags
  • use message_new()/message_free()
  • Reconsider the config type bitmap entirely

20231221

4 months ago

:book: Notes

A smallish release, this month. Plenty of bug-fixes, but the majority of the changes happened behind the scenes.

:gem: Sponsors

Special thanks to our sponsors:

  • Jakub Jindra (@jindraj)
  • Scott Kostyshak (@scottkosty)
  • Ander Punnar (@4nd3r)
  • Igor Serebryany (@igor47)
  • Martin Spendiff (@veebch)
  • Mark Korondi (@kmARC)
  • Justin Riddiough (@neural-loop)
  • Marton Balazs (@martonbalazs)
  • Patrick Koetter
  • Milan Glacier (@milanglacier)
  • Christopher Paine

Become a sponsor of NeoMutt

:heart: Thanks

Many thanks to our new contributors:

  • EC Herenz (@Knusper)
  • Matthias Gerstner (@mgerstner)
  • Meindert Kempe (@MeindertKempe)

our regular contributors:

  • Dennis Schön (@roccoblues)
  • Tóth János (@g0mb4)
  • Alejandro Colomar (@alejandro-colomar)
  • Gerrit Rüsing (@kbcb)
  • Roberto Alvarado (@robdres)
  • Jakub Jindra (@jindraj)
  • Marius Gedminas (@mgedmin)
  • Róbert Horváth (@r001)
  • Pietro Cerutti (@gahr)
  • Emir Sari (@bitigchi)
  • наб (@nabijaczleweli)
  • Страхиња Радић (@strahinja)

:gift: Features

  • #4126 - add alias 'tags:'

:lady_beetle: Bug Fixes

  • #4115 - create HelpBar after colours
  • #4116 - Fix Batch Sending of Emails
  • #4119 - Fix Header Cache Key Handling
  • #4121 - mutt_oauth2.py: error out if ENCRYPTION_PIPE was not supplied
  • #4124 - config: fix flag overlaps
  • #4125 - compose: restore view-text/pager/mailcap
  • color: fix attr_color_copy()
  • fix :color dump
  • fix leak in completion
  • force mail check on current mailbox after <imap-fetch-mail>
  • Allow sending an empty mail
  • mutt_oauth2.py: Use readline to overcome macOS input() restrictions

:wrench: Changed Config

  • add $history_format: '%s'

:black_flag: Translations

  • 100% :czech_republic: Czech
  • 100% :de: German
  • 100% :lithuania: Lithuanian
  • 100% :serbia: Serbian
  • 100% :slovakia: Slovak
  • 100% :tr: Turkish
  • 99% :es: Spanish
  • 99% :hungary: Hungarian

:shield: Coverity defects

  • #4111 Educate Coverity about ARRAYs
  • fix defects

:building_construction: Build

  • #4098 - build: use fallthrough attribute
  • #4100 - build: split maildir and mh types
  • #4101 - version: drop default features
  • #4108 - strip non-conditionals
  • #4122 - add github action to check for unused functions (xunused)
  • update fedora action
  • coverage: fix build for lcov v2
  • tests: fix error cases

:gear: Code

  • #4097 - config: add DT_ON_STARTUP
  • #4104 - Change mutt_default_save() and addr_hook() to take a buffer
  • #4105 - Use buffer pool in tests
  • #4106 - Switch some buffers to use the buffer pool
  • #4109 - Improve the Progress Bar
  • #4117 - remove MxOps::path_parent() and mutt_path_parent()
  • #4120 - remove unused functions
  • #4131 - move editor test code
  • #4133 - move log_disp_null() into test folder
  • #4137 - move config string name functions into tests
  • add: hook_new()/hook_free()
  • fix more printf-style params
  • rename compare to equal
  • hcache: renaming for clarity

20231103

5 months ago

:book: Notes

Just a small release, this time.

Behind the scenes, I added a lot of tests for the colour code. This revealed a handful of bugs that needed fixing. Whilst testing, I converted some debug code to create the :color command. Maybe not that useful, but it's quite pretty :smile:

Also new, the information screens like :set allow you to save their contents with s (<save-message>).

:gem: Sponsors

Special thanks to our sponsors:

  • Jakub Jindra (@jindraj)
  • P M Brown (@pbwn)
  • Scott Kostyshak (@scottkosty)
  • Ander Punnar (@4nd3r)
  • Igor Serebryany (@igor47)
  • Martin Spendiff (@veebch)
  • Justin Riddiough (@neural-loop)
  • Marton Balazs (@martonbalazs)
  • Patrick Koetter
  • Milan Glacier (@milanglacier)

Become a sponsor of NeoMutt

:heart: Thanks

Many thanks to our new contributors:

  • Alejandro Colomar (@alejandro-colomar)
  • Jan Palus (@jpalus)

our regular contributors:

  • Dennis Schön (@roccoblues)
  • Emir Sari (@bitigchi)
  • Jakub Jindra (@jindraj)
  • Marius Gedminas (@mgedmin)
  • Страхиња Радић (@strahinja)
  • Gerrit Rüsing (@kbcb)
  • Pietro Cerutti (@gahr)

:gift: Features

  • #4080 - info screen: enable <save-message>
  • #4075 - add :color command
  • color: add ANSI RGB support
  • color: Support ANSI 2x clear sequences

:lady_beetle: Bug Fixes

  • #4074 - color: fix palette conversion
  • #4081 - fix logging on error
  • #4081 - log: vim-style
  • #4082 - fix file auto-completion
  • #4090 - improve logic for growing mailbox memory

:black_flag: Translations

  • 100% :czech_republic: Czech
  • 100% :de: German
  • 100% :lithuania: Lithuanian
  • 100% :serbia: Serbian
  • 100% :slovakia: Slovak
  • 100% :tr: Turkish

:building_construction: Build

  • #4085 - fix CFLAGS/LDFLAGS for ncurses
  • #4085 - configure --with-iconv

:gear: Code

  • #4067 - remove unused count of new mails from index private data
  • #4086 - smtp: Simplify the API of smtp_code()
  • #4091 - simplify CLAMP by expressing it with MIN/MAX
  • color: introduce ColorElement
  • color: log gui info on startup
  • color: move business logic out of parsers
  • color: tidy OptNoCurses cases
  • log: add log_multiline()
  • test: increase coverage

neomutt-20170526

5 months ago

Development Release

It's been a while since the last release but we haven't been idle. The code has been undergoing widespread tidying/improvements.

Notes:

  • This release is not suitable for production environments
  • This release needs testing
  • A stable release will be along shortly

Thanks

Many thanks to our contributors:

  • Stefan Assmann (@sassmann)
  • Pietro Cerutti (@gahr)
  • Mehdi Abaakouk (@sileht)
  • Damien Riegel (@d-k-c)
  • Tobias Angele (@toogley)
  • Somini (@somini)
  • Bernard Pratz (@guyzmo)

20231023

6 months ago

:book: Notes

First, to our anonymous benefactor - "Thank You!" Two words are wholly inadequate to express my gratitude. It's certainly a huge motivator to keep improving NeoMutt!

This is a Bug-Fix Release. It fixes a few little irritations.

:gem: Sponsors

  • Jakub Jindra (@jindraj)
  • P M Brown (@pbwn)
  • Scott Kostyshak (@scottkosty)
  • Ander Punnar (@4nd3r)
  • Igor Serebryany (@igor47)
  • Martin Spendiff (@veebch)
  • Justin Riddiough (@neural-loop)
  • Marton Balazs (@martonbalazs)
  • Patrick Koetter

Become a sponsor of NeoMutt

:heart: Thanks

Thanks our regular contributor:

  • Lucian Langa (@lucilanga)

:lady_beetle: Bug Fixes

  • #4060 fix crash on exit
  • #4061 fix header colour
  • #4064 fix 32-bit date overflow
  • #4078 fix new mail in limited view
  • nntp: fix use-after-free
  • color: fix ansi colours
  • color: add +truecolor to version string

20231006

6 months ago

:book: Notes

This is a big release. After nearly five months and over 400 commits, NeoMutt is stable again.

Most of the work won't be visible to the users. We've been making large-scale changes to improve the code. In the long-term, this will make NeoMutt stabler and make it easier to add new features.

If you find a problem, please let us know as soon as possible.

Thanks! :heart:

:gem: Sponsors

  • Jakub Jindra (@jindraj)
  • P M Brown (@pbwn)
  • Scott Kostyshak (@scottkosty)
  • Ander Punnar (@4nd3r)
  • Mark Korondi (@kmARC)
  • Igor Serebryany (@igor47)
  • Martin Spendiff (@veebch)
  • Justin Riddiough (@neural-loop)
  • Marton Balazs (@martonbalazs)
  • Patrick Koetter

Become a sponsor of NeoMutt

:heart: Thanks

Many thanks to our new contributors:

  • Dennis Schön (@roccoblues)
  • Aurelien Francillon (@aurelf)
  • Jan Krieg (@jan-krieg)
  • Lucian Langa (@lucilanga)
  • Tóth János (@g0mb4)

our regular contributors:

  • Pierre Colin (@Pierre-Colin)
  • David Sterba (@kdave)
  • Страхиња Радић (@strahinja)
  • Emir Sari (@bitigchi)
  • Anna (navi) Figueiredo Gomes (@navi-desu)
  • Gerrit Rüsing (@kbcb)
  • наб (@nabijaczleweli)
  • Jakub Jindra (@jindraj)
  • Simon Reichel (@amudtogal)
  • Marius Gedminas (@mgedmin)
  • Rayford Shireman (@rayfordshire)
  • Pietro Cerutti (@gahr)
  • vuori (@vuori)

:gift: Features

  • #3870 - color: allow 'alert', 'bright', 'light' prefix for colorNNN
  • #3871 - color: refactor parsing code
  • #3895 - imap: truncate large UIDVALIDITYs to support non-conforming IMAP servers
  • #3898 - hcache: shrink Email and Body caches
  • #3900 - prompt: treat complete-query as complete where it makes sense
  • #3925 - help: add message flags to help screen
  • #3932 - help: add alternating colors
  • #3982 - mailboxes: add -label, -notify and -poll options
  • #4038 - add help to questions
  • #4046 - color_directcolor: Also set the default/initial value on startup

:beetle: Bug Fixes

  • #3897 - maildir: fix sync when a deleted file disappears
  • #3878 - gnutls: fix "certificate saved" message
  • #3895 - imap: truncate large UIDVALIDITYs to support non-conforming servers
  • #3897 - maildir: fix fix error with <sync-mailbox> on mbsync
  • #3901 - address: parse comments after address
  • #3915 - bind: fix truncated binding strings
  • #3956 - fix 'from' address when real name isn't set
  • #3962 - Fix crash on <next-thread> when the <limit>ed view is empty
  • #3985 - browser: fix autocompletion
  • #3988 - pager: fix search crash
  • #3999 - help: fix search highlight
  • #4049 - force mail check on current mailbox after <shell-escape>
  • #4051 - openssl: continue if a signal interrupts an SSL read/write

:wrench: Changed Config

  • #3881 - Rename $imap_keepalive to $imap_keep_alive
  • #3889 - Change defaults to use %<...> conditional syntax $attach_format, $index_format, $mailbox_folder_format, $status_format, $ts_icon_format, $ts_status_format
  • #3949 - Add browser_sort_dirs_first to always list directories first

:black_flag: Translations

  • 100% :tr: Turkish
  • 100% :serbia: Serbian
  • 100% :lithuania: Lithuanian
  • 100% :de: German
  • 99% :czech_republic: Czech
  • 99% :poland: Polish
  • 98% :slovakia: Slovak

:gear: Code

  • #3877 - imap: factor out tagged emails
  • #3799 - address: use struct Buffer instead of plain char pointers
  • #3868 - drop notifications relay
  • #3869 - move $delete_untag out of the backend
  • #3873 - respect --[disable-]fmemopen in tests
  • hcache: optimize storage requirements, reduce config
  • logging: catch format string errors
  • colour: refactor colour parsing
  • refactoring, cleanup
  • fixed coverity defects
  • convert many functions to use a Buffer

20230517

11 months ago

:book: Notes

This is a fixed version of last week's release. Sorry about that.

Some bug fixes and one big feature :-)

True Colour support.

To enable this, you need to export TERM=xterm-direct (shell) and set color_directcolor = yes (neomutt).

Then you can use RGB hex colours in your config:

color status #ffffff #ff8080
color index  #80c000 #007890 apple

:gem: Sponsors

  • P M Brown (@pbwn)
  • Scott Kostyshak (@scottkosty)
  • Ander Punnar (@4nd3r)
  • Mark Korondi (@kmARC)
  • Igor Serebryany (@igor47)

Become a sponsor of NeoMutt

:heart: Thanks

Many thanks to our new contributors:

  • André L C Moreira (@carvalhudo)
  • Sebastian Crane (@seabass-labrax)
  • @auouymous
  • @toonn
  • Baudouin Van Humbeck (@scriptor-pro)
  • Marcelo Ricardo Leitner (@marceloleitner)
  • Daniel Gröber (@danielg)

our regular contributors:

  • Steinar H Gunderson (@sesse)
  • Rayford Shireman (@rayfordshire)
  • наб (@nabijaczleweli)
  • Страхиња Радић (@strahinja)
  • Pietro Cerutti (@gahr)
  • @vuori
  • Gerrit Rüsing (@kbcb)
  • Marius Gedminas (@mgedmin)
  • Emir Sari (@bitigchi)
  • Róbert Horváth (@r001)

:gift: Features

  • #3699 - Support 24bit colors, aka truecolor
  • #3738 - Show complete MIME structure in attachments
  • #3842 - Allow percentages to be localized

:beetle: Bug Fixes

  • #3813 - Fix crash in op_browser_subscribe
  • #3844 - Select the first email when coming from an empty limit
  • #3848 - Fix counting new mails in maildir
  • #3759 - bind: fix incorrect conflict report
  • #3781 - index: only refresh the menu on non-focus window changes
  • #3856 - tunnel: fix reconnection with ssl_force=true
  • #3860 - maildir: stop parsing headers at the end of the headers section
  • #3864 - Fix handling of bright colours
  • Fix sorting of labels

:black_flag: Translations

  • 100% :serbia: Serbian
  • 100% :tr: Turkish
  • 100% :lithuania: Lithuanian
  • 100% :hungary: Hungarian
  • 100% :de: German
  • 99% :norway: Norwegian (Bokmål)
  • 99% :slovakia: Slovak
  • 99% :brazil: Portuguese (Brazil)
  • 99% :czech_republic: Czech
  • 95% :fr: French

:building_construction: Build

  • #3798 - Build with libidn2 by default, remove support for libidn1

:gear: Code

  • config: dynamically create/delete variables
  • config: unify handling of NeoMutt and user (my_) variables
  • config: cache config variables used often
  • speed: various speedups in parsing emails
  • cleanups: lots of code cleanups
  • Huge refactoring towards a separation of Mailbox/MailboxView