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)

        * Remove double newline between headers and multipart body.
        
        Many thanks to Matthijs Kooijman for the bug report, complete with a
        detailed explanation, pointers to the code causing the problem, and an
        anaylsis of the RFC in question.  He all but wrote the simple patch
        himself.
        
        I've added comments around the change, to hopefully make it clear why
        the change was made to long standing behavior in mutt.
        
        I've also separated out the one place in the code where it wasn't
        immediately obvious a header was being tied off with an extra newline,
        inside mutt_write_fcc().

M	sendlib.c

2026-04-07 20:59:22 +0800  Kevin J. McCarthy  <kevin@8t8.us> (97bee3cd)

        * Add Bcc to ~C and ~L pattern matching.
        
        The ~C is searching for "recipients" of a message.  Bcc searcing will
        only work in the $record folder, but should still be searched.
        
        Likewise for ~L, which searches both "sender" and "recipients".

M	doc/manual.xml.head
M	doc/muttrc.man.head
M	pattern.c

2026-03-30 15:02:04 +0800  Kevin J. McCarthy  <kevin@8t8.us> (9400bb00)

        * Fix S-Lang crashes on resize.
        
        Use the advice in the S-Lang docs: perform a SLtt_get_screen_size(),
        and then SLsmg_reinit_smg().  SLtt_get_screen_size() does more than
        just update SLtt_Screen_Rows/Cols, it also resizes internal buffers.
        
        I believe this is why the reset/init were crashing, because the
        reset/init (now subsumed by the call to reinit) were assuming the data
        structures were already resized.
        
        The docs also suggest calling SLsmg_reinit_smg() instead of separate
        SLsmg_reset_smg()  SLsmg_init_smg() calls, so also change that.

M	resize.c

2026-03-29 17:04:29 +0200  Rene Kita  <mail@rkta.de> (20a0ebfb)

        * Add more const correctness

M	crypt-gpgme.c
M	hcache.c
M	imap/imap.c
M	imap/imap_private.h
M	imap/util.c
M	sidebar.c

2026-03-29 12:07:39 +0200  Rene Kita  <mail@rkta.de> (832e07d2)

        * Remove unused macro
        
        Added in 739faa1e7 (add debug harness to lib.c functions, and a bunch of
        dprint's to safe_rename()., 2007-01-02) but never used in the code.

M	mutt.h

2026-03-29 12:07:38 +0200  Rene Kita  <mail@rkta.de> (57458406)

        * Fix redundant declarations on not-AIX systems

M	protos.h

2026-03-29 12:07:37 +0200  Rene Kita  <mail@rkta.de> (8f697ddc)

        * Fix redundant declaration with getopt.h

M	main.c
M	pgppubring.c

2026-03-29 12:07:36 +0200  Rene Kita  <mail@rkta.de> (d636b2f9)

        * Remove redundant declaration

M	mutt_menu.h
M	rfc822.h

2026-03-29 12:07:35 +0200  Rene Kita  <mail@rkta.de> (22f817cb)

        * Drop const where we cannot keep the promise

M	protos.h
M	sendlib.c

2026-03-29 12:07:34 +0200  Rene Kita  <mail@rkta.de> (fa53ce94)

        * Drop unnecessary casts

M	curs_lib.c

2026-03-29 12:07:33 +0200  Rene Kita  <mail@rkta.de> (1a67b039)

        * Fix const casts and use const where needed
        
        Found with -Wcast-qual.

M	addrbook.c
M	browser.c
M	hash.c
M	listmenu.c
M	pager.c
M	pgpkey.c
M	rfc3676.c
M	sort.c
M	thread.c

2026-03-29 12:07:32 +0200  Rene Kita  <mail@rkta.de> (fca49be7)

        * Remove dead code
        
        gettext.c removed in
        commit deadd27bd9766b316e696c225fd6f063f8cba432
        Author: Ralf Wildenhues <wildenhues@ins.uni-bonn.de>
        Date:   2006-08-31T23:32:18+00:00
        
            Remove superfluous empty file from CVS.

M	pgppubring.c

2026-03-29 09:59:59 +0200  Rene Kita  <mail@rkta.de> (ab8cf37f)

        * Additional fixes for: Formatting update: pointer types * placement.

M	mutt_ssl.c
M	mutt_zstrm.c

2026-03-28 13:25:08 +0800  Kevin J. McCarthy  <kevin@8t8.us> (f31b98e7)

