-Notmuch 0.12 (2012-xx-xx)
+Notmuch 0.13 (2012-xx-xx)
=========================
Command-Line Interface
to all. The feature is available through the new command line option
--reply-to=(all|sender).
+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 intelligtently.
+ 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
+---------------
+
+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
+---------------
+
+API changes
+
+ 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 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
---------------
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)
=========================
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)
+ (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
Various performance improvements.
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
+ notmuch dump > notmuch.dump
+ # Backup, then remove notmuch database ($MAIL/.notmuch)
+ notmuch new
+ notmuch restore notmuch.dump
New collection of add-on tools
------------------------------
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>
+ folder:<path>
For example, one might use things such as:
- folder:spam
- folder:2011-*
- folder:work/todo
+ 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 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
+ notmuch dump > notmuch.dump
+ # Backup, then remove notmuch database ($MAIL/.notmuch)
+ notmuch new
+ notmuch restore notmuch.dump
Support for PGP/MIME
New command-line features
-------------------------
+
Add new "notmuch show --verify" option for signature verification
This option instruct notmuch to verify the signature of
Performance improvements
------------------------
+
Faster searches (by doing fewer searches to construct threads)
Whenever a user asks for search results as threads, notmuch first
When a message contains a line looking something like:
- ----- Original Message -----
+ ----- 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"
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
+ Notmuch Before Tag Hook
+ Notmuch After Tag Hook
New optional support for hiding some multipart/alternative parts
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
+ 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
Vim interface improvements
--------------------------
+
Felipe Contreras provided a number of updates for the vim interface:
* Using sendmail directly rather than mailx,
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().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: ...
+
+ if msg1 == msg2: ...
As well as set arithmetic on Messages():
- s1, s2= set(msgs1), set(msgs2)
- s1.union(s2)
- s2 -= s1
+ 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.
+
+ - 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
+ mkdir build
+ cd build
+ ../configure
+ make
Fix to save configure options for future, implicit runs of configure
New test-suite feature
----------------------
-Binary for bash for running test suite now located via PATH.
+
+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
General bug fixes
-----------------
+
Output *all* files for "notmuch search --output=files"
For the cases where multiple files have the same Message ID,
This fixed a bug where a search for:
- to:user@elsewhere.com
+ to:user@elsewhere.com
would incorrectly match a message sent:
- To: user@example,com, someone@elsewhere.com
+ To: user@example,com, someone@elsewhere.com
Fix --output=json when search has no results
Emacs-interface bug fixes
-------------------------
+
Display any unexpected output or errors from "notmuch search" invocations
Previously any misformatted output or trailing error messages were
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)
+ 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
new maildir.synchronize_flags option in the configuration file. For
example:
- notmuch config set maildir.synchronize_flags false
+ 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
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
+ 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"
New library features
--------------------
+
Support for querying multiple filenames for a single message
It is common for the mailstore to contain multiple files with the
With this release, library users can access all filenames for a
message with the new function:
- notmuch_message_get_filenames
+ 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
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
do this, simply set the notmuch-command variable in emacs to the
name of a script containing:
- ssh user@host notmuch "$@"
+ ssh user@host notmuch "$@"
If the ssh client has enabled connection sharing (ControlMaster
option in OpenSSH), the emacs interface can be quite responsive this
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>
+ 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
Emacs interface improvements
----------------------------
+
Fix to allow pipe ('|') command to work when using notmuch over ssh
Fix count of lines in hidden signatures.
Vim interface improvements
--------------------------
-Felipe Contreras provided a number of updates for the vim interface.
+
+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
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
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
+ for file in $(notmuch search --output=files <search-terms>); do
+ <operations-on> "$file"
+ done
notmuch show --format=mbox <search-specification>
New library features
--------------------
+
Add notmuch_query_get_query_string and notmuch_query_get_sort
These are simply functions for querying properties of a
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
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.
+ 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.
+ 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
New test-suite features
-----------------------
-New modularization of test suite.
+
+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
General bug fixes
-----------------
-Fix potential corruption of database when "notmuch new " is interrupted.
+
+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
+ 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.
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
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.
+
+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
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
Emacs bug fixes
---------------
-Fix calculations for line wrapping in the primary "notmuch" view.
+
+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.
+
+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
New: Python bindings
--------------------
+
Sebastian Spaeth has contributed his python bindings for the notmuch
library to the central repository. These bindings were previously
known as "cnotmuch" within python but have now been renamed to be
Emacs interface improvements
----------------------------
+
An entirely new initial view for notmuch, (friendly yet powerful)
Some of us call the new view "notmuch hello" but you can get at it
search of messages with that tag that's simply a click (or keypress)
away.
- Note: For users that liked the original mode of "emacs -f notmuch"
- immediately displaying a particular search result, we
- recommend instead running something like:
+ NOTE: For users that liked the original mode of "emacs -f notmuch"
+ immediately displaying a particular search result, we recommend
+ instead running something like:
- emacs --eval '(notmuch search "tag:inbox" t)'
+ emacs --eval '(notmuch search "tag:inbox" t)'
- The "t" means to sort the messages in an "oldest first" order,
- (as notmuch would do previously by default). You can also
- leave that off to have your search results in "newest first"
- order.
+ The "t" means to sort the messages in an "oldest first" order,
+ (as notmuch would do previously by default). You can also
+ leave that off to have your search results in "newest first"
+ order.
Full-featured "customize" support for configuring notmuch
One such program (implemented in python with the python bindings to
notmuch) is available via:
- git clone http://jkr.acm.jhu.edu/git/notmuch_addresses.git
+ git clone http://jkr.acm.jhu.edu/git/notmuch_addresses.git
Install that program as notmuch-addresses on your PATH, and then
hitting TAB on a partial email address or name within the To: or Cc:
New library feature
-------------------
+
Provide a new NOTMUCH_SORT_UNSORTED value for queries
This can be somewhat faster when sorting simply isn't desired. For
Build fixes
-----------
+
Fix to compile against GMime 2.6
Previously notmuch insisted on being able to find GMime 2.4, (even
Test suite
----------
-A large number of new tests for the many new features.
-Better display of output from failed tests.
+A large number of new tests for the many new features
+
+Better display of output from failed tests
Now shows failures with diff rather than forcing the user to gaze at
complete actual and expected output looking for deviation.
Notmuch 0.2 (2010-04-16)
========================
+
This is the second release of the notmuch mail system, with actual
detailed release notes this time!
General features
----------------
-Better guessing of From: header.
+
+Better guessing of From: header
Notmuch now tries harder to guess which configured address should be
used as the From: line in a "notmuch reply". It will examine the
General bug fixes
-----------------
+
Fix potential data loss in "notmuch new" with SIGINT
One code path in "notmuch new" was not properly handling
Previously, the user might see:
- Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
+ Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
rather than:
- Subject: Re: Rozlučka
+ Subject: Re: Rozlučka
The former text is properly encoded to be RFC-compliant SMTP, will
be sent correctly, and will be properly decoded by the
Emacs client features
---------------------
-Show the last few lines of citations as well as the first few lines.
+
+Show the last few lines of citations as well as the first few lines
It's often the case that the last sentence of a citation is what is
being replied to directly, so the last few lines are often much more
Build-system features
---------------------
-Add support to properly build libnotmuch on Darwin systems (OS X).
-Add support to configure for many standard options.
+Add support to properly build libnotmuch on Darwin systems (OS X)
+
+Add support to configure for many standard options
We include actual support for:
- --includedir --mandir --sysconfdir
+ --includedir --mandir --sysconfdir
And accept and silently ignore several more:
- --build --infodir --libexecdir --localstatedir
- --disable-maintainer-mode --disable-dependency-tracking
+ --build --infodir --libexecdir --localstatedir
+ --disable-maintainer-mode --disable-dependency-tracking
Install emacs client in "make install" rather than requiring a
separate "make install-emacs".
Notmuch 0.1 (2010-04-05)
========================
+
This is the first release of the notmuch mail system.
It includes the libnotmuch library, the notmuch command-line
tags. This would cause distracting pauses when reading mail while
notmuch would wait for Xapian when removing the "inbox" and "unread"
tags from messages in a thread.
+
+
+<!--
+ Local variables:
+ mode: text
+ tab-width: 8
+ indent-tabs-mode: nil
+ End:
+ vi: sw=8 ts=8 et
+-->