2026-08-30 10:46:17 +0800  Kevin J. McCarthy  <kevin@8t8.us> (bd1a8ef8)

        * Update UPDATING file for 2.4.2 release.

M	UPDATING

2026-08-26 13:53:38 +0800  Kevin J. McCarthy  <kevin@8t8.us> (190ee83d)

        * Fix minor manual errors.
        
        A few places referred to nonexistent functions <forward> and <bounce>,
        which should actually be <forward-message> and <bounce-message>.

M	doc/manual.xml.head

2026-08-25 15:07:59 +0800  Kevin J. McCarthy  <kevin@8t8.us> (97e7e5f3)

        * Fix <get-attachment> to remove attachments upon compose abort.
        
        The files are copied to $tmpdraftdir, and are "owned" by the compose
        process.  But they still had their unowned flag set.  So aborting the
        compose would leave those files inside $tmpdraftdir.
        
        Unset the flag so they are properly cleaned up.
        
        Thanks to Alejandro Colomar for the loop cleanup suggestion!

M	compose.c

2026-08-23 21:09:47 +0800  Kevin J. McCarthy  <kevin@8t8.us> (0df49f39)

        * Fix <get-attachment> to use $tmpdraftdir.
        
        I missed converting it before because it was hidden inside a shared
        function, mutt_rfc1524_expand_filename().  Most of those callers use
        the file for an actual $tmpdir file, but <get-attachment> should put
        it in the compose $tmpdraftdir like other attachments.
        
        Create two separate functions, mutt_rfc1524_expand_tmpdir_filename()
        and mutt_rfc1524_expand_tmpdraftdir_filename().  Change
        mutt_get_tmp_attachment() to call the latter.

M	attach.c
M	handler.c
M	rfc1524.c
M	rfc1524.h

2026-08-20 10:42:05 +0800  Kevin J. McCarthy  <kevin@8t8.us> (9196c96e)

        * Change attachment stamping to use stat st_mtime by default.
        
        Linux offers multiple clocks of different granularity.  In the past,
        the seconds returned by time() and the filesystem mtime returned by
        stat() agreed on seconds.
        
        With newer kernels, a mix of course and fine-grained clocks have been
        introduced in the filesystem.  As implemented, after each change of
        seconds, there is now a window of a few milliseconds where the coarse
        clock's seconds (returned by time()) may lag behind the fine ones used
        for time-stamping files.
        
        The change has led to a bug in Mutt, where recording the stamp of an
        attachment using time() sometimes has a "second" value earlier than
        the stat() st_mtime of the file just modified.
        
        This caused a sporadic false warning before sending an email, warning
        that the attachment has changed on disk since it was last checked.
        For more details, see:
        https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1144613
        
        The attachment->stamp is only used to compare against the stat
        st_mtime of the file just before sending.  So it actually makes more
        sense to record the previous st_mtime of the file.  This occurs during
        message composition, so an extra stat on a file that was just read is
        not likely to cause a meaningful slow down.
        
        Change mutt_stamp_attachment() to use st_mtime for the stamp.  Since
        the function previously had no error case, use "time(NULL) + 1" as a
        fallback behavior in case stat fails or (for some strange reason) it's
        called for a receive-mode attachment.
        
        Thanks to Vincent Lefèvre for reporting the issue and working on
        finding out the source of the bug.  Thanks also to the other
        contributors in the thread who helped with reproducing and diagnosing
        the problem: Ian Collier, Reed Underwood, and Steffen Nurpmeso.
        
        Also, thanks to Oswald Buddenhagen for helping with patch review and
        for suggestions to make this commit message better.

M	sendlib.c

2026-08-09 14:35:28 +0800  Kevin J. McCarthy  <kevin@8t8.us> (55fed13f)

        * Fix OpenBSD build on sr.ht.
        
        Rename automake-1.18 to automake-1.18.1.

M	.builds/openbsd.yml

2026-08-09 14:28:42 +0800  Kevin J. McCarthy  <kevin@8t8.us> (d74acef9)

        * Fix Arch build on sr.ht:
        
        The tcc-libs-static package no longer exists, and apparently isn't
        required to build.

M	.builds/archlinux.yml

2026-07-11 12:03:52 -0400  Nikolas Nyby  <nikolas@gnu.org> (aad2dde2)

        * Fix minor typo in UPDATING file
        
        teriminal -> terminal

