2025-10-02 13:18:22 +0800  Kevin McCarthy  <kevin@8t8.us> (b2db4087)

        * Update UPDATING file for 2.2.15 release.

M	UPDATING

2025-09-20 10:41:24 +0800  Kevin McCarthy  <kevin@8t8.us> (b363b602)

        * Add SMTP gsasl auth workaround for broken Microsoft servers.
        
        It appears some Microsoft servers append a non-BASE64 encoded response
        to what should be an empty challenge to the initial AUTH sent by the
        client.
        
        It's not RFC compliant, so gsasl rightly rejects the response.
        However, this doesn't help poor mutt users to authenticate.
        
        To work around this, check the response for the initial reply only,
        and if it's not BASE64 decodable, just drop the response.  It is
        mostly likely meaningless, and would have resulted in the AUTH failing
        regardless.
        
        Thanks to Frank Reker for the bug report and proposed patch, which
        this is based upon.

M	smtp.c

2025-08-26 13:30:32 +0800  Kevin McCarthy  <kevin@8t8.us> (b4771a9d)

        * Add documentation about <buffy-cycle> and its keybinding.
        
        Add a subsection to the "Editing Input Fields" section of the manual,
        explaining about the <buffy-cycle> function, and when it is used.
        
        Also, add an explanation for a previously undocumented behavior: in
        other filename and mailbox prompts, typing the <buffy-cycle> key
        binding falls back and invokes the <complete> function.
        
        Mention the <quote-char> function, as a useful way to enter a literal
        space, instead of invoking <buffy-cycle> or <complete> when typing
        space.

M	doc/manual.xml.head

2025-08-26 10:32:22 +0800  Kevin McCarthy  <kevin@8t8.us> (467e919f)

        * Fix isdigit() argument to unsigned char in pager is_ansi() call.
        
        In a refactor, in commit 0ac6b609cd9e4588f00221b5c66e0fd5f584da88 a
        few years ago, I inadvertantly changed the type of the is_ansi()
        parameter, and thus changed the isdigit() argument to char.
        
        This is not allowed, and needs to be cast to (unsigned char) for
        correct behavior on some platforms.
        
        Thanks to Thomas Klausner (@_wiz_) for pointing out the bug and for
        the patch.

M	pager.c

2025-05-03 19:24:57 +0800  Kevin McCarthy  <kevin@8t8.us> (47ed1d21)

        * Fix .builds files to reference new srht repository.

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

2025-05-03 19:06:44 +0800  Kevin McCarthy  <kevin@8t8.us> (42d9a016)

        * Improve the my_hdr documentation.
        
        Try to make it clearer that it can only be used for custom header
        fields and a certain set of standard header fields.

M	doc/manual.xml.head

2025-04-26 11:42:21 +0800  Kevin McCarthy  <kevin@8t8.us> (61a66d03)

        * Remove deprecated AC_PROG_CC_C99 call.
        
        The test and setting of $ac_cv_prog_cc_c99 is done by AC_PROG_CC now.

M	configure.ac

2025-03-13 15:28:55 +0800  Kevin McCarthy  <kevin@8t8.us> (dacd6a50)

        * Fix interleaved search/limit for IMAP mailboxes.
        
        mutt_search_command() and mutt_pattern_func() both invoke
        imap_search() for IMAP mailboxes.  Additionally, mutt_search_command()
        uses the header->searched flag to cache search results for faster
        repeated matching.
        
        Interleaving a search, followed by a limit, followed by another search
        (with the exact same pattern) did not invalidate the previous search.
        The limit imap_search() cleared all the match flags, and set them to
        the results of the limit imap_search().  The second search for the
        same pattern tried to use the matched flag for headers with cached
        results, resulting in incorrect search results.
        
        Many thanks to Mikhail (@MikZyth) for the very detailed bug report,
        allowing me to easily track down the bug.

M	imap/imap.c

2025-02-20 10:58:56 +0800  Kevin McCarthy  <kevin@8t8.us> (516568dc)

        * automatic post-release commit for mutt-2.2.14

M	ChangeLog
M	VERSION

2025-02-20 10:20:51 +0800  Kevin McCarthy  <kevin@8t8.us> (59908c2b)

        * Update UPDATING file for 2.2.14 release.

