+Notmuch 0.23.4 (UNRELEASED)
+===========================
+
+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.
+
+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 occured 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".
+
+Emacs Interface
+---------------
+
+Notmuch replies now include all parts shown in the show view
+
+ There are two main user visible changes. The first is that rfc822
+ parts are now included in replies.
+
+ The second change is that part headers are now included in the reply
+ buffer to provide visible separation of the parts. The choice of
+ which part headers to show is customizable via the variable
+ `notmuch-mua-reply-insert-header-p-function`.
+
+Filtering or Limiting messages is now bound to `l` in the search view
+
+ This binding now matches the analogous binding in show view.
+
+`F` forwards all open messages in a thread
+
+ When viewing a thread of messages, the new binding `F` can be used
+ to generate a new outgoing message which forwards all of the open
+ messages in the thread. This is analogous to the `f` binding, which
+ forwards only the current message.
+
+Preferred content type can be determined from the message content
+
+ More flexibility in choosing which sub-part of a
+ multipart/alternative part is initially shown is available by
+ setting `notmuch-multipart/alternative-discouraged` to a function
+ that returns a list of discouraged types. The function so specified
+ is passed the message as an argument and can examine the message
+ content to determine which content types should be discouraged. This
+ is in addition to the current capabilities (i.e. setting
+ `notmuch-multipart/alternative-discouraged` to a list of discouraged
+ types).
+
+When viewing a thread ("show" mode), queries that match no messages no
+longer generate empty buffers
+
+ Should an attempt be made to view the thread corresponding to a
+ query that matches no messages, a warning message is now displayed
+ and the terminal bell rung rather than displaying an empty buffer
+ (or, in some cases, displaying an empty buffer and throwing an
+ error). This also affects re-display of the current thread.
+
+Handle S/MIME signatures in emacs
+
+ The emacs interface is now capable making and verifying S/MIME
+ signatures.
+
+`notmuch-message-address-insinuate` is now a no-op
+
+ This reduces the amount of interference with non-notmuch uses of
+ message-mode.
+
+Address completion improvements
+
+ An external script is no longer needed for address completion; if
+ you previously configured one, customize the variable
+ `notmuch-address-command` to try the internal completion. If
+ `company-mode` is available, notmuch uses it by default for
+ interactive address completion.
+
+Test and experiment with the emacs MUA available in source tree
+
+ `./devel/try-emacs-mua` runs emacs and fills the window with
+ information how to try the MUA safely. Emacs is configured to use
+ the notmuch (lisp) files located in `./emacs` directory.
+
+Documentation
+-------------
+
+New `notmuch-report(1)` and `notmuch-report.json(5)` man pages
+describe `notmuch-report` and its JSON configuration file. You can
+build these files by running `make` in the `devel/nmbug/doc`
+directory.
+
+notmuch-report
+--------------
+
+Renamed from `nmbug-status`. This script generates reports based on
+notmuch queries, and doesn't really have anything to do with nmbug,
+except for sharing the `NMBGIT` environment variable. The new name
+focuses on the script's action, instead of its historical association
+with the nmbug workflow. This should make it more discoverable for
+users looking for generic notmuch reporting tools.
+
+The default configuration file name (extracted from the `config`
+branch of `NBMGIT` has changed from `status-config.json` to
+`notmuch-report.json` so it is more obviously associated with the
+report-generating script. The configuration file also has a new
+`meta.message-url` setting, which is documented in
+`notmuch-report.json(5)`.
+
+`notmuch-report` now wraps query phrases in parentheses when and-ing
+them together, to avoid confusion about clause grouping.
+
+Notmuch 0.21 (2015-10-29)
+=========================
+
+General
+-------
+
+Notmuch now requires gmime >= 2.6.7. The gmime 2.4 series is no longer
+supported.
+
+Database revision tracking: `lastmod:` queries
+
+ Each message now has a metadata revision number that increases with
+ every tagging operation. See the discussion of `lastmod:` in
+ `notmuch-search-terms(7)` for more information.
+
+Date queries now support `date:<expr>..!` shorthand for
+`date:<expr>..<expr>`
+
+ You can use, for example, `date:yesterday..!` to match from the
+ beginning of yesterday to the end of yesterday. For further details,
+ please refer to the `notmuch-search-terms` manual page.
+
+Notmuch database upgrade to support `lastmod:` queries
+
+ The above mentioned `lastmod:` prefix. This will be done
+ automatically, without prompting on the next time `notmuch new` is
+ run after the upgrade. The upgrade is not reversible, and the
+ upgraded database will not be readable by older versions of
+ Notmuch. As a safeguard, a database dump will be created in the
+ `.notmuch` directory before upgrading.
+
+Build System
+------------
+
+The ruby bindings are now built as part of the main notmuch build
+process. This can be disabled with the `--without-ruby` option to
+configure.
+
+Building the documentation can be disabled with the `--without-docs`
+option to configure.
+
+Skipped individual tests are no longer considered as failures.
+
+Command Line Interface
+----------------------
+
+Database revision tracking
+
+ Two new options were added to support revision tracking. A global
+ option "--uuid" (`notmuch(1)`) was added for to detect counter
+ rollover and reinitialization, and `notmuch-count(1)` gained a
+ `--lastmod` option to query database revision tracking data.
+
+The `notmuch address` command supports new deduplication schemes
+
+ `notmuch address` has gained a new `--deduplicate` option to specify
+ how the results should be deduplicated, if at all. The alternatives
+ are `no` (do not deduplicate, useful for processing the results with
+ external tools), `mailbox` (deduplicate based on the full, case
+ sensitive name and email address), and `address` (deduplicate based
+ on the case insensitive address part). See the `notmuch-address`
+ manual page for further information.
+
+Emacs Interface
+---------------
+
+`notmuch-emacs-version` is used in `User-Agent` header
+
+ The value of recently introduced variable `notmuch-emacs-version` is
+ now used as a part of `User-Agent` header when sending emails.
+
+Removed `notmuch-version` function by renaming it to `notmuch-cli-version`
+
+ With existing variable `notmuch-emacs-version` the accompanied
+ function which retrieves the version of `notmuch-command` is
+ better named as `notmuch-cli-version`.
+
+Query input now supports completion for "is:<tag>"
+
+New message composition mode: `notmuch-compose-mode`
+
+ This is mainly to fix fcc handling, but may be useful for user
+ customization as well.
+
+Allow filtering of search results in `notmuch-show`
+
+Add function to rerun current tree-view search in search mode
+
+Bug fix for replying to encrypted messages in `notmuch-tree` mode
+
+Allow saved searched to specify tree view rather than search view
+
+ Applies to saved searches run from `notmuch-hello`, or by a keyboard
+ shortcut (`notmuch-jump`). Can be set in the customize interface, or
+ by adding :search-type tree to the appropriate saved search plist in
+ `notmuch-saved-searches`.
+
+Increase maximum size of rendered text parts
+
+ The variable `notmuch-show-max-text-part-size` controls the maximum
+ size (in bytes) which is automatically rendered. This may make
+ rendering large threads slower. To get the previous behaviour set
+ this variable to 10000.
+
+Library
+-------
+
+The use of absolute paths is now enforced when calling
+`notmuch_database_{open, create}`
+
+New function `notmuch_directory_delete` to delete directory documents
+
+ Previously there was no way to delete directory documents from the
+ database, leading to confusing results when the "ghost" directory
+ document of a renamed or deleted filesystem directory was
+ encountered every time the parent directory was being scanned by
+ `notmuch new`. The mtime of the old directory document was also used
+ if a directory by the same name was added again in the filesystem,
+ potentially bypassing the scan for the directory. The issues are
+ fixed by providing a library call to delete directory documents, and
+ deleting the old documents in `notmuch new` on filesystem directory
+ removal or rename.
+
+Database revision tracking
+
+ Revision tracking is supported via a new prefix "lastmod:" in the
+ query parser and the new function
+ `notmuch_database_get_revision`. For the latter, see `notmuch(3)`.
+
+New status code returning API for n_query_count_{messages,threads}
+
+Deprecated functions
+
+ `notmuch_query_search_threads`, `notmuch_query_search_messages`,
+ `notmuch_query_count_messages`, and `notmuch_query_count_threads`
+ are all deprecated as of this release. Clients are encouraged to
+ transition to the `_st` variants supporting better error reporting.
+
+nmbug-status
+------------
+
+`nmbug-status` now supports specifying the sort order for each view.
+
+Notmuch 0.20.2 (2015-06-27)
+===========================
+
+Emacs Interface
+---------------
+
+Bug fix for marking messages read in `notmuch-tree` mode.
+
+Notmuch 0.20.1 (2015-06-01)
+===========================
+
+Test Suite
+----------
+
+Work around apparent gdb bug on arm64.
+
+Notmuch 0.20 (2015-05-31)
+=========================
+
+Command-Line Interface
+----------------------
+
+There is a new `mimetype:` search prefix
+
+ The new `mimetype:` search prefix allows searching for the
+ content-type of attachments, which is now indexed. See the
+ `notmuch-search-terms` manual page for details.
+
+Path to gpg is now configurable
+
+ On systems with multiple versions of gpg, you can tell
+ notmuch which one to use by setting `crypto.gpg_path`
+
+Emacs
+-----
+
+Avoid rendering large text attachements.
+
+Improved rendering of CID references in HTML.
+
+Vim
+---
+
+Vim client now respects excluded tags.
+
+Notmuch-Mutt
+------------
+
+Support messages without Message-IDs.
+
+Library
+-------
+
+Undeprecate single message mboxes
+
+ It seems more trouble to remove this feature than expected, so
+ `notmuch new` will no longer nag about mboxes with a single message.
+
+New error logging facility
+
+ Clients should call `notmuch_database_status_string` to retrieve
+ output formerly printed to stderr.
+
+Several bug fixes related to stale iterators
+
+New status code returning API for n_query_search_{messages,thread}
+
+Fix for library `install_name` on Mac OS X
+
+Fix for rounding of seconds
+
+Documentation
+-------------
+
+Sphinx is now mandatory to build docs
+
+ Support for using rst2man in place of sphinx to build the
+ docmumentation has been removed.
+
+Improved notmuch-search-terms.7
+
+ The man page `notmuch-search-terms(7)` has been extended, merging
+ some material from the relicensed wiki.
+
+Contrib
+-------
+
+`notmuch-deliver` is removed. As far as we know, all functionality
+previously provided by `notmuch-deliver` should now be provided by
+`notmuch insert`, provided by the main notmuch binary.
+
+nmbug-status
+------------
+
+`nmbug-status` now only matches local branches when reading
+`status-config.json` from the `config` branch of the `NMBGIT`
+repository. To help new users running `nmbug-status`, `nmbug clone`
+now creates a local `config` branch tracking `origin/config`. Folks
+who use `nmbug-status` with an in-Git config (i.e. you don't use the
+`--config` option) who already have `NMBGIT` set up are encouraged to
+run:
+
+ git checkout config origin/config
+
+in their `NMBGIT` repository (usually `~/.nmbug`).
+
+Notmuch 0.19 (2014-11-14)
+=========================
+
+Overview
+--------
+
+This release improves the reliability of `notmuch dump` and the error
+handling for `notmuch insert`. The new `notmuch address` command is
+intended to make searching for email addresses more convenient. At the
+library level the revised handling of missing messages fixes at least
+one bug in threading. The release also includes several interface
+improvements to the emacs interface, most notably the ability to bind
+keyboard shortcuts to saved searches.