M	UPDATING

2026-07-06 10:26:08 +0800  Kevin J. McCarthy  <kevin@8t8.us> (4fc103f0)

        * Set GPGME key flags when getting candidates.
        
        Back in b5dc76dc I added the missing set calls to PGP, but didn't do
        it for S/MIME.  At that time I wasn't sure if the flags had any effect
        and was being cautious.
        
        In hindsight, it's not as if setting those flags would cause any harm
        - either GPGME is setting them or not.  So add the corresponding flag
        setting to the S/MIME path too.

M	crypt-gpgme.c

2026-07-04 13:38:36 +0800  Kevin J. McCarthy  <kevin@8t8.us> (b28388b3)

        * automatic post-release commit for mutt-2.4.1

M	ChangeLog
M	VERSION

2026-07-04 13:34:06 +0800  Kevin J. McCarthy  <kevin@8t8.us> (8ed69a5b)

        * Update UPDATING file for 2.4.1 release.

M	UPDATING

2026-06-29 16:05:48 -0400  Acts1631  <acts1631kjv@proton.me> (a739e126)

        * Prevent unsigned int overflow in imap_cmd_step buffer growth.
        
        The idata->blen field is unsigned int (32-bit) while the companion
        variable len is size_t (64-bit on LP64).  When a malicious IMAP server
        sends a response line longer than UINT_MAX bytes without newline, the
        expression  wraps to a small value,
        causing safe_realloc() to shrink the buffer while len retains its
        original huge value.  The subsequent mutt_socket_readln() then writes
        far past the shrunken allocation.
        
        Fix by changing idata->blen from unsigned int to size_t, matching the
        type of len and preventing the overflow on all platforms.

M	imap/command.c
M	imap/imap_private.h

2026-06-29 13:26:51 +0800  Kevin J. McCarthy  <kevin@8t8.us> (7bfd91dc)

        * Fix build failures with OpenSSL 4.0
        
        Starting with 4.0, the ASN1_STRING is now opaque and can no longer be
        accessed directly.
        
        See <https://openssl-library.org/post/2026-04-13-asn1_string/>
        
        Thanks to Dennis Preiser for the bug report and patch.  I've done some
        minor cosmetic changes to the patch.

M	mutt_ssl.c

2026-06-24 10:12:31 +0800  Kevin J. McCarthy  <kevin@8t8.us> (7f8a0929)

        * Remove ncurses meta() call.
        
        The meta() call enables 8-bit mode on a terminal via the smm terminfo
        entry (or the CS8 flag).  This is an older mode that most likely isn't
        necessary anymore.  On some terminals it allows Alt-x to be sent as an
        8-bit value instead of Esc-x.  However, it also affects other input.
        For more information see:
        <https://invisible-island.net/ncurses/man/curs_inopts.3x.html#h3-meta>.
        
        This mode is affecting some modern terminals badly, including foot.
        Additionally, mutt turned the mode on but did not turn it off, leaving
        foot in a state where Alt-f/b no longer worked properly after running
        mutt.

M	main.c

2026-06-23 13:09:28 +0800  Kevin J. McCarthy  <kevin@8t8.us> (f0a370b5)

        * Protect against empty -A, -a, and -Q command line arguments.
        
        The code wasn't checking for empty values passed as command line
        arguments in these cases.  -A caused a crash.  -a and -Q didn't crash,
        but did trigger strange error messages.
        
        Add NONULL() checks around them to prevent problems.
        
        Thanks to Nikolas N for reporting the bug!

M	init.c
M	main.c

2026-06-01 09:17:57 +0200  Rene Kita  <mail@rkta.de> (68063c83)

        * Add lto stage to builds
        
        While at it, explicitly request to use -O2 when compiling to allow the
        compiler to create more warnings.

M	.builds/alpine.yml
M	.builds/archlinux.yml
M	.builds/build
M	.builds/debian.yml
M	.builds/freebsd.yml
M	.builds/openbsd.yml

2026-06-01 09:17:56 +0200  Rene Kita  <mail@rkta.de> (f84621fb)

        * Use script to test build configurations
        
        This centralizes the configure command line arguments used for CI builds
        in a single script.  It makes it easier to test locally and keeps the
        manifests dry.
        
        Differences among the manifests are mostly kept as they were, this
        can/should be cleaned up in future commit.