M	UPDATING

2025-02-08 11:20:38 +0800  Kevin McCarthy  <kevin@8t8.us> (aa1bc169)

        * Update copyrights to 2025.

M	COPYRIGHT
M	doc/manual.xml.head
M	doc/mutt.man
M	main.c
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

2025-02-05 18:09:37 +0800  Kevin McCarthy  <kevin@8t8.us> (0ac64bf3)

        * Fix NULL pointer dereference when calling imap_logout_all().
        
        When idata->status is set to IMAP_FATAL, it signals the connection is
        in an unusable state that can't be resolved.  While doing cleanup,
        imap_close_mailbox() will leave the idata->state unchanged, and will
        set idata->ctx to NULL.
        
        So this could result in a situation where
          idata->status == IMAP_FATAL
          idata->state == IMAP_SELECTED
          idata->ctx == NULL.
        
        Normally when idata->state == IMAP_SELECTED (or higher), Mutt assumes
        a mailbox is selected and the ctx should be set to the open mailbox
        CONTEXT.  However, when the status is IMAP_FATAL, mutt aborts trying
        to do anything with that connection.  So there is no issue.
        
        When exiting mutt, imap_logout_all() is called, which loops through
        any unclosed connections and calls imap_logout() for each.
        Unfortunately, imap_logout() was overwriting idata->status to IMAP_BYE
        without checking if it was previously set to IMAP_FATAL, and then
        sending a "LOGOUT" commmand.
        
        This could result in
          idata->status == IMAP_BYE
          idata->state == IMAP_SELECTED
          idata->ctx == NULL
        in which case the IMAP code assumes a ctx will be present, because status
        is no longer set to IMAP_FATAL.
        
        This commit checks for an existing IMAP_FATAL status, and skips
        trying to reset the status and send "LOGOUT" in that case.
        
        Many thanks to Roberto Ricci for reporting the bug along with a stack
        trace, and working with me as I slowly found the problem.

M	imap/imap.c

2024-11-29 11:40:05 +0800  Kevin McCarthy  <kevin@8t8.us> (cba1fc27)

        * Remove "." from MimeSpecials (RFC2045 tspecials).
        
        RFC2045 declares tspecials to not include a period.  So encoding it
        inside 2231 parameter values, or adding double quotes to MIME
        parameter values (such as in Content-Type and Content-Disposition)
        because of the presence of a period, while not illegal, is
        unnecessary.
        
        Ticket 491 reported a case where some Android clients were not
        decoding the "." in an attachment filename extension for some unknown
        reason.  While this is clearly a bug in the Android client, it's also
        true that the period need not have been encoded in the first place.
        
        However, "." couldn't simply be removed from MIMESpecials, because it
        was also used for RFC2047 encoding.  RFC2047 encoded-words are used in
        non-MIME headers, and cannot be double quoted.
        
        Create a third "specials" list, RFC2047Specials, adding back in the
        ".", to keep RFC2047 encoding the same as it was.  Add a comment as to
        why it exists, to prevent someone from making the unfortunate mistake
        of thinking it can just be changed back to use MIMESpecials.
        
        Thanks to Peter Seiderer for reporting the issue and suggesting a fix,
        which this patch is based upon.

M	rfc2047.c
M	sendlib.c

2024-10-29 13:15:12 +0800  Kevin McCarthy  <kevin@8t8.us> (a5bd9821)

        * Fix configure.ac AM_ICONV result checking.
        
        --disable-iconv seeds the cache value variable, $am_cv_func_iconv, to
        "no" to skip the test and disable iconv.
        
        However, the result of an existing and *working* AM_ICONV test is
        stored in $am_func_iconv.  The call to AC_DEFINE(HAVE_ICONV) depends
        on that variable.
        
        Mutt was improperly checking $am_cv_func_iconv below.
        
        In the event of an existing but broken iconv, this would result in
        HAVE_ICONV being undefined, but mutt_idna.o being added to
        MUTT_LIB_OBJECTS.  This would cause both the stub functions in
        mutt_idna.h and the full functions in mutt_idna.c to be defined,
        giving a compilation error.
        
        Thanks to @juanitotc for the bug report and helping to test the fix.

