X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=NEWS;h=5a1778e6cad40a6571182b007dfeec7db0720f02;hp=f29ac274da47780ace1564a05f88da6a97575ce5;hb=ce08571428dc784e279b28527f8073a1a05d7c37;hpb=e2dd4ac00b9979de34bd517fa57de56260d38755 diff --git a/NEWS b/NEWS index f29ac274..5a1778e6 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,760 @@ +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 + + 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 fineal cell + of (".*" . "default-fcc-folder"). + +Vim interface improvements +-------------------------- +Felipe Contreras provided a number of updates for the vim interface. + + These include optimiations, support for newer versions of vim, fixed + support for sending mail on modern systmms, 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 ); do + "$file" + done + +notmuch show --format=mbox + + 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]
. [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 th '*' 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.