M	.builds/alpine.yml
M	.builds/archlinux.yml
A	.builds/build
M	.builds/debian.yml
M	.builds/freebsd.yml
M	.builds/openbsd.yml
M	doc/devel-notes.txt

2026-06-19 10:55:08 +0800  Kevin J. McCarthy  <kevin@8t8.us> (68744a27)

        * automatic post-release commit for mutt-2.4.0

M	ChangeLog
M	VERSION
M	po/bg.po
M	po/ca.po
M	po/cs.po
M	po/da.po
M	po/de.po
M	po/el.po
M	po/eo.po
M	po/es.po
M	po/et.po
M	po/eu.po
M	po/fi.po
M	po/fr.po
M	po/ga.po
M	po/gl.po
M	po/hu.po
M	po/id.po
M	po/it.po
M	po/ja.po
M	po/ko.po
M	po/lt.po
M	po/nl.po
M	po/pl.po
M	po/pt_BR.po
M	po/ru.po
M	po/sk.po
M	po/sv.po
M	po/tr.po
M	po/uk.po
M	po/zh_CN.po
M	po/zh_TW.po

2026-06-19 10:48:43 +0800  Kevin J. McCarthy  <kevin@8t8.us> (358720c8)

        * Update UPDATING file for 2.4.0 release.

M	UPDATING

2026-06-12 11:10:32 +0800  Kevin J. McCarthy  <kevin@8t8.us> (2de20fe4)

        * Merge branch 'stable'

2026-06-12 11:04:15 +0800  Kevin J. McCarthy  <kevin@8t8.us> (9073d26d)

        * automatic post-release commit for mutt-2.3.3

M	ChangeLog
M	VERSION

2026-06-12 10:12:26 +0800  Kevin J. McCarthy  <kevin@8t8.us> (4f99ac3f)

        * Merge branch 'stable'

2026-06-12 10:08:44 +0800  Kevin J. McCarthy  <kevin@8t8.us> (759212eb)

        * Merge branch 'stable'
        
        Fixed conflicts due to code reforamtting and dprint() being converted
        to muttdbg().

2026-06-12 09:54:36 +0800  Vsevolod Volkov  <mutt@vvv.kyiv.ua> (ae0dc0b8)

        * Updated Russian translation.

M	po/ru.po

2026-06-12 09:53:14 +0800  Vsevolod Volkov  <mutt@vvv.kyiv.ua> (27fc6d68)

        * Updated Ukrainian translation.

M	po/uk.po

2026-06-04 09:05:25 +0800  Kevin J. McCarthy  <kevin@8t8.us> (60e1ad54)

        * Add README.TRANSLATORS file.
        
        Give an overview of the mailing list and translation process for new
        members.
        
        This was requested by a few translators on the mutt-po mailing list.

M	Makefile.am
A	README.TRANSLATORS

2026-06-03 21:39:34 +0800  Kevin J. McCarthy  <kevin@8t8.us> (56eca6af)

        * Fix configure --with-bundled-regex test.
        
        The documentation in autoconf says:
        
         — Macro: AC_ARG_WITH(PACKAGE, HELP-STRING, [ACTION-IF-GIVEN],
                  [ACTION-IF-NOT-GIVEN])
             If the user gave ‘configure’ the option ‘--with-PACKAGE’ or
             ‘--without-PACKAGE’, run shell commands ACTION-IF-GIVEN.  If
             neither option was given, run shell commands ACTION-IF-NOT-GIVEN.
        
        This means the third parameter is evaluatated in both cases:
        --with-bundled-regex and --without-bundled-regex.
        And thus the code was incorrectly turning mutt_cv_regex on for both
        cases, skipping the test for broken regex further below.
        
        Fix it to properly set mutt_cv_regex.  Further below, configure will
        check the built-in system regex works if the value is 'no'.

M	configure.ac

2026-06-03 09:08:40 +0800  Ivan Vilata i Balaguer  <ivan@selidor.net> (513df32b)

        * Update Catalan translations.

M	po/ca.po

2026-05-31 22:12:51 +0200  Vincent Lefevre  <vincent@vinc17.net> (66ab7ce0)

        * Updated French translation.

M	po/fr.po

2026-05-31 15:06:55 +0800  Helge Kreutzmann  <debian@helgefjell.de> (2b759ca3)

        * Update de.po.

M	po/de.po

2026-05-31 06:31:56 +0800  Grzegorz Szymaszek  <gszymaszek@short.pl> (ef81c82e)

        * Update Polish translation.