M	configure.ac

2024-04-19 22:30:54 +0200  Alejandro Colomar  <alx@kernel.org> (0af8a6fc)

        * crypt-gpgme.c: Fix NULL dereference
        
        Fixes: 1afaa74a19ee ("gpgme integration.  See documentation for $crypt_use_gpgme, and http://www.gnupg.org/aegypten2/.")

M	crypt-gpgme.c

2024-04-13 13:22:11 +0800  Kevin McCarthy  <kevin@8t8.us> (0d75d71a)

        * Add $smime_pkcs7_default_smime_type config option.
        
        This works around Outlook sending application/pkcs7-mime ".p7m" parts
        without a smime-type parameter.
        
        Mutt previously hardcoded an assumption that these were SignedData to
        work around an old Outlook book.  However Outlook now appears to also
        send EnvelopedData in this form.

M	contrib/smime.rc
M	crypt.c
M	globals.h
M	init.h

2024-03-09 18:29:03 +0800  Kevin McCarthy  <kevin@8t8.us> (00d56288)

        * automatic post-release commit for mutt-2.2.13

M	ChangeLog
M	VERSION

2024-03-09 18:24:58 +0800  Kevin McCarthy  <kevin@8t8.us> (ceecc40b)

        * Update UPDATING file for 2.2.13 release.

M	UPDATING

2024-03-09 18:01:11 +0800  Kevin McCarthy  <kevin@8t8.us> (9b967f07)

        * Fix smtp client to respect $use_envelope_from option.
        
        The code was only looking to see if $envelope_from_address had a
        value, not if $use_envelope_from was set.
        
        Add extra safety checks to make sure the mailbox value isn't NULL.

M	smtp.c

2024-03-09 17:54:34 +0800  Kevin McCarthy  <kevin@8t8.us> (039cc521)

        * Fix smtp client $envelope_from_address possible dangling pointer.
        
        If the account-hook invoked by mutt_conn_find() modifies
        $envelope_from_address, envfrom could point no longer point to the
        address.
        
        Move the mutt_conn_find() before the code that determines the envelope
        from address.

M	smtp.c

2023-09-09 14:45:24 +0800  Kevin McCarthy  <kevin@8t8.us> (0a81a2a7)

        * automatic post-release commit for mutt-2.2.12

M	ChangeLog
M	VERSION

2023-09-09 14:42:14 +0800  Kevin McCarthy  <kevin@8t8.us> (6a155b49)

        * Update UPDATING file for 2.2.12 release.

M	UPDATING

2023-09-03 14:11:48 +0800  Kevin McCarthy  <kevin@8t8.us> (a4752eb0)

        * Fix write_one_header() illegal header check.
        
        This is another crash caused by the rfc2047 decoding bug fixed in the
        second prior commit.
        
        In this case, an empty header line followed by a header line starting
        with ":", would result in t==end.
        
        The mutt_substrdup() further below would go very badly at that point,
        with t >= end+1.  This could result in either a memcpy onto NULL or a
        huge malloc call.
        
        Thanks to Chenyuan Mi (@morningbread) for giving a working example
        draft message of the rfc2047 decoding flaw.  This allowed me, with
        further testing, to discover this additional crash bug.

M	sendlib.c

2023-09-04 12:50:07 +0800  Kevin McCarthy  <kevin@8t8.us> (4cc3128a)

        * Check for NULL userhdrs.
        
        When composing an email, miscellaneous extra headers are stored in a
        userhdrs list.  Mutt first checks to ensure each header contains at
        least a colon character, passes the entire userhdr field (name, colon,
        and body) to the rfc2047 decoder, and safe_strdup()'s the result on
        the userhdrs list.  An empty result would from the decode would result
        in a NULL headers being added to list.
        
        The previous commit removed the possibility of the decoded header
        field being empty, but it's prudent to add a check to the strchr
        calls, in case there is another unexpected bug resulting in one.
        
        Thanks to Chenyuan Mi (@morningbread) for discovering the two strchr
        crashes, giving a working example draft message, and providing the
        stack traces for the two NULL derefences.

M	sendlib.c

