+Emacs
+-----
+
+`notmuch` no longer sets `mail-user-agent` on load. To restore the
+previous behaviour of using notmuch to send mail by default, customize
+`mail-user-agent` to `notmuch-user-agent`.
+
+Vim
+---
+
+Respect excluded tags when showing a thread.
+
+Notmuch 0.32.1 (2021-05-15)
+===========================
+
+General
+-------
+
+Restore handling of relative values for `database.path` that was
+broken by 0.32. Extend this handling to `database.mail_root`,
+`database.backup_dir`, and `database.hook_dir`.
+
+Reload certain metadata from Xapian database in
+notmuch_database_reopen. This fixes a bug when adding messages to the
+database in a pre-new hook.
+
+Fix default of `$HOME/mail` for `database.path`. In release 0.32, this
+default worked only in "notmuch config".
+
+Emacs
+-----
+
+Restore the dynamically bound variables `tag-changes` and `query` in
+in `notmuch-before-tag-hook` and `notmuch-after-tag-hook`.
+
+Notmuch 0.32 (2021-05-02)
+=========================
+
+General
+-------
+
+This release includes a significant overhaul of the configuration
+management facilities for notmuch. The previous distinction between
+configuration items that can be modified via plain text configuration
+files and those that must be set in the database via the "notmuch
+config" subcommand is gone, and all configuration items can be set in
+both ways. The external configuration file overrides configuration
+items in the database. The location of database, hooks, and
+configuration files is now more flexible, with several new
+configuration variables. In particular XDG locations are now supported
+as fallbacks for database, configuration and hooks. For more
+information see `notmuch-config(1)`.
+
+Library
+-------
+
+To support the new configuration facilities, several functions and
+constants have been added to the notmuch API. Most notably:
+
+- `notmuch_database_create_with_config`
+- `notmuch_database_open_with_config`
+- `notmuch_database_load_config`
+- `notmuch_config_get`
+
+A previously requested API change is that `notmuch_database_reopen` is
+now exposed (and generalized).
+
+The previously severe slowdowns from large numbers calls to
+notmuch_database_remove_message or notmuch_message_delete in one
+session has been fixed.
+
+As always, the canonical source of API documentation is
+`lib/notmuch.h`, or the doxygen formatted documentation in `notmuch(3)`
+
+CLI
+---
+
+The `notmuch config set` subcommand gained a `--database` argument to
+specify that the database should be updated, rather than a config file.
+
+The speed of `notmuch new` and `notmuch reindex` in dealing with large
+numbers of mail file deletions is significantly improved.
+
+Emacs
+-----
+
+Completion related updates include: de-duplicating tags offered for
+completion, use the actual initial input in address completion, allow
+users to opt out of notmuch address completion, and do not force Ido
+when prompting for senders.
+
+Some keymaps used to contain bindings for unnamed commands. These
+lambda expressions have been replaced by named commands (symbols), to
+ease customization.
+
+Lexical binding is now used in all notmuch-emacs libraries.
+
+Fix bug in calling `notmuch-mua-mail` with a non-nil RETURN-ACTION.
+
+Removed, inlined or renamed functions and variables:
+ `notmuch-address-locate-command`,
+ `notmuch-documentation-first-line`, `notmuch-folder`,
+ `notmuch-hello-trim', `notmuch-hello-versions` => `notmuch-version`,
+ `notmuch-remove-if-not`, `notmuch-search-disjunctive-regexp`,
+ `notmuch-sexp-eof`, `notmuch-split-content-type`, and
+ `notmuch-tree-button-activate`.
+
+Keymaps are no longer fset, which means they need to be referred to in
+define-key directly (without quotes). If your Emacs configuration has a
+keybinding like:
+ (define-key 'notmuch-show-mode-map "7" 'foo)
+you should change it to:
+ (define-key notmuch-show-mode-map "7" 'foo)
+
+Notmuch 0.31.4 (2021-02-18)
+===========================
+
+Library
+-------
+
+Fix include bug triggered by glib 2.67.
+
+Test
+----
+
+Fix race condition in T568-lib-thread.
+
+Notmuch 0.31.3 (2020-12-25)
+===========================
+
+Bindings
+--------
+
+Fix for exclude tags in notmuch2 bindings.
+
+Build
+-----
+
+Portability update for T360-symbol-hiding
+
+Library
+-------
+
+Fix for memory error in notmuch_database_get_config_list
+
+Notmuch 0.31.2 (2020-11-08)
+===========================
+
+Build
+-----
+
+Catch one more occurence of "version" in the build system, which
+caused the file to be regenerated in the release tarball.
+
+Notmuch 0.31.1 (2020-11-08)
+===========================
+
+Library
+-------
+
+Fix a memory initialization bug in notmuch_database_get_config_list.
+
+Build
+-----
+
+Rename file 'version' to 'version.txt'. The old file name conflicted
+with a C++ header for some compilers.
+
+Replace use of coreutils `realpath` in configure.
+
+Notmuch 0.31 (2020-09-05)
+=========================
+
+Emacs
+-----
+
+Notmuch now supports Emacs 27.1. You may need to set
+`mml-secure-openpgp-sign-with-sender` and/or
+`mml-secure-smime-sign-with-sender` to continue signing messages.
+
+The minimum supported major version of GNU Emacs is now 25.1.
+
+Add support for moving between threads after notmuch-tree-from-search-thread.
+
+New `notmuch-unthreaded` mode (added in Notmuch 0.30)
+
+ Unthreaded view is a mode where each matching message is shown on a
+ separate line.
+
+ The main key entries to unthreaded view are
+
+ 'u' enter a query to view in unthreaded mode (works in hello,
+ search, show and tree mode)
+
+ 'U' view the current query in unthreaded mode (works from search,
+ show and tree)
+
+ Saved searches can also specify that they should open in unthreaded
+ view.
+
+ Currently it is not possible to specify the sort order: it will
+ always be newest first.
+
+Notmuch-Mutt
+------------
+
+The shell pipeline executed by notmuch-mutt, which symlinked matched
+files to a maildir for mutt to access is replaced with internal perl
+processing. This search operation is now more portable, and somewhat
+faster.
+
+Library
+-------
+
+Improve exception handling in the library. This should
+largely eliminate terminations inside the library due to uncaught
+exceptions or internal errors. No doubt there are a few uncovered
+code paths still; please report them as bugs.
+
+Add `notmuch_message_get_flag_st` and
+`notmuch_message_has_maildir_flag_st`, and deprecate the existing
+non-status providing versions.
+
+Move memory de-allocation from `notmuch_database_close` to
+`notmuch_database_destroy`.
+
+Handle relative filenames in `notmuch_database_index_file`, as
+promised in the documentation.
+
+Python Bindings
+---------------
+
+Documentation for the python bindings is merged into the main
+sphinx-doc documentation tree. The merged documentation can be built
+with e.g. `make sphinx-html`
+
+Dependencies
+------------
+
+We now support building notmuch against Xapian 1.5 (the current
+development version).
+
+Test Suite
+----------
+
+Test suite fixes for compatibility with Emacs 27.1.
+
+Build System
+------------
+
+Man pages are now compressed reproducibly.
+
+Notmuch 0.30 (2020-07-10)
+=========================
+
+S/MIME
+------
+
+Handle S/MIME (PKCS#7) messages -- one-part signed messages, encrypted
+messages, and multilayer messages. Treat them symmetrically to
+OpenPGP messages. This includes handling protected headers
+gracefully.
+
+If you're using Notmuch with S/MIME, you currently need to configure
+gpgsm appropriately.
+
+Mixed-up MIME Repair
+--------------------
+
+Detect and automatically repair a common form of message mangling
+created by Microsoft Exchange (see index.repaired=mixedup in
+notmuch-properties(7)).
+
+Protected Headers
+-----------------
+
+Avoid indexing the legacy-display part of an encrypted message that
+has protected headers (see
+index.repaired=skip-protected-headers-legacy-display in
+notmuch-properties(7)).
+
+Python
+------
+
+Drop support for python2, focus on python3.
+
+Introduce new CFFI-based python bindings in the python module named
+"notmuch2". Officially deprecate (but still support) the older
+"notmuch" module.
+
+Dependencies
+------------
+
+Support for Xapian 1.2 is removed. The minimum supported version of
+Xapian is now 1.4.0.
+
+Notmuch 0.29.3 (2019-11-27)
+===========================
+
+General
+-------
+
+Fix for use-after-free in notmuch_config_list_{key,val}.
+
+Fix for double close of file in notmuch-dump.
+
+Debian
+------
+
+Drop python2 support from shipped debian packaging.
+
+Notmuch 0.29.2 (2019-10-19)
+===========================
+
+General
+-------
+
+Fix for file descriptor leak when opening gzipped mail files. Thanks
+to James Troup for the bug report and the fix.
+
+Notmuch 0.29.1 (2019-06-11)
+===========================
+
+Build
+-----
+
+Fix for installation failure with `configure --without-emacs`.
+
+Notmuch 0.29 (2019-06-07)
+=========================
+
+General
+-------
+
+Add "body:" field to allow searching for terms that occur only in the
+message body. Users will need to reindex their mail to take advantage
+of this feature.
+
+Add support for indexing user specified headers (e.g. List-Id). See
+notmuch-config(1) for details. This requires reindexing after changing
+the set of headers to be indexed.
+
+Fix bug for searching in some headers for Xapian keywords in quoted
+strings.
+
+Add support for gzip compressed mail messages (/not/ multi-message
+mboxes); e.g. `gzip -9 $MAIL/archive/giant-message && notmuch new`
+should work. Note that maildir flag syncing for gzipped messages is
+currently untested.
+
+Notmuch is now capable of indexing, searching and rendering
+cryptographically-protected Subject: headers of the form produced by
+Enigmail and K-9 mail in encrypted messages.
+
+Command Line Interface
+----------------------
+
+`notmuch show` now supports --body=false and --include-html with
+--format=text
+
+Fix several performance problems with `notmuch reindex`.
+
+`notmuch show` and `notmuch reply` now emit per-message cryptographic
+status in their json and sexp output formats. See devel/schemata for
+more details about what is included there. This status includes
+information about cryptographic protections for the Subject header.
+
+Emacs
+-----
+
+Optionally check for missing attachments in outgoing messages (see
+function `notmuch-mua-attachment-check`).
+
+Bind `B` to browse URLs in current message.
+
+Bind `g` to refresh the current notmuch buffer.
+
+Editing a message as new now includes an FCC header.
+
+Forwarded messages are now tagged as +forwarded (customizable).
+
+Add references header to link forwarded message to thread of original
+message.
+
+The minimum supported major version of Emacs is now 24.
+
+Support for GNU Emacs older than 25.1 is deprecated with this release,
+and may be removed in a future release.
+
+Notmuch-emacs documentation is somewhat expanded. More contributions
+are very welcome.
+
+Build System
+------------
+
+Notmuch release tarballs are now compressed with `xz`.
+
+We now provide conventional detached signatures of the release
+tarballs in addition to the signed `sha256sum` files.
+
+Dependencies
+------------
+
+Support for GMime 2.6 is removed. The minimum supported version of
+GMime is now 3.0.3. GMime also needs to have been compiled with
+cryptography support.
+
+Test Suite
+----------
+
+If either GNU parallel or moreutils parallel is installed, the tests
+in the test suite will now be run in parallel (one per available
+core). This can be disabled with NOTMUCH_TEST_SERIALIZE=1.
+
+Notmuch 0.28.4 (2019-05-05)
+===========================
+
+Command line interface
+----------------------
+
+Fix a spurious error when using `notmuch show --raw` on messages whose
+size is a multiple of the internal buffer size.
+
+Notmuch 0.28.3 (2019-03-05)
+===========================
+
+Library
+-------
+
+Fix a bug with the internal data structure _notmuch_string_map_t used
+by message properties.
+
+Build System
+------------
+
+Serialize calls to sphinx-build to avoid race condition.
+
+Notmuch 0.28.2 (2019-02-17)
+===========================
+
+Emacs
+-----
+
+Invoke gpg with --batch and --no-tty.
+
+Python Bindings
+---------------
+
+Fix documentation build with Python 3.7. Note that Python >= 3.3 is
+now needed to build this documentation.
+
+Notmuch 0.28.1 (2019-02-01)
+===========================
+
+Build System
+------------
+
+`configure` no longer uses the special variable BASH, as this causes
+problems on systems where /bin/sh is bash.
+
+Notmuch 0.28 (2018-10-12)
+=========================
+
+General
+-------
+
+Improve threading
+
+ The threading algorithm has been updated to consider all references,
+ not just the heuristically chosen parent (e.g. when that parent is
+ not in the database). The heuristic for choosing a parent message
+ has also been updated to again consider the In-Reply-To header, if
+ it looks sensible. Re-indexing might be needed to take advantage of
+ the latter change.
+
+Handle mislabelled Windows-1252 parts
+
+ Messages that contain Windows-1252 are apparently frequently
+ mislabelled as ISO 8859-1. Use GMime functionality to apply the
+ correct encoding for such messages.
+
+Command Line Interface
+----------------------
+
+Support relative database paths
+
+ Database paths (i.e. parameters to `notmuch config set
+ database.path`) without a leading `/` are now interpreted relative
+ to $HOME of the invoking user.
+
+Emacs
+-----
+
+Improve stderr handling
+
+ Add a real sentinel process to clean up stderr buffer. This is
+ needed on e.g. macOS.
+
+Call `notmuch-mua-send-hook` hooks when sending a message
+
+ This hook was documented, but not functional for a very long time.
+
+Completion
+----------
+
+The zsh completion has been updated to cover most of the notmuch
+CLI. Internally it uses regexp searching, so needs at least Notmuch
+0.24.
+
+Build System
+------------
+
+The build system now installs notmuch-mutt and notmuch-emacs-mua with
+absolute shebangs, following the conventions of most Linux
+distributions.
+
+Test Suite
+----------
+
+Fix certain tests that were failing with GMime 2.6. Users are reminded
+that support for versions of GMime before 3.0.3 has been deprecated
+since Notmuch 0.25.
+
+Notmuch 0.27 (2018-06-13)
+=========================
+
+General
+-------
+
+Add support for thread:{} queries
+
+ Queries of the form `thread:{foo} and thread:{bar}` match threads
+ containing (possibly distinct) messages matching foo and bar. See
+ `notmuch-search-terms(7)` for details.
+
+Command Line Interface
+----------------------
+
+Add the --full-scan option to `notmuch new`
+
+ This option disables mtime based optimization of scanning for new mail.
+
+Add new --decrypt=stash option for `notmuch show`
+
+ This facilitates a workflow for encrypted messages where message
+ cleartext are indexed on first read, but the user's decryption key
+ does not have to be available during message receipt.
+
+Documentation
+-------------
+
+An initial manual for `notmuch-emacs` is now installed by default (in
+`info` format).
+
+Dependencies
+------------
+
+As of this release, support for versions of Xapian before 1.4.0 is
+deprecated, and may disappear in a future release of notmuch.
+
+Notmuch 0.26.2 (2018-04-28)
+===========================
+
+Library Changes
+---------------
+
+Work around Xapian bug with `get_mset(0,0, x)`
+
+ This causes aborts in `_notmuch_query_count_documents` on
+ e.g. Fedora 28. The underlying bug is fixed in Xapian commit
+ f92e2a936c1592, and will be fixed in Xapian 1.4.6.
+
+Make thread indexing more robust against reference loops
+
+ Choose a thread root by date in case of reference loops. Fix a
+ related abort in `notmuch show`.
+
+Notmuch 0.26.1 (2018-04-02)
+===========================
+
+Library Changes
+---------------
+
+Bump the library minor version. This should have happened in 0.26, but
+better late than never.
+
+
+Notmuch 0.26 (2018-01-09)
+=========================
+
+Command Line Interface
+----------------------
+
+Support for re-indexing existing messages
+
+ There is a new subcommand, `notmuch reindex`, which re-indexes all
+ messages matching supplied search terms. This permits users to
+ change the way specific messages are indexed.
+
+ Note that for messages with multiple variants in the message
+ archive, the recorded Subject: of may change upon reindexing,
+ depending on the order in which the variants are indexed.
+
+Improved error reporting in notmuch new
+
+ Give more details when reporting certain Xapian exceptions.
+
+Support maildir synced tags in `new.tags`
+
+ Tags `draft`, `flagged`, `passed`, and `replied` are now supported
+ in `new.tags`. The tag `unread` is still special in the presence of
+ maildir syncing, and will be added for files in `new/` regardless of
+ the setting of `new.tags`.
+
+Support /regex/ in new.ignore
+
+ Files and directories may be ignored based on regular expressions.
+
+Allow `notmuch insert --folder=""`
+
+ This inserts into the top level folder.
+
+Strip trailing '/' from folder path for notmuch insert
+
+ This prevents a potential problem with duplicated database records.
+
+New option --output=address for notmuch address
+
+Make `notmuch show` more robust against deleting duplicate files
+
+The option --decrypt now takes an explicit argument
+
+ The --decrypt option to `notmuch show` and `notmuch reply` now takes
+ an explicit argument. If you were used to invoking `notmuch show
+ --decrypt`, you should switch to `notmuch show --decrypt=true`.
+
+Boolean and keyword arguments now take a `--no-` prefix
+
+Encrypted Mail
+--------------
+
+Indexing cleartext of encrypted e-mails
+
+ It's now possible to include the cleartext of encrypted e-mails in
+ the notmuch index. This makes it possible to search your encrypted
+ e-mails with the same ease as searching cleartext. This can be done
+ on a per-message basis by passing --decrypt=true to indexing
+ commands (new, insert, reindex), or by default by running "notmuch
+ config set index.decrypt true".
+
+ Encrypted messages whose cleartext is indexed will typically also
+ have their session keys stashed as properties associated with the
+ message. Stashed session keys permit rapid rendering of long
+ encrypted threads, and disposal of expired encryption-capable keys.
+ If for some reason you want cleartext indexing without stashed
+ session keys, use --decrypt=nostash for your indexing commands (or
+ run "notmuch config set index.decrypt nostash"). See `index.decrypt`
+ in notmuch-config(1) for more details.
+
+ Note that stashed session keys permit reconstruction of the
+ cleartext of the encrypted message itself, and the contents of the
+ index are roughly equivalent to the cleartext as well. DO NOT USE
+ this feature without considering the security of your index.
+
+Emacs
+-----
+
+Guard against concurrent searches in notmuch-tree
+
+Use make-process when available
+
+ This allows newer Emacs to separate stdout and stderr from the
+ notmuch command without using temporary files.
+
+Library Changes
+---------------
+
+Indexing files with duplicate message-id
+
+ Files with duplicate message-id's are now indexed, and searchable
+ via terms and phrases. There are known issues related to
+ presentation of results and regular-expression search, but in
+ principle no mail file should be completely unsearchable now.
+
+New functions to count files
+
+ Two new functions in the libnotmuch API:
+ `notmuch_message_count_files`, and `notmuch_thread_get_total_files`.
+
+New function to remove properties
+
+ A new function was added to the libnotmuch API to make it easier to
+ drop all properties with a common pattern:
+ `notmuch_message_remove_all_properties_with_prefix`
+
+Change of return value of `notmuch_thread_get_authors`
+
+ In certain corner cases, `notmuch_thread_get_authors` previously
+ returned NULL. This has been replaced by an empty string, since the
+ possibility of NULL was not documented.
+
+Transition `notmuch_database_add_message` to `notmuch_database_index_file`
+
+ When indexing an e-mail message, the new
+ `notmuch_database_index_file` function is the preferred form, and
+ the old `notmuch_database_add_message` is deprecated. The new form
+ allows passing a set of options to the indexing engine, which the
+ operator may decide to change from message to message.
+
+Test Suite
+----------
+
+Out-of-tree builds
+
+ The test suite now works properly with out-of-tree builds, i.e. with
+ separate source and build directories. The --root option to tests
+ has been dropped. The same can now be achieved more reliably using
+ out-of-tree builds.
+
+Python Bindings
+---------------
+
+Python bindings specific Debian packaging is removed
+
+ The bindings have been build by the top level Debian packaging for a
+ long time, and `bindings/python/debian` has bit-rotted.
+
+Open mail files in binary mode when using Python 3
+
+ This avoids certain encoding related crashes under Python 3.
+
+Add python bindings for `notmuch_database_{get,set}_config*`
+
+Optional `decrypt_policy` flag is available for notmuch.database().index_file()
+
+nmbug
+-----
+
+nmbug's internal version increases to 0.3 in this notmuch release.
+User-facing changes with this notmuch release:
+
+* Accept failures to unset `core.worktree` in `clone`, which allows
+ nmbug to be used with Git 2.11.0 and later.
+* Auto-checkout in `clone` if it wouldn't clobber existing content,
+ which makes the initial clone more convenient.
+* Only error for invalid diff lines in `tags/`, which allows for
+ `README`s and similar in nmbug repositories.
+
+Documentation
+-------------
+
+New man page: notmuch-properties(7)
+
+ This new page to the manual describes common conventions for how
+ properties are used by libnotmuch, the CLI, and associated programs.
+ External projects that use properties are encouraged to claim their
+ properties and conventions here to avoid collisions.
+
+Notmuch 0.25.3 (2017-12-08)
+===========================
+
+Emacs
+-----
+
+Extend mitigation (disabling handling x-display in text/enriched) for
+Emacs bug #28350 to Emacs versions before 24.4 (i.e. without
+`advice-add`).
+
+Command Line Interface
+----------------------
+
+Correctly report userid validity. Fix test suite failure for GMime >=
+3.0.3. This change raises the minimum supported version of GMime 3.x
+to 3.0.3.
+
+Notmuch 0.25.2 (2017-11-05)
+===========================
+
+Command Line Interface
+----------------------
+
+Fix segfault in notmuch-show crypto handling when compiled against
+GMime 2.6; this was a regression in 0.25.
+
+General
+-------
+
+Support for GMime before 3.0 is now deprecated, and will be removed in
+a future release.
+
+Notmuch 0.25.1 (2017-09-11)
+===========================
+
+Emacs
+-----
+
+Disable handling x-display in text/enriched messages. Mitigation for
+Emacs bug #28350.
+
+Notmuch 0.25 (2017-07-25)
+=========================
+
+General
+-------
+
+Add regexp searching for mid, paths, and tags.
+
+Skip HTML tags when indexing
+
+ In particular this avoids indexing large inline images.
+
+Command Line Interface
+----------------------
+
+Bash completion is now installed to /usr/share by default.
+
+Allow space as separator for keyword arguments.
+
+Emacs
+-----
+
+Support for stashing message timestamp in show and tree views
+
+ Invoking `notmuch-show-stash-date` with a prefix argument
+ stashes the unix timestamp of the current message instead of
+ the date string.
+
+Don't use 'function' as variable name, workaround emacs bug 26406.
+
+Library Changes
+---------------
+
+Add workaround for date parsing of bad input in older GMime
+
+ In certain circumstances, older GMime libraries could return
+ negative numbers when parsing syntactically invalid dates.
+
+Replace deprecated functions with status returning versions
+
+ API of notmuch_query_{search,count}_{messages,threads} has
+ changed. notmuch_query_add_tag_exclude now returns a status
+ value.
+
+Add support for building against GMime 3.0.
+
+Rename libutil.a to libnotmuch_util.a.
+
+libnotmuch SONAME is incremented to libnotmuch.so.5.
+
+Notmuch 0.24.2 (2017-06-01)
+===========================
+
+Command Line Interface
+----------------------
+
+Fix output from `notmuch dump --include=properties` to not include tags.
+
+Emacs
+-----
+
+Fix filename stashing in tree view.
+
+Notmuch 0.24.1 (2017-04-01)
+===========================
+
+General
+-------
+
+Fix regressions in non-regexp search for `from:` and `subject:`
+
+ The regexp search code in 0.24 introduced a regression in the
+ handling of empty queries and wildcards. These are both corrected in
+ this release.
+
+Command Line Interface
+----------------------
+
+Fix several memory leaks in `notmuch show`
+
+Update NEWS for 0.24 to mention schema changes
+
+Fix bug in dump header
+
+ The previous version of the dump header failed to mention the
+ inclusion of tags. This fix bumps the version number of the dump
+ format to 3. There are no other changes to the format.
+
+Library Changes
+---------------
+
+Fix a read-after-free in the library.
+
+Notmuch 0.24 (2017-03-12)
+=========================
+
+General
+-------
+
+Regular expression searches supported for `from:` and `subject:`
+
+ This requires recent Xapian (1.4+) See notmuch-search-terms(7) for
+ details.
+
+Command Line Interface
+----------------------
+
+Run external `notmuch-` prefixed commands as subcommands
+
+ You can now add your own `notmuch-` prefixed commands in PATH, and
+ have notmuch run them as if they were notmuch commands. See the
+ `notmuch(1)` man page for details
+
+New default output format to 3
+
+ See devel/schemata for details. Users of the structured output
+ format are reminded of the `--format-version` argument to `notmuch
+ show` and `notmuch search` which can prevent breakage when the
+ default format changes.
+
+Emacs
+-----
+
+Postpone and resume messages in `notmuch-message-mode` (composition)
+
+ Notmuch now has built in support for postponing, saving and resuming
+ messages. The default bindings are C-x C-s to save a draft, C-c C-p
+ to postpone a draft (save and exit compose buffer), and "e" in show
+ or tree view to resume.
+
+ Draft messages are tagged with `notmuch-draft-tags` (draft by
+ default) so you may wish to add that to the excluded tags list. When
+ saving a previously saved draft message the earlier draft gets
+ tagged deleted.
+
+ Note that attachments added before postponing will be included as
+ they were when you postponed in the final message.
+
+Address Completion
+
+ It is now possible to save the list of address completions for
+ notmuch's internal completion between runs of emacs. This makes the
+ first calls to address completion much better and faster. For
+ privacy reasons it is disabled by default, to enable set or
+ customize `notmuch-address-save-filename`.
+
+Tag jump menu
+
+ It is now possible to configure tagging shortcuts (with an interface
+ like notmuch jump). For example (by default) k u will remove the
+ unread tag, and k s will add a tag "spam" and remove the inbox
+ tag. Pressing k twice will do the reverse operation so, for example,
+ k k s removes the spam tag and adds the inbox tag. See the customize
+ variable `notmuch-tagging-keys` for more information.
+
+Refresh all buffers
+
+ It is now possible to refresh all notmuch buffers to reflect the
+ current state of the database with a single command, `M-=`.
+
+Stop display of `application/*` parts
+
+ By default gnus displays all `application/*` parts such as
+ application/zip in the message buffer. This has several undesirable
+ effects for notmuch (security, triggering errors etc). Notmuch now
+ overrides this and does not display them by default. If you have
+ customized `mm-inline-override-types` then we assume you know what
+ you want and do not interfere; if you do want to stop the display of
+ `application/*` add `application/*` to your customization. If you want
+ to allow `application/*` then set `mm-inline-override-types` to
+ "non/existent".
+
+Small change in the api for notmuch-search-tag
+
+ When `notmuch-search-tag` is called non-interactively and the region
+ is set, then it only tags the threads in the region. (Previously it
+ only tagged the current thread.)
+
+Bugfix for sending messages with very long headers
+
+ Previously emacs didn't fold very long headers when sending which
+ could cause the MTA to refuse to send the message. This makes sure
+ it does fold any long headers so the message is RFC compliant.
+
+`notmuch emacs-mua` command installed with the Emacs interface
+
+ We've carried a `notmuch-emacs-mua` script in the source tree for
+ quite some time. It can be used to launch the Notmuch Emacs
+ interface from the command line in many different ways. Starting
+ with this release, it will be installed with the Emacs
+ interface. With the new external subcommand support, the script
+ transparently becomes a new notmuch command. See the
+ `notmuch-emacs-mua(1)` man page for details.
+
+Notmuch Emacs desktop integration
+
+ The desktop integration file will now be installed with the Notmuch
+ Emacs interface, adding a Notmuch menu item and configuration to
+ allow the user to set up Notmuch Emacs as the `mailto:` URL handler.
+
+Library changes
+---------------
+
+`notmuch_query_count_messages` is now non-destructive
+
+ Internally the implementation of excludes has changed to make this
+ possible.
+
+Improved handling of DatabaseModifiedError
+
+ Previously uncaught exceptions reading message metadata are now
+ handled.
+
+Notmuch 0.23.7 (2017-02-28)
+===========================
+
+Test Suite
+----------
+
+Drop use of gpgconf --create-socketdir. Move $GNUPGHOME to /tmp.
+
+ It turns out the hardcoded use of /run/user in gpg doesn't work out
+ that well in some environments. The more low tech fix is to move all
+ of $GNUPGHOME to somewhere where we can control the length of the
+ paths.
+
+Notmuch 0.23.6 (2017-02-27)
+===========================
+
+Command Line Interface
+----------------------
+
+Fix read-after-free bug in `notmuch new`.
+
+Test Suite
+----------
+
+Use gpgconf --create-socketdir if available.
+
+ GnuPG has a facility to use sockets in /run or /var/run to avoid
+ problems with long socket paths, but this is not enabled by default
+ for GNUPGHOME other than $HOME/.gnupg. Enable it, if possible.
+
+Notmuch 0.23.5 (2017-01-09)
+===========================
+
+Build system
+------------
+
+Fix quoting bug in configure. This had introduced a RUNPATH into the
+notmuch binary in cases where it was not not needed.
+
+Notmuch 0.23.4 (2016-12-24)
+===========================
+
+Command Line Interface
+----------------------
+
+Improve error handling in notmuch insert
+
+ Database lock errors no longer prevent message file delivery to the
+ filesystem. Certain errors during `notmuch insert` most likely to
+ be temporary return EX_TEMPFAIL.
+
+Emacs
+-----
+
+Restore autoload cookie for notmuch-search.
+
+Notmuch 0.23.3 (2016-11-27)
+===========================
+
+Command Line Interface
+----------------------
+
+Treat disappearing files during notmuch new as non-fatal.
+
+Test Suite
+----------
+
+Fix incompatibility (related to signature size) with gnupg 2.1.16.
+
+Notmuch 0.23.2 (2016-11-20)
+===========================
+
+Emacs
+-----
+
+Fix notmuch-interesting-buffer and notmuch-cycle-notmuch-buffers.
+
+ notmuch-tree-mode and notmuch-message-mode buffers are now
+ considered interesting by `notmuch-interesting-buffer` and
+ `notmuch-cycle-notmuch-buffers`.
+
+Restore compatibility with Emacs 23.
+
+ Notmuch support for Emacs 23 is now deprecated.
+
+Notmuch 0.23.1 (2016-10-23)
+===========================
+
+General
+-------
+
+Require Xapian >= 1.2.6
+
+ The ifdef branch for older Xapian (pre-compact API) had bit-rotted.
+
+Emacs
+-----
+
+Fix default colours for unread and flagged messages
+
+ In 0.23 the default colours for unread and flagged messages in
+ search view were accidentally swapped. This release returns them to
+ the original colours.
+
+ A related change in 0.23 broke the customize widget for
+ notmuch-search-line-faces. This is now fixed.
+
+Fix test failure with Emacs 25.1
+
+ A previously undiscovered jit-lock related bug was exposed by Emacs
+ 25, causing a notmuch-show mode test to fail. This release fixes the
+ bug, and hence the test.
+
+Notmuch 0.23 (2016-10-03)
+=========================
+
+General (Xapian 1.4+)
+---------------------
+
+Compiling against Xapian 1.4 enables several new features.
+
+Support for single argument date: queries
+
+ `date:<expr>` is equivalent to `date:<expr>..<expr>`.
+
+Support for blocking opens
+
+ When opening a database notmuch by default will wait for another
+ process to release a write lock, rather than returning an error.
+
+Support for named queries
+
+ Named queries (also known as 'saved searches') can be defined with a
+ `query:name` format. The expansion of these queries is stored in the
+ database and they can be used from any notmuch client.
+
+Library
+-------
+
+Message property API
+
+ libnotmuch now supports the attachment of arbitrary key-value pairs
+ to messages. These can be used by various tools to manage their
+ private data without polluting the user tag space. They also support
+ iteration of values with the same key or same key prefix.
+
+Bug fix for `notmuch_directory_set_mtime`
+
+ Update cached mtime to match on-disk mtime.
+
+CLI
+---
+
+Support for compile time options
+
+ A group of `built_with` keys is now supported for notmuch
+ config. Initial keys in this group are `compact`, `field_processor`,
+ and `retry_lock`.
+
+Dump/Restore support for configuration information and properties
+
+ Any configuration information stored in the database (initially just
+ named queries) is dumped and restored. Similarly any properties
+ attached to messages are also dumped and restored. Any new
+ information in the dump format is prefixed by '#' to allow existing
+ scripts to ignore it.
+
+Emacs
+-----
+
+Make notmuch-message-mode use insert for fcc
+
+ Notmuch-message-mode now defaults to using notmuch insert for
+ fcc. The old file based fcc behaviour can be restored by setting the
+ defcustom `notmuch-maildir-use-notmuch-insert` to nil.
+
+ When using notmuch insert, `notmuch-fcc-dirs` must be a subdirectory
+ of the mailstore (absolute paths are not permitted) followed by any
+ tag changes to be applied to the inserted message. The tag changes
+ are applied after the default tagging for new messages. For example
+ setting the header to "sentmail -inbox +sent" would insert the
+ message in the subdirectory sentmail of the mailstore, add the tag
+ "sent", and not add the (normally added) "inbox" tag.
+
+ Finally, if the insert fails (e.g. if the database is locked) the
+ user is presented with the option to retry, ignore, or edit the
+ header.
+
+Make internal address completion customizable
+
+ There is a new defcustom `notmuch-address-internal-completion` which
+ controls how the internal completion works: it allows the user to
+ choose whether to match on messages the user sent, or the user
+ received, and to filter the messages used for the match, for example
+ by date.
+
+Allow internal address completion on an individual basis
+
+ There is a new function `notmuch-address-toggle-internal-completion`
+ (by default it has no keybinding) which allows users who normally
+ use an external completion command to use the builtin internal
+ completion for the current buffer.
+
+ Alternatively, if the user has company-mode enabled, then the user
+ can use company mode commands such as `company-complete` to
+ activate the builtin completion for an individual completion.
+
+Resend messages
+
+ The function `notmuch-show-resend-message` (bound to `b` in show
+ and tree modes) will (attempt to) send current message to new
+ recipients. The headers of the message won't be altered (e.g. `To:`
+ may point to yourself). New `Resent-To:`, `Resent-From:` and so on
+ will be added instead.
+
+Face customization is easier
+
+ New faces `notmuch-tag-unread`, `notmuch-tag-flagged`,
+ `notmuch-tag-deleted`, `notmuch-tag-added`,
+ `notmuch-search-flagged-face` and `notmuch-search-unread-face` are
+ now used by default. Customize `notmuch-faces` to modify them.
+
+Omit User-Agent header by default when sending mail
+
+Ruby Bindings
+-------------
+
+Add support for `notmuch_database_get_all_tags`
+
+Go Bindings
+-----------
+
+Go bindings moved to contrib
+
+Add support for `notmuch_threads_t` and `notmuch_thread_t`
+
+Fixed constant values so they are not all zero anymore
+
+ Previously, it was impossible to open writable database handles,
+ because `DATABASE_MODE_READ_ONLY` and `DATABASE_MODE_READ_WRITE` were
+ both set to zero.
+ The same issue occurred with sort modes.
+
+Notmuch 0.22.2 (2016-09-08)
+===========================
+
+Test Suite
+----------
+
+Silence gdb more
+
+ Have gdb write to a log file instead of stdout, hiding some more
+ (harmless) stderr chatter which causes test failures.
+
+Hardcode fingerprint in PGP/MIME tests
+
+ Make the tests more robust against changing GnuPG output formats.
+
+Notmuch 0.22.1 (2016-07-19)
+===========================
+
+Library
+-------
+
+Correct the definition of `LIBNOTMUCH_CHECK_VERSION`.
+
+Document the (lack of) operations permitted on a closed database.
+
+Test Suite
+----------
+
+Fix race condition in dump / restore tests.
+
+Notmuch-Mutt
+------------
+
+Use `env` to locate perl.
+
+Emacs
+-----
+
+Tell `message-mode` mode that outgoing messages are mail
+
+ This makes message-mode configuration behave more predictably.
+
+Respect charset of MIME parts when reading them
+
+ Fix previous assumption that everyone uses UTF-8.
+
+Notmuch 0.22 (2016-04-26)
+=========================
+
+General
+-------
+
+Xapian 1.3 support
+
+ Notmuch should now build (and the test suite should pass) on recent
+ releases of Xapian 1.3.x. It has been tested with Xapian 1.3.5.
+
+Limited support for S/MIME messages
+
+ Signature verification is supported, but not decryption. S/MIME
+ signature creation and S/MIME encryption are supported via built-in
+ support in Emacs. S/MIME support is not extensively tested at this
+ time.
+
+Bug Fixes
+
+ Fix for threading bug involving deleting and re-adding
+ messages. Fix for case-sensitive content disposition headers. Fix
+ handling of 1 character directory names at top level.
+
+Command Line Interface
+----------------------
+
+`notmuch show` now supports verifying S/MIME signatures
+
+ This support relies on an appropriately configured `gpgsm`.
+
+Build System
+------------
+
+Drop dependency on "pkg-config emacs".
+