M	po/pl.po

2026-05-30 16:03:19 +0200  Grzegorz Szymaszek  <gszymaszek@short.pl> (60a50888)

        * Fix formatting of a few error messages in crypt-gpgme.c
        
        Those were broken in f31b98e7e22a16867584af2e82d46c29917bfd83
        ("Formatting update: remove space between function and parenthesis."),
        likely because "ID (unknown encoding)" may look like a function call.

M	crypt-gpgme.c

2026-05-30 08:22:06 +0800  Helge Kreutzmann  <debian@helgefjell.de> (cc48d737)

        * Update de.po.

M	po/de.po

2026-05-25 19:37:28 +0300  Emir SARI  <emir_sari@icloud.com> (1a4ac3a1)

        * Update Turkish translations
        
        Signed-off-by: Emir SARI <emir_sari@icloud.com>

M	po/tr.po

2026-05-24 17:26:15 +0800  Kevin J. McCarthy  <kevin@8t8.us> (91ee9afa)

        * Clean up errno.h includes.
        
        With the creation of mutt_errno_dbg(), a lot of direct errno handling
        is now moved inside the macro.
        
        Remove the include header from other parts of the code that are not
        directly referencing errno anymore.
        
        Move the "#include <errno.h>" inside the lib.h header, where the macro
        is defined, conditionally based on #ifdef DEBUG.  That way callers of
        the macro don't have to think about including the header.

M	attach.c
M	complete.c
M	compress.c
M	crypt.c
M	curs_main.c
M	group.c
M	imap/message.c
M	lib.h
M	mbox.c
M	mutt_sasl.c
M	mutt_sasl_gnu.c
M	mutt_zstrm.c
M	pager.c
M	pgp.c
M	pgppubring.c
M	rfc1524.c
M	send.c
M	smime.c
M	system.c

2026-05-24 17:23:12 +0800  Kevin J. McCarthy  <kevin@8t8.us> (dc06005f)

        * Convert three muttdbg() calls to mutt_errno_dbg().
        
        While working on the next commit (cleaning up errno.h includes), I
        noticed three calls to muttdbg() in mutt_socket.c that were
        referencing strerror(errno).
        
        Convert those three to mutt_errno_dbg().
        
        Thanks to Oswald Buddenhagen for suggesting this commit be broken out.

M	mutt_socket.c

2026-05-21 20:09:16 +0800  Kevin J. McCarthy  <kevin@8t8.us> (78834e19)

        * Simplify resolve_search() reallocation for search matches.
        
        The lineInfo array is memset to 0 on allocation and reallocation, so
        we can be sure lineInfo[n].search is NULL by default.
        
        safe_realloc() handles the initial allocation too, so there is no need
        for an if/else branch.
        
        Thanks to Alejandro Colomar for the suggestion.

M	pager.c

2026-05-20 20:35:12 +0800  Kevin J. McCarthy  <kevin@8t8.us> (cf8207f3)

        * Fix pager search behavior with REG_NEWLINE.
        
        REG_NEWLINE causes ^ to match both BOS and after a newline, and $ to
        match both EOS and just before a newline.
        
        This leads to weird behavior with a pager search such as /^a*$/.  This
        will end up matching every line:
          - ^ matches after the newline
          - a* matches nothing
          - $ matches EOS
        
        Removing the newlines would be more painful, because the parser
        requires them in several places, for things like header to body
        switching, matching signatures, and breaking out of some loops.
        
        Instead do the same thing that match_body_patterns() does: temporarily
        remove the newlines during the regex search.
        
        Then, remove the REG_NEWLINE flag from all the REGCOMP calls.
        
        Thanks to Alejandro Colomar for his review and suggested cleanup.

M	pager.c

2026-05-21 10:50:07 +0800  Kevin J. McCarthy  <kevin@8t8.us> (1aa1dc21)

        * Fix warning of unused cleanup label.
        
        This is causing a build failure in the sr.ht CI builds.

M	mutt_idna.c

2026-05-19 13:53:47 +0800  Kevin J. McCarthy  <kevin@8t8.us> (f11e5f12)

        * Change mutt_buffer_concatn_path() to use fixed algorithm.
        
        Revise it to use mutt_buffer_concat_path(), which was fixed in commit
        048f4ae2.

M	muttlib.c