2023-09-03 12:22:01 +0800  Kevin McCarthy  <kevin@8t8.us> (452ee330)

        * Fix rfc2047 base64 decoding to abort on illegal characters.
        
        For some reason, the rfc2047 base64 decoder ignored illegal
        characters, instead of aborting.  This seems innocuous, but in fact
        leads to at least three crash-bugs elsewhere in Mutt.
        
        These stem from Mutt, in some cases, passing an entire header
        field (name, colon, and body) to the rfc2047 decoder.  (It is
        technically incorrect to do so, by the way, but is beyond scope for
        these fixes in stable).  Mutt then assumes the result can't be empty
        because of a previous check that the header contains at least a colon.
        
        This commit takes care of the source of the crashes, by aborting the
        rfc2047 decode.  The following two commits add protective fixes to the
        specific crash points.
        
        Thanks to Chenyuan Mi (@morningbread) for discovering the strchr
        crashes, giving a working example draft message, and providing the
        stack traces for the two NULL derefences.

M	rfc2047.c

2023-08-23 15:40:19 +0800  Kevin McCarthy  <kevin@8t8.us> (7eb9c18f)

        * Add a documentation note that aliases are case insensitive.
        
        It's very old behavior, but doesn't seem to be documented anywhere.
        
        Thanks to Charles for pointing that out.

M	doc/manual.xml.head

2023-08-18 11:17:23 +0800  Kevin McCarthy  <kevin@8t8.us> (6b538297)

        * automatic post-release commit for mutt-2.2.11

M	ChangeLog
M	VERSION

2023-08-18 11:07:42 +0800  Kevin McCarthy  <kevin@8t8.us> (d619496e)

        * Update UPDATING file for 2.2.11 release.

M	UPDATING

2023-08-15 12:34:05 +0800  Kevin McCarthy  <kevin@8t8.us> (d52c6115)

        * Fix GPGME build failure on MacOS.
        
        Commit 012981e8 (in release 2.2.9) updated the GPGME autoconf files,
        to fix a build issue with newer GPGME releases.
        
        Unfortunatley that caused a build issue for hosts where the gpg-error
        header files aren't in the include path.  The newer autoconf file
        expect GPG_ERROR_CFLAGS to be added to the list of flags for the
        compiler.
        
        Thanks to Will Yardley for reporting the issue and quickly testing the
        proposed fix.

M	Makefile.am

2023-06-05 18:53:55 +0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp> (a5423c40)

        * Updated Japanese translation.

M	po/ja.po

2023-04-14 15:57:07 -0700  Kevin McCarthy  <kevin@8t8.us> (50954c4a)

        * Fix <collapse-all> behavior for sort=reverse-threads.
        
        When uncollapsing, _mutt_traverse_thread() returns the virtual number
        of the root message in the thread.  <collapse-thread> directly sets
        menu->current to this value to cause the cursor to be on the *first*
        message of the thread (which isn't the same as the root message when
        sort=reverse-threads).  <collapse-all> finds the corresponding message
        by searching for it after re-indexing.
        
        However, when collapsing, _mutt_traverse_thread() had code to try and
        find the *first* message in the thread and return that virtual number.
        <collapse-thread> then did the same trick, because the old first
        message is now the new root message for sort=reverse-threads.
        
        However, that cleverness caused a bug for <collapse-all> - it can't
        use that virtual number directly, and it can't "find" the message at
        the index after reindexing.
        
        To fix this, remove the cleverness from _mutt_traverse_thread() when
        collapsing.  Return the virtual number of the root.  Add searching
        behavior for <collapse-thread> to fix its behavior.

M	curs_main.c
M	thread.c

2023-03-25 13:07:19 -0700  Kevin McCarthy  <kevin@8t8.us> (e0e92c31)

        * automatic post-release commit for mutt-2.2.10

M	ChangeLog
M	VERSION

2023-03-25 13:03:39 -0700  Kevin McCarthy  <kevin@8t8.us> (9138232d)

        * Update UPDATING files for 2.2.10 release.

M	UPDATING

2023-03-13 18:24:31 -0700  Kevin McCarthy  <kevin@8t8.us> (33f8b7ce)

        * Update copyright notices.
        
        This is generated from the copyright-updater script, with manual
        updates for the main.c and documentation, and po files.

