X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=NEWS;h=3c2cd8242d730f523257ba22626baee63d9b9a4a;hp=ce0ea452a5b3678320559338df2c6fbc8ed98838;hb=8d479ce3e80453c6497753ba490502777b6f66f3;hpb=2baa5769a3339b6b866c0f1bbf40006a6eae9808 diff --git a/NEWS b/NEWS index ce0ea452..3c2cd824 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,1227 @@ -Notmuch 0.3.1 (2010-04-27) +Notmuch 0.12 (2012-xx-xx) +========================= + +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. + +Emacs Interface +--------------- + +Reply to sender + + The Emacs interface has, with the new CLI support, gained the + ability to reply to sender in addition to reply to all. In both show + and search modes, 'r' has been bound to reply to sender, replacing + reply to all, which now has key binding 'R'. + +More flexible and consistent tagging operations + + All tagging operations ("+", "-", "*") now accept multiple tags with + "+" or "-" prefix, like "*" operation in notmuch-search view before. + + "*" operation (`notmuch-show-tag-all') is now available in + notmuch-show view. + + `Notmuch-show-{add,remove}-tag' functions no longer accept tag + argument, `notmuch-show-tag-message' should be used instead. Custom + bindings using these functions should be updated, e.g.: + + (notmuch-show-remove-tag "unread") + + should be changed to: + + (notmuch-show-tag-message "-unread") + +Refreshing the show view ('=' by default) no longer opens or closes messages + + To get the old behavior of putting messages back in their initial + opened/closed state, use a prefix argument, e.g., C-u =. + +Attachment buttons can be used to view or save attachments. + + When the cursor is on an attachment button the key 's' can be used + to save the attachment, the key 'v' to view the attachment in the + default mailcap application, and the key 'o' prompts the user for an + application to use to open the attachment. By default Enter or mouse + button 1 saves the attachment but this is customisable (option + Notmuch Show Part Button Default Action). + +New functions + + `notmuch-show-stash-mlarchive-link{,-and-go}' allow stashing and + optionally visiting a URI to the current message at one of a number + of Mailing List Archives. + +Fix MML tag quoting in replies + + The MML tag quoting fix of 0.11.1 unintentionally quoted tags + inserted in `message-setup-hook'. Quoting is now limited to the + cited message. + +Show view archiving key binding changes + + The show view archiving key bindings 'a' and 'x' now remove the + "inbox" tag from the current message only (instead of thread), and + move to the next message. At the last message, 'a' proceeds to the + next thread in search results, and 'x' returns to search + results. The thread archiving functions are now available in 'A' and + 'X'. + +Support text/calendar MIME type + + The text/calendar MIME type is now supported in addition to + text/x-vcalendar. + +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 current GMime 2.6 causes notmuch not to report + signatures where the signer key is unavailable (GNOME bug 668085). + +Notmuch 0.11.1 (2012-02-03) +=========================== + +Bug-fix release. +---------------- + +Fix error handling in python bindings. + + The python bindings in 0.11 failed to detect NULL pointers being + returned from libnotmuch functions and thus failed to raise + exceptions to indicate the error condition. Any subsequent calls + into libnotmuch caused segmentation faults. + +Quote MML tags in replies + + MML tags are text codes that Emacs uses to indicate attachments + (among other things) in messages being composed. The Emacs + interface did not quote MML tags in the quoted text of a reply. + User could be tricked into replying to a maliciously formatted + message and not editing out the MML tags from the quoted text. This + could lead to files from the user's machine being attached to the + outgoing message. The Emacs interface now quotes these tags in + reply text, so that they do not effect outgoing messages. + +Notmuch 0.11 (2012-01-13) +========================= + +Command-Line Interface +---------------------- + +Hooks + + Hooks have been introduced to notmuch. Hooks are scripts that notmuch + invokes before and after certain actions. Initially, "notmuch new" + supports "pre-new" and "post-new" hooks that are run before and after + importing new messages into the database. + +notmuch reply --decrypt bugfix + + The "notmuch reply" command with --decrypt argument had a rarely + occurring bug that caused an encrypted message not to be decrypted + sometimes. This is now fixed. + +Performance +----------- + +Automatic tag query optimization + + "notmuch tag" now automatically optimizes the user's query to + exclude messages whose tags won't change. In the past, we've + suggested that people do this by hand; this is no longer necessary. + +Don't sort messages when creating a dump file + + This speeds up tag dumps considerably, without any loss of + information. To replicate the old behavior of sorted output (for + example to compare two dump files), one can use e.g. sort(1). + +Memory Management +----------------- + +Reduction of memory leaks + + Two memory leaks when searching and showing messages were identified + and fixed in this release. + +Emacs Interface +--------------- + +Bug fixes + + notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had + a bug that caused it to always jump to the next message, even if it + should have scrolled down to show more of the current message instead. + This is now fixed. + +Support "notmuch new" as a notmuch-poll-script + + It's now possible to use "notmuch new" as a notmuch-poll-script + directly. This is also the new default. This allows taking better + advantage of the "notmuch new" hooks from emacs without intermediate + scripts. + +Improvements in saved search management + + New saved searches are now appended to the list of saved searches, + not inserted in front. It's also possible to define a sort function + for displaying saved searches; alphabetical sort is provided. + +Hooks for notmuch-hello + + Two new hooks have been added: "notmuch-hello-mode-hook" (called after + entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called + after updating a notmuch-hello buffer). + +New face for crypto parts headers + + Crypto parts used to be displayed with a hardcoded color. A new face + has been introduced to fix this: notmuch-crypto-part-header. It + defaults to the same value as before, but can be customized to match + other color themes. + +Use space as default thousands separator + + Large numbers in notmuch-hello are now displayed using a space as + thousands separator (e.g. "123 456" instead of "123,456"). This can be + changed by customizing "notmuch-hello-thousands-separator". + +Call notmuch-show instead of notmuch-search when clicking on +buttonized id: links. + +New function notmuch-show-advance + + This new function advances through just the current thread, and is + less invasive than notmuch-show-advance-and-archive. It can easily + be bound to SPC with: + + (define-key notmuch-show-mode-map " " 'notmuch-show-advance) + +Various performance improvements. + +New add-on tool +--------------- + +The tool contrib/notmuch-deliver helps with initial delivery and +tagging of mail (replacing running notmuch new). + + +Notmuch 0.10.2 (2011-12-04) +=========================== + +Bug-fix release. +---------------- + +Fix crash in python bindings. + + The python bindings did not call g_type_init, which caused crashes + for some, but not all users. + +Notmuch 0.10.1 (2011-11-25) +=========================== + +Bug-fix release. +---------------- + +Fix --help argument + + Argument processing changes in 0.10 introduced a bug where "notmuch + --help" crashed while "notmuch help" worked fine. This is fixed in + 0.10.1. + +Notmuch 0.10 (2011-11-23) +========================= + +New build and testing features +------------------------------ + +Emacs tests are now done in dtach. This means that dtach is now +needed to run the notmuch test suite, at least until the checking for +prerequisites is improved. + +Full test coverage of the stashing feature in Emacs. + +New command-line features +------------------------- + +Add "notmuch restore --accumulate" option + + The --accumulate switch causes the union of the existing and new tags to be + applied, instead of replacing each message's tags as they are read in from + the dump file. + +Add search terms to "notmuch dump" + + The dump command now takes an optional search term much like notmuch + search/show/tag. The output file argument of dump is deprecated in + favour of using stdout. + +Add "notmuch search" --offset and --limit options + + The search command now takes options --offset=[-]N and --limit=N to limit + the number of results shown. + +Add "notmuch count --output" option + + The count command is now capable of counting threads in addition to + messages. This is selected using the new --output=(threads|messages) option. + +New emacs UI features +--------------------- + +Add tab-completion for notmuch-search and notmuch-search-filter + + These functions now support completion tags for query parts + starting with "tag:". + +Turn "id:MSG-ID" links into buttons associated with notmuch searches + + Text of the form "id:MSG-ID" in mails is now a clickable button that + opens a notmuch search for the given message id. + +Add keybinding ('c I') for stashing Message-ID's without an id: prefix + + Reduces manual labour when stashing them for use outside notmuch. + +Do not query on notmuch-search exit + + It is harmless to kill the external notmuch process, so the user + is no longer interrogated when they interrupt a search. + +Performance +----------- + +Emacs now constructs large search buffers more efficiently + +Search avoids opening and parsing message files + + We now store more information in the database so search no longer + has to open every message file to get basic headers. This can + improve search speed by as much as 10X, but taking advantage of this + requires a database rebuild: + + notmuch dump > notmuch.dump + # Backup, then remove notmuch database ($MAIL/.notmuch) + notmuch new + notmuch restore notmuch.dump + +New collection of add-on tools +------------------------------ + +The source directory "contrib" contains tools built on notmuch. These +tools are not part of notmuch, and you should check their individual +licenses. Feel free to report problems with them to the notmuch +mailing list. + +nmbug - share tags with a given prefix + + nmbug helps maintain a git repo containing all tags with a given + prefix (by default "notmuch::"). Tags can be shared by commiting + them to git in one location and restoring in another. + +Notmuch 0.9 (2011-10-01) +======================== + +New, general features +--------------------- + +Correct handling of interruptions during "notmuch new" + + "notmuch new" now operates as a series of small, self-consistent + transactions, so it can correctly resume after an interruption or + crash. Previously, interruption could lose existing tags, fail to + detect messages on resume, or leave the database in a state + temporarily or permanently inconsistent with the mail store. + +Library changes +--------------- + +New functions + + notmuch_database_begin_atomic and notmuch_database_end_atomic allow + multiple database operations to be performed atomically. + + notmuch_database_find_message_by_filename does exactly what it says. + +API changes + + notmuch_database_find_message (and n_d_f_m_by_filename) now return + a status indicator and uses an output parameter for the + message. This change required changing the SONAME of libnotmuch to + libnotmuch.so.2 + +Python bindings changes +----------------------- + + - Re-encode python unicode objects to utf-8 before passing back to + libnotmuch. + - Support Database().begin_atomic()/end_atomic() + - Support Database().find_message_by_filename() + NB! This needs a db opened in READ-WRITE mode currently, or it will crash + the python process. The is a limitation (=bug) of the underlying libnotmuch. + - Fixes where we would not throw NotmuchErrors when we should (Justus Winter) + - Update for n_d_find_message* API changes (see above). + +Ruby bindings changes +--------------------- + + - Wrap new library functions notmuch_database_{begin,end}_atomic. + - Add new exception Notmuch::UnbalancedAtomicError. + - Rename destroy to destroy! according to Ruby naming conventions. + - Update for n_d_find_message* API changes (see above). + +Emacs improvements +------------------ + + * Add gpg callback to crypto sigstatus buttons to retrieve/refresh + signing key. + * Add notmuch-show-refresh-view function (and corresponding binding) + to refresh the view of a notmuch-show buffer. + +Reply formatting cleanup +------------------------ + + "notmuch reply" no longer includes notification that non-leafnode + MIME parts are being suppressed. + +Notmuch 0.8 (2011-09-10) +======================== + +Improved handling of message/rfc822 parts + + Both in the CLI and the emacs interface. Output of rfc822 parts now + includes the primary headers, as well as the body and all subparts. + Output of the completely raw rfc822-formatted message, including all + headers, is unfortunately not yet supported (but hopefully will be + soon). + +Improved Build system portability + + Certain parts of the shell script generating notmuch.sym were + specific to the GNU versions of sed and nm. The new version should + be more portable to e.g. OpenBSD. + +Documentation update for Ruby bindings + + Added documentation, typo fixes, and improved support for rdoc. + +Unicode, iterator, PEP8 changes for python bindings + + - PEP8 (code formatting) changes for python files. + - Remove Tags.__len__ ; see 0.6 release notes for motivation. + - Decode headers as UTF8, encode (unicode) database paths as UTF8. + +Notmuch 0.7 (2011-08-01) +======================== + +Vim interface improvements +-------------------------- + +Jason Woofenden provided a number of bug fixes for the Vim interface + + * fix citation/signature fold lengths + * fix cig/cit parsing within multipart/* + * fix on-screen instructions for show-signature + * fix from list reformatting in search view + * fix space key: now archives (did opposite) + +Uwe Kleine-König contributed + + * use full path for sendmail/doc fix + * fix compose temp file name + +Python Bindings changes +----------------------- + +Sebastian Spaeth contributed two changes related to unicode and UTF8: + + * message tags are now explicitly unicode + * query string is encoded as a UTF8 byte string + +Build-System improvements +------------------------ + +Generate notmuch.sym after the relevant object files + + This fixes a bug in parallel building. Thanks to Thomas Jost for the + patch. + +Notmuch 0.6.1 (2011-07-17) ========================== -General bug fix + +Bug-fix release. +---------------- + +Re-export Xapian exception typeinfo symbols. + + It turned out our aggressive symbol hiding caused problems for + people running gcc 4.4.5. + +Notmuch 0.6 (2011-07-01) +======================= +New, general features +--------------------- +Folder-based searching + + Notmuch queries can now include a search term to match the + directories in which mail files are stored (within the mail + storage). The syntax is as follows: + + folder: + + For example, one might use things such as: + + folder:spam + folder:2011-* + folder:work/todo + + to match any path containing a directory "spam", "work/todo", or + containing a directory starting with "2011-", respectively. + + This feature is particularly useful for users of delivery-agent + software (such as procmail or maildrop) that is filtering mail and + delivering it to particular folders, or users of systems such as + Gmail that use filesystem directories to indicate message tags. + + NOTE: Only messages that are newly indexed with this version of + notmuch will be searchable with folder: terms. In order to enable + this feature for all mail, the entire notmuch index will need to be + rebuilt as follows: + + notmuch dump > notmuch.dump + # Backup, then remove notmuch database ($MAIL/.notmuch) + notmuch new + notmuch restore notmuch.dump + +Support for PGP/MIME + + Both the command line interface and the emacs-interface have new + support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor + and Jameson Graef Rollins for making this happen. + +New, automatic tags: "signed" and "encrypted" + + These tags will automatically be applied to messages containing + multipart/signed and multipart/encrypted parts. + + NOTE: Only messages that are newly indexed with this version of + notmuch will receive these tags. + +New command-line features +------------------------- +Add new "notmuch show --verify" option for signature verification + + This option instruct notmuch to verify the signature of + PGP/MIME-signed parts. + +Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options + + This option instructs notmuch to decrypt PGP/MIME-encrypted parts. + Note that this feature currently requires gpg-agent and a passphrase entry + tool (e.g. pinentry-gtk or pinentry-curses). + +Proper nesting of multipart parts in "notmuch show" output + + MIME parts are now display with proper nesting to reflect original + MIME hierarchy of a message. This allows clients to correctly + analyze the MIME structure, (such as, for example, determining to + which parts a signature part applies). + +Add new "notmuch show --part" option + + This is a replacement for the older "notmuch part" command, (which + is now deprecated—it should still work as always, but is no longer + documented). Putting part output under "notmuch show" allows for all + of the "notmuch show" options to be applied when extracting a single + part, (such as --format=json for extracting a message part with JSON + formatting). + +Deprecate "notmuch search-tags", (in favor of "notmuch search --output=tags *") + + The "notmuch search-tags" sub-command has been redundant since the + addition of the --output=tags option to "notmuch search". We now + make that more clear by deprecating "notmuch search-tags", (dropping + it from the documentation). We do continue to support the old syntax + by translating it internally to the new call. + +Performance improvements +------------------------ +Faster searches (by doing fewer searches to construct threads) + + Whenever a user asks for search results as threads, notmuch first + performs a search for messages matching the query, then performs + additional searches to find other messages in the resulting threads. + + Removing inefficiencies and redundancies in these secondary searches + results in a measured speedups of 1.5x for a typical search. + +Faster searches (by doing fewer passes to gather message data) + + Optimizing Xapian data access patterns (using a single pass to get + all message-document data rather than a pass for each data type) + results in a measured speedup of 1.7x for a typical search. + + The benefits of this optimization combine with the preceding + optimization. With both in place, Austin Clements measured a speedup + of 2.5x for a search of all messages in his inbox (was 4.5s, now + 1.8s). Thanks, Austin! + +Faster initial indexing + + More efficient indexing of new messages results in a measured + speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m + rather than 1h 46m). Thanks to Austin Clements and Michal Sojka. + +Make "notmuch new" faster for unchanged directories + + Optimizing to not do any further examinations of sub-directories + when the filesystem indicates that a directory is unchanged from the + last "notmuch new" results in measured speedups of 8.5 for the "No + new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak. + +New emacs-interface features +---------------------------- + +Support for PGP/MIME (GnuPG) + + Automatically indicate validity of signatures for multipart/signed + messages. Automatically display decrypted content for + multipart/encrypted messages. See the emacs variable + notmuch-crypto-process-mime for more information. Note that this + needs gpg-agent and a pinentry tool just as the command line tools. + Also note there is no support SMIME yet. + +Output of pipe command is now displayed if pipe command fails + + This is extremely useful in the common use case of piping a patch to + "git am". If git fails to cleanly merge the patch the error messages + from the failed merge are now clearly displayed to the user, (where + previously they were silently hidden from the user). + +User-selectable From address + + A user can choose which configured email addresses should be used as + the From address whenever composing a new message. To do so, simply + press C-u before the command which will open a new message. Emacs + will prompt for the from address to use. + + The user can customize the "Notmuch Identities" setting in the + notmuch customize group in order to use addresses other than those in + the notmuch configuration file if desired. + + The user can also choose to always be prompted for the from address + when composing a new message (without having to use C-u) by setting + the "Notmuch Always Prompt For Sender" option in the notmuch + customize group. + +Hiding of repeated subjects in collapsed thread view + + In notmuch-show mode, if a collapsed message has the same subject as + its parent, the subject is not shown. + +Automatic detection and hiding of original message in top-posted message + + When a message contains a line looking something like: + + ----- Original Message ----- + + emacs hides this and all subsequent lines as an "original message", + (allowing the user to click or press enter on the "original message" + button to display it again). This makes the handling of top-posted + citations work much like conventional citations. + +New hooks for running code when tags are modified + + Some users want to perform additional actions whenever a particular + tag is added/removed from a message. This could be used to, for + example, interface with some external spam-recognition training + tool. To facilitate this, two new hooks are added which can be + modified in the following settings of the notmuch customize group: + + Notmuch Before Tag Hook + Notmuch After Tag Hook + +New optional support for hiding some multipart/alternative parts + + Many emails are sent with redundant content within a + multipart/alternative group (such as a text/plain part as well as a + text/html part). Users can configure the setting: + + Notmuch Show All Multipart/Alternative Parts + + to "off" in the notmuch customize group to have the interface + automatically hide some part alternatives (such as text/html + parts). This new part hiding is not configured by default yet + because there's not yet a simple way to re-display such a hidden + part if it is not actually redundant with a displayed part. + +Better rendering of text/x-vcalendar parts + + These parts are now displayed in a format suitable for use with the + emacs diary. + +Avoid getting confused by Subject and Author fields with newline characters + + Replacing all characters with ASCII code less than 32 with a question mark. + +Cleaner display of From line in email messages (remove double quotes, +and drop "name" if it's actually just a repeat of the email address). + +Vim interface improvements +-------------------------- +Felipe Contreras provided a number of updates for the vim interface: + + * Using sendmail directly rather than mailx, + * Implementing archive in show view + * Add support to mark as read in show and search views + * Add delete commands + * Various cleanups. + +Bindings improvements +--------------------- +Ruby bindings are now much more complete + + Including QUERY.sort, QUERY.to_s, MESSAGE.maildir_flags_to_tags, + MESSAGE.tags_to_maildir_flags, and MESSAGE.get_filenames + +* Python bindings have been updated and extended + (docs online at http://packages.python.org/notmuch/) + + New bindings: + - Message().get_filenames(), + - Message().tags_to_maildir_flags(),Message().maildir_flags_to_tags() + - list(Threads()) and list(Messages) works now + + - Message().__cmp__() and __hash__() + These allow, for example: + if msg1 == msg2: ... + + As well as set arithmetic on Messages(): + + s1, s2= set(msgs1), set(msgs2) + s1.union(s2) + s2 -= s1 + + Removed: + - len(Messages()) as it exhausted the iterator. + Use len(list(Messages())) or + Query.count_messages() to get the length. + +Added initial Go bindings in bindings/go + +New build-system features +------------------------- +Added support for building in a directory other than the source directory + + This can be used with the widely-supported idiom of simply running + the configure script from some other directory: + + mkdir build + cd build + ../configure + make + +Fix to save configure options for future, implicit runs of configure + + When a user updates the source (such as with "git pull") calling + "make" may cause an automatic re-run of the configure script. When + this happens, the configure script will automatically be called with + the same options the user originally passed in the most-recent + manual invocation of configure. + +New test-suite feature +---------------------- +Binary for bash for running test suite now located via PATH. + + The notmuch test suite requires a fairly recent version of bash (>= + bash 4). As some systems supply an older version of bash at + /bin/bash, the test suite is now updated to search $PATH to locate + the bash binary. This allows users of systems with old /bin/bash to + simply install bash >= 4 somewhere on $PATH before /bin and then use + the test suite. + +Support for testing output with a trailing newline. + + Previously, some tests would fail to notice a difference in the + presence/absence of a trailing newline in a program output, (which + has led to bugs in the past). Now, carefully-written tests (using + test_expect_equal_file rather than test_expect_equal) will detect + any change in the presence/absence of a trailing newline. Many tests + are updated to take advantage of this. + +Avoiding accessing user's $HOME while running test suite + + The test suite now carefully creates its own HOME directory. This + allows the test suite to be run with no existing HOME directory, (as + some build systems apparently do), and avoids test-suite differences + due to configuration files in the users HOME directory. + + +General bug fixes +----------------- +Output *all* files for "notmuch search --output=files" + + For the cases where multiple files have the same Message ID, + previous versions of notmuch would output only one such file. This + command is now fixed to correctly output all files. + +Fixed spurious search results from "overlapped" indexing of addresses + + This fixed a bug where a search for: + + to:user@elsewhere.com + + would incorrectly match a message sent: + + To: user@example,com, someone@elsewhere.com + +Fix --output=json when search has no results + + A bug present since notmuch 0.4 had caused searches with no results + to produce an invalid json object. This is now fixed to cleanly + return a valid json object representing an empty array "[]" as + expected. + +fix the automatic detection of the From address for "notmuch reply" +from the Received headers in some cases. + +Fix core dump on DragonFlyBSD due to -1 return value from +sysconf(_SC_GETPW_R_SIZE_MAX). + +Cleaned up several memory leaks + +Eliminated a few, rare segmentation faults and a double-free. + +Fix libnotmuch library to only export notmuch API functions + + Previous release of the notmuch library also exported some Xapian + C++ exception type symbols. These were never part of the library + interface and were never intended to be exported. + +Emacs-interface bug fixes +------------------------- +Display any unexpected output or errors from "notmuch search" invocations + + Previously any misformatted output or trailing error messages were + silently ignored. This output is now clearly displayed. This fix was + very helpful in identifying and fixing the bug described below. + +Fix bug where some threads would be missing from large search results + + When a search returned a "large" number of results, the emacs + interface was incorrectly dropping one thread every time the output + of the "notmuch search" process spanned the emacs read-buffer. This + is now fixed. + +Avoid re-compression of .gz files (and similar) when saving attachment + + Emacs was being too clever for its own good and trying to + re-compress pre-compressed .gz files when saving such attachments + (potentially corrupting the attachment). The emacs interface is + fixed to avoid this bug. + +Fix hiding of a message when a previously-hidden citation is visible + + Previously the citation would remain visible in this case. This is + fixed so that hiding a message hides all parts. + +Notmuch 0.5 (2010-11-11) +======================== +New, general features +--------------------- +Maildir-flag synchronization + + Notmuch now knows how to synchronize flags in maildir filenames with + tags in the notmuch database. The following flag/tag mappings are + supported: + + Flag <-> Tag + ---- ----- + 'D' draft + 'F' flagged + 'P' passed + 'R' replied + 'S' unread (added when 'S' flag is not present) + + The synchronization occurs in both directions, (for example, adding + the 'S' flag to a file will cause the "unread" tag to be added, and + adding the "replied" tag to a message will cause the file to be + renamed with an 'R' flag). + + This synchronization is enabled by default for users of the + command-line interface, (though only files in directories named + "cur" or "new" will be renamed). It can be disabled by setting the + new maildir.synchronize_flags option in the configuration file. For + example: + + notmuch config set maildir.synchronize_flags false + + Users upgrading may also want to run "notmuch setup" once (just + accept the existing configuration) to get a new, nicely-commented + [maildir] section added to the configuration file. + + For users of the notmuch library, the new synchronization + functionality is available with the following two new functions: + + notmuch_message_maildir_flags_to_tags + notmuch_message_tags_to_maildir_flags + + It is anticipated that future improvements to this support will + allow for safe synchronization of the 'T' flag with the "deleted" + tag, as well as support for custom flag/tag mappings. + +New library features +-------------------- +Support for querying multiple filenames for a single message + + It is common for the mailstore to contain multiple files with the + same message ID. Previously, notmuch would always hide these + duplicate files, (returning a single, arbitrary filename with + notmuch_message_get_filename). + + With this release, library users can access all filenames for a + message with the new function: + + notmuch_message_get_filenames + + Together with notmuch_filenames_valid, notmuch_filenames_get, and + notmuch_filenames_move_to_next it is now possible to iterate over + all available filenames for a given message. + +New command-line features +------------------------- +New "notmuch show --format=raw" for getting at original email contents + + This new feature allows for a fully-functional email client to be + built on top of the notmuch command-line without needing any direct + access to the mail store itself. + + For example, it's now possible to run "emacs -f notmuch" on a local + machine with only ssh access to the mail store/notmuch database. To + do this, simply set the notmuch-command variable in emacs to the + name of a script containing: + + ssh user@host notmuch "$@" + + If the ssh client has enabled connection sharing (ControlMaster + option in OpenSSH), the emacs interface can be quite responsive this + way. + +General bug fixes +----------------- +Fix "notmuch search" to print nothing when nothing matches + + The 0.4 release had a bug in which: + + notmuch search + + 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 ); 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 @@ -9,6 +1229,12 @@ Fix an infinite loop in "notmuch reply" the user had not configured any secondary email addresses. The bug was a simple re-use of the same iterator variable in nested loops. +Fix a potential SEGV in "notmuch search" + + This bug could be triggered by an author name ending in a ','. + Admittedly - that's almost certainly a spam email, but we never + want notmuch to crash. + Emacs bug fixes --------------- Fix calculations for line wrapping in the primary "notmuch" view. @@ -247,7 +1473,7 @@ Fix to compile against GMime 2.6 Fix configure script to accept (and ignore) various standard options. - For example, those that the gentoo build scripts expect configure to + For example, those that the Gentoo build scripts expect configure to accept are now all accepted. Test suite @@ -355,7 +1581,7 @@ tags by region. Selective bulk tagging is now possible by selecting a region of threads and then using either the '+' or '-' keybindings. Bulk tagging is still available for all threads matching the current - search with th '*' binding. + search with the '*' binding. More meaningful buffer names for thread-view buffers.