2026-05-19 11:03:05 +0800  Kevin J. McCarthy  <kevin@8t8.us> (64cd094b)

        * Convert malloc() + sprintf() to safe_asprintf().
        
        Thanks to Alejandro Colomar for pointing out that it would be better
        to use a safer sprintf() alternative in the previous commit.
        
        This fixes the calls in mutt_idna.c, as well as the rest of the
        codebase where I found a malloc() followed by a sprintf().

M	curs_lib.c
M	init.c
M	mutt_idna.c
M	rfc822.c
M	send.c

2026-05-18 13:07:38 +0800  Kevin J. McCarthy  <kevin@8t8.us> (e14668a0)

        * Search for keys by uid using utf-8.
        
        GPGME requires the uid to be in utf-8.  Gpg (classic-mode) uses the
        current locale by default; add --utf8-strings to the command to change
        it to also require utf-8.
        
        Add a one-way transition function from IDN to utf-8:
        mutt_addrlist_to_utf8().  Change the crypt_get_keys() function to
        invoke that on the generated list of addresses to look up.
        
        The helper function, intl_to_utf8(), is based off the same template as
        intl_to_local() and local_to_intl().  I've kept the code basically the
        same, for ease of understanding, even though it may seem a bit
        verbose.
        
        Note that adding a whole new state to the IDNA code would be
        significantly more complicated, requiring more state bits, and code to
        connect between the three different states.  Since there isn't such a
        requirement right now, I've kept the change simple and commented that
        the function is only meant for a one-way transition from IDN to utf-8.

M	contrib/gpg.rc
M	crypt.c
M	mutt_idna.c
M	mutt_idna.h

2026-05-16 12:37:37 +0800  Kevin J. McCarthy  <kevin@8t8.us> (db9200c7)

        * Simplify error handling in send_message_resume_compose_menu().
        
        Handle batch mode first; this allows a positive comparison, e.g.
          if (sctx->flags & SENDBATCH)
        followed by a "goto cleanup;".  After the goto, no else branch is
        needed.  Thanks to Alejandro Colomar for the suggestion!
        
        mutt_error() works in batch mode, so substitute it for the puts()
        messages in batch mode.
        
        For the "no recipients" error handling, two different PO translation
        messages were used in batch vs interactive mode.  Pick one message and
        just use that.

M	send.c

2026-05-14 20:45:24 +0800  Kevin J. McCarthy  <kevin@8t8.us> (174bf46b)

        * Convert pgp key lookups to use local mode addresses.
        
        By default Mutt stores the addresses in IDNA format during
        compose/send.  This will cause gpg key lookups on international
        domains to fail.
        
        I have no idea how this bug has been in there for this long without
        any bug reports, but this obviously needs to be done when looking up
        keys.

M	crypt.c

2026-05-14 14:35:47 +0800  Kevin J. McCarthy  <kevin@8t8.us> (2e5b5c38)

        * Rearrange and consolidate final encoding steps when sending.
        
        Move the final mutt_prepare_envelope() before the last
        mutt_env_to_intl().  This is standard practice elsewhere in the code.
        Additionally, mutt_prepare_envelope(..., 1) sets Mail-Followup-To, so
        it's prudent to ensure the value is IDNA encoded.
        
        Because the mutt_prepare_envelope() now occurs before mutt_protect(),
        add mutt_unprepare_envelope() to its error handling block.
        
        While in this section of the code do some minor cleanup.  Remove a
        comment that no longer has any relevance to the current state of the
        code.  Change the error handling order for mutt_protect() to match
        surrounding blocks: perform the FREE(&pgpkeylist) first, remove blank
        lines.

M	send.c

2026-05-13 15:00:52 +0800  Kevin J. McCarthy  <kevin@8t8.us> (f613607b)

        * Remove unnecessary cast from IsPrint() call.
        
        The IsPrint() macro already performs an (unsigned char) cast.

M	muttlib.c

2026-05-09 12:23:57 +0800  Kevin J. McCarthy  <kevin@8t8.us> (fe8ae6c2)

        * Filter directory paths when prompting to save attachments.
        
        The attachment filename isn't supposed to contain path separators, but
        nothing technically stops them from being there.  The RFC (2183) says:
        
          "The receiving MUA SHOULD NOT respect any directory path information
           that may seem to be present in the filename parameter.  The filename
           should be treated as a terminal component only."
        
        Therefore, in receive mode, this commit converts all "/" to "_".  This
        is preferable to simply taking the base name, because some attachments
        might have a date in them formatted as yyyy/mm/dd, or other similar
        naming issues.
        
        In send mode (the compose menu), simply take the basename, since it's
        been attached by the user already, or else already filtered if via
        forwarding.