M	COPYRIGHT
M	background.c
M	buffy.c
M	doc/manual.xml.head
M	doc/mutt.man
M	main.c
M	mutt_sasl_gnu.c
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
M	sidebar.c

2022-11-12 10:02:01 -0800  Kevin McCarthy  <kevin@8t8.us> (9f01d4ab)

        * Abort imap_fast_trash() if previously checkpointed.
        
        We don't want to copy the deleted flag over to the trash folder too.
        
        I looked into various ways to keep the UID COPY, but they lead to
        niggling issues with error handling along with handling if the server
        sends flag updates back to the client.
        
        So for that (hopefully rare) case, abort the fast trash and just use a
        regular copy.

M	imap/imap.c

2023-03-06 18:55:06 -0800  Kevin McCarthy  <kevin@8t8.us> (216dd145)

        * Improve smtp oauth authentication.
        
        Split XOAUTH2 to use two steps.
        
        This follows the microsoft.com documentation example for smtp.  Since
        office365 is the main site using XOAUTH2 now, it's better to match
        their documentation.
        
        It also matches msmtp's behavior, which probably means somewhere or
        another needs it that way.
        
        At the same time, improve response code checking.  Mutt was using
        smtp_get_resp() before, which returns 0 for both a ready and success
        response code.  Make sure it's a success response code when done
        authenticating.

M	smtp.c

2023-03-04 18:33:35 +0100  Sebastian Andrzej Siewior  <sebastian@breakpoint.cc> (5df86199)

        * Use base64 URL safe alphabet for message id generation.
        
        The character '/' from base64 alphabet breaks web redirectors if the
        message-id from an email is used as part of the URL for redirectors and/
        or automatic pointers to an email.
        
        Use the URL safe alphabet from RFC4648 section 5 for message id
        generation.
        
        Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>

M	base64.c
M	messageid.c
M	mime.h
M	protos.h
M	sendlib.c

2023-03-04 18:33:34 +0100  Sebastian Andrzej Siewior  <sebastian@breakpoint.cc> (cecddeac)

        * base64val: Add support to decode base64 safe URL.
        
        In the base64 safe URL dictionary the characters '+' and '/' are
        replaced by '-' and '_'.
        Add the characters to Index_64 to allow decoding if needed.
        
        Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>

M	handler.c

2022-12-19 18:53:43 -0800  Cline, Wade  <wade.cline@intel.com> (7c4fa478)

        * mutt_oauth2: Print access token request message
        
        There are cases when using the 'authcode' grant where the authorization
        request will succeed but the access token request will fail (for
        example: if the user's web browser and terminal use different proxy
        settings).  The current implementation of the script does not inform
        the user that the authorization token is being exchanged for an access
        code, with the result that it can appear that a request has both
        succeeded (according to the browser) and failed (according to the
        terminal output) simultaneously.  Add a message to inform the user that
        a second request is being made so there is less potential for confusion.

M	contrib/mutt_oauth2.py

2022-12-12 15:05:18 -0800  Kevin McCarthy  <kevin@8t8.us> (16d8ad64)

        * Move MuttLisp boolean config note.
        
        I think it probably makes more sense to be inside the (if) function
        documentation than (equal).

M	doc/manual.xml.head

2022-12-07 15:51:36 -0800  Kevin McCarthy  <kevin@8t8.us> (ef2abed2)

        * Fix counters for external maildir 'T' flag changes.
        
        The maildir_check_mailbox() code was not updating the context deleted
        and trashed counts in those cases.  This could lead to messages marked
        as deleted, but no action being taken on a mailbox sync/close.
        
        wip: fix ctx counts for maildir 'T' flags updates.

M	mh.c

2022-12-07 12:58:40 -0800  Kevin McCarthy  <kevin@8t8.us> (d0faf2d4)

        * Remove reference to $mark_old inside $mail_check_recent.
        
        There doesn't appear to be any relationship between $mark_old and "new
        mail" status any more.
        
        Commit c26c2531 (from 2002) is the most recent commit that talked
        about reducing the meaning of $mark_old, and may have been the commit
        to make that separation.

