mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 09:24:54 +01:00
1206 lines
45 KiB
Text
1206 lines
45 KiB
Text
Notmuch 0.8 (2011-09-05)
|
|
========================
|
|
|
|
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.
|
|
|
|
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 improvments
|
|
------------------------
|
|
|
|
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 upodated 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 exausted 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
|
|
|
|
When notmuch displays threads as the result of a search, it now
|
|
lists the authors that match the search before listing the other
|
|
authors in the thread. It inserts a pipe '|' symbol between the last
|
|
matching and first non-matching author. This is especially useful in
|
|
a search that includes tag:unread. Now the authors of the unread
|
|
messages in the thread are listed first.
|
|
|
|
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
|
|
accessible with a simple, and more official-looking "import notmuch".
|
|
|
|
The bindings have already proven very useful as people proficient in
|
|
python have been able to easily develop programs to do notmuch-based
|
|
searches for email-address completion, maildir-flag synchronization,
|
|
and other tasks.
|
|
|
|
These bindings are available within the bindings/python directory, but
|
|
are not yet integrated into the top-level Makefiles, nor the top-level
|
|
package-building scripts. Improvements are welcome.
|
|
|
|
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
|
|
by simply calling "emacs -f notmuch". The new view provides a search
|
|
bar where new searches can be performed. It also displays a list of
|
|
recent searches, along with a button to save any of these, giving it
|
|
a new name as a "saved search". Many people find these "saved
|
|
searches" one of the most convenient ways of organizing their mail,
|
|
(providing all of the features of "folders" in other mail clients,
|
|
but without any of the disadvantages).
|
|
|
|
Finally, this view can also optionally display all of the tags that
|
|
exist in the database, along with a count for each tag, and a custom
|
|
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:
|
|
|
|
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.
|
|
|
|
Full-featured "customize" support for configuring notmuch
|
|
|
|
Notmuch now plugs in well to the emacs "customize" mode to make it
|
|
much simpler to find things about the notmuch interface that can be
|
|
tweaked by the user.
|
|
|
|
You can get to this mode by starting at the main "Customize" menu in
|
|
emacs, then browsing through "Applications", "Mail", and
|
|
"Notmuch". Or you can go straight to "M-x customize-group"
|
|
"notmuch".
|
|
|
|
Once you're at the customize screen, you'll see a list of documented
|
|
options that can be manipulated along with checkboxes, drop-down
|
|
selectors, and text-entry boxes for configuring the various
|
|
settings.
|
|
|
|
Support for doing tab-completion of email addresses
|
|
|
|
This support currently relies on an external program,
|
|
(notmuch-addresses), that is not yet shipped with notmuch
|
|
itself. But multiple, suitable implementations of this program have
|
|
already been written that generate address completions by doing
|
|
notmuch searches of your email collection. For example, providing
|
|
first those addresses that you have composed messages to in the
|
|
past, etc.
|
|
|
|
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
|
|
|
|
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:
|
|
line of an email message will provide matching completions.
|
|
|
|
Support for file-based (Fcc) delivery of sent messages to mail store
|
|
|
|
This isn't yet enabled by default. To enable this, one will have to
|
|
set the "Notmuch Fcc Dirs" setting within the notmuch customize
|
|
screen, (see its documentation there for details). We anticipate
|
|
making this automatic in a future release.
|
|
|
|
New 'G' key binding to trigger mail refresh (G == "Get new mail")
|
|
|
|
The 'G' key works wherever '=' works. Before refreshing the screen
|
|
it calls an external program that can be used to poll email servers,
|
|
run notmuch new and setup specific tags for the new emails. The
|
|
script to be called should be configured with the "Notmuch Poll
|
|
Script" setting in the customize interface. This script will
|
|
typically invoke "notmuch new" and then perhaps several "notmuch
|
|
tag" commands.
|
|
|
|
Implement emacs message display with the JSON output from notmuch.
|
|
|
|
This is much more robust than the previous implementation, (where
|
|
some HTML mails and mail quoting the notmuch code with the delimiter
|
|
characters in it would cause the parser to fall over).
|
|
|
|
Better handling of HTML messages and MIME attachments (inline images!)
|
|
|
|
Allow for any MIME parts that emacs can display to be displayed
|
|
inline. This includes inline viewing of image attachments, (provided
|
|
the window is large enough to fit the image at its natural size).
|
|
|
|
Much more robust handling of HTML messages. Currently both text/plain
|
|
and text/html alternates will be rendered next to each other. In a
|
|
future release, users will be able to decide to see only one or the
|
|
other representation.
|
|
|
|
Each attachment now has its own button so that attachments can be
|
|
saved individually (the 'w' key is still available to save all
|
|
attachments).
|
|
|
|
Customizable support for tidying of text/plain message content
|
|
|
|
Many new functions are available for tidying up message
|
|
content. These include options such as wrapping long lines,
|
|
compressing duplicate blank lines, etc.
|
|
|
|
Most of these are disabled by default, but can easily be enabled by
|
|
clicking the available check boxes under the "Notmuch Show Insert
|
|
Text/Plain Hook" within the notmuch customize screen.
|
|
|
|
New support for searchable citations (even when hidden)
|
|
|
|
When portions of overly-long citations are hidden, the contents of
|
|
these citations will still be available for emacs' standard
|
|
"incremental search" functions. When the search matches any portion
|
|
of a hidden citation, the citation will become visible temporarily
|
|
to display the search result.
|
|
|
|
More flexible handling of header visibility
|
|
|
|
As an answer to complaints from many users, the To, Cc, and Date
|
|
headers of messages are no longer hidden by default. For those users
|
|
that liked that these were hidden, a new "Notmuch Messages Headers
|
|
Visible" option in the customize interface can be set to nil. The
|
|
visibility of headers can still be toggled on a per-message basis
|
|
with the 'h' keybinding.
|
|
|
|
For users that don't want to see some subset of those headers, the
|
|
new "Notmuch Message Headers" variable can be customized to list
|
|
only those headers that should be present in the display of a message.
|
|
|
|
The Return key now toggles message visibility anywhere
|
|
|
|
Previously this worked only on the first summary-line of a message.
|
|
|
|
Customizable formatting of search results
|
|
|
|
The user can easily customize the order, width, and formatting of
|
|
the various fields in a "notmuch search" buffer. See the "Notmuch
|
|
Search Result Format" section of the customize interface.
|
|
|
|
Generate nicer names for search buffers when using a saved search.
|
|
|
|
Add a notmuch User-Agent header when sending mail from notmuch/emacs.
|
|
|
|
New keybinding (M-Ret) to open all collapsed messages in a thread.
|
|
|
|
New library feature
|
|
-------------------
|
|
Provide a new NOTMUCH_SORT_UNSORTED value for queries
|
|
|
|
This can be somewhat faster when sorting simply isn't desired. For
|
|
example when collecting a set of messages that will all be
|
|
manipulated identically, (adding a tag, removing a tag, deleting the
|
|
messages), then there's no advantage to sorting the messages by
|
|
date.
|
|
|
|
Build fixes
|
|
-----------
|
|
Fix to compile against GMime 2.6
|
|
|
|
Previously notmuch insisted on being able to find GMime 2.4, (even
|
|
though GMime 2.6 would have worked all along).
|
|
|
|
Fix configure script to accept (and ignore) various standard options.
|
|
|
|
For example, those that the Gentoo build scripts expect configure to
|
|
accept are now all accepted.
|
|
|
|
Test suite
|
|
----------
|
|
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!
|
|
|
|
This release consists of a number of minor new features that make
|
|
notmuch more pleasant to use, and a few fairly major bug fixes.
|
|
|
|
We didn't quite hit our release target of "about a week" from the 0.1
|
|
release, (0.2 is happening 11 days after 0.1), but we hope to do
|
|
better for next week. Look forward to some major features coming to
|
|
notmuch in subsequent releases.
|
|
|
|
-Carl
|
|
|
|
General features
|
|
----------------
|
|
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
|
|
Received: headers if it fails to find any configured address in To:
|
|
or Cc:. This allows it to often choose the correct address even when
|
|
replying to a message sent to a mailing list, and not directly to a
|
|
configured address.
|
|
|
|
Make "notmuch count" with no arguments count all messages
|
|
|
|
Previously, it was hard to construct a search term that was
|
|
guaranteed to match all messages.
|
|
|
|
Provide a new special-case search term of "*" to match all messages.
|
|
|
|
This can be used in any command accepting a search term, such as
|
|
"notmuch search '*'". Note that you'll want to take care that the
|
|
shell doesn't expand * against the current files. And note that the
|
|
support for "*" is a special case. It's only meaningful as a single
|
|
search term and loses its special meaning when combined with any
|
|
other search terms.
|
|
|
|
Automatically detect thread connections even when a parent message is
|
|
missing.
|
|
|
|
Previously, if two or more message were received with a common
|
|
parent, but that parent was not received, then these messages would
|
|
not be recognized as belonging to the same thread. This is now fixed
|
|
so that such messages are properly connected in a thread.
|
|
|
|
General bug fixes
|
|
-----------------
|
|
Fix potential data loss in "notmuch new" with SIGINT
|
|
|
|
One code path in "notmuch new" was not properly handling
|
|
SIGINT. Previously, this could lead to messages being removed from
|
|
the database (and their tags being lost) if the user pressed
|
|
Control-C while "notmuch new" was working.
|
|
|
|
Fix segfault when a message includes a MIME part that is empty.
|
|
|
|
Fix handling of non-ASCII characters with --format=json
|
|
|
|
Previously, characters outside the range of 7-bit ASCII were
|
|
silently dropped from the JSON output. This led to corrupted display
|
|
of utf-8 content in the upcoming notmuch web-based frontends.
|
|
|
|
Fix headers to be properly decoded in "notmuch reply"
|
|
|
|
Previously, the user might see:
|
|
|
|
Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
|
|
|
|
rather than:
|
|
|
|
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
|
|
recipient. But the user trying to edit the reply would likely be
|
|
unable to read or edit that field in its encoded form.
|
|
|
|
Emacs client features
|
|
---------------------
|
|
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
|
|
important. The number of lines shown at the beginning and end of any
|
|
citation can be configured, (notmuch-show-citation-lines-prefix and
|
|
notmuch-show-citation-lines-suffix).
|
|
|
|
The '+' and '-' commands in the search view can now add and remove
|
|
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 the '*' binding.
|
|
|
|
More meaningful buffer names for thread-view buffers.
|
|
|
|
Notmuch now uses the Subject of the thread as the buffer
|
|
name. Previously it was using the thread ID, which is a meaningless
|
|
number to the user.
|
|
|
|
Provide for customized colors of threads in search view based on tags.
|
|
|
|
See the documentation of notmuch-search-line-faces, (or us "M-x
|
|
customize" and browse to the "notmuch" group within "Applications"
|
|
and "Mail"), for details on how to configure this colorization.
|
|
|
|
Build-system features
|
|
---------------------
|
|
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
|
|
|
|
And accept and silently ignore several more:
|
|
|
|
--build --infodir --libexecdir --localstatedir
|
|
--disable-maintainer-mode --disable-dependency-tracking
|
|
|
|
Install emacs client in "make install" rather than requiring a
|
|
separate "make install-emacs".
|
|
|
|
Automatically compute versions numbers between releases.
|
|
|
|
This support uses the git-describe notation, so a version such as
|
|
0.1-144-g43cbbfc indicates a version that is 144 commits since the
|
|
0.1 release and is available as git commit "43cbbfc".
|
|
|
|
Add a new "make test" target to run the test suite and actually verify
|
|
its results.
|
|
|
|
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
|
|
interface, and an emacs-based interface to notmuch.
|
|
|
|
Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
|
|
1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
|
|
a performance bug that made notmuch very slow when modifying
|
|
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.
|
|
|