M	muttlib.c
M	recvattach.c

2026-05-11 19:44:30 +0800  Kevin J. McCarthy  <kevin@8t8.us> (b750d79d)

        * Reformatting: remove space between function and parenthesis v3.
        
        Thanks to Vincent Lefèvre for continuing to track down missing
        reformatting.  This time was due to double backslashes before double
        quotes and '\"' literal characters.

M	imap/util.c
M	muttlib.c
M	parse.c
M	rfc1524.c
M	rfc822.c

2026-05-11 17:49:21 +0800  Kevin J. McCarthy  <kevin@8t8.us> (95d3615f)

        * Reformatting: remove space between function and parenthesis v2.
        
        The first round, in commit f31b98e7e22a16867584af2e82d46c29917bfd83,
        missed sections of the code due to a bug in the script regular
        expression, where it didn't properly handle '"' literal characters.
        
        Thanks to Vincent Lefèvre for finding the problem, and listing all the
        places that were missed.
        
        I re-ran the script, adjust for '"', so hopefully this caught the
        remaining places.

M	alias.c
M	copy.c
M	crypt-gpgme.c
M	from.c
M	init.c
M	mutt_lisp.c
M	parse.c
M	pattern.c
M	rfc2231.c
M	rfc822.c

2026-05-09 10:26:04 +0800  Kevin J. McCarthy  <kevin@8t8.us> (19503b7b)

        * Merge branch 'stable'

2026-05-02 12:48:30 +0800  Kevin J. McCarthy  <kevin@8t8.us> (ecba3147)

        * Allow localization to the progress update messages.
        
        Rather than only adjusting the percentage, as with the previous
        commit, allow the translators to update the whole format string.
        
        Different locales may want to use specific separators between
        "current/total", or change the parenthesis around the percentage.  The
        percentage format itself can, of course, be adjusted too.
        
        This is based on Emir SARI's patch sent to mutt-po.
        
        Thanks to Oswald Buddenhagen for his feedback and suggestion to make
        the whole format string localized.

M	curs_lib.c

2026-05-02 10:19:14 +0800  Kevin J. McCarthy  <kevin@8t8.us> (b750c22c)

        * Add i18n percentage to pager and index status line.
        
        In the status line, the pager and index report where the current view
        is as a percentage of the total, by default in the lower right.
        
        This commit allows that percentage to be localized by the translators.
        For example, Turkish uses "%90", and French uses "90 %".
        
        Since there are only two places in the commit, I could have put the
        translation marker around each usage, but I thought it might be more
        useful in the future to have the L10N comments in one place.
        
        This is based on Emir SARI's patch sent to mutt-po.
        
        Thanks to Oswald Buddenhagen for his feedback.

M	muttlib.c
M	pager.c
M	protos.h
M	status.c

2026-05-06 19:57:23 +0800  Kevin J. McCarthy  <kevin@8t8.us> (7bff920c)

        * Merge branch 'stable'

2026-04-25 13:11:19 +0800  Kevin J. McCarthy  <kevin@8t8.us> (d2f49ddd)

        * Change Mutt to generate pkcs7-signature and pkcs7-mime.
        
        RFC5751 favors the use of application/pkcs7-mime and
        application/pkcs7-signature.
        
        This change is pretty safe, since the GPGME code has been doing so for
        a long time already.
        
        Update the documentation to refer to the newer mime types.
        
        Thanks to Ralf Hildebrandt for reporting the issue, and the reference
        to RFC 5751.
        
        Thanks to Arnt Gulbrandsen for the original patch in his branch.  I
        recreated it and added the documentation updates on top.

M	contrib/smime.rc
M	doc/Muttrc.head
M	doc/manual.xml.head
M	doc/smime-notes.txt
M	init.h
M	smime.c