M	init.h

2022-12-07 12:53:51 -0800  Kevin McCarthy  <kevin@8t8.us> (ba5e0dc2)

        * Add doc note to MuttLisp about boolean config vars.
        
        They evaluate to "yes" and "no", and so need an explicit comparison to
        those values when using the equal function.

M	doc/manual.xml.head

2022-11-19 13:20:25 -0800  Kevin McCarthy  <kevin@8t8.us> (2f35d2fd)

        * Reset header color after mutt_set_flag().
        
        I partially changed this to lazily update after a thread update in
        commit c9fa0414, but unfortunately didn't investigate the reason for
        the color update while setting a flag.  Since it was that way, I
        assumed it was for a purpose.
        
        However, it turns out there is no need to actively set the header
        color in that function.  Many places in Mutt already simply reset the
        color values to 0 to invalidate and cause a recheck later.
        
        Setting the color there so can even be detrimental, if the user has
        slow 'color index' lines.  For example doing a <tag-pattern>~A will
        cause the color to be computed for the *entire* mailbox.  Now, the
        user ought to not have a slow color index line, but if they do, this
        causes unnecessary pain.
        
        Note that the header->color doesn't have an actual "unset" value,
        which could also help performance.  Maybe in the future in master
        branch.

M	flags.c
M	mutt.h
M	protos.h
M	score.c

2020-04-26 10:43:24 -0700  Kevin McCarthy  <kevin@8t8.us> (a60b22fe)

        * Filter U+200C in pager.
        
        "U+200C ZERO WIDTH NON-JOINER" is generating '?' on some systems.

M	pager.c

2022-11-12 12:50:23 -0800  Kevin McCarthy  <kevin@8t8.us> (00093fd7)

        * automatic post-release commit for mutt-2.2.9

M	ChangeLog
M	VERSION

2022-11-12 12:44:13 -0800  Kevin McCarthy  <kevin@8t8.us> (b40c28ce)

        * Update UPDATING file for 2.2.9.

M	UPDATING

2022-11-12 12:39:11 -0800  Kevin McCarthy  <kevin@8t8.us> (a5296bcd)

        * Document the <1234> key syntax for bind.
        
        This is useful for octal values of greater (or less) than three
        digits.

M	doc/manual.xml.head

2022-11-06 19:19:40 -0800  Kevin McCarthy  <kevin@8t8.us> (3c0f8597)

        * Fix non-printable keyname printing to use <octal> syntax.
        
        The IsPrint() was grabbing values outside the range of a char.
        Instead, restrict the range and fall back to the <octal> syntax, which
        the muttrc actually accepts.

M	keymap.c

2022-11-07 14:32:59 -0800  Kevin McCarthy  <kevin@8t8.us> (52753702)

        * Move AM_PATH_GPG_ERROR before AM_PATH_GPGME.
        
        The former sets $GPGRT_CONFIG which the latter needs to find and use
        gpgrt-config instead of gpgme-config.

M	configure.ac

2022-11-07 09:01:58 -0800  Kevin McCarthy  <kevin@8t8.us> (012981e8)

        * Update gpgme autoconf files to the latest versions.
        
        GPGME is transitioning away from gpgme-config, to gpgrt-config, and
        the new autoconf files are required to make the transition.
        
        Thanks to Vincent Lefèvre for reporting the problem and helping test
        the required fixes.

M	m4/gpg-error.m4
M	m4/gpgme.m4

2022-11-06 08:48:32 -0800  Kevin McCarthy  <kevin@8t8.us> (80e79060)

        * Adjust manual concerning IMAP Fcc in batch mode.
        
        Remove the sentence saying it isn't supported from the Batch
        Composition Flow section of the manual.

M	doc/manual.xml.head

2022-11-05 13:14:09 -0700  Kevin McCarthy  <kevin@8t8.us> (57e3de6d)

        * automatic post-release commit for mutt-2.2.8

M	ChangeLog
M	VERSION

2022-11-05 12:37:33 -0700  Kevin McCarthy  <kevin@8t8.us> (44b9bd4f)

        * Update UPDATING file for 2.2.8 release.

M	UPDATING

