]> git.notmuchmail.org Git - notmuch/blobdiff - NEWS
tag: Automatically limit to messages whose tags will actually change.
[notmuch] / NEWS
diff --git a/NEWS b/NEWS
index 035e25e68cdc8e4e995a7cba5967e8eba9e3cf5f..2b2f08a6b799d5ba51a5577fc0a1f44e0126f68e 100644 (file)
--- a/NEWS
+++ b/NEWS
-Notmuch 0.3.1 (2010-04-27)
+Notmuch 0.11 (201x-xx-xx)
+=========================
+
+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.
+
+
+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)
 ==========================
-General bug fix
+
+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 a potential SEGV in "notmuch search"
+Fix to handle a message with a subject containing, for example "[1234]"
 
-  This bug could be triggered by an author name ending in a ','.
-  Admittedly - that's almost certainly a spam email. Still needs
-  to be handled correctly.
+  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
@@ -15,6 +983,12 @@ Fix an infinite loop in "notmuch reply"
   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.
@@ -253,7 +1227,7 @@ Fix to compile against GMime 2.6
 
 Fix configure script to accept (and ignore) various standard options.
 
-  For example, those that the gentoo build scripts expect configure to
+  For example, those that the Gentoo build scripts expect configure to
   accept are now all accepted.
 
 Test suite
@@ -361,7 +1335,7 @@ tags by region.
   Selective bulk tagging is now possible by selecting a region of
   threads and then using either the '+' or '-' keybindings. Bulk
   tagging is still available for all threads matching the current
-  search with th '*' binding.
+  search with the '*' binding.
 
 More meaningful buffer names for thread-view buffers.