2026-04-25 12:12:30 +0800  Kevin J. McCarthy  <kevin@8t8.us> (bb63c648)

        * Remove autoconf check for sys/time.h header.
        
        We've been including it init.c without an AC check for 16 years.
        
        As investigated by Alejandro Colomar:
        
          <sys/time.h> was standardized in POSIX.1-2001.  And well before that,
          4.3BSD-Reno already had <sys/time.h>, with the file first added in 1983
          (although 4.3BSD-Reno was released later in 1990).
        
          <https://www.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/src/sys/sys/time.h>
        
          Because every modern BSD is descendant of 4.3BSD-Reno, we know the file
          is present in every version of FreeBSD/NetBSD/OpenBSD.
        
          glibc also has the file since the very first commit.
          musl libc also has the file since the very first commit.
        
          I think we can assume the header exists in every Unix-like system.
        
          And checking gnulib documentation, it seems that the only platform that
          lacks this header file was MSVC 14.  Is mutt being built there?
          If not, we could maybe remove that check in master everywhere.

M	autocrypt/autocrypt.c
M	configure.ac
M	crypt-gpgme.c
M	crypt.c
M	curs_lib.c
M	hcache.c
M	mh.c
M	mutt_random.c
M	mutt_socket.c
M	pgp.c
M	smime.c

2026-04-21 20:36:01 +0800  Kevin J. McCarthy  <kevin@8t8.us> (7322de13)

        * Improve mutt's random data generator.
        
        Use getrandom() if available, or else arc4random_buf().  Only fall
        back to using the built-in PRNG if those aren't found on the system.
        
        For the sizes of data mutt typically requests, getrandom() should
        never fail, but nonetheless add code to make it retry on interrupt,
        and fall back to the built-in PRNG only if it has to.
        
        FreeBSD and OpenBSD have rewritten arc4random() to use ChaCha20, which
        should provide more than sufficient randomness.  The call has no
        return value and always succeeds, so there is no error handling
        written for it.
        
        Many thanks to Werner Koch, Greg KH, Alejandro Colomar, and Kurt
        Hackenberg for their feedback.
        
        Reviewed-by: Alejandro Colomar <alx@kernel.org>

M	configure.ac
M	mutt_random.c
M	mutt_random.h

2026-04-26 10:58:23 +0800  Kevin J. McCarthy  <kevin@8t8.us> (83ea9a8c)

        * Merge branch 'stable'

2026-04-23 11:21:39 +0800  Kevin J. McCarthy  <kevin@8t8.us> (e49e35b7)

        * Fix curses_message() to use muttdbg().
        
        In a3f0bcc7, the dprintf() was accidentally converted to deprintf().
        This is addding garbage errno information to the debug log for callers
        of mutt_error() and mutt_message() where the errno is not set, or is
        stale.

M	curs_lib.c

2026-04-16 13:54:44 +0800  Kevin J. McCarthy  <kevin@8t8.us> (0088587c)

        * Change query menu to return tagged entries on exit.
        
        Like other menus that allow tagging (for example, the attach-file
        menu), simply require "quit"'ing the menu to automatically select
        tagged entries.
        
        Previously, tagging entries in the query menu also required hitting
        enter to "select" an arbitrary (and ignored) entry, which is
        unintuitive if you've tagged entries.  Just hitting "quit" with tagged
        entries did not select them.
        
        With this change, you can tag one or more results, quit from the menu,
        and the selections are copied to the prompt.

M	query.c

2026-04-18 23:05:02 +0800  Kevin J. McCarthy  <kevin@8t8.us> (cde1fcfc)

        * Fix openssl cert name comparison.
        
        RFC 6125 section 6.4.4 says the client should not check the
        Common Name if the cert contains any DNS entries.
        
        Flag if a GEN_DNS entry is found, and if none of them match, abort the
        comparison.
        
        Thanks to evilrabbit@tutamail.com for the security report.
        
        Also thanks to Matthias Andree and Steffen Nurpmeso for confirming the
        new behavior.  In fact, RFC 9525 goes further and forbids use of cn,
        but I don't think Mutt is ready to make that big of a change just yet.

M	mutt_ssl.c

2026-04-21 10:06:06 +0800  Kevin J. McCarthy  <kevin@8t8.us> (cebf3dfb)

        * Merge branch 'stable'
        
        Adjusted patch due to code reformat in master branch.

2026-04-20 11:38:48 +0800  Kevin J. McCarthy  <kevin@8t8.us> (b91edfb8)

        * Merge branch 'stable'
        
        Adjust due to code reformatting done in master.

