+Library
+-------
+
+The use of absolute paths is now enforced when calling notmuch_database_{open, create}
+
+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.
+
+Command-Line Interface
+----------------------
+
+Stopped `notmuch dump` failing if someone writes to the database
+
+ The dump command now takes the write lock when running. This
+ prevents other processes from writing to the database during the
+ dump which would cause the dump to fail. Note, if another notmuch
+ process already has the write lock the dump will not start, so
+ script callers should still check the return value.
+
+`notmuch insert` requires succesful message indexing for success status
+
+ Previously the `notmuch insert` subcommand indicated success even if
+ the message indexing failed, as long as the message was delivered to
+ file system. This could have lead to delivered messages missing
+ tags, etc. `notmuch insert` is now more strict, also requiring
+ succesful indexing for success status. Use the new `--keep` option
+ to revert to the old behaviour (keeping the delivered message file
+ and returning success even if indexing fails).
+
+`notmuch insert` has gained support for `post-insert` hook
+
+ The new `post-insert` hook is run after message delivery, similar to
+ `post-new`. There's also a new option `notmuch insert --no-hooks` to
+ skip the hook. See the notmuch-hooks(1) man page for details.
+
+`notmuch deliver` is deprecated
+
+ With this release we believe that `notmuch insert` has reached
+ parity with `notmuch deliver`. We recommend that all users of
+ `notmuch deliver` switch to `notmuch insert` as the former is
+ currently unmaintained.
+
+`notmuch search` now supports `--duplicate=N` option with `--output=messages`
+
+ Complementing the `notmuch search --duplicate=N --output=files`
+ options, the new `--duplicate=N --output=messages` combination
+ limits output of message IDs to messages matching search terms that
+ have at least `N` files associated with them.
+
+Added `notmuch address` subcommand
+
+ This new subcommand searches for messages matching the given search
+ terms, and prints the addresses from them. Duplicate addresses are
+ filtered out. The `--output` option controls which of the following
+ information is printed: sender addresses, recipient addresses and
+ count of duplicate addresses.
+
+Emacs Interface
+---------------
+
+Use the `j` key to access saved searches from anywhere in notmuch
+
+ `j` is now globally bound to `notmuch-jump`, which provides fast,
+ interactive keyboard shortcuts to saved searches. For example,
+ with the default saved searches `j i` from anywhere in notmuch will
+ bring up the inbox.
+
+Improved handling of the unread tag
+
+ Notmuch now marks an open message read (i.e., removes the unread
+ tag) if point enters the message at any time in a show buffer
+ regardless of how point got there (mouse click, cursor command, page
+ up/down, notmuch commands such as n,N etc). This fixes various
+ anomalies or bugs in the previous handling. Additionally it is
+ possible to customize the mark read handling by setting
+ `notmuch-show-mark-read-function` to a custom function.
+
+Expanded default saved search settings
+
+ The default saved searches now include several more common searches,
+ as well as shortcut keys for `notmuch-jump`.
+
+Improved `q` binding in notmuch buffers
+
+ `q` will now bury rather than kill a notmuch search, show or tree
+ buffer if there are multiple windows showing the buffer. If only a
+ single window is showing the buffer, it is killed.
+
+`notmuch-show-stash-mlarchive-link-alist` now supports functions
+
+ Some list archives may use a more complicated scheme for referring
+ to messages than just concatenated URL and message ID. For example,
+ patchwork requires a query to translate message ID to a patchwork
+ patch ID. `notmuch-show-stash-mlarchive-link-alist` now supports
+ functions to better cover such cases. See the help documentation for
+ the variable for details.
+
+Library changes
+---------------
+
+Introduced database version 3 with support for "database features."
+
+ Features are independent aspects of the database schema.
+ Representing these independently of the database version number will
+ let us evolve the database format faster and more incrementally,
+ while maintaining better forwards and backwards compatibility.
+
+Library users are no longer required to call `notmuch_database_upgrade`
+
+ Previously, library users were required to call
+ `notmuch_database_needs_upgrade` and `notmuch_database_upgrade`
+ before using a writable database. Even the CLI didn't get this
+ right, and it is no longer required. Now, individual APIs may
+ return `NOTMUCH_STATUS_UPGRADE_REQUIRED` if the database format is
+ too out of date for that API.
+
+Library users can now abort an atomic section by closing the database
+
+ Previously there was no supported way to abort an atomic section.
+ Callers can now simply close the database, and any outstanding
+ atomic section will be aborted.
+
+Add return status to `notmuch_database_close` and
+`notmuch_database_destroy`
+
+Bug fixes and performance improvements for thread linking
+
+ The database now represents missing-but-referenced messages ("ghost
+ messages") similarly to how it represents regular messages. This
+ enables an improved thread linking algorithm that performs better
+ and fixes a bug that sometimes prevented notmuch from linking
+ messages into the same thread.
+
+nmbug
+-----
+
+The Perl script has been translated to Python; you'll need Python 2.7
+or anything from the 3.x line. Most of the user-facing interface is
+the same, but `nmbug help` is now `nmbug --help`, and the following nmbug
+commands have slightly different interfaces: `archive`, `commit`,
+`fetch`, `log`, `pull`, `push`, and `status`. For details on the
+new interface for a given command, run `nmbug COMMAND --help`.
+
+nmbug-status
+------------
+
+`nmbug-status` can now optionally load header and footer templates
+from the config file. Use something like:
+
+ {
+ "meta": {
+ "header": "<!DOCTYPE html>\n<html lang="en">\n...",
+ "footer": "</body></html>",
+ ...
+ },
+ ...
+ },
+
+Python Bindings
+---------------
+
+Add support for `notmuch_query_add_tag_exclude`
+
+Build System
+------------
+
+The notmuch binaries and libraries are now build with debugging symbols
+by default. Users concerned with disk space should change the
+defaults when configuring or use the strip(1) command.
+
+Notmuch 0.18.2 (2014-10-25)
+===========================
+
+Test Suite
+----------
+
+Translate T380-atomicity to use gdb/python
+
+ The new version is compatible with gdb 7.8
+
+Emacs 24.4 related bug fixes
+
+ The Messages buffer became read-only, and the generated mime
+ structure for signatures changed slightly.
+
+Simplify T360-symbol-hiding
+
+ Replace the use of `objdump` on the object files with `nm` on the
+ resulting lib.
+
+Notmuch 0.18.1 (2014-06-25)
+===========================
+
+This is a bug fix and portability release.
+
+Build System
+------------
+
+Add a workaround for systems without zlib.pc
+
+Make emacs install robust against the non-existence of emacs
+
+Put notmuch lib directory first in RPATH
+
+Fix handling of `html_static_path` in sphinx
+
+ Both the python bindings and the main docs had spurious settings of
+ this variable.
+
+Test Suite
+----------
+
+Use --quick when starting emacs
+
+ This avoids a hang in the T160-json tests.
+
+Allow pending break points in atomicity script
+
+ This allows the atomicity tests to run on several more architectures/OSes.
+
+Command-Line Interface
+----------------------
+
+To improve portability use fsync instead of fdatasync in
+`notmuch-dump`. There should be no functional difference.
+
+Library changes
+---------------
+
+Resurrect support for single-message mbox files
+
+ The removal introduced a bug with previously indexed single-message
+ mboxes. This support remains deprecated.
+
+Fix for phrase indexing
+
+ There were several bugs where words intermingled from different
+ headers and MIME parts could match a single phrase query. This fix
+ will affect only newly indexed messages.
+
+Emacs Interface
+---------------
+
+Make sure tagging on an empty query is harmless
+
+ Previously tagging an empty query could lead to tags being
+ unintentionally removed.
+
+Notmuch 0.18 (2014-05-06)
+=========================
+
+Overview
+--------
+
+This new release includes some enhancements to searching for messages
+by filesystem location (`folder:` and `path:` prefixes under *General*
+below). Saved searches in *Emacs* have also been enhanced to allow
+distinct search orders for each one. Another enhancement to the
+*Emacs* interface is that replies to encrypted messages are now
+encrypted, reducing the risk of unintentional information disclosure.
+The default dump output format has changed to the more robust
+`batch-tag` format. The previously deprecated parsing of single
+message mboxes has been removed. For detailed release notes, see
+below.
+
+General
+-------
+
+The `folder:` search prefix now requires an exact match
+
+ The `folder:` prefix has been changed to search for email messages
+ by the exact, case sensitive maildir or MH folder name. Wildcard
+ matching (`folder:foo*`) is no longer supported. The new behaviour
+ allows for more accurate mail folder based searches, makes it
+ possible to search for messages in the top-level folder, and should
+ lead to less surprising results than the old behaviour. Users are
+ advised to see the `notmuch-search-terms` manual page for details,
+ and review how the change affects their existing `folder:` searches.
+
+There is a new `path:` search prefix
+
+ The new `path:` search prefix complements the `folder:` prefix. The
+ `path:` prefix searches for email messages that are in particular
+ directories within the mail store, optionally recursively using a
+ special syntax. See the `notmuch-search-terms` manual page for
+ details.
+
+Notmuch database upgrade due to `folder:` and `path:` changes
+
+ The above mentioned changes to the `folder:` prefix and the addition
+ of `path:` prefix require a Notmuch database upgrade. 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.
+
+Library changes
+---------------
+
+Notmuch database upgrade
+
+ The libnotmuch consumers are reminded to handle database upgrades
+ properly, either by relying on running `notmuch new`, or checking
+ `notmuch_database_needs_upgrade()` and calling
+ `notmuch_database_upgrade()` as necessary. This has always been the
+ case, but in practise there have been no database upgrades in any
+ released version of Notmuch before now.
+
+Support for indexing mbox files has been dropped
+
+ There has never been proper support for mbox files containing
+ multiple messages, and the support for single-message mbox files has
+ been deprecated since Notmuch 0.15. The support has now been
+ dropped, and all mbox files will be rejected during indexing.
+
+Message header parsing changes
+
+ Notmuch previously had an internal parser for message headers. The
+ parser has now been dropped in favour of letting GMime parse both
+ the headers and the message MIME structure at the same pass. This is
+ mostly an internal change, but the GMime parser is stricter in its
+ interpretation of the headers. This may result in messages with
+ slightly malformed message headers being now rejected.
+
+Command-Line Interface
+----------------------
+
+`notmuch dump` now defaults to `batch-tag` format
+
+ The old format is still available with `--format=sup`.
+
+`notmuch new` has a --quiet option
+
+ This option suppresses the progress and summary reports.
+
+`notmuch insert` respects maildir.synchronize_flags config option
+
+ Do not synchronize tags to maildir flags in `notmuch insert` if the
+ user does not want it.
+
+The commands set consistent exit status codes on failures
+
+ The cli commands now consistently set exit status of 1 on failures,
+ except where explicitly otherwise noted. The notable expections are
+ the status codes for format version mismatches for commands that
+ support formatted output.
+
+Bug fix for checking configured new.tags for invalid tags
+
+ `notmuch new` and `notmuch insert` now check the user configured
+ new.tags for invalid tags, and refuse to apply them, similar to
+ `notmuch tag`. Invalid tags are currently the empty string and tags
+ starting with `-`.
+
+Emacs Interface
+---------------
+
+Init file
+
+ If the file pointed by new variable `notmuch-init-file` (typically
+ `~/.emacs.d/notmuch-config.el`) exists, it is loaded at the end of
+ `notmuch.el`. Users can put their personal notmuch emacs lisp based
+ configuration/customization items there instead of filling
+ `~/.emacs` with these.
+
+Changed format for saved searches
+
+ The format for `notmuch-saved-searches` has changed, but old style
+ saved searches are still supported. The new style means that a saved
+ search can store the desired sort order for the search, and it can
+ store a separate query to use for generating the count notmuch
+ shows.
+
+ The variable is fully customizable and any configuration done
+ through customize should *just work*, with the additional options
+ mentioned above. For manual customization see the documentation for
+ `notmuch-saved-searches`.
+
+ IMPORTANT: a new style notmuch-saved-searches variable will break
+ previous versions of notmuch-emacs (even search will not work); to
+ fix remove the customization for notmuch-saved-searches.
+
+ If you have a custom saved search sort function (not unsorted or
+ alphabetical) then the sort function will need to be
+ modified. Replacing (car saved-search) by (notmuch-saved-search-get
+ saved-search :name) and (cdr saved-search) by
+ (notmuch-saved-search-get saved-search :query) should be sufficient.
+
+The keys of `notmuch-tag-formats` are now regexps
+
+ Previously, the keys were literal strings. Customized settings of
+ `notmuch-tag-formats` will continue to work as before unless tags
+ contain regexp special characters like `.` or `*`.
+
+Changed tags are now shown in the buffer
+
+ Previously tag changes made in a buffer were shown immediately. In
+ some cases (particularly automatic tag changes like marking read)
+ this made it hard to see what had happened (e.g., whether the
+ message had been unread).
+
+ The changes are now shown explicitly in the buffer: by default
+ deleted tags are displayed with red strike-through and added tags
+ are displayed underlined in green (inverse video is used for deleted
+ tags if the terminal does not support strike-through).
+
+ The variables `notmuch-tag-deleted-formats` and
+ `notmuch-tag-added-formats`, which have the same syntax as
+ `notmuch-tag-formats`, allow this to be customized.
+
+ Setting `notmuch-tag-deleted-formats` to `'((".*" nil))` and
+ `notmuch-tag-added-formats` to `'((".*" tag))` will give the old
+ behavior of hiding deleted tags and showing added tags identically
+ to tags already present.
+
+Version variable
+
+ The new, build-time generated variable `notmuch-emacs-version` is used
+ to distinguish between notmuch cli and notmuch emacs versions.
+ The function `notmuch-hello-versions` (bound to 'v' in notmuch-hello
+ window) prints both notmuch cli and notmuch emacs versions in case
+ these differ from each other.
+ This is especially useful when using notmuch remotely.
+
+Ido-completing-read initialization in Emacs 23
+
+ `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless
+ it is initialized. Defadvice-based *Ido* initialization is defined
+ for these Emacs versions.
+
+Bug fix for saved searches with newlines in them
+
+ Split lines confuse `notmuch count --batch`, so we remove embedded
+ newlines before calling notmuch count.
+
+Bug fixes for sender identities
+
+ Previously, Emacs would rewrite some sender identities in unexpected
+ and undesirable ways. Now it will use identities exactly as
+ configured in `notmuch-identities`.
+
+Replies to encrypted messages will be encrypted by default
+
+ In the interest of maintaining confidentiality of communications,
+ the Notmuch Emacs interface now automatically adds the mml tag to
+ encrypt replies to encrypted messages. This should make it less
+ likely to accidentally reply to encrypted messages in plain text.
+
+Reply pushes mark before signature
+
+ We push mark and set point on reply so that the user can easily cut
+ the quoted text. The mark is now pushed before the signature, if
+ any, instead of end of buffer so the signature is preserved.
+
+Message piping uses the originating buffer's working directory
+
+ `notmuch-show-pipe-message` now uses the originating buffer's
+ current default directory instead of that of the `*notmuch-pipe*`
+ buffer's.
+
+nmbug
+-----
+
+nmbug adds a `clone` command for setting up the initial repository and
+uses `@{upstream}` instead of `FETCH_HEAD` to track upstream changes.
+
+ The `@{upstream}` change reduces ambiguity when fetching multiple
+ branches, but requires existing users update their `NMBGIT`
+ repository (usually `~/.nmbug`) to distinguish between local and
+ remote-tracking branches. The easiest way to do this is:
+
+ 1. If you have any purely local commits (i.e. they aren't in the
+ nmbug repository on nmbug.tethera.net), push them to a remote
+ repository. We'll restore them from the backup in step 4.
+ 2. Remove your `NMBGIT` repository (e.g. `mv .nmbug .nmbug.bak`).
+ 3. Use the new `clone` command to create a fresh clone:
+
+ nmbug clone http://nmbug.tethera.net/git/nmbug-tags.git
+
+ 4. If you had local commits in step 1, add a remote for that
+ repository and fetch them into the new repository.
+
+Notmuch 0.17 (2013-12-30)
+=========================
+
+Incompatible change in SHA1 computation
+---------------------------------------
+
+Previously on big endian architectures like sparc and powerpc the
+computation of SHA1 hashes was incorrect. This meant that messages
+with overlong or missing message-ids were given different computed
+message-ids than on more common little endian architectures like i386
+and amd64. If you use notmuch on a big endian architecture, you are
+strongly advised to make a backup of your tags using `notmuch dump`
+before this upgrade. You can locate the affected files using something
+like:
+
+ notmuch dump | \
+ awk '/^notmuch-sha1-[0-9a-f]{40} / \
+ {system("notmuch search --exclude=false --output=files id:" $1)}'
+
+Command-Line Interface
+----------------------
+
+New options to better support handling duplicate messages
+
+ If more than one message file is associated with a message-id,
+ `notmuch search --output=files` will print all of them. A new
+ `--duplicate=N` option can be used to specify which duplicate to
+ print for each message.
+
+ `notmuch count` now supports `--output=files` option to output the
+ number of files associated with matching messages. This may be
+ bigger than the number of matching messages due to duplicates
+ (i.e. multiple files having the same message-id).
+
+Improved `notmuch new` performance for unchanged folders
+
+ `notmuch new` now skips over unchanged folders more efficiently,
+ which can substantially improve the performance of checking for new
+ mail in some situations (like NFS-mounted Maildirs).
+
+`notmuch reply --format=text` RFC 2047-encodes headers
+
+ Previously, this used a mix of standard MIME encoding for the reply
+ body and UTF-8 for the headers. Now, the text format reply template
+ RFC 2047-encodes the headers, making the output a valid RFC 2822
+ message. The JSON/sexp format is unchanged.
+
+`notmuch compact` command
+
+ The new `compact` command exposes Xapian's compaction
+ functionality through a more convenient interface than
+ `xapian-compact`. `notmuch compact` will compact the database to a
+ temporary location, optionally backup the original database, and
+ move the compacted database into place.
+
+Emacs Interface
+---------------
+
+`notmuch-tree` (formerly `notmuch-pick`) has been added to mainline
+
+ `notmuch-tree` is a threaded message view for the emacs
+ interface. Each message is one line in the results and the thread
+ structure is shown using UTF-8 box drawing characters (similar to
+ Mutt's threaded view). It comes between search and show in terms of
+ amount of output and can be useful for viewing both single threads
+ and multiple threads.
+
+ Using `notmuch-tree`
+
+ The main key entries to notmuch tree are
+
+ 'z' enter a query to view using notmuch tree (works in hello,
+ search, show and tree mode itself)
+
+ 'Z' view the current query in tree notmuch tree (works from search
+ and show)
+
+ Once in tree mode, keybindings are mostly in line with the rest of
+ notmuch and are all viewable with '?' as usual.
+
+ Customising `notmuch-tree`
+
+ `notmuch-tree` has several customisation variables. The most
+ significant is the first notmuch-tree-show-out which determines the
+ behaviour when selecting a message (with RET) in tree view. By
+ default tree view uses a split window showing the single message in
+ the bottom pane. However, if this option is set then it views the
+ whole thread in the complete window jumping to the selected message
+ in the thread. In either case command-prefix selects the other option.
+
+Tagging threads in search is now race-free
+
+ Previously, adding or removing a tag from a thread in a search
+ buffer would affect messages that had arrived after the search was
+ performed, resulting in, for example, archiving messages that were
+ never seen. Tagging now affects only the messages that were in the
+ thread when the search was performed.
+
+`notmuch-hello` refreshes when switching to the buffer
+
+ The hello buffer now refreshes whenever you switch to the buffer,
+ regardless of how you get there. You can disable automatic
+ refreshing by customizing `notmuch-hello-auto-refresh`.
+
+Specific mini-buffer prompts for tagging operations
+
+ When entering tags to add or remove, the mini-buffer prompt now
+ indicates what operation will be performed (e.g., "Tag thread", "Tag
+ message", etc).
+
+Built-in help improvements
+
+ Documentation for many commands has been improved, as displayed by
+ `notmuch-help` (usually bound to "?"). The bindings listed by
+ `notmuch-help` also now include descriptions of prefixed commands.
+
+Quote replies as they are displayed in show view
+
+ We now render the parts for reply quoting the same way they are
+ rendered for show. At this time, the notable change is that replies
+ to text/calendar are now pretty instead of raw vcalendar.
+
+Fixed inconsistent use of configured search order
+
+ All ways of interactively invoking search now honor the value of
+ `notmuch-search-oldest-first`.
+
+Common keymap for notmuch-wide bindings
+
+ Several key bindings have been moved from mode-specific keymaps to
+ the single `notmuch-common-keymap`, which is inherited by each
+ notmuch mode. If you've customized your key bindings, you may want
+ to move some of them to the common keymap.
+
+The `notmuch-tag` function now requires a list of tag changes
+
+ For users who have scripted the Emacs interface: the `notmuch-tag`
+ API has changed. Previously, it accepted either a list of tag
+ changes or a space-separated string of tag changes. The latter is
+ no longer supported and the function now returns nothing.
+
+Fixed `notmuch-reply` putting reply in primary selection
+
+ On emacs 24 notmuch-reply used to put the cited text into the
+ primary selection (which could lead to inadvertently pasting this
+ cited text elsewhere). Now the primary-selection is not changed.
+
+Fixed `notmuch-show` invisible part handling
+
+ In some obscure cases part buttons and invisibility had strange
+ interactions: in particular, the default action for some parts gave
+ the wrong action. This has been fixed.
+
+Fixed `notmuch-show` attachment viewers and stderr
+
+ In emacs 24.3+ viewing an attachment could cause spurious text to
+ appear in the show buffer (any stderr or stdout the viewer
+ produced). By default this output is now discarded. For debugging,
+ setting `notmuch-show-attachment-debug` causes notmuch to keep the
+ viewer's stderr and stdout in a separate buffer.
+
+Fixed `notmuch-mua-reply` point placement when signature involved
+
+ By restricting cursor movement to body section for cursor placement
+ after signature is inserted, the cursor cannot "leak" to header
+ section anymore. Now inserted citation content will definitely go to
+ the body part of the message.
+
+Vim Interface
+-------------
+
+ It is now possible to compose new messages in the Vim interface, as
+ opposed reply to existing messages. There is also support for
+ going straight to a search (bypassing the folders view).
+
+Notmuch 0.16 (2013-08-03)
+=========================
+
+Command-Line Interface
+----------------------
+
+Support for delivering messages to Maildir
+
+ There is a new command `insert` that adds a message to a Maildir
+ folder and notmuch index.
+
+`notmuch count --batch` option
+
+ `notmuch count` now supports batch operations similar to `notmuch
+ tag`. This is mostly an optimization for remote notmuch usage.
+
+`notmuch tag` option to remove all tags from matching messages
+
+ `notmuch tag --remove-all` option has been added to remove all tags
+ from matching messages. This can be combined with adding new tags,
+ resulting in setting (rather than modifying) the tags of the
+ messages.
+
+Decrypting commands explicitly expect a gpg-agent
+
+ Decryption in `notmuch show` and `notmuch reply` has only ever
+ worked with a functioning gpg-agent. This is now made explicit in
+ code and documentation. The functional change is that it's now
+ possible to have gpg-agent running, but gpg "use-agent"
+ configuration option disabled, not forcing the user to use the agent
+ everywhere.
+
+Configuration file saves follow symbolic links
+
+ The notmuch commands that save the configuration file now follow
+ symbolic links instead of overwrite them.
+
+Top level option to specify configuration file
+
+ It's now possible to specify the configuration file to use on the
+ command line using the `notmuch --config=FILE` option.
+
+Bash command-line completion
+
+ The notmuch command-line completion support for the bash shell has
+ been rewritten. Supported completions include all the notmuch
+ commands, command-line arguments, values for keyword arguments,
+ search prefixes (such as "subject:" or "from:") in all commands that
+ use search terms, tags after + and - in `notmuch tag`, tags after
+ "tag:" prefix, user's email addresses after "from:" and "to:"
+ prefixes, and config options (and some config option values) in
+ `notmuch config`. The new completion support depends on the
+ bash-completion package.
+
+Deprecated commands "part" and "search-tags" are removed.
+
+Emacs Interface
+---------------
+
+New keymap to view/save parts; removed s/v/o/| part button bindings
+
+ The commands to view, save, and open MIME parts are now prefixed
+ with "." (". s" to save, ". v" to view, etc) and can be invoked with
+ point anywhere in a part, unlike the old commands, which were
+ restricted to part buttons. The old "s"/"v"/"o"/"|" commands on
+ part buttons have been removed since they clashed with other
+ bindings (notably "s" for search!) and could not be invoked when
+ there was no part button. The new, prefixed bindings appear in
+ show's help, so you no longer have to memorize them.
+
+Default part save directory is now `mm-default-directory`
+
+ Previously, notmuch offered to save parts and attachments to a mix
+ of `mm-default-directory`, `mailcap-download-directory`, and `~/`.
+ This has been standardized on `mm-default-directory`.
+
+Key bindings for next/previous thread
+
+ Show view has new key bindings M-n and M-p to move to the next and
+ previous thread in the search results.
+
+Better handling of errors in search buffers
+
+ Instead of interleaving errors in search result buffers, search mode
+ now reports errors in the minibuffer.
+
+Faster search and show
+
+ Communication between Emacs and the notmuch CLI is now more
+ efficient because it uses the CLI's S-expression support. As a
+ result, search mode should now fill search buffers faster and
+ threads should show faster.
+
+No Emacs 22 support
+
+ The Emacs 22 support added late 2010 was sufficient only for a short
+ period of time. After being incomplete for roughly 2 years the code
+ in question was now removed from this release.
+
+Vim Front-End
+-------------
+
+The vim based front-end has been replaced with a new one that uses the Ruby
+bindings. The old font-end is available in the contrib subfolder.
+
+Python Bindings
+---------------
+
+Fix loading of libnotmuch shared library on OS X (Darwin) systems.
+
+Notmuch 0.15.2 (2013-02-17)
+===========================
+
+Build fixes
+-----------
+
+Update dependencies to avoid problems when building in parallel.
+
+Internal test framework changes
+-------------------------------
+
+Adjust Emacs test watchdog mechanism to cope with `process-attributes`
+being unimplemented.
+
+Notmuch 0.15.1 (2013-01-24)
+===========================
+
+Internal test framework changes
+-------------------------------
+
+Set a default value for TERM when running tests. This fixes certain
+build failures in non-interactive environments.
+
+Notmuch 0.15 (2013-01-18)
+=========================
+
+General
+-------
+
+Date range search support
+
+ The `date:` prefix can now be used in queries to restrict the results
+ to only messages within a particular time range (based on the Date:
+ header) with a range syntax of `date:<since>..<until>`. Notmuch
+ supports a wide variety of expressions in `<since>` and
+ `<until>`. Please refer to the `notmuch-search-terms(7)` manual page
+ for details.
+
+Empty tag names and tags beginning with "-" are deprecated
+
+ Such tags have been a frequent source of confusion and cause
+ (sometimes unresolvable) conflicts with other syntax. notmuch tag
+ no longer allows such tags to be added to messages. Removing such
+ tags continues to be supported to allow cleanup of existing tags,
+ but may be removed in a future release.
+
+Command-Line Interface
+----------------------
+
+`notmuch new` no longer chokes on mboxes
+
+ `notmuch new` now rejects mbox files containing more than one
+ message, rather than treating the file as one giant message.
+
+Support for single message mboxes is deprecated
+
+ For historical reasons, `notmuch new` will index mbox files
+ containing a single message; however, this behavior is now
+ officially deprecated.
+
+Fixed `notmuch new` to skip ignored broken symlinks
+
+ `notmuch new` now correctly skips symlinks if they are in the
+ ignored files list. Previously, it would abort when encountering
+ broken symlink, even if it was ignored.
+
+New dump/restore format and tagging interface
+
+ There is a new `batch-tag` format for dump and restore that is more
+ robust, particularly with respect to tags and message-ids containing
+ whitespace.
+
+ `notmuch tag` now supports the ability to read tag operations and
+ queries from an input stream, in a format compatible with the new
+ dump/restore format.
+
+Bcc and Reply-To headers are now available in notmuch show json output
+
+ The `notmuch show --format=json` now includes "Bcc" and "Reply-To" headers.
+ For example notmuch Emacs client can now have these headers visible
+ when the headers are added to the `notmuch-message-headers` variable.
+
+CLI callers can now request a specific output format version
+
+ `notmuch` subcommands that support structured output now support a
+ `--format-version` argument for requesting a specific version of the
+ structured output, enabling better compatibility and error handling.
+
+`notmuch search` has gained a null character separated text output format
+
+ The new --format=text0 output format for `notmuch search` prints
+ output separated by null characters rather than newline
+ characters. This is similar to the find(1) -print0 option, and works
+ together with the xargs(1) -0 option.
+
+Emacs Interface
+---------------
+
+Removal of the deprecated `notmuch-folders` variable
+
+ `notmuch-folders` has been deprecated since the introduction of saved
+ searches and the notmuch hello view in notmuch 0.3. `notmuch-folders`
+ has now been removed. Any remaining users should migrate to
+ `notmuch-saved-searches`.
+
+Visibility of MIME parts can be toggled
+
+ Each part of a multi-part MIME email can now be shown or hidden
+ using the button at the top of each part (by pressing RET on it or
+ by clicking). For emails with multiple alternative formats (e.g.,
+ plain text and HTML), only the preferred format is shown initially,
+ but other formats can be shown using their part buttons. To control
+ the behavior of this, see
+ `notmuch-multipart/alternative-discouraged` and
+ `notmuch-show-all-multipart/alternative-parts`.
+
+ Note notmuch-show-print-message (bound to '#' by default) will print
+ all parts of multipart/alternative message regardless of whether
+ they are currently hidden or shown in the buffer.
+
+Emacs now buttonizes mid: links
+
+ mid: links are a standardized way to link to messages by message ID
+ (see RFC 2392). Emacs now hyperlinks mid: links to the appropriate
+ notmuch search.
+
+Handle errors from bodypart insertions
+
+ If displaying the text of a message in show mode causes an error (in
+ the `notmuch-show-insert-part-*` functions), notmuch no longer cuts
+ off thread display at the offending message. The error is now
+ simply displayed in place of the message.
+
+Emacs now detects version mismatches with the notmuch CLI
+
+ Emacs now detects and reports when the Emacs interface version and
+ the notmuch CLI version are incompatible.
+
+Improved text/calendar content handling
+
+ Carriage returns in embedded text/calendar content caused insertion
+ of the calendar content fail. Now CRs are removed before calling icalendar
+ to extract icalendar data. In case icalendar extraction fails an error
+ is thrown for the bodypart insertion function to deal with.
+
+Disabled coding conversions when reading in `with-current-notmuch-show-message`
+
+ Depending on the user's locale, saving attachments containing 8-bit
+ data may have performed an unintentional encoding conversion,
+ corrupting the saved attachment. This has been fixed by making
+ `with-current-notmuch-show-message` disable coding conversion.
+
+Fixed errors with HTML email containing images in Emacs 24
+
+ Emacs 24 ships with a new HTML renderer that produces better output,
+ but is slightly buggy. We work around a bug that caused it to fail
+ for HTML email containing images.
+
+Fixed handling of tags with unusual characters in them
+
+ Emacs now handles tags containing spaces, quotes, and parenthesis.
+
+Fixed buttonization of id: links without quote characters
+
+ Emacs now correctly buttonizes id: links where the message ID is not
+ quoted.
+
+`notmuch-hello` refresh point placement improvements
+
+ Refreshing the `notmuch-hello` buffer does a better job of keeping
+ the point where it was.
+
+Automatic tag changes are now unified and customizable
+
+ All the automatic tag changes that the Emacs interface makes when
+ reading, archiving, or replying to messages, can now be
+ customized. Any number of tag additions and removals is supported
+ through the `notmuch-show-mark-read`, `notmuch-archive-tags`, and
+ `notmuch-message-replied-tags` customization variables.
+
+Support for stashing the thread id in show view
+
+ Invoking `notmuch-show-stash-message-id` with a prefix argument
+ stashes the (local and database specific) thread id of the current
+ thread instead of the message id.
+
+New add-on tool: notmuch-pick
+-----------------------------
+
+The new contrib/ tool `notmuch-pick` is an experimental threaded message
+view for the emacs interface. Each message is one line in the results
+and the thread structure is shown using UTF-8 box drawing characters
+(similar to Mutt's threaded view). It comes between search and show in
+terms of amount of output and can be useful for viewing both single
+threads and multiple threads. See the notmuch-pick README file for
+further details and installation.
+
+Portability
+-----------
+
+notmuch now builds on OpenBSD.
+
+Internal test framework changes
+-------------------------------
+
+The emacsclient binary is now user-configurable
+
+ The test framework now accepts `TEST_EMACSCLIENT` in addition to
+ `TEST_EMACS` for configuring the emacsclient to use. This is
+ necessary to avoid using an old emacsclient with a new emacs, which
+ can result in buggy behavior.
+
+Notmuch 0.14 (2012-08-20)
+=========================
+
+General bug fixes
+-----------------
+
+Maildir tag synchronization
+
+ Maildir flag-to-tag synchronization now applies only to messages in
+ maildir-like directory structures. Previously, it applied to any
+ message that had a maildir "info" part, which meant it could
+ incorrectly synchronize tags for non-maildir messages, while at the
+ same time failing to synchronize tags for newly received maildir
+ messages (typically causing new messages to not receive the "unread"
+ tag).
+
+Command-Line Interface
+----------------------
+
+ The deprecated positional output file argument to `notmuch dump` has
+ been replaced with an `--output` option. The input file positional
+ argument to `notmuch restore` has been replaced with an `--input`
+ option for consistency with dump. These changes simplify the syntax
+ of dump/restore options and make them more consistent with other
+ notmuch commands.
+
+Emacs Interface
+---------------
+
+Search results now get re-colored when tags are updated
+
+The formatting of tags in search results can now be customized
+
+ Previously, attempting to change the format of tags in
+ `notmuch-search-result-format` would usually break tagging from
+ search-mode. We no longer make assumptions about the format.
+
+Experimental support for multi-line search result formats
+
+ It is now possible to embed newlines in
+ `notmuch-search-result-format` to make individual search results
+ span multiple lines.
+
+Next/previous in search and show now move by boundaries
+
+ All "next" and "previous" commands in the search and show modes now
+ move to the next/previous result or message boundary. This doesn't
+ change the behavior of "next", but "previous" commands will first
+ move to the beginning of the current result or message if point is
+ inside the result or message.
+
+Search now uses the JSON format internally
+
+ This should address problems with unusual characters in authors and
+ subject lines that could confuse the old text-based search parser.
+
+The date shown in search results is no longer padded before applying
+user-specified formatting
+
+ Previously, the date in the search results was padded to fixed width
+ before being formatted with `notmuch-search-result-format`. It is
+ no longer padded. The default format has been updated, but if
+ you've customized this variable, you may have to change your date
+ format from `"%s "` to `"%12s "`.
+
+The thread-id for the `target-thread` argument for `notmuch-search` should
+now be supplied without the "thread:" prefix.
+
+Notmuch 0.13.2 (2012-06-02)
+===========================
+
+Bug-fix release
+---------------
+
+Update `contrib/notmuch-deliver` for API changes in 0.13. This fixes a
+compilation error for this contrib package.
+
+Notmuch 0.13.1 (2012-05-29)
+===========================
+
+Bug-fix release
+---------------
+
+Fix inserting of UTF-8 characters from *text/plain* parts in reply
+
+ While notmuch gained ability to insert content from other than *text/plain*
+ parts of email whenever *text/plain* parts are not available (notably
+ HTML-only emails), replying to mails that do have *text/plain* the
+ non-ASCII characters were incorrectly decoded. This is now fixed.
+
+`notmuch_database_get_directory` and
+`notmuch_database_find_message_by_filename` now work on read-only
+databases
+
+ Previously, these functions attempted to create directory documents
+ that didn't exist and would return an error or abort when given a
+ read-only database. Now they no longer create directory documents
+ and simply return a `NULL` object if the directory does not exist,
+ as documented.
+
+Fix compilation of ruby bindings
+
+ Revert to dynamic linking, since the statically linked bindings did
+ not work well.
+
+Notmuch 0.13 (2012-05-15)
+=========================
+
+Command-Line Interface
+----------------------
+
+JSON reply format
+
+ `notmuch reply` can now produce JSON output that contains the headers
+ for a reply message and full information about the original message
+ begin replied to. This allows MUAs to create replies intelligently.
+ For example, an MUA that can parse HTML might quote HTML parts.
+
+ Calling notmuch reply with `--format=json` imposes the restriction that
+ only a single message is returned by the search, as replying to
+ multiple messages does not have a well-defined behavior. The default
+ retains its current behavior for multiple message replies.
+
+Tag exclusion
+
+ Tags can be automatically excluded from search results by adding them
+ to the new `search.exclude_tags` option in the Notmuch config file.
+
+ This behaviour can be overridden by explicitly including an excluded
+ tag in your query, for example:
+
+ notmuch search $your_query and tag:$excluded_tag
+
+ Existing users will probably want to run `notmuch setup` again to add
+ the new well-commented [search] section to the configuration file.
+
+ For new configurations, accepting the default setting will cause the
+ tags "deleted" and "spam" to be excluded, equivalent to running:
+
+ notmuch config set search.exclude_tags deleted spam
+
+Raw show format changes
+
+ The output of show `--format=raw` has changed for multipart and
+ message parts. Previously, the output was a mash of somewhat-parsed
+ headers and transfer-decoded bodies. Now, such parts are reproduced
+ faithfully from the original source. Message parts (which includes
+ part 0) output the full message, including the message headers (but
+ not the transfer headers). Multipart parts output the part as
+ encoded in the original message, including the part's headers. Leaf
+ parts, as before, output the part's transfer-decoded body.
+
+Listing configuration items
+
+ The new `config list` command prints out all configuration items and
+ their values.
+
+Emacs Interface
+---------------
+
+Changes to tagging interface
+
+ The user-facing tagging functions in the Emacs interface have been
+ normalized across all notmuch modes. The tagging functions are now
+ notmuch-search-tag in search-mode, and notmuch-show-tag in
+ show-mode. They accept a string representing a single tag change,
+ or a list of tag changes. See 'M-x describe-function notmuch-tag'
+ for more information.
+
+ NOTE: This breaks compatibility with old tagging functions, so user
+ may need to update in custom configurations.
+
+Reply improvement using the JSON format
+
+ Emacs now uses the JSON reply format to create replies. It obeys
+ the customization variables message-citation-line-format and
+ message-citation-line-function when creating the first line of the
+ reply body, and it will quote HTML parts if no text/plain parts are
+ available.
+
+New add-on tool: notmuch-mutt
+-----------------------------
+
+The new contrib/ tool `notmuch-mutt` provides Notmuch integration for
+the Mutt mail user agent. Using it, Mutt users can perform mail
+search, thread reconstruction, and mail tagging/untagging without
+leaving Mutt. notmuch-mutt, formerly distributed under the name
+`mutt-notmuch` by Stefano Zacchiroli, will be maintained as a notmuch
+contrib/ from now on.
+
+Library changes
+---------------
+
+The API changes detailed below break binary and source compatibility,
+so libnotmuch has been bumped to version 3.0.0.
+
+The function `notmuch_database_close` has been split into
+`notmuch_database_close` and `notmuch_database_destroy`
+
+ This makes it possible for long running programs to close the xapian
+ database and thus release the lock associated with it without
+ destroying the data structures obtained from it.
+
+`notmuch_database_open`, `notmuch_database_create`, and
+`notmuch_database_get_directory` now return errors
+
+ The type signatures of these functions have changed so that the
+ functions now return a `notmuch_status_t` and take an out-argument for
+ returning the new database object or directory object.
+
+Go bindings changes
+-------------------
+
+Go 1 compatibility
+
+ The go bindings and the `notmuch-addrlookup` utility are now
+ compatible with go 1.
+
+Notmuch 0.12 (2012-03-20)
+=========================
+
+Command-Line Interface
+----------------------
+
+Reply to sender
+
+ `notmuch reply` has gained the ability to create a reply template
+ for replying just to the sender of the message, in addition to reply
+ to all. The feature is available through the new command line option
+ `--reply-to=(all|sender)`.
+
+Mail store folder/file ignore
+
+ A new configuration option, `new.ignore`, lets users specify a
+ ;-separated list of file and directory names that will not be
+ searched for messages by `notmuch new`.
+
+ NOTE: *Every* file/directory that goes by one of those names will
+ be ignored, independent of its depth/location in the mail store.
+
+Unified help and manual pages
+
+ The notmuch help command now runs man for the appropriate page. If
+ you install notmuch somewhere "unusual", you may need to update
+ MANPATH.
+
+Manual page for notmuch configuration options
+
+ The notmuch CLI configuration file options are now documented in the
+ notmuch-config(1) manual page in addition to the configuration file
+ itself.
+
+Emacs Interface
+---------------
+
+Reply to sender
+
+ The Emacs interface has, with the new CLI support, gained the
+ ability to reply to sender in addition to reply to all. In both show
+ and search modes, 'r' has been bound to reply to sender, replacing
+ reply to all, which now has key binding 'R'.
+
+More flexible and consistent tagging operations
+
+ All tagging operations ('+', '-', '*') now accept multiple tags with
+ '+' or '-' prefix, like '*' operation in notmuch-search view before.
+
+ '*' operation (`notmuch-show-tag-all`) is now available in
+ notmuch-show view.
+
+ `notmuch-show-{add,remove}-tag` functions no longer accept tag
+ argument, `notmuch-show-tag-message` should be used instead. Custom
+ bindings using these functions should be updated, e.g.:
+
+ (notmuch-show-remove-tag "unread")
+
+ should be changed to:
+
+ (notmuch-show-tag-message "-unread")
+
+Refreshing the show view ('=' by default) no longer opens or closes messages
+
+ To get the old behavior of putting messages back in their initial
+ opened/closed state, use a prefix argument, e.g., 'C-u ='.
+
+Attachment buttons can be used to view or save attachments.
+
+ When the cursor is on an attachment button the key 's' can be used
+ to save the attachment, the key 'v' to view the attachment in the
+ default mailcap application, and the key 'o' prompts the user for an
+ application to use to open the attachment. By default Enter or mouse
+ button 1 saves the attachment but this is customisable (option
+ Notmuch Show Part Button Default Action).
+
+New functions
+
+ `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
+ optionally visiting a URI to the current message at one of a number
+ of Mailing List Archives.
+
+Fix MML tag quoting in replies
+
+ The MML tag quoting fix of 0.11.1 unintentionally quoted tags
+ inserted in `message-setup-hook`. Quoting is now limited to the
+ cited message.
+
+Show view archiving key binding changes
+
+ The show view archiving key bindings 'a' and 'x' now remove the
+ "inbox" tag from the current message only (instead of thread), and
+ move to the next message. At the last message, 'a' proceeds to the
+ next thread in search results, and 'x' returns to search
+ results. The thread archiving functions are now available in 'A' and
+ 'X'.
+
+Support text/calendar MIME type
+
+ The text/calendar MIME type is now supported in addition to
+ text/x-vcalendar.
+
+Generate inline patch fake attachment file names from message subject
+
+ Use the message subject to generate file names for the inline patch
+ fake attachments. The names are now similar to the ones generated by
+ 'git format-patch' instead of just "inline patch". See "Notmuch Show
+ Insert Text/Plain Hook" in the notmuch customize interface.
+
+Enable `notmuch-search-line-faces` by default
+
+ Make the `notmuch-search-line-faces` functionality more discoverable
+ for new users by showing "unread" messages bold and "flagged"
+ messages blue by default in the search view.
+
+Printing Support
+
+ notmuch-show mode now has simple printing support, bound to '#' by
+ default. You can customize the variable notmuch-print-mechanism.
+
+Library changes
+---------------
+
+New functions
+
+ `notmuch_query_add_tag_exclude` supports the new tag exclusion
+ feature.
+
+Python bindings changes
+-----------------------
+
+Python 3.2 compatibility
+
+ The python bindings are now compatible with both python 2.5+ and 3.2.
+
+Added missing unicode conversions
+
+ Python strings have to be encoded to and decoded from utf-8 when
+ calling libnotmuch functions. Porting the bindings to python 3.2
+ revealed a few function calls that were missing these conversions.
+
+Build fixes
+-----------
+
+Compatibility with GMime 2.6
+
+ It is now possible to build notmuch against both GMime 2.4 and 2.6.
+ However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
+ report signatures where the signer key is unavailable (GNOME bug
+ 668085). For compatibility with GMime 2.4's tolerance of "From "
+ headers we require GMime 2.6 >= 2.6.7.
+
+Notmuch 0.11.1 (2012-02-03)
+===========================
+
+Bug-fix release
+---------------
+
+Fix error handling in python bindings
+
+ The python bindings in 0.11 failed to detect NULL pointers being
+ returned from libnotmuch functions and thus failed to raise
+ exceptions to indicate the error condition. Any subsequent calls
+ into libnotmuch caused segmentation faults.
+
+Quote MML tags in replies
+
+ MML tags are text codes that Emacs uses to indicate attachments
+ (among other things) in messages being composed. The Emacs
+ interface did not quote MML tags in the quoted text of a reply.
+ User could be tricked into replying to a maliciously formatted
+ message and not editing out the MML tags from the quoted text. This
+ could lead to files from the user's machine being attached to the
+ outgoing message. The Emacs interface now quotes these tags in
+ reply text, so that they do not effect outgoing messages.
+
+Notmuch 0.11 (2012-01-13)
+=========================
+
+Command-Line Interface
+----------------------
+
+Hooks
+
+ Hooks have been introduced to notmuch. Hooks are scripts that notmuch
+ invokes before and after certain actions. Initially, `notmuch new`
+ supports `pre-new` and `post-new` hooks that are run before and after
+ importing new messages into the database.
+
+`notmuch reply --decrypt bugfix`
+
+ The `notmuch reply` command with `--decrypt` argument had a rarely
+ occurring bug that caused an encrypted message not to be decrypted
+ sometimes. This is now fixed.
+
+Performance
+-----------
+
+Automatic tag query optimization
+
+ `notmuch tag` now automatically optimizes the user's query to
+ exclude messages whose tags won't change. In the past, we've
+ suggested that people do this by hand; this is no longer necessary.
+
+Don't sort messages when creating a dump file
+
+ This speeds up tag dumps considerably, without any loss of
+ information. To replicate the old behavior of sorted output (for
+ example to compare two dump files), one can use e.g. `sort(1)`.
+
+Memory Management
+-----------------
+
+Reduction of memory leaks
+
+ Two memory leaks when searching and showing messages were identified
+ and fixed in this release.
+
+Emacs Interface
+---------------
+
+Bug fixes
+
+ notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
+ a bug that caused it to always jump to the next message, even if it
+ should have scrolled down to show more of the current message instead.
+ This is now fixed.
+
+Support `notmuch new` as a notmuch-poll-script
+
+ It's now possible to use `notmuch new` as a notmuch-poll-script
+ directly. This is also the new default. This allows taking better
+ advantage of the `notmuch new` hooks from emacs without intermediate
+ scripts.
+
+Improvements in saved search management
+
+ New saved searches are now appended to the list of saved searches,
+ not inserted in front. It's also possible to define a sort function
+ for displaying saved searches; alphabetical sort is provided.
+
+Hooks for notmuch-hello
+
+ Two new hooks have been added: "notmuch-hello-mode-hook" (called after
+ entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
+ after updating a notmuch-hello buffer).
+
+New face for crypto parts headers
+
+ Crypto parts used to be displayed with a hardcoded color. A new face
+ has been introduced to fix this: notmuch-crypto-part-header. It
+ defaults to the same value as before, but can be customized to match
+ other color themes.
+
+Use space as default thousands separator
+
+ Large numbers in notmuch-hello are now displayed using a space as
+ thousands separator (e.g. "123 456" instead of "123,456"). This can be
+ changed by customizing "notmuch-hello-thousands-separator".
+
+Call notmuch-show instead of notmuch-search when clicking on
+buttonized id: links
+
+New function notmuch-show-advance
+
+ This new function advances through just the current thread, and is
+ less invasive than notmuch-show-advance-and-archive. It can easily
+ be bound to SPC with:
+
+ (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
+
+Various performance improvements
+
+New add-on tool
+---------------
+
+The tool `contrib/notmuch-deliver` helps with initial delivery and
+tagging of mail (replacing running `notmuch new`).
+
+
+Notmuch 0.10.2 (2011-12-04)
+===========================
+
+Bug-fix release
+---------------
+
+Fix crash in python bindings
+
+ The python bindings did not call `g_type_init`, which caused crashes
+ for some, but not all users.
+
+Notmuch 0.10.1 (2011-11-25)
+===========================
+
+Bug-fix release
+---------------
+
+Fix `--help` argument
+
+ Argument processing changes in 0.10 introduced a bug where
+ `notmuch --help` crashed while `notmuch help` worked fine.
+ This is fixed in 0.10.1.
+
+Notmuch 0.10 (2011-11-23)
+=========================
+
+New build and testing features
+------------------------------
+
+Emacs tests are now done in `dtach`. This means that dtach is now
+needed to run the notmuch test suite, at least until the checking for
+prerequisites is improved.
+
+Full test coverage of the stashing feature in Emacs.
+
+New command-line features
+-------------------------
+
+Add `notmuch restore --accumulate` option
+
+ The `--accumulate` switch causes the union of the existing and new tags to
+ be applied, instead of replacing each message's tags as they are read in
+ from the dump file.
+
+Add search terms to `notmuch dump`
+
+ The dump command now takes an optional search term much like notmuch
+ search/show/tag. The output file argument of dump is deprecated in
+ favour of using stdout.
+
+Add `notmuch search` `--offset` and `--limit` options
+
+ The search command now takes options `--offset=[-]N` and `--limit=N` to
+ limit the number of results shown.
+
+Add `notmuch count --output` option
+
+ The count command is now capable of counting threads in addition to
+ messages. This is selected using the new `--output=(threads|messages)`
+ option.
+
+New emacs UI features
+---------------------
+
+Add tab-completion for `notmuch-search` and `notmuch-search-filter`
+
+ These functions now support completion tags for query parts
+ starting with "tag:".
+
+Turn "id:MSG-ID" links into buttons associated with notmuch searches
+
+ Text of the form "id:MSG-ID" in mails is now a clickable button that
+ opens a notmuch search for the given message id.
+
+Add keybinding ('c I') for stashing Message-ID's without an id: prefix
+
+ Reduces manual labour when stashing them for use outside notmuch.
+
+Do not query on `notmuch-search` exit
+
+ It is harmless to kill the external notmuch process, so the user
+ is no longer interrogated when they interrupt a search.
+
+Performance
+-----------
+
+Emacs now constructs large search buffers more efficiently
+
+Search avoids opening and parsing message files
+
+ We now store more information in the database so search no longer
+ has to open every message file to get basic headers. This can
+ improve search speed by as much as 10X, but taking advantage of this
+ requires a database rebuild:
+
+ notmuch dump > notmuch.dump
+ # Backup, then remove notmuch database ($MAIL/.notmuch)
+ notmuch new
+ notmuch restore notmuch.dump
+
+New collection of add-on tools
+------------------------------
+
+The source directory "contrib" contains tools built on notmuch. These
+tools are not part of notmuch, and you should check their individual
+licenses. Feel free to report problems with them to the notmuch
+mailing list.
+
+nmbug - share tags with a given prefix
+
+ nmbug helps maintain a git repo containing all tags with a given
+ prefix (by default "notmuch::"). Tags can be shared by commiting
+ them to git in one location and restoring in another.
+
+Notmuch 0.9 (2011-10-01)
+========================
+
+New, general features
+---------------------
+
+Correct handling of interruptions during `notmuch new`
+
+ `notmuch new` now operates as a series of small, self-consistent
+ transactions, so it can correctly resume after an interruption or
+ crash. Previously, interruption could lose existing tags, fail to
+ detect messages on resume, or leave the database in a state
+ temporarily or permanently inconsistent with the mail store.
+
+Library changes
+---------------
+
+New functions
+
+ `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
+ allow multiple database operations to be performed atomically.
+
+ `notmuch_database_find_message_by_filename` does exactly what it says.
+
+API changes
+
+ `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
+ a status indicator and uses an output parameter for the
+ message. This change required changing the SONAME of libnotmuch to
+ libnotmuch.so.2
+
+Python bindings changes
+-----------------------
+
+ - Re-encode python unicode objects to utf-8 before passing back to
+ libnotmuch.
+ - Support `Database().begin_atomic()/end_atomic()`
+ - Support `Database().find_message_by_filename()`
+ NB! This needs a db opened in READ-WRITE mode currently, or it will crash
+ the python process. The is a limitation (=bug) of the underlying libnotmuch.
+ - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
+ - Update for `n_d_find_message*` API changes (see above).
+
+Ruby bindings changes
+---------------------
+
+ - Wrap new library functions `notmuch_database_{begin,end}_atomic.`
+ - Add new exception `Notmuch::UnbalancedAtomicError.`
+ - Rename destroy to destroy! according to Ruby naming conventions.
+ - Update for `n_d_find_message*` API changes (see above).
+
+Emacs improvements
+------------------
+
+ * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
+ signing key.
+ * Add `notmuch-show-refresh-view` function (and corresponding binding)
+ to refresh the view of a notmuch-show buffer.
+
+Reply formatting cleanup
+------------------------
+
+ `notmuch reply` no longer includes notification that non-leafnode
+ MIME parts are being suppressed.
+
+Notmuch 0.8 (2011-09-10)
+========================
+
+Improved handling of message/rfc822 parts
+
+ Both in the CLI and the emacs interface. Output of rfc822 parts now
+ includes the primary headers, as well as the body and all subparts.
+ Output of the completely raw rfc822-formatted message, including all
+ headers, is unfortunately not yet supported (but hopefully will be
+ soon).
+
+Improved Build system portability
+
+ Certain parts of the shell script generating notmuch.sym were
+ specific to the GNU versions of sed and nm. The new version should
+ be more portable to e.g. OpenBSD.
+
+Documentation update for Ruby bindings
+
+ Added documentation, typo fixes, and improved support for rdoc.
+
+Unicode, iterator, PEP8 changes for python bindings
+
+ - PEP8 (code formatting) changes for python files.
+ - Remove `Tags.__len__` ; see 0.6 release notes for motivation.
+ - Decode headers as UTF8, encode (unicode) database paths as UTF8.
+
+Notmuch 0.7 (2011-08-01)
+========================
+
+Vim interface improvements
+--------------------------
+
+Jason Woofenden provided a number of bug fixes for the Vim interface
+
+ * fix citation/signature fold lengths
+ * fix cig/cit parsing within multipart/*
+ * fix on-screen instructions for show-signature
+ * fix from list reformatting in search view
+ * fix space key: now archives (did opposite)
+
+Uwe Kleine-König contributed
+
+ * use full path for sendmail/doc fix
+ * fix compose temp file name
+
+Python Bindings changes
+-----------------------
+
+Sebastian Spaeth contributed two changes related to unicode and UTF8:
+
+ * message tags are now explicitly unicode
+ * query string is encoded as a UTF8 byte string
+
+Build-System improvements
+-------------------------
+
+Generate notmuch.sym after the relevant object files
+
+ This fixes a bug in parallel building. Thanks to Thomas Jost for the
+ patch.
+
+Notmuch 0.6.1 (2011-07-17)
+==========================
+
+Bug-fix release
+---------------
+
+Re-export Xapian exception typeinfo symbols
+
+ It turned out our aggressive symbol hiding caused problems for
+ people running gcc 4.4.5.
+
+Notmuch 0.6 (2011-07-01)
+=======================
+
+New, general features
+---------------------
+
+Folder-based searching
+
+ Notmuch queries can now include a search term to match the
+ directories in which mail files are stored (within the mail
+ storage). The syntax is as follows:
+
+ folder:<path>
+
+ For example, one might use things such as:
+
+ folder:spam
+ folder:2011-*
+ folder:work/todo
+
+ to match any path containing a directory "spam", "work/todo", or
+ containing a directory starting with "2011-", respectively.
+
+ This feature is particularly useful for users of delivery-agent
+ software (such as procmail or maildrop) that is filtering mail and
+ delivering it to particular folders, or users of systems such as
+ Gmail that use filesystem directories to indicate message tags.
+
+ NOTE: Only messages that are newly indexed with this version of
+ notmuch will be searchable with folder: terms. In order to enable
+ this feature for all mail, the entire notmuch index will need to be
+ rebuilt as follows:
+
+ notmuch dump > notmuch.dump
+ # Backup, then remove notmuch database ($MAIL/.notmuch)
+ notmuch new
+ notmuch restore notmuch.dump
+
+Support for PGP/MIME
+
+ Both the command-line interface and the emacs-interface have new
+ support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
+ and Jameson Graef Rollins for making this happen.
+
+New, automatic tags: "signed" and "encrypted"
+
+ These tags will automatically be applied to messages containing
+ multipart/signed and multipart/encrypted parts.
+
+ NOTE: Only messages that are newly indexed with this version of
+ notmuch will receive these tags.
+
+New command-line features
+-------------------------
+
+Add new "notmuch show --verify" option for signature verification
+
+ This option instruct notmuch to verify the signature of
+ PGP/MIME-signed parts.
+
+Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
+
+ This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
+ Note that this feature currently requires gpg-agent and a passphrase entry
+ tool (e.g. pinentry-gtk or pinentry-curses).
+
+Proper nesting of multipart parts in "notmuch show" output
+
+ MIME parts are now display with proper nesting to reflect original
+ MIME hierarchy of a message. This allows clients to correctly
+ analyze the MIME structure, (such as, for example, determining to
+ which parts a signature part applies).
+
+Add new "notmuch show --part" option
+
+ This is a replacement for the older "notmuch part" command, (which
+ is now deprecated—it should still work as always, but is no longer
+ documented). Putting part output under "notmuch show" allows for all
+ of the "notmuch show" options to be applied when extracting a single
+ part, (such as --format=json for extracting a message part with JSON
+ formatting).
+
+Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
+
+ The "notmuch search-tags" sub-command has been redundant since the
+ addition of the --output=tags option to "notmuch search". We now
+ make that more clear by deprecating "notmuch search-tags", (dropping
+ it from the documentation). We do continue to support the old syntax
+ by translating it internally to the new call.
+
+Performance improvements
+------------------------
+
+Faster searches (by doing fewer searches to construct threads)
+
+ Whenever a user asks for search results as threads, notmuch first
+ performs a search for messages matching the query, then performs
+ additional searches to find other messages in the resulting threads.
+
+ Removing inefficiencies and redundancies in these secondary searches
+ results in a measured speedups of 1.5x for a typical search.
+
+Faster searches (by doing fewer passes to gather message data)
+
+ Optimizing Xapian data access patterns (using a single pass to get
+ all message-document data rather than a pass for each data type)
+ results in a measured speedup of 1.7x for a typical search.
+
+ The benefits of this optimization combine with the preceding
+ optimization. With both in place, Austin Clements measured a speedup
+ of 2.5x for a search of all messages in his inbox (was 4.5s, now
+ 1.8s). Thanks, Austin!
+
+Faster initial indexing
+
+ More efficient indexing of new messages results in a measured
+ speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
+ rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
+
+Make "notmuch new" faster for unchanged directories
+
+ Optimizing to not do any further examinations of sub-directories
+ when the filesystem indicates that a directory is unchanged from the
+ last "notmuch new" results in measured speedups of 8.5 for the "No
+ new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
+
+New emacs-interface features
+----------------------------
+
+Support for PGP/MIME (GnuPG)
+
+ Automatically indicate validity of signatures for multipart/signed
+ messages. Automatically display decrypted content for
+ multipart/encrypted messages. See the emacs variable
+ notmuch-crypto-process-mime for more information. Note that this
+ needs gpg-agent and a pinentry tool just as the command-line tools.
+ Also note there is no support SMIME yet.
+
+Output of pipe command is now displayed if pipe command fails
+
+ This is extremely useful in the common use case of piping a patch to
+ "git am". If git fails to cleanly merge the patch the error messages
+ from the failed merge are now clearly displayed to the user, (where
+ previously they were silently hidden from the user).
+
+User-selectable From address
+
+ A user can choose which configured email addresses should be used as
+ the From address whenever composing a new message. To do so, simply
+ press C-u before the command which will open a new message. Emacs
+ will prompt for the from address to use.
+
+ The user can customize the "Notmuch Identities" setting in the
+ notmuch customize group in order to use addresses other than those in
+ the notmuch configuration file if desired.
+
+ The user can also choose to always be prompted for the from address
+ when composing a new message (without having to use C-u) by setting
+ the "Notmuch Always Prompt For Sender" option in the notmuch
+ customize group.
+
+Hiding of repeated subjects in collapsed thread view
+
+ In notmuch-show mode, if a collapsed message has the same subject as
+ its parent, the subject is not shown.
+
+Automatic detection and hiding of original message in top-posted message
+
+ When a message contains a line looking something like:
+
+ ----- Original Message -----
+
+ emacs hides this and all subsequent lines as an "original message",
+ (allowing the user to click or press enter on the "original message"
+ button to display it again). This makes the handling of top-posted
+ citations work much like conventional citations.
+
+New hooks for running code when tags are modified
+
+ Some users want to perform additional actions whenever a particular
+ tag is added/removed from a message. This could be used to, for
+ example, interface with some external spam-recognition training
+ tool. To facilitate this, two new hooks are added which can be
+ modified in the following settings of the notmuch customize group:
+
+ Notmuch Before Tag Hook
+ Notmuch After Tag Hook
+
+New optional support for hiding some multipart/alternative parts
+
+ Many emails are sent with redundant content within a
+ multipart/alternative group (such as a text/plain part as well as a
+ text/html part). Users can configure the setting:
+
+ Notmuch Show All Multipart/Alternative Parts
+
+ to "off" in the notmuch customize group to have the interface
+ automatically hide some part alternatives (such as text/html
+ parts). This new part hiding is not configured by default yet
+ because there's not yet a simple way to re-display such a hidden
+ part if it is not actually redundant with a displayed part.
+
+Better rendering of text/x-vcalendar parts
+
+ These parts are now displayed in a format suitable for use with the
+ emacs diary.
+
+Avoid getting confused by Subject and Author fields with newline characters
+
+ Replacing all characters with ASCII code less than 32 with a question mark.
+
+Cleaner display of From line in email messages
+
+ Remove double quotes, and drop "name" if it's actually just a repeat of
+ the email address.
+
+Vim interface improvements
+--------------------------
+
+Felipe Contreras provided a number of updates for the vim interface:
+
+ * Using sendmail directly rather than mailx,
+ * Implementing archive in show view
+ * Add support to mark as read in show and search views
+ * Add delete commands
+ * Various cleanups.
+
+Bindings improvements
+---------------------
+
+Ruby bindings are now much more complete
+
+ Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
+ `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
+
+Python bindings have been updated and extended
+
+ (docs online at http://packages.python.org/notmuch/)
+
+ New bindings:
+
+ - `Message().get_filenames()`, `Message().tags_to_maildir_flags()`,
+ `Message().maildir_flags_to_tags()`, `list(Threads())` and
+ `list(Messages)` works now
+ - `Message().__cmp__()` and `__hash__()`
+
+ These allow, for example:
+
+ if msg1 == msg2: ...
+
+ As well as set arithmetic on `Messages()`:
+
+ s1, s2 = set(msgs1), set(msgs2)
+ s1.union(s2)
+ s2 -= s1
+
+ Removed:
+
+ - `len(Messages())` as it exhausted the iterator
+
+ Use `len(list(Messages()))` or `Query.count_messages()`
+ to get the length.
+
+Added initial Go bindings in bindings/go
+
+New build-system features
+-------------------------
+
+Added support for building in a directory other than the source directory
+
+ This can be used with the widely-supported idiom of simply running
+ the configure script from some other directory:
+
+ mkdir build
+ cd build
+ ../configure
+ make
+
+Fix to save configure options for future, implicit runs of configure
+
+ When a user updates the source (such as with "git pull") calling
+ "make" may cause an automatic re-run of the configure script. When
+ this happens, the configure script will automatically be called with
+ the same options the user originally passed in the most-recent
+ manual invocation of configure.
+
+New test-suite feature
+----------------------
+
+Binary for bash for running test suite now located via PATH
+
+ The notmuch test suite requires a fairly recent version of bash (>=
+ bash 4). As some systems supply an older version of bash at
+ /bin/bash, the test suite is now updated to search $PATH to locate
+ the bash binary. This allows users of systems with old /bin/bash to
+ simply install bash >= 4 somewhere on $PATH before /bin and then use
+ the test suite.
+
+Support for testing output with a trailing newline
+
+ Previously, some tests would fail to notice a difference in the
+ presence/absence of a trailing newline in a program output, (which
+ has led to bugs in the past). Now, carefully-written tests (using
+ `test_expect_equal_file` rather than `test_expect_equal`) will detect
+ any change in the presence/absence of a trailing newline. Many tests
+ are updated to take advantage of this.
+
+Avoiding accessing user's $HOME while running test suite
+
+ The test suite now carefully creates its own HOME directory. This
+ allows the test suite to be run with no existing HOME directory, (as
+ some build systems apparently do), and avoids test-suite differences
+ due to configuration files in the users HOME directory.
+
+
+General bug fixes
+-----------------
+
+Output *all* files for "notmuch search --output=files"
+
+ For the cases where multiple files have the same Message ID,
+ previous versions of notmuch would output only one such file. This
+ command is now fixed to correctly output all files.
+
+Fixed spurious search results from "overlapped" indexing of addresses
+
+ This fixed a bug where a search for:
+
+ to:user@elsewhere.com
+
+ would incorrectly match a message sent:
+
+ To: user@example,com, someone@elsewhere.com
+
+Fix --output=json when search has no results
+
+ A bug present since notmuch 0.4 had caused searches with no results
+ to produce an invalid json object. This is now fixed to cleanly
+ return a valid json object representing an empty array "[]" as
+ expected.
+
+Fix the automatic detection of the From address for "notmuch reply"
+from the Received headers in some cases
+
+Fix core dump on DragonFlyBSD due to -1 return value from
+`sysconf(_SC_GETPW_R_SIZE_MAX)`
+
+Cleaned up several memory leaks
+
+Eliminated a few, rare segmentation faults and a double-free
+
+Fix libnotmuch library to only export notmuch API functions
+
+ Previous release of the notmuch library also exported some Xapian
+ C++ exception type symbols. These were never part of the library
+ interface and were never intended to be exported.
+
+Emacs-interface bug fixes
+-------------------------
+
+Display any unexpected output or errors from "notmuch search" invocations
+
+ Previously any misformatted output or trailing error messages were
+ silently ignored. This output is now clearly displayed. This fix was
+ very helpful in identifying and fixing the bug described below.
+
+Fix bug where some threads would be missing from large search results
+
+ When a search returned a "large" number of results, the emacs
+ interface was incorrectly dropping one thread every time the output
+ of the "notmuch search" process spanned the emacs read-buffer. This
+ is now fixed.
+
+Avoid re-compression of .gz files (and similar) when saving attachment
+
+ Emacs was being too clever for its own good and trying to
+ re-compress pre-compressed .gz files when saving such attachments
+ (potentially corrupting the attachment). The emacs interface is
+ fixed to avoid this bug.
+
+Fix hiding of a message when a previously-hidden citation is visible
+
+ Previously the citation would remain visible in this case. This is
+ fixed so that hiding a message hides all parts.
+
+Notmuch 0.5 (2010-11-11)
+========================
+
+New, general features
+---------------------
+
+Maildir-flag synchronization
+
+ Notmuch now knows how to synchronize flags in maildir filenames with
+ tags in the notmuch database. The following flag/tag mappings are
+ supported:
+
+ Flag <-> Tag
+ ---- -----
+ 'D' draft
+ 'F' flagged
+ 'P' passed
+ 'R' replied
+ 'S' unread (added when 'S' flag is not present)
+
+ The synchronization occurs in both directions, (for example, adding
+ the 'S' flag to a file will cause the "unread" tag to be added, and
+ adding the "replied" tag to a message will cause the file to be
+ renamed with an 'R' flag).
+
+ This synchronization is enabled by default for users of the
+ command-line interface, (though only files in directories named
+ "cur" or "new" will be renamed). It can be disabled by setting the
+ new `maildir.synchronize_flags` option in the configuration file. For
+ example:
+
+ notmuch config set maildir.synchronize_flags false
+
+ Users upgrading may also want to run "notmuch setup" once (just
+ accept the existing configuration) to get a new, nicely-commented
+ [maildir] section added to the configuration file.
+
+ For users of the notmuch library, the new synchronization
+ functionality is available with the following two new functions:
+
+ notmuch_message_maildir_flags_to_tags
+ notmuch_message_tags_to_maildir_flags
+
+ It is anticipated that future improvements to this support will
+ allow for safe synchronization of the 'T' flag with the "deleted"
+ tag, as well as support for custom flag/tag mappings.
+
+New library features
+--------------------
+
+Support for querying multiple filenames for a single message
+
+ It is common for the mailstore to contain multiple files with the
+ same message ID. Previously, notmuch would always hide these
+ duplicate files, (returning a single, arbitrary filename with
+ `notmuch_message_get_filename`).
+
+ With this release, library users can access all filenames for a
+ message with the new function:
+
+ notmuch_message_get_filenames
+
+ Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
+ and `notmuch_filenames_move_to_next` it is now possible to iterate
+ over all available filenames for a given message.
+
+New command-line features
+-------------------------
+
+New "notmuch show --format=raw" for getting at original email contents
+
+ This new feature allows for a fully-functional email client to be
+ built on top of the notmuch command-line without needing any direct
+ access to the mail store itself.
+
+ For example, it's now possible to run "emacs -f notmuch" on a local
+ machine with only ssh access to the mail store/notmuch database. To
+ do this, simply set the notmuch-command variable in emacs to the
+ name of a script containing:
+
+ ssh user@host notmuch "$@"
+
+ If the ssh client has enabled connection sharing (ControlMaster
+ option in OpenSSH), the emacs interface can be quite responsive this
+ way.
+
+General bug fixes
+-----------------
+
+Fix "notmuch search" to print nothing when nothing matches
+
+ The 0.4 release had a bug in which:
+
+ notmuch search <expression-with-no-matches>
+
+ would produce a single blank line of output, (where previous
+ versions would produce no output. This fix also causes a change in
+ the --format=json output, (which would previously produce "[]" and
+ now produces nothing).
+
+Emacs interface improvements
+----------------------------
+
+Fix to allow pipe ('|') command to work when using notmuch over ssh
+
+Fix count of lines in hidden signatures
+
+Omit repeated subject lines in (collapsed) thread display
+
+Display current thread subject in a header line
+
+Provide a "c i" binding to copy a thread ID from the search view
+
+Allow for notmuch-fcc-dirs to have a value of nil
+
+ Also, the more complex form of notmuch-fcc-dirs now has a slightly
+ different format. It no longer has a special first-element, fallback
+ string. Instead it's now a list of cons cells where the car of each
+ cell is a regular expression to be matched against the sender
+ address, and the cdr is the name of a folder to use for an FCC. So
+ the old fallback behavior can be achieved by including a final cell
+ of (".*" . "default-fcc-folder").
+
+Vim interface improvements
+--------------------------
+
+Felipe Contreras provided a number of updates for the vim interface
+
+ These include optimizations, support for newer versions of vim, fixed
+ support for sending mail on modern systems, new commands, and
+ various cleanups.
+
+New bindings
+------------
+
+Added initial ruby bindings in bindings/ruby
+
+Notmuch 0.4 (2010-11-01)
+========================
+
+New command-line features
+-------------------------
+
+`notmuch search --output=(summary|threads|messages|tags|files)`
+
+ This new option allows for particular items to be returned from
+ notmuch searches. The "summary" option is the default and behaves
+ just as "notmuch search" has historically behaved.
+
+ The new option values allow for thread IDs, message IDs, lists of
+ tags, and lists of filenames to be returned from searches. It is
+ expected that this new option will be very useful in shell
+ scripts. For example:
+
+ for file in $(notmuch search --output=files <search-terms>); do
+ <operations-on> "$file"
+ done
+
+`notmuch show --format=mbox <search-specification>`
+
+ This new option allows for the messages matching a search
+ specification to be presented as an mbox. Specifically the "mboxrd"
+ format is used which allows for reversible quoting of lines
+ beginning with "From ". A reader should remove a single '>' from the
+ beginning of all lines beginning with one or more '>' characters
+ followed by the 5 characters "From ".
+
+`notmuch config [get|set] <section>.<item> [value ...]`
+
+ The new top-level "config" command allows for any value in the
+ notmuch configuration file to be queried or set to a new value. Both
+ single-valued and multi-valued items are supported, as our any
+ custom items stored in the configuration file.
+
+Avoid setting Bcc header in "notmuch reply"
+
+ We decided that this was a bit heavy-handed as the actual mail
+ user-agent should be responsible for setting any Bcc option. Also,
+ see below for the notmuch/emacs user-agent now setting an Fcc by
+ default rather than Bcc.
+
+New library features
+--------------------
+
+Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
+
+ These are simply functions for querying properties of a
+ `notmuch_query_t` object.
+
+New emacs features
+------------------
+
+Enable Fcc of all sent messages by default (to "sent" directory)
+
+ All messages sent from the emacs interface will now be saved to the
+ notmuch mail store where they will be incorporated to the database
+ by the next "notmuch new". By default, messages are saved to the
+ "sent" directory at the top-level of the mail store. This directory
+ can be customized by means of the "Notmuch Fcc Dirs" option in the
+ notmuch customize interface.
+
+Ability to all open messages in a thread to a pipe
+
+ Historically, the '|' keybinding allows for piping a single message
+ to an external command. Now, by prefixing this key with a prefix
+ argument, (for example, by pressing "Control-U |"), all open
+ messages in the current thread will be sent to the external command.
+
+Optional support for detecting inline patches
+
+ This hook is disabled by default but can be enabled with a checkbox
+ under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
+ interface. It allows for inline patches to be detected and treated
+ as if they were attachments, (with context-sensitive highlighting).
+
+Automatically tag messages as "replied" when sending a reply
+
+ Messages replied to within the emacs interface will now be tagged as
+ "replied". This feature can easily be customized to add or remove
+ other tags as well. For example, a user might use a tag of
+ "needs-reply" and can configure this feature to automatically remove
+ that tag when replying. See "Notmuch Message Mark Replied" in the
+ notmuch customize interface.
+
+Allow search-result color specifications to overlay each other
+
+ For example, one tag can specify the background color of matching
+ lines, while another can specify the foreground. With this change,
+ both settings will now be visible simultaneously, (which was not the
+ case in previous releases). See "Notmuch Search Line Faces" in the
+ notmuch customize interface.
+
+Make hidden author names still available for incremental search
+
+ When there is insufficient space to display all authors of a thread
+ in search results, the names of hidden authors are now still made
+ available to emacs' incremental search commands. As the user
+ searches, matching lines will temporarily expand to show the hidden
+ names.
+
+New binding of Control-TAB (works like TAB in reverse)
+
+ Many notmuch nodes already use TAB to navigate forward through
+ various items allowing actions, (message headers, email attachments,
+ etc.). The new Control-TAB binding operates similarly but in the
+ opposite direction.
+
+New build-system features
+-------------------------
+
+Various portability fixes have been applied
+
+ These include fixes for build failures on at least Solaris, FreeBSD,
+ and Fedora systems. We're hopeful that the notmuch code base is now
+ more portable than ever before.
+
+Arrange for libnotmuch to be found automatically after make install
+
+ The notmuch build system is now careful to help the user avoid
+ errors of the form "libnotmuch.so could not be found" immediately
+ after installing. This support takes two forms:
+
+ 1. If the library is installed to a system directory,
+ (configured in /etc/ld.so.conf), then "make install" will
+ automatically run ldconfig.
+
+ 2. If the library is installed to a non-system directory, the
+ build system adds a `DR_RUNPATH` entry to the final binary
+ pointing to the directory to which the library is installed.
+
+ When this support works, the user should be able to run notmuch
+ immediately after "make install", without any errors trying to find
+ the notmuch library, and without having to manually set environment
+ variables such as `LD_LIBRARY_PATH`.
+
+Check compiler/linker options before using them
+
+ The configure script now carefully checks that any desired
+ compilation options, (whether for enabling compiler warnings, or for
+ embedding rpath, etc.), are supported. Only supported options are
+ used in the resulting Makefile.
+
+New test-suite features
+-----------------------
+
+New modularization of test suite
+
+ Thanks to a gracious relicensing of the test-suite infrastructure
+ from the git project, notmuch now has a modular test suite. This
+ provides the ability to run individual sections of the test suite
+ rather than the whole things. It also provides better summary of
+ test results, with support for tests that are expected to fail
+ (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
+ it easy to run the test suite within valgrind (pass --valgrind to
+ notmuch-test or to any sub-script) which has been very useful.
+
+New testing of emacs interface
+
+ The test suite has been augmented to allow automated testing of the
+ emacs interfaces. So far, this includes basic searches, display of
+ threads, and tag manipulation. This also includes a test that a new
+ message can successfully be sent out through a (dummy) SMTP server
+ and that said message is successfully integrated into the notmuch
+ database via the FCC setting.
+
+General bug fixes
+-----------------
+
+Fix potential corruption of database when "notmuch new" is interrupted
+
+ Previously, an interruption of "notmuch new" would (rarely) result
+ in a corrupt database. The corruption would manifest itself by a
+ persistent error of the form:
+
+ document ID of 1234 has no thread ID
+
+ The message-adding code has been carefully audited and reworked to
+ avoid this sort of corruption regardless of when it is interrupted.
+
+Fix failure with extremely long message ID headers
+
+ Previously, a message with an extremely long message ID, (say, more
+ than 300 characters), would fail to be added to notmuch, (triggering
+ Xapian exceptions). This has now been fixed.
+
+Fix for messages with "charset=unknown-8bit"
+
+ Previously, messages with this charset would cause notmuch to emit a
+ GMime warning, (which would then trip up emacs or other interfaces
+ parsing the notmuch results).
+
+Fix `notmuch_query_search_threads` function to return NULL on any exception
+
+Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
+fails
+
+ Previously, this command could confusingly report a Xapian
+ exception, yet still return an error code of 0. It now correctly
+ returns a failing error code of 1 in this case.
+
+Emacs bug fixes
+---------------
+
+Fix to handle a message with a subject containing, for example "[1234]"
+
+ Previously, a message subject containing a sequence of digits within
+ square brackets would cause the emacs interface to mis-parse the
+ output of "notmuch search". This would result in the message being
+ mis-displayed and prevent the user from manipulating the message in
+ the emacs interface.
+
+Fix to correctly handle message IDs containing ".."
+
+ The emacs interface now properly quotes message IDs to avoid a
+ Xapian bug in which the ".." within a message ID would be
+ misinterpreted as a numeric range specification.
+
+Python-binding fixes
+--------------------
+
+The python bindings for notmuch have been updated to work with python3.
+
+Debian-specific fixes
+---------------------
+
+Fix emacs initialization so "M-x notmuch" works for users by default
+
+ Now, a new Debian user can immediately run "emacs -f notmuch" after
+ "apt-get install notmuch". Previously, the user would have had to
+ edit the ~/.emacs file to add "(require 'notmuch)" before this would
+ work.
+
+Notmuch 0.3.1 (2010-04-27)
+==========================
+
+General bug fixes
+-----------------
+
+Fix an infinite loop in "notmuch reply"
+
+ This bug could be triggered by replying to a message where the
+ user's primary email address did not appear in the To: header and
+ the user had not configured any secondary email addresses. The bug
+ was a simple re-use of the same iterator variable in nested loops.
+
+Fix a potential SEGV in "notmuch search"
+
+ This bug could be triggered by an author name ending in a ','.
+ Admittedly - that's almost certainly a spam email, but we never
+ want notmuch to crash.
+
+Emacs bug fixes
+---------------
+
+Fix calculations for line wrapping in the primary "notmuch" view
+
+Fix Fcc support to prompt to create a directory if the specified Fcc
+directory does not exist
+
+Build fix
+---------
+
+Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
+
+ Without this, the C++ sources could not find strcasestr and the
+ final linking of notmuch would fail.
+
+Notmuch 0.3 (2010-04-27)
+========================
+
+New command-line features
+-------------------------
+
+User-configurable tags for new messages
+
+ A new "new.tags" option is available in the configuration file to
+ determine which tags are applied to new messages. Run "notmuch
+ setup" to generate new documentation within ~/.notmuch-config on how
+ to specify this value.
+
+Threads search results named based on subjects that match search
+
+ This means that when new mails arrived to a thread you've previously
+ read, and the new mails have a new subject, you will see that
+ subject in the search results rather than the old subject.
+
+Faster operation of "notmuch tag" (avoid unneeded sorting)
+
+ Since the user just wants to tag all matching messages, we can make
+ things perform a bit faster by avoiding the sort.
+
+Even Better guessing of From: header for "notmuch reply"
+
+ Notmuch now looks at a number of headers when trying to figure out
+ the best From: header to use in a reply. This is helpful if you have
+ several configured email addresses, and you also subscribe to various
+ mailing lists with different addresses, (so that mails you are
+ replying to won't always include your subscribed address in the To:
+ header).
+
+Indication of author names that match a search