2022-11-04 13:18:51 -0700  Kevin McCarthy  <kevin@8t8.us> (db16ce47)

        * Add explicit void to 0-parameter function definitions.
        
        These are the errors output with:
          -Werror=implicit-int -Werror=implicit-function-declaration
          -Werror=int-conversion -Werror=strict-prototypes
          -Werror=old-style-definition

M	autocrypt/autocrypt_acct_menu.c
M	background.c
M	charset.c
M	curs_lib.c
M	menu.c
M	monitor.c
M	pattern.c

2022-11-03 14:01:12 -0700  Kevin McCarthy  <kevin@8t8.us> (0838a8f4)

        * Clarify $uncollapse_new documentation.
        
        Indicate more clearly it is talking about "delivered" messages that
        arrive in a thread, not about the unread-status of those messages.

M	init.h

2022-11-01 20:22:06 -0700  Kevin McCarthy  <kevin@8t8.us> (b254f2fb)

        * Add a check for key->uids in create_recipient_set.
        
        For gpgme < 1.11.0, it used this function to create the encryption key
        list.  The '!' was interpreted differently back then, and it
        apparently didn't check if the returned key had any uids before
        referencing it.  Add a check to prevent a segv as in the public key
        block fix.

M	crypt-gpgme.c

2022-10-31 15:06:51 -0700  Kevin McCarthy  <kevin@8t8.us> (f0eb3586)

        * Fix public key block listing for old versions of gpgme.
        
        Commit 382355a5 accidentally removed the data import for legacy mode,
        which would cause it to produce empty output.

M	crypt-gpgme.c

2022-10-31 15:02:57 -0700  Kevin McCarthy  <kevin@8t8.us> (48b6ea32)

        * Fix gpgme crash when listing keys in a public key block.
        
        The gpgme code handling classic application/pgp assumed each key would
        have a uid.  Change it to check for a missing uid list.
        
        Also change it to list every uid (instead of only the first), and to
        put each one on a "uid" line in the output.
        
        The output is only for display, so the format change won't affect
        other parts of the code.
        
        Thanks to Mikko Lehto for the high quality bug report, detailing the
        exact place of the crash with a reproducing example and a workaround
        patch.

M	crypt-gpgme.c

2022-10-13 13:25:51 -0700  Kevin McCarthy  <kevin@8t8.us> (25b69530)

        * Allow Fcc'ing to IMAP in batch mode.
        
        There are some prompts that can cause it to abruptly fail, but it
        turns out SMTP has some of those too.
        
        For now, abort if $confirmcreate is set.
        
        Certificate prompts were fixed in commit c46db2be for 2.2.7.

M	imap/imap.c
M	send.c

2022-10-13 13:18:55 -0700  Kevin McCarthy  <kevin@8t8.us> (a1c86bd2)

        * Add fcc error handling in batch mode.
        
        If $fcc_before_send is set, then abort with an error message.
        
        If it's not set (the default), then continue on, as the message is
        already sent.

M	send.c

2022-10-09 11:13:15 -0700  Kevin McCarthy  <kevin@8t8.us> (9cfa36ea)

        * Fix scrolling when handling SIGWINCH in the index.
        
        The index had some (very very old) code which reset the scroll top
        during SIGWINCH handling.  This caused a recomputation of the top,
        which caused the index to jumble around randomly during resizing.
        
        The last few commits added SigWinch flag setting whenever
        mutt_endwin() was called, which meant this jumbling would occur much
        more often.  (For example when piping a message.)
        
        After looking more closely, this top reset seems to be unnecessary.  A
        full redraw needs to properly handle the case where "current" is
        outside the visible range, because a resize could occur in a called
        menu.  Additionally, the menu.c code does just fine without this, and
        is used for all the other standard menus in Mutt.
        
        Thanks to Vincent Lefèvre for helping test the SigWinch changes, and
        reporting this regression.

M	curs_main.c

2022-10-08 13:47:15 -0700  Kevin McCarthy  <kevin@8t8.us> (082ed14e)

        * Explicitly mention --with-sqlite3 in the INSTALL file.

M	INSTALL