2026-04-20 11:27:49 +0800  Kevin J. McCarthy  <kevin@8t8.us> (3d0ca671)

        * Merge branch 'stable'
        
        Adjusted merge conflicts due to master branch code reformat.
        
        Adjusted dprint() invocation to muttdbg(), and removed the TODO comment.

2026-04-20 11:15:33 +0800  Kevin J. McCarthy  <kevin@8t8.us> (9832b61d)

        * Merge branch 'stable'
        
        Adjust for merge conflict due to code base reformatting in master.

2026-04-20 11:09:12 +0800  Kevin J. McCarthy  <kevin@8t8.us> (a74e7127)

        * Merge branch 'stable'

2026-04-13 23:49:54 +0200  Matthias Andree  <matthias.andree@gmx.de> (57a29d82)

        * Makefile.am: support VPATH build in shellcheck and tabcheck

M	Makefile.am

2026-04-14 14:37:32 +0800  Kevin J. McCarthy  <kevin@8t8.us> (63f6c7f1)

        * Fix 'make distcheck' issues.
        
        check_sec.sh doesn't have permissions to create the tempfiles, so
        specify -p /tmp to create them under /tmp.
        
        The manual.xml doesn't exist inside the dist build, so just add an
        existence -f check around it.

M	check_sec.sh
M	doc/Makefile.am

2026-04-14 09:30:32 +0800  Kevin J. McCarthy  <kevin@8t8.us> (6ae35029)

        * Change autoreconf params to -isvf.
        
        Thanks to Matthias Andree for the suggestion.

M	prepare

2026-04-14 09:21:12 +0800  Kevin J. McCarthy  <kevin@8t8.us> (b0757cda)

        * Gitignore gettextize installed files.

M	.gitignore

2026-04-14 09:17:17 +0800  Kevin J. McCarthy  <kevin@8t8.us> (a133b5a3)

        * Remove autoinstalled files by gettextize, declare gettext version.
        
        The gettext manual says, when not checking in the files, you can
        instead add AM_GNU_GETTEXT_VERSION to configure.ac.
        
        Thanks to Matthias Andree for the suggestion and version number.

D	ABOUT-NLS
D	config.rpath
M	configure.ac
D	m4/gettext.m4
D	m4/host-cpu-c-abi.m4
D	m4/iconv.m4
D	m4/intlmacosx.m4
D	m4/lib-ld.m4
D	m4/lib-link.m4
D	m4/lib-prefix.m4
D	m4/nls.m4
D	m4/po.m4
D	m4/progtest.m4
D	po/Makefile.in.in
D	po/Rules-quot
D	po/boldquot.sed
D	po/en@boldquot.header
D	po/en@quot.header
D	po/insert-header.sin
D	po/quot.sed
D	po/remove-potcdate.sin

2026-04-13 12:37:45 +0800  Kevin J. McCarthy  <kevin@8t8.us> (cc444522)

        * Fix AC_CHECK_HEADERS for term.h to look in ncurses directory.
        
        When ncurses headers are installed inside a subdirectory, the term.h
        file will be there too.

M	configure.ac
M	curs_ti_lib.c

2026-04-13 08:02:32 +0200  Rene Kita  <mail@rkta.de> (527d656d)

        * Use prepare script and show autoconf version in CI
        
        Make sure the prepare script is at least used once and show the used
        version to help debugging autoconf errors.

M	.builds/alpine.yml
M	.builds/archlinux.yml
M	.builds/debian.yml
M	.builds/freebsd.yml
M	.builds/openbsd.yml

2026-04-13 10:14:36 +0800  Kevin J. McCarthy  <kevin@8t8.us> (22a10cad)

        * Add documentation about compose attachment functions.
        
        Add <filter-entry> and <get-attachment> to the table of common
        functions in the Sending Mail section.
        
        Comment on <attach-file>, <detach-file>, <get-attachment>, and
        <filter-entry> below the table.  Note that mutt will always prompt to
        confirm before invoking the <filter-entry> program.

M	doc/manual.xml.head

2026-04-11 12:34:04 +0800  Kevin J. McCarthy  <kevin@8t8.us> (0b16b95d)

        * Add <filter-entry> to list of $wait_key functions.
        
        This function also respects $wait_key, in
        mutt_query_pipe_attachment() -> mutt_pipe_attachment().

M	init.h

2026-04-06 14:14:06 +0800  Kevin J. McCarthy  <kevin@8t8.us> (c5feb5f4)