2022-09-23 13:05:59 +0800  Kevin McCarthy  <kevin@8t8.us> (5649e381)

        * Set the curses resize policy to use tioctl()
        
        mutt_resize_screen() calls mutt_reflow_windows(), which records window
        sizes in those data structures.  After a endwin(), curses will also
        check the terminal size, but it if uses a different policy than Mutt,
        the screen will be drawn incorrectly.
        
        I looked into adding a config option to change this, but ran into a
        chicken-egg problem.  initscr() must be called before the config is
        processed, to allow for color setting.  However, use_env() must be
        called before initscr().  So for now, just set to policy to ignore the
        env vars, except as a fallback.

M	configure.ac
M	main.c

2022-09-21 13:03:22 +0800  Kevin McCarthy  <kevin@8t8.us> (fede64d0)

        * Remove unneeded calls in mutt_edit_file().
        
        The mutt_resize_screen() is no longer needed now that mutt_endwin()
        sets SigWinch.
        
        The keypad() and clearok() calls are generally only needed if a
        program takes over the screen unexpectedly (without Mutt having run
        endwin()).

M	curs_lib.c

2022-09-21 13:02:40 +0800  Kevin McCarthy  <kevin@8t8.us> (9fb2755d)

        * Change a few cases of endwin() to call mutt_endwin().
        
        The remaining cases in the Mutt code are special cases, but these two
        should be fixed.  This ensures SigWinch is set.

M	commands.c
M	compress.c

2022-09-21 13:00:44 +0800  Kevin McCarthy  <kevin@8t8.us> (619db54f)

        * Add SigWinch = 1 to mutt_endwin().
        
        Since mutt_reflow_window() needs to be called on a resize, and it's
        possible for programs to block SIGWINCH being sent to Mutt, this is a
        fail-safe to ensure it's run.
        
        The previous commit moved SigWinch handling before refresh() in the
        menus, which should prevent double-refresh issues.

M	curs_lib.c

2022-09-19 18:41:48 +0800  Kevin McCarthy  <kevin@8t8.us> (925a2927)

        * Move SigWinch handling before refresh in menus.
        
        This will prevent an unneeded double-refresh after an endwin() when we
        set SigWinch in the next commit.
        
        In the pager, change RETWINCH handling to account for a sigwinch while
        in the handler.  Previously a redraw would occur and use/free the
        Resize data, but since the SigWinch check now occurs before the
        redraw, keep existing data.

M	curs_main.c
M	menu.c
M	pager.c

2022-08-30 15:31:24 -0700  Kevin McCarthy  <kevin@8t8.us> (e43a42bf)

        * Ensure pop_data is freed for mailbox and fetch-mail usage.
        
        <fetch-mail> was only free'ing the container and not the auth_list or
        timestamp used in authentication.
        
        Mailbox usage was never free'ing the pop_data object.
        
        Create a pop_free_pop_data() helper and use that in <fetch-mail>
        usage where the pop_data was being free'd before.
        
        Since the pop code always allocates and assigns a new pop_data object
        after each mutt_conn_find(), add a call to pop_close_mailbox() too.
        
        Just to make sure, reset connection->data before free'ing the pop_data
        in each case.

M	pop.c

2022-08-25 13:23:43 -0700  Kevin McCarthy  <kevin@8t8.us> (c46db2be)

        * Add error handling for cert prompts in batch mode.
        
        It looks like there are no batch mode checks before trying to throw up
        a curses menu for certificate prompts.
        
        This currently affects SMTP, and I guess either hasn't been an issue
        or people just learned to work around it.
        
        Mutt has no great way to deal with this, so at least for now display
        an error and abort verification gracefully as opposed to whatever was
        happening before (which could not have been pretty).
        
        Alas, this breaks my rule of adding translation strings in stable, but
        I couldn't find another appropriate string.

M	mutt_ssl.c
M	mutt_ssl_gnutls.c

2022-08-22 09:24:19 -0700  Ivan Vilata i Balaguer  <ivan@selidor.net> (56f1d398)

        * Updated Catalan translation.

M	po/ca.po

2022-08-07 10:20:17 -0700  Kevin McCarthy  <kevin@8t8.us> (4927240d)

        * automatic post-release commit for mutt-2.2.7

M	ChangeLog
