]> git.notmuchmail.org Git - notmuch/blob - NEWS
83d764aaf9359dbf73187a8e237ed3a2f1185eb7
[notmuch] / NEWS
1 Notmuch 0.12 (2012-xx-xx)
2 =========================
3
4 Command-Line Interface
5 ----------------------
6
7 Reply to sender
8
9   "notmuch reply" has gained the ability to create a reply template
10   for replying just to the sender of the message, in addition to reply
11   to all. The feature is available through the new command line option
12   --reply-to=(all|sender).
13
14 Mail store folder/file ignore
15
16    A new configuration option, `new.ignore`, lets users specify a
17    ;-separated list of file and directory names that will not be
18    searched for messages by "notmuch new".
19
20    NOTE: *Every* file/directory that goes by one of those names will
21    be ignored, independent of its depth/location in the mail store.
22
23 Emacs Interface
24 ---------------
25
26 Reply to sender
27
28   The Emacs interface has, with the new CLI support, gained the
29   ability to reply to sender in addition to reply to all. In both show
30   and search modes, 'r' has been bound to reply to sender, replacing
31   reply to all, which now has key binding 'R'.
32
33 More flexible and consistent tagging operations
34
35   All tagging operations ("+", "-", "*") now accept multiple tags with
36   "+" or "-" prefix, like "*" operation in notmuch-search view before.
37
38   "*" operation (`notmuch-show-tag-all') is now available in
39   notmuch-show view.
40
41   `Notmuch-show-{add,remove}-tag' functions no longer accept tag
42   argument, `notmuch-show-tag-message' should be used instead.  Custom
43   bindings using these functions should be updated, e.g.:
44
45     (notmuch-show-remove-tag "unread")
46
47   should be changed to:
48
49     (notmuch-show-tag-message "-unread")
50
51 Refreshing the show view ('=' by default) no longer opens or closes messages
52
53   To get the old behavior of putting messages back in their initial
54   opened/closed state, use a prefix argument, e.g., C-u =.
55
56 Attachment buttons can be used to view or save attachments.
57
58   When the cursor is on an attachment button the key 's' can be used
59   to save the attachment, the key 'v' to view the attachment in the
60   default mailcap application, and the key 'o' prompts the user for an
61   application to use to open the attachment. By default Enter or mouse
62   button 1 saves the attachment but this is customisable (option
63   Notmuch Show Part Button Default Action).
64
65 New functions
66
67   `notmuch-show-stash-mlarchive-link{,-and-go}' allow stashing and
68   optionally visiting a URI to the current message at one of a number
69   of Mailing List Archives.
70
71 Fix MML tag quoting in replies
72
73   The MML tag quoting fix of 0.11.1 unintentionally quoted tags
74   inserted in `message-setup-hook'. Quoting is now limited to the
75   cited message.
76
77 Show view archiving key binding changes
78
79   The show view archiving key bindings 'a' and 'x' now remove the
80   "inbox" tag from the current message only (instead of thread), and
81   move to the next message. At the last message, 'a' proceeds to the
82   next thread in search results, and 'x' returns to search
83   results. The thread archiving functions are now available in 'A' and
84   'X'.
85
86 Support text/calendar MIME type
87
88   The text/calendar MIME type is now supported in addition to
89   text/x-vcalendar.
90
91 Generate inline patch fake attachment file names from message subject
92
93   Use the message subject to generate file names for the inline patch
94   fake attachments. The names are now similar to the ones generated by
95   'git format-patch' instead of just "inline patch". See "Notmuch Show
96   Insert Text/Plain Hook" in the notmuch customize interface.
97
98 Library changes
99 ---------------
100
101 New functions
102
103   notmuch_query_add_tag_exclude supports the new tag exclusion
104   feature.
105
106 Python bindings changes
107 -----------------------
108
109 Python 3.2 compatibility
110
111   The python bindings are now compatible with both python 2.5+ and 3.2.
112
113 Added missing unicode conversions
114
115   Python strings have to be encoded to and decoded from utf-8 when
116   calling libnotmuch functions. Porting the bindings to python 3.2
117   revealed a few function calls that were missing these conversions.
118
119 Build fixes
120 -----------
121
122 Compatibility with GMime 2.6
123
124   It is now possible to build notmuch against both GMime 2.4 and 2.6.
125   However, a bug in current GMime 2.6 causes notmuch not to report
126   signatures where the signer key is unavailable (GNOME bug 668085).
127
128 Notmuch 0.11.1 (2012-02-03)
129 ===========================
130
131 Bug-fix release.
132 ----------------
133
134 Fix error handling in python bindings.
135
136   The python bindings in 0.11 failed to detect NULL pointers being
137   returned from libnotmuch functions and thus failed to raise
138   exceptions to indicate the error condition. Any subsequent calls
139   into libnotmuch caused segmentation faults.
140
141 Quote MML tags in replies
142
143   MML tags are text codes that Emacs uses to indicate attachments
144   (among other things) in messages being composed.  The Emacs
145   interface did not quote MML tags in the quoted text of a reply.
146   User could be tricked into replying to a maliciously formatted
147   message and not editing out the MML tags from the quoted text.  This
148   could lead to files from the user's machine being attached to the
149   outgoing message.  The Emacs interface now quotes these tags in
150   reply text, so that they do not effect outgoing messages.
151
152 Notmuch 0.11 (2012-01-13)
153 =========================
154
155 Command-Line Interface
156 ----------------------
157
158 Hooks
159
160   Hooks have been introduced to notmuch. Hooks are scripts that notmuch
161   invokes before and after certain actions. Initially, "notmuch new"
162   supports "pre-new" and "post-new" hooks that are run before and after
163   importing new messages into the database.
164
165 notmuch reply --decrypt bugfix
166
167   The "notmuch reply" command with --decrypt argument had a rarely
168   occurring bug that caused an encrypted message not to be decrypted
169   sometimes. This is now fixed.
170
171 Performance
172 -----------
173
174 Automatic tag query optimization
175
176   "notmuch tag" now automatically optimizes the user's query to
177   exclude messages whose tags won't change.  In the past, we've
178   suggested that people do this by hand; this is no longer necessary.
179
180 Don't sort messages when creating a dump file
181
182   This speeds up tag dumps considerably, without any loss of
183   information. To replicate the old behavior of sorted output (for
184   example to compare two dump files), one can use e.g. sort(1).
185
186 Memory Management
187 -----------------
188
189 Reduction of memory leaks
190
191   Two memory leaks when searching and showing messages were identified
192   and fixed in this release.
193
194 Emacs Interface
195 ---------------
196
197 Bug fixes
198
199   notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
200   a bug that caused it to always jump to the next message, even if it
201   should have scrolled down to show more of the current message instead.
202   This is now fixed.
203
204 Support "notmuch new" as a notmuch-poll-script
205
206   It's now possible to use "notmuch new" as a notmuch-poll-script
207   directly. This is also the new default. This allows taking better
208   advantage of the "notmuch new" hooks from emacs without intermediate
209   scripts.
210
211 Improvements in saved search management
212
213   New saved searches are now appended to the list of saved searches,
214   not inserted in front. It's also possible to define a sort function
215   for displaying saved searches; alphabetical sort is provided.
216
217 Hooks for notmuch-hello
218
219   Two new hooks have been added: "notmuch-hello-mode-hook" (called after
220   entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
221   after updating a notmuch-hello buffer).
222
223 New face for crypto parts headers
224
225   Crypto parts used to be displayed with a hardcoded color. A new face
226   has been introduced to fix this: notmuch-crypto-part-header. It
227   defaults to the same value as before, but can be customized to match
228   other color themes.
229
230 Use space as default thousands separator
231
232   Large numbers in notmuch-hello are now displayed using a space as
233   thousands separator (e.g. "123 456" instead of "123,456"). This can be
234   changed by customizing "notmuch-hello-thousands-separator".
235
236 Call notmuch-show instead of notmuch-search when clicking on
237 buttonized id: links.
238
239 New function notmuch-show-advance
240
241   This new function advances through just the current thread, and is
242   less invasive than notmuch-show-advance-and-archive.  It can easily
243   be bound to SPC with:
244
245   (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
246
247 Various performance improvements.
248
249 New add-on tool
250 ---------------
251
252 The tool contrib/notmuch-deliver helps with initial delivery and
253 tagging of mail (replacing running notmuch new).
254
255
256 Notmuch 0.10.2 (2011-12-04)
257 ===========================
258
259 Bug-fix release.
260 ----------------
261
262 Fix crash in python bindings.
263
264   The python bindings did not call g_type_init, which caused crashes
265   for some, but not all users.
266
267 Notmuch 0.10.1 (2011-11-25)
268 ===========================
269
270 Bug-fix release.
271 ----------------
272
273 Fix --help argument
274
275   Argument processing changes in 0.10 introduced a bug where "notmuch
276   --help" crashed while "notmuch help" worked fine. This is fixed in
277   0.10.1.
278
279 Notmuch 0.10 (2011-11-23)
280 =========================
281
282 New build and testing features
283 ------------------------------
284
285 Emacs tests are now done in dtach. This means that dtach  is now
286 needed to run the notmuch test suite, at least until the checking for
287 prerequisites is improved.
288
289 Full test coverage of the stashing feature in Emacs.
290
291 New command-line features
292 -------------------------
293
294 Add "notmuch restore --accumulate" option
295
296   The --accumulate switch causes the union of the existing and new tags to be
297   applied, instead of replacing each message's tags as they are read in from
298   the dump file.
299
300 Add search terms to  "notmuch dump"
301
302   The dump command now takes an optional search term much like notmuch
303   search/show/tag. The output file argument of dump is deprecated in
304   favour of using stdout.
305
306 Add "notmuch search" --offset and --limit options
307
308   The search command now takes options --offset=[-]N and --limit=N to limit
309   the number of results shown.
310
311 Add "notmuch count --output" option
312
313   The count command is now capable of counting threads in addition to
314   messages. This is selected using the new --output=(threads|messages) option.
315
316 New emacs UI features
317 ---------------------
318
319 Add tab-completion for notmuch-search and notmuch-search-filter
320
321   These functions now support completion tags for query parts
322   starting with "tag:".
323
324 Turn "id:MSG-ID" links into buttons associated with notmuch searches
325
326   Text of the form "id:MSG-ID" in mails is now a clickable button that
327   opens a notmuch search for the given message id.
328
329 Add keybinding ('c I') for stashing Message-ID's without an id: prefix
330
331   Reduces manual labour when stashing them for use outside notmuch.
332
333 Do not query on notmuch-search exit
334
335   It is harmless to kill the external notmuch process, so the user
336   is no longer interrogated when they interrupt a search.
337
338 Performance
339 -----------
340
341 Emacs now constructs large search buffers more efficiently
342
343 Search avoids opening and parsing message files
344
345   We now store more information in the database so search no longer
346   has to open every message file to get basic headers.  This can
347   improve search speed by as much as 10X, but taking advantage of this
348   requires a database rebuild:
349
350         notmuch dump > notmuch.dump
351         # Backup, then remove notmuch database ($MAIL/.notmuch)
352         notmuch new
353         notmuch restore notmuch.dump
354
355 New collection of add-on tools
356 ------------------------------
357
358 The source directory "contrib" contains tools built on notmuch.  These
359 tools are not part of notmuch, and you should check their individual
360 licenses.  Feel free to report problems with them to the notmuch
361 mailing list.
362
363 nmbug - share tags with a given prefix
364
365   nmbug helps maintain a git repo containing all tags with a given
366   prefix (by default "notmuch::"). Tags can be shared by commiting
367   them to git in one location and restoring in another.
368
369 Notmuch 0.9 (2011-10-01)
370 ========================
371
372 New, general features
373 ---------------------
374
375 Correct handling of interruptions during "notmuch new"
376
377   "notmuch new" now operates as a series of small, self-consistent
378   transactions, so it can correctly resume after an interruption or
379   crash.  Previously, interruption could lose existing tags, fail to
380   detect messages on resume, or leave the database in a state
381   temporarily or permanently inconsistent with the mail store.
382
383 Library changes
384 ---------------
385
386 New functions
387
388   notmuch_database_begin_atomic and notmuch_database_end_atomic allow
389   multiple database operations to be performed atomically.
390
391   notmuch_database_find_message_by_filename does exactly what it says.
392
393 API changes
394
395   notmuch_database_find_message (and n_d_f_m_by_filename) now return
396   a status indicator and uses an output parameter for the
397   message. This change required changing the SONAME of libnotmuch to
398   libnotmuch.so.2
399
400 Python bindings changes
401 -----------------------
402
403   - Re-encode python unicode objects to utf-8 before passing back to
404     libnotmuch.
405   - Support Database().begin_atomic()/end_atomic()
406   - Support Database().find_message_by_filename()
407     NB! This needs a db opened in READ-WRITE mode currently, or it will crash
408     the python process. The is a limitation (=bug) of the underlying libnotmuch.
409   - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
410   - Update for n_d_find_message* API changes (see above).
411
412 Ruby bindings changes
413 ---------------------
414
415   - Wrap new library functions notmuch_database_{begin,end}_atomic.
416   - Add new exception Notmuch::UnbalancedAtomicError.
417   - Rename destroy  to destroy! according to Ruby naming conventions.
418   - Update for n_d_find_message* API changes (see above).
419
420 Emacs improvements
421 ------------------
422
423   * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
424     signing key.
425   * Add notmuch-show-refresh-view function (and corresponding binding)
426     to refresh the view of a notmuch-show buffer.
427
428 Reply formatting cleanup
429 ------------------------
430
431   "notmuch reply" no longer includes notification that non-leafnode
432   MIME parts are being suppressed.
433
434 Notmuch 0.8 (2011-09-10)
435 ========================
436
437 Improved handling of message/rfc822 parts
438
439   Both in the CLI and the emacs interface.  Output of rfc822 parts now
440   includes the primary headers, as well as the body and all subparts.
441   Output of the completely raw rfc822-formatted message, including all
442   headers, is unfortunately not yet supported (but hopefully will be
443   soon).
444
445 Improved Build system portability
446
447   Certain parts of the shell script generating notmuch.sym were
448   specific to the GNU versions of sed and nm. The new version should
449   be more portable to e.g. OpenBSD.
450
451 Documentation update for Ruby bindings
452
453   Added documentation, typo fixes, and improved support for rdoc.
454
455 Unicode, iterator, PEP8 changes for python bindings
456
457   - PEP8 (code formatting) changes for python files.
458   - Remove Tags.__len__ ; see 0.6 release notes for motivation.
459   - Decode headers as UTF8, encode (unicode) database paths as UTF8.
460
461 Notmuch 0.7 (2011-08-01)
462 ========================
463
464 Vim interface improvements
465 --------------------------
466
467 Jason Woofenden provided a number of bug fixes for the Vim interface
468
469   * fix citation/signature fold lengths
470   * fix cig/cit parsing within multipart/*
471   * fix on-screen instructions for show-signature
472   * fix from list reformatting in search view
473   * fix space key: now archives (did opposite)
474
475 Uwe Kleine-König contributed
476
477   * use full path for sendmail/doc fix
478   * fix compose temp file name
479
480 Python Bindings changes
481 -----------------------
482
483 Sebastian Spaeth contributed two changes related to unicode and UTF8:
484
485   * message tags are now explicitly unicode
486   * query string is encoded as a UTF8 byte string
487
488 Build-System improvements
489 ------------------------
490
491 Generate notmuch.sym after the relevant object files
492
493   This fixes a bug in parallel building. Thanks to Thomas Jost for the
494   patch.
495
496 Notmuch 0.6.1 (2011-07-17)
497 ==========================
498
499 Bug-fix release.
500 ----------------
501
502 Re-export Xapian exception typeinfo symbols.
503
504   It turned out our aggressive symbol hiding caused problems for
505   people running gcc 4.4.5.
506
507 Notmuch 0.6 (2011-07-01)
508 =======================
509 New, general features
510 ---------------------
511 Folder-based searching
512
513   Notmuch queries can now include a search term to match the
514   directories in which mail files are stored (within the mail
515   storage). The syntax is as follows:
516
517         folder:<path>
518
519   For example, one might use things such as:
520
521         folder:spam
522         folder:2011-*
523         folder:work/todo
524
525   to match any path containing a directory "spam", "work/todo", or
526   containing a directory starting with "2011-", respectively.
527
528   This feature is particularly useful for users of delivery-agent
529   software (such as procmail or maildrop) that is filtering mail and
530   delivering it to particular folders, or users of systems such as
531   Gmail that use filesystem directories to indicate message tags.
532
533   NOTE: Only messages that are newly indexed with this version of
534   notmuch will be searchable with folder: terms. In order to enable
535   this feature for all mail, the entire notmuch index will need to be
536   rebuilt as follows:
537
538         notmuch dump > notmuch.dump
539         # Backup, then remove notmuch database ($MAIL/.notmuch)
540         notmuch new
541         notmuch restore notmuch.dump
542
543 Support for PGP/MIME
544
545   Both the command line interface and the emacs-interface have new
546   support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
547   and Jameson Graef Rollins for making this happen.
548
549 New, automatic tags: "signed" and "encrypted"
550
551   These tags will automatically be applied to messages containing
552   multipart/signed and multipart/encrypted parts.
553
554   NOTE: Only messages that are newly indexed with this version of
555   notmuch will receive these tags.
556
557 New command-line features
558 -------------------------
559 Add new "notmuch show --verify" option for signature verification
560
561   This option instruct notmuch to verify the signature of
562   PGP/MIME-signed parts.
563
564 Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
565
566   This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
567   Note that this feature currently requires gpg-agent and a passphrase entry
568   tool (e.g. pinentry-gtk or pinentry-curses).
569
570 Proper nesting of multipart parts in "notmuch show" output
571
572   MIME parts are now display with proper nesting to reflect original
573   MIME hierarchy of a message. This allows clients to correctly
574   analyze the MIME structure, (such as, for example, determining to
575   which parts a signature part applies).
576
577 Add new "notmuch show --part" option
578
579   This is a replacement for the older "notmuch part" command, (which
580   is now deprecated—it should still work as always, but is no longer
581   documented). Putting part output under "notmuch show" allows for all
582   of the "notmuch show" options to be applied when extracting a single
583   part, (such as --format=json for extracting a message part with JSON
584   formatting).
585
586 Deprecate "notmuch search-tags", (in favor of "notmuch search --output=tags *")
587
588   The "notmuch search-tags" sub-command has been redundant since the
589   addition of the --output=tags option to "notmuch search". We now
590   make that more clear by deprecating "notmuch search-tags", (dropping
591   it from the documentation). We do continue to support the old syntax
592   by translating it internally to the new call.
593
594 Performance improvements
595 ------------------------
596 Faster searches (by doing fewer searches to construct threads)
597
598   Whenever a user asks for search results as threads, notmuch first
599   performs a search for messages matching the query, then performs
600   additional searches to find other messages in the resulting threads.
601
602   Removing inefficiencies and redundancies in these secondary searches
603   results in a measured speedups of 1.5x for a typical search.
604
605 Faster searches (by doing fewer passes to gather message data)
606
607   Optimizing Xapian data access patterns (using a single pass to get
608   all message-document data rather than a pass for each data type)
609   results in a measured speedup of 1.7x for a typical search.
610
611   The benefits of this optimization combine with the preceding
612   optimization. With both in place, Austin Clements measured a speedup
613   of 2.5x for a search of all messages in his inbox (was 4.5s, now
614   1.8s). Thanks, Austin!
615
616 Faster initial indexing
617
618   More efficient indexing of new messages results in a measured
619   speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
620   rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
621
622 Make "notmuch new" faster for unchanged directories
623
624   Optimizing to not do any further examinations of sub-directories
625   when the filesystem indicates that a directory is unchanged from the
626   last "notmuch new" results in measured speedups of 8.5 for the "No
627   new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
628
629 New emacs-interface features
630 ----------------------------
631
632 Support for PGP/MIME (GnuPG)
633
634   Automatically indicate validity of signatures for multipart/signed
635   messages.  Automatically display decrypted content for
636   multipart/encrypted messages.  See the emacs variable
637   notmuch-crypto-process-mime for more information. Note that this
638   needs gpg-agent and a pinentry tool just as the command line tools.
639   Also note there is no support SMIME yet.
640
641 Output of pipe command is now displayed if pipe command fails
642
643   This is extremely useful in the common use case of piping a patch to
644   "git am". If git fails to cleanly merge the patch the error messages
645   from the failed merge are now clearly displayed to the user, (where
646   previously they were silently hidden from the user).
647
648 User-selectable From address
649
650   A user can choose which configured email addresses should be used as
651   the From address whenever composing a new message. To do so, simply
652   press C-u before the command which will open a new message. Emacs
653   will prompt for the from address to use.
654
655   The user can customize the "Notmuch Identities" setting in the
656   notmuch customize group in order to use addresses other than those in
657   the notmuch configuration file if desired.
658
659   The user can also choose to always be prompted for the from address
660   when composing a new message (without having to use C-u) by setting
661   the "Notmuch Always Prompt For Sender" option in the notmuch
662   customize group.
663
664 Hiding of repeated subjects in collapsed thread view
665
666   In notmuch-show mode, if a collapsed message has the same subject as
667   its parent, the subject is not shown.
668
669 Automatic detection and hiding of original message in top-posted message
670
671   When a message contains a line looking something like:
672
673         ----- Original Message -----
674
675   emacs hides this and all subsequent lines as an "original message",
676   (allowing the user to click or press enter on the "original message"
677   button to display it again). This makes the handling of top-posted
678   citations work much like conventional citations.
679
680 New hooks for running code when tags are modified
681
682   Some users want to perform additional actions whenever a particular
683   tag is added/removed from a message. This could be used to, for
684   example, interface with some external spam-recognition training
685   tool. To facilitate this, two new hooks are added which can be
686   modified in the following settings of the notmuch customize group:
687
688         Notmuch Before Tag Hook
689         Notmuch After Tag Hook
690
691 New optional support for hiding some multipart/alternative parts
692
693   Many emails are sent with redundant content within a
694   multipart/alternative group (such as a text/plain part as well as a
695   text/html part). Users can configure the setting:
696
697         Notmuch Show All Multipart/Alternative Parts
698
699   to "off" in the notmuch customize group to have the interface
700   automatically hide some part alternatives (such as text/html
701   parts). This new part hiding is not configured by default yet
702   because there's not yet a simple way to re-display such a hidden
703   part if it is not actually redundant with a displayed part.
704
705 Better rendering of text/x-vcalendar parts
706
707   These parts are now displayed in a format suitable for use with the
708   emacs diary.
709
710 Avoid getting confused by Subject and Author fields with newline characters
711
712   Replacing all characters with ASCII code less than 32 with a question mark.
713
714 Cleaner display of From line in email messages (remove double quotes,
715 and drop "name" if it's actually just a repeat of the email address).
716
717 Vim interface improvements
718 --------------------------
719 Felipe Contreras provided a number of updates for the vim interface:
720
721   * Using sendmail directly rather than mailx,
722   * Implementing archive in show view
723   * Add support to mark as read in show and search views
724   * Add delete commands
725   * Various cleanups.
726
727 Bindings improvements
728 ---------------------
729 Ruby bindings are now much more complete
730
731   Including QUERY.sort, QUERY.to_s, MESSAGE.maildir_flags_to_tags,
732   MESSAGE.tags_to_maildir_flags, and MESSAGE.get_filenames
733
734 * Python bindings have been updated and extended
735   (docs online at http://packages.python.org/notmuch/)
736
737   New bindings:
738   - Message().get_filenames(),
739   - Message().tags_to_maildir_flags(),Message().maildir_flags_to_tags()
740   - list(Threads()) and list(Messages) works now
741
742   - Message().__cmp__() and __hash__()
743   These allow, for example:
744         if msg1 == msg2: ...
745
746   As well as set arithmetic on Messages():
747
748         s1, s2= set(msgs1), set(msgs2)
749         s1.union(s2)
750         s2 -= s1
751
752   Removed:
753      - len(Messages()) as it exhausted the iterator.
754        Use len(list(Messages())) or
755        Query.count_messages() to get the length.
756
757 Added initial Go bindings in bindings/go
758
759 New build-system features
760 -------------------------
761 Added support for building in a directory other than the source directory
762
763   This can be used with the widely-supported idiom of simply running
764   the configure script from some other directory:
765
766         mkdir build
767         cd build
768         ../configure
769         make
770
771 Fix to save configure options for future, implicit runs of configure
772
773   When a user updates the source (such as with "git pull") calling
774   "make" may cause an automatic re-run of the configure script. When
775   this happens, the configure script will automatically be called with
776   the same options the user originally passed in the most-recent
777   manual invocation of configure.
778
779 New test-suite feature
780 ----------------------
781 Binary for bash for running test suite now located via PATH.
782
783   The notmuch test suite requires a fairly recent version of bash (>=
784   bash 4). As some systems supply an older version of bash at
785   /bin/bash, the test suite is now updated to search $PATH to locate
786   the bash binary. This allows users of systems with old /bin/bash to
787   simply install bash >= 4 somewhere on $PATH before /bin and then use
788   the test suite.
789
790 Support for testing output with a trailing newline.
791
792   Previously, some tests would fail to notice a difference in the
793   presence/absence of a trailing newline in a program output, (which
794   has led to bugs in the past). Now, carefully-written tests (using
795   test_expect_equal_file rather than test_expect_equal) will detect
796   any change in the presence/absence of a trailing newline. Many tests
797   are updated to take advantage of this.
798
799 Avoiding accessing user's $HOME while running test suite
800
801   The test suite now carefully creates its own HOME directory. This
802   allows the test suite to be run with no existing HOME directory, (as
803   some build systems apparently do), and avoids test-suite differences
804   due to configuration files in the users HOME directory.
805
806
807 General bug fixes
808 -----------------
809 Output *all* files for "notmuch search --output=files"
810
811   For the cases where multiple files have the same Message ID,
812   previous versions of notmuch would output only one such file. This
813   command is now fixed to correctly output all files.
814
815 Fixed spurious search results from "overlapped" indexing of addresses
816
817   This fixed a bug where a search for:
818
819         to:user@elsewhere.com
820
821   would incorrectly match a message sent:
822
823         To: user@example,com, someone@elsewhere.com
824
825 Fix --output=json when search has no results
826
827   A bug present since notmuch 0.4 had caused searches with no results
828   to produce an invalid json object. This is now fixed to cleanly
829   return a valid json object representing an empty array "[]" as
830   expected.
831
832 fix the automatic detection of the From address for "notmuch reply"
833 from the Received headers in some cases.
834
835 Fix core dump on DragonFlyBSD due to -1 return value from
836 sysconf(_SC_GETPW_R_SIZE_MAX).
837
838 Cleaned up several memory leaks
839
840 Eliminated a few, rare segmentation faults and a double-free.
841
842 Fix libnotmuch library to only export notmuch API functions
843
844   Previous release of the notmuch library also exported some Xapian
845   C++ exception type symbols. These were never part of the library
846   interface and were never intended to be exported.
847
848 Emacs-interface bug fixes
849 -------------------------
850 Display any unexpected output or errors from "notmuch search" invocations
851
852   Previously any misformatted output or trailing error messages were
853   silently ignored. This output is now clearly displayed. This fix was
854   very helpful in identifying and fixing the bug described below.
855
856 Fix bug where some threads would be missing from large search results
857
858   When a search returned a "large" number of results, the emacs
859   interface was incorrectly dropping one thread every time the output
860   of the "notmuch search" process spanned the emacs read-buffer. This
861   is now fixed.
862
863 Avoid re-compression of .gz files (and similar) when saving attachment
864
865   Emacs was being too clever for its own good and trying to
866   re-compress pre-compressed .gz files when saving such attachments
867   (potentially corrupting the attachment). The emacs interface is
868   fixed to avoid this bug.
869
870 Fix hiding of a message when a previously-hidden citation is visible
871
872   Previously the citation would remain visible in this case. This is
873   fixed so that hiding a message hides all parts.
874
875 Notmuch 0.5 (2010-11-11)
876 ========================
877 New, general features
878 ---------------------
879 Maildir-flag synchronization
880
881   Notmuch now knows how to synchronize flags in maildir filenames with
882   tags in the notmuch database. The following flag/tag mappings are
883   supported:
884
885         Flag <-> Tag
886         ----     -----
887         'D'      draft
888         'F'      flagged
889         'P'      passed
890         'R'      replied
891         'S'      unread (added when 'S' flag is not present)
892
893   The synchronization occurs in both directions, (for example, adding
894   the 'S' flag to a file will cause the "unread" tag to be added, and
895   adding the "replied" tag to a message will cause the file to be
896   renamed with an 'R' flag).
897
898   This synchronization is enabled by default for users of the
899   command-line interface, (though only files in directories named
900   "cur" or "new" will be renamed). It can be disabled by setting the
901   new maildir.synchronize_flags option in the configuration file. For
902   example:
903
904         notmuch config set maildir.synchronize_flags false
905
906   Users upgrading may also want to run "notmuch setup" once (just
907   accept the existing configuration) to get a new, nicely-commented
908   [maildir] section added to the configuration file.
909
910   For users of the notmuch library, the new synchronization
911   functionality is available with the following two new functions:
912
913         notmuch_message_maildir_flags_to_tags
914         notmuch_message_tags_to_maildir_flags
915
916   It is anticipated that future improvements to this support will
917   allow for safe synchronization of the 'T' flag with the "deleted"
918   tag, as well as support for custom flag/tag mappings.
919
920 New library features
921 --------------------
922 Support for querying multiple filenames for a single message
923
924   It is common for the mailstore to contain multiple files with the
925   same message ID. Previously, notmuch would always hide these
926   duplicate files, (returning a single, arbitrary filename with
927   notmuch_message_get_filename).
928
929   With this release, library users can access all filenames for a
930   message with the new function:
931
932         notmuch_message_get_filenames
933
934   Together with notmuch_filenames_valid, notmuch_filenames_get, and
935   notmuch_filenames_move_to_next it is now possible to iterate over
936   all available filenames for a given message.
937
938 New command-line features
939 -------------------------
940 New "notmuch show --format=raw" for getting at original email contents
941
942   This new feature allows for a fully-functional email client to be
943   built on top of the notmuch command-line without needing any direct
944   access to the mail store itself.
945
946   For example, it's now possible to run "emacs -f notmuch" on a local
947   machine with only ssh access to the mail store/notmuch database. To
948   do this, simply set the notmuch-command variable in emacs to the
949   name of a script containing:
950
951         ssh user@host notmuch "$@"
952
953   If the ssh client has enabled connection sharing (ControlMaster
954   option in OpenSSH), the emacs interface can be quite responsive this
955   way.
956
957 General bug fixes
958 -----------------
959 Fix "notmuch search" to print nothing when nothing matches
960
961   The 0.4 release had a bug in which:
962
963         notmuch search <expression-with-no-matches>
964
965   would produce a single blank line of output, (where previous
966   versions would produce no output. This fix also causes a change in
967   the --format=json output, (which would previously produce "[]" and
968   now produces nothing).
969
970 Emacs interface improvements
971 ----------------------------
972 Fix to allow pipe ('|') command to work when using notmuch over ssh
973
974 Fix count of lines in hidden signatures.
975
976 Omit repeated subject lines in (collapsed) thread display.
977
978 Display current thread subject in a header line.
979
980 Provide a "c i" binding to copy a thread ID from the search view.
981
982 Allow for notmuch-fcc-dirs to have a value of nil.
983
984   Also, the more complex form of notmuch-fcc-dirs now has a slightly
985   different format. It no longer has a special first-element, fallback
986   string. Instead it's now a list of cons cells where the car of each
987   cell is a regular expression to be matched against the sender
988   address, and the cdr is the name of a folder to use for an FCC. So
989   the old fallback behavior can be achieved by including a final cell
990   of (".*" . "default-fcc-folder").
991
992 Vim interface improvements
993 --------------------------
994 Felipe Contreras provided a number of updates for the vim interface.
995
996   These include optimizations, support for newer versions of vim, fixed
997   support for sending mail on modern systems, new commands, and
998   various cleanups.
999
1000 New bindings
1001 ------------
1002 Added initial ruby bindings in bindings/ruby
1003
1004 Notmuch 0.4 (2010-11-01)
1005 ========================
1006 New command-line features
1007 -------------------------
1008 notmuch search --output=(summary|threads|messages|tags|files)
1009
1010   This new option allows for particular items to be returned from
1011   notmuch searches. The "summary" option is the default and behaves
1012   just as "notmuch search" has historically behaved.
1013
1014   The new option values allow for thread IDs, message IDs, lists of
1015   tags, and lists of filenames to be returned from searches. It is
1016   expected that this new option will be very useful in shell
1017   scripts. For example:
1018
1019         for file in $(notmuch search --output=files <search-terms>); do
1020                 <operations-on> "$file"
1021         done
1022
1023 notmuch show --format=mbox <search-specification>
1024
1025   This new option allows for the messages matching a search
1026   specification to be presented as an mbox. Specifically the "mboxrd"
1027   format is used which allows for reversible quoting of lines
1028   beginning with "From ". A reader should remove a single '>' from the
1029   beginning of all lines beginning with one or more '>' characters
1030   followed by the 5 characters "From ".
1031
1032 notmuch config [get|set] <section>.<item> [value ...]
1033
1034   The new top-level "config" command allows for any value in the
1035   notmuch configuration file to be queried or set to a new value. Both
1036   single-valued and multi-valued items are supported, as our any
1037   custom items stored in the configuration file.
1038
1039 Avoid setting Bcc header in "notmuch reply"
1040
1041   We decided that this was a bit heavy-handed as the actual mail
1042   user-agent should be responsible for setting any Bcc option. Also,
1043   see below for the notmuch/emacs user-agent now setting an Fcc by
1044   default rather than Bcc.
1045
1046 New library features
1047 --------------------
1048 Add notmuch_query_get_query_string and notmuch_query_get_sort
1049
1050   These are simply functions for querying properties of a
1051   notmuch_query_t object.
1052
1053 New emacs features
1054 ------------------
1055 Enable Fcc of all sent messages by default (to "sent" directory)
1056
1057   All messages sent from the emacs interface will now be saved to the
1058   notmuch mail store where they will be incorporated to the database
1059   by the next "notmuch new". By default, messages are saved to the
1060   "sent" directory at the top-level of the mail store. This directory
1061   can be customized by means of the "Notmuch Fcc Dirs" option in the
1062   notmuch customize interface.
1063
1064 Ability to all open messages in a thread to a pipe
1065
1066   Historically, the '|' keybinding allows for piping a single message
1067   to an external command. Now, by prefixing this key with a prefix
1068   argument, (for example, by pressing "Control-U |"), all open
1069   messages in the current thread will be sent to the external command.
1070
1071 Optional support for detecting inline patches
1072
1073   This hook is disabled by default but can be enabled with a checkbox
1074   under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
1075   interface. It allows for inline patches to be detected and treated
1076   as if they were attachments, (with context-sensitive highlighting).
1077
1078 Automatically tag messages as "replied" when sending a reply
1079
1080   Messages replied to within the emacs interface will now be tagged as
1081   "replied". This feature can easily be customized to add or remove
1082   other tags as well. For example, a user might use a tag of
1083   "needs-reply" and can configure this feature to automatically remove
1084   that tag when replying. See "Notmuch Message Mark Replied" in the
1085   notmuch customize interface.
1086
1087 Allow search-result color specifications to overlay each other
1088
1089   For example, one tag can specify the background color of matching
1090   lines, while another can specify the foreground. With this change,
1091   both settings will now be visible simultaneously, (which was not the
1092   case in previous releases). See "Notmuch Search Line Faces" in the
1093   notmuch customize interface.
1094
1095 Make hidden author names still available for incremental search.
1096
1097   When there is insufficient space to display all authors of a thread
1098   in search results, the names of hidden authors are now still made
1099   available to emacs' incremental search commands. As the user
1100   searches, matching lines will temporarily expand to show the hidden
1101   names.
1102
1103 New binding of Control-TAB (works like TAB in reverse)
1104
1105   Many notmuch nodes already use TAB to navigate forward through
1106   various items allowing actions, (message headers, email attachments,
1107   etc.). The new Control-TAB binding operates similarly but in the
1108   opposite direction.
1109
1110 New build-system features
1111 -------------------------
1112 Various portability fixes have been applied
1113
1114   These include fixes for build failures on at least Solaris, FreeBSD,
1115   and Fedora systems. We're hopeful that the notmuch code base is now
1116   more portable than ever before.
1117
1118 Arrange for libnotmuch to be found automatically after make install
1119
1120   The notmuch build system is now careful to help the user avoid
1121   errors of the form "libnotmuch.so could not be found" immediately
1122   after installing. This support takes two forms:
1123
1124         1. If the library is installed to a system directory,
1125            (configured in /etc/ld.so.conf), then "make install" will
1126            automatically run ldconfig.
1127
1128         2. If the library is installed to a non-system directory, the
1129            build system adds a DR_RUNPATH entry to the final binary
1130            pointing to the directory to which the library is installed.
1131
1132   When this support works, the user should be able to run notmuch
1133   immediately after "make install", without any errors trying to find
1134   the notmuch library, and without having to manually set environment
1135   variables such as LD_LIBRARY_PATH.
1136
1137 Check compiler/linker options before using them
1138
1139   The configure script now carefully checks that any desired
1140   compilation options, (whether for enabling compiler warnings, or for
1141   embedding rpath, etc.), are supported. Only supported options are
1142   used in the resulting Makefile.
1143
1144 New test-suite features
1145 -----------------------
1146 New modularization of test suite.
1147
1148   Thanks to a gracious relicensing of the test-suite infrastructure
1149   from the git project, notmuch now has a modular test suite. This
1150   provides the ability to run individual sections of the test suite
1151   rather than the whole things. It also provides better summary of
1152   test results, with support for tests that are expected to fail
1153   (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
1154   it easy to run the test suite within valgrind (pass --valgrind to
1155   notmuch-test or to any sub-script) which has been very useful.
1156
1157 New testing of emacs interface.
1158
1159   The test suite has been augmented to allow automated testing of the
1160   emacs interfaces. So far, this includes basic searches, display of
1161   threads, and tag manipulation. This also includes a test that a new
1162   message can successfully be sent out through a (dummy) SMTP server
1163   and that said message is successfully integrated into the notmuch
1164   database via the FCC setting.
1165
1166 General bug fixes
1167 -----------------
1168 Fix potential corruption of database when "notmuch new " is interrupted.
1169
1170   Previously, an interruption of "notmuch new" would (rarely) result
1171   in a corrupt database. The corruption would manifest itself by a
1172   persistent error of the form:
1173
1174         document ID of 1234 has no thread ID
1175
1176   The message-adding code has been carefully audited and reworked to
1177   avoid this sort of corruption regardless of when it is interrupted.
1178
1179 Fix failure with extremely long message ID headers.
1180
1181   Previously, a message with an extremely long message ID, (say, more
1182   than 300 characters), would fail to be added to notmuch, (triggering
1183   Xapian exceptions). This has now been fixed.
1184
1185 Fix for messages with "charset=unknown-8bit"
1186
1187   Previously, messages with this charset would cause notmuch to emit a
1188   GMime warning, (which would then trip up emacs or other interfaces
1189   parsing the notmuch results).
1190
1191 Fix notmuch_query_search_threads function to return NULL on any exception
1192
1193 Fix "notmuch search" to return non-zero if notmuch_query_search_threads fails
1194
1195   Previously, this command could confusingly report a Xapian
1196   exception, yet still return an error code of 0. It now correctly
1197   returns a failing error code of 1 in this case.
1198
1199 Emacs bug fixes
1200 ---------------
1201 Fix to handle a message with a subject containing, for example "[1234]"
1202
1203   Previously, a message subject containing a sequence of digits within
1204   square brackets would cause the emacs interface to mis-parse the
1205   output of "notmuch search". This would result in the message being
1206   mis-displayed and prevent the user from manipulating the message in
1207   the emacs interface.
1208
1209 Fix to correctly handle message IDs containing ".."
1210
1211   The emacs interface now properly quotes message IDs to avoid a
1212   Xapian bug in which the ".." within a message ID would be
1213   misinterpreted as a numeric range specification.
1214
1215 Python-binding fixes
1216 --------------------
1217 The python bindings for notmuch have been updated to work with python3.
1218
1219 Debian-specific fixes
1220 ---------------------
1221 Fix emacs initialization so "M-x notmuch" works for users by default.
1222
1223   Now, a new Debian user can immediately run "emacs -f notmuch" after
1224   "apt-get install notmuch". Previously, the user would have had to
1225   edit the ~/.emacs file to add "(require 'notmuch)" before this would
1226   work.
1227
1228 Notmuch 0.3.1 (2010-04-27)
1229 ==========================
1230 General bug fixes
1231 -----------------
1232 Fix an infinite loop in "notmuch reply"
1233
1234   This bug could be triggered by replying to a message where the
1235   user's primary email address did not appear in the To: header and
1236   the user had not configured any secondary email addresses. The bug
1237   was a simple re-use of the same iterator variable in nested loops.
1238
1239 Fix a potential SEGV in "notmuch search"
1240
1241   This bug could be triggered by an author name ending in a ','.
1242   Admittedly - that's almost certainly a spam email, but we never
1243   want notmuch to crash.
1244
1245 Emacs bug fixes
1246 ---------------
1247 Fix calculations for line wrapping in the primary "notmuch" view.
1248
1249 Fix Fcc support to prompt to create a directory if the specified Fcc
1250 directory does not exist.
1251
1252 Build fix
1253 ---------
1254 Fix build on OpenSolaris (at least) due to missing 'extern "C"' block.
1255
1256   Without this, the C++ sources could not find strcasestr and the
1257   final linking of notmuch would fail.
1258
1259 Notmuch 0.3 (2010-04-27)
1260 ========================
1261 New command-line features
1262 -------------------------
1263 User-configurable tags for new messages
1264
1265   A new "new.tags" option is available in the configuration file to
1266   determine which tags are applied to new messages. Run "notmuch
1267   setup" to generate new documentation within ~/.notmuch-config on how
1268   to specify this value.
1269
1270 Threads search results named based on subjects that match search
1271
1272   This means that when new mails arrived to a thread you've previously
1273   read, and the new mails have a new subject, you will see that
1274   subject in the search results rather than the old subject.
1275
1276 Faster operation of "notmuch tag" (avoid unneeded sorting)
1277
1278   Since the user just wants to tag all matching messages, we can make
1279   things perform a bit faster by avoiding the sort.
1280
1281 Even Better guessing of From: header for "notmuch reply"
1282
1283   Notmuch now looks at a number of headers when trying to figure out
1284   the best From: header to use in a reply. This is helpful if you have
1285   several configured email addresses, and you also subscribe to various
1286   mailing lists with different addresses, (so that mails you are
1287   replying to won't always include your subscribed address in the To:
1288   header).
1289
1290 Indication of author names that match a search
1291
1292   When notmuch displays threads as the result of a search, it now
1293   lists the authors that match the search before listing the other
1294   authors in the thread. It inserts a pipe '|' symbol between the last
1295   matching and first non-matching author. This is especially useful in
1296   a search that includes tag:unread. Now the authors of the unread
1297   messages in the thread are listed first.
1298
1299 New: Python bindings
1300 --------------------
1301 Sebastian Spaeth has contributed his python bindings for the notmuch
1302 library to the central repository. These bindings were previously
1303 known as "cnotmuch" within python but have now been renamed to be
1304 accessible with a simple, and more official-looking "import notmuch".
1305
1306 The bindings have already proven very useful as people proficient in
1307 python have been able to easily develop programs to do notmuch-based
1308 searches for email-address completion, maildir-flag synchronization,
1309 and other tasks.
1310
1311 These bindings are available within the bindings/python directory, but
1312 are not yet integrated into the top-level Makefiles, nor the top-level
1313 package-building scripts. Improvements are welcome.
1314
1315 Emacs interface improvements
1316 ----------------------------
1317 An entirely new initial view for notmuch, (friendly yet powerful)
1318
1319   Some of us call the new view "notmuch hello" but you can get at it
1320   by simply calling "emacs -f notmuch". The new view provides a search
1321   bar where new searches can be performed. It also displays a list of
1322   recent searches, along with a button to save any of these, giving it
1323   a new name as a "saved search". Many people find these "saved
1324   searches" one of the most convenient ways of organizing their mail,
1325   (providing all of the features of "folders" in other mail clients,
1326   but without any of the disadvantages).
1327
1328   Finally, this view can also optionally display all of the tags that
1329   exist in the database, along with a count for each tag, and a custom
1330   search of messages with that tag that's simply a click (or keypress)
1331   away.
1332
1333   Note: For users that liked the original mode of "emacs -f notmuch"
1334         immediately displaying a particular search result, we
1335         recommend instead running something like:
1336
1337                 emacs --eval '(notmuch search "tag:inbox" t)'
1338
1339         The "t" means to sort the messages in an "oldest first" order,
1340         (as notmuch would do previously by default). You can also
1341         leave that off to have your search results in "newest first"
1342         order.
1343
1344 Full-featured "customize" support for configuring notmuch
1345
1346   Notmuch now plugs in well to the emacs "customize" mode to make it
1347   much simpler to find things about the notmuch interface that can be
1348   tweaked by the user.
1349
1350   You can get to this mode by starting at the main "Customize" menu in
1351   emacs, then browsing through "Applications", "Mail", and
1352   "Notmuch". Or you can go straight to "M-x customize-group"
1353   "notmuch".
1354
1355   Once you're at the customize screen, you'll see a list of documented
1356   options that can be manipulated along with checkboxes, drop-down
1357   selectors, and text-entry boxes for configuring the various
1358   settings.
1359
1360 Support for doing tab-completion of email addresses
1361
1362   This support currently relies on an external program,
1363   (notmuch-addresses), that is not yet shipped with notmuch
1364   itself. But multiple, suitable implementations of this program have
1365   already been written that generate address completions by doing
1366   notmuch searches of your email collection. For example, providing
1367   first those addresses that you have composed messages to in the
1368   past, etc.
1369
1370   One such program (implemented in python with the python bindings to
1371   notmuch) is available via:
1372
1373         git clone  http://jkr.acm.jhu.edu/git/notmuch_addresses.git
1374
1375   Install that program as notmuch-addresses on your PATH, and then
1376   hitting TAB on a partial email address or name within the To: or Cc:
1377   line of an email message will provide matching completions.
1378
1379 Support for file-based (Fcc) delivery of sent messages to mail store
1380
1381   This isn't yet enabled by default. To enable this, one will have to
1382   set the "Notmuch Fcc Dirs" setting within the notmuch customize
1383   screen, (see its documentation there for details). We anticipate
1384   making this automatic in a future release.
1385
1386 New 'G' key binding to trigger mail refresh (G == "Get new mail")
1387
1388   The 'G' key works wherever '=' works. Before refreshing the screen
1389   it calls an external program that can be used to poll email servers,
1390   run notmuch new and setup specific tags for the new emails. The
1391   script to be called should be configured with the "Notmuch Poll
1392   Script" setting in the customize interface. This script will
1393   typically invoke "notmuch new" and then perhaps several "notmuch
1394   tag" commands.
1395
1396 Implement emacs message display with the JSON output from notmuch.
1397
1398   This is much more robust than the previous implementation, (where
1399   some HTML mails and mail quoting the notmuch code with the delimiter
1400   characters in it would cause the parser to fall over).
1401
1402 Better handling of HTML messages and MIME attachments (inline images!)
1403
1404   Allow for any MIME parts that emacs can display to be displayed
1405   inline. This includes inline viewing of image attachments, (provided
1406   the window is large enough to fit the image at its natural size).
1407
1408   Much more robust handling of HTML messages. Currently both text/plain
1409   and text/html alternates will be rendered next to each other. In a
1410   future release, users will be able to decide to see only one or the
1411   other representation.
1412
1413   Each attachment now has its own button so that attachments can be
1414   saved individually (the 'w' key is still available to save all
1415   attachments).
1416
1417 Customizable support for tidying of text/plain message content
1418
1419   Many new functions are available for tidying up message
1420   content. These include options such as wrapping long lines,
1421   compressing duplicate blank lines, etc.
1422
1423   Most of these are disabled by default, but can easily be enabled by
1424   clicking the available check boxes under the "Notmuch Show Insert
1425   Text/Plain Hook" within the notmuch customize screen.
1426
1427 New support for searchable citations (even when hidden)
1428
1429   When portions of overly-long citations are hidden, the contents of
1430   these citations will still be available for emacs' standard
1431   "incremental search" functions. When the search matches any portion
1432   of a hidden citation, the citation will become visible temporarily
1433   to display the search result.
1434
1435 More flexible handling of header visibility
1436
1437   As an answer to complaints from many users, the To, Cc, and Date
1438   headers of messages are no longer hidden by default. For those users
1439   that liked that these were hidden, a new "Notmuch Messages Headers
1440   Visible" option in the customize interface can be set to nil. The
1441   visibility of headers can still be toggled on a per-message basis
1442   with the 'h' keybinding.
1443
1444   For users that don't want to see some subset of those headers, the
1445   new "Notmuch Message Headers" variable can be customized to list
1446   only those headers that should be present in the display of a message.
1447
1448 The Return key now toggles message visibility anywhere
1449
1450   Previously this worked only on the first summary-line of a message.
1451
1452 Customizable formatting of search results
1453
1454   The user can easily customize the order, width, and formatting of
1455   the various fields in a "notmuch search" buffer. See the "Notmuch
1456   Search Result Format" section of the customize interface.
1457
1458 Generate nicer names for search buffers when using a saved search.
1459
1460 Add a notmuch User-Agent header when sending mail from notmuch/emacs.
1461
1462 New keybinding (M-Ret) to open all collapsed messages in a thread.
1463
1464 New library feature
1465 -------------------
1466 Provide a new NOTMUCH_SORT_UNSORTED value for queries
1467
1468   This can be somewhat faster when sorting simply isn't desired. For
1469   example when collecting a set of messages that will all be
1470   manipulated identically, (adding a tag, removing a tag, deleting the
1471   messages), then there's no advantage to sorting the messages by
1472   date.
1473
1474 Build fixes
1475 -----------
1476 Fix to compile against GMime 2.6
1477
1478   Previously notmuch insisted on being able to find GMime 2.4, (even
1479   though GMime 2.6 would have worked all along).
1480
1481 Fix configure script to accept (and ignore) various standard options.
1482
1483   For example, those that the Gentoo build scripts expect configure to
1484   accept are now all accepted.
1485
1486 Test suite
1487 ----------
1488 A large number of new tests for the many new features.
1489
1490 Better display of output from failed tests.
1491
1492   Now shows failures with diff rather than forcing the user to gaze at
1493   complete actual and expected output looking for deviation.
1494
1495 Notmuch 0.2 (2010-04-16)
1496 ========================
1497 This is the second release of the notmuch mail system, with actual
1498 detailed release notes this time!
1499
1500 This release consists of a number of minor new features that make
1501 notmuch more pleasant to use, and a few fairly major bug fixes.
1502
1503 We didn't quite hit our release target of "about a week" from the 0.1
1504 release, (0.2 is happening 11 days after 0.1), but we hope to do
1505 better for next week. Look forward to some major features coming to
1506 notmuch in subsequent releases.
1507
1508 -Carl
1509
1510 General features
1511 ----------------
1512 Better guessing of From: header.
1513
1514   Notmuch now tries harder to guess which configured address should be
1515   used as the From: line in a "notmuch reply". It will examine the
1516   Received: headers if it fails to find any configured address in To:
1517   or Cc:. This allows it to often choose the correct address even when
1518   replying to a message sent to a mailing list, and not directly to a
1519   configured address.
1520
1521 Make "notmuch count" with no arguments count all messages
1522
1523   Previously, it was hard to construct a search term that was
1524   guaranteed to match all messages.
1525
1526 Provide a new special-case search term of "*" to match all messages.
1527
1528   This can be used in any command accepting a search term, such as
1529   "notmuch search '*'". Note that you'll want to take care that the
1530   shell doesn't expand * against the current files. And note that the
1531   support for "*" is a special case. It's only meaningful as a single
1532   search term and loses its special meaning when combined with any
1533   other search terms.
1534
1535 Automatically detect thread connections even when a parent message is
1536 missing.
1537
1538   Previously, if two or more message were received with a common
1539   parent, but that parent was not received, then these messages would
1540   not be recognized as belonging to the same thread. This is now fixed
1541   so that such messages are properly connected in a thread.
1542
1543 General bug fixes
1544 -----------------
1545 Fix potential data loss in "notmuch new" with SIGINT
1546
1547   One code path in "notmuch new" was not properly handling
1548   SIGINT. Previously, this could lead to messages being removed from
1549   the database (and their tags being lost) if the user pressed
1550   Control-C while "notmuch new" was working.
1551
1552 Fix segfault when a message includes a MIME part that is empty.
1553
1554 Fix handling of non-ASCII characters with --format=json
1555
1556   Previously, characters outside the range of 7-bit ASCII were
1557   silently dropped from the JSON output. This led to corrupted display
1558   of utf-8 content in the upcoming notmuch web-based frontends.
1559
1560 Fix headers to be properly decoded in "notmuch reply"
1561
1562   Previously, the user might see:
1563
1564         Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
1565
1566   rather than:
1567
1568         Subject: Re: Rozlučka
1569
1570   The former text is properly encoded to be RFC-compliant SMTP, will
1571   be sent correctly, and will be properly decoded by the
1572   recipient. But the user trying to edit the reply would likely be
1573   unable to read or edit that field in its encoded form.
1574
1575 Emacs client features
1576 ---------------------
1577 Show the last few lines of citations as well as the first few lines.
1578
1579   It's often the case that the last sentence of a citation is what is
1580   being replied to directly, so the last few lines are often much more
1581   important. The number of lines shown at the beginning and end of any
1582   citation can be configured, (notmuch-show-citation-lines-prefix and
1583   notmuch-show-citation-lines-suffix).
1584
1585 The '+' and '-' commands in the search view can now add and remove
1586 tags by region.
1587
1588   Selective bulk tagging is now possible by selecting a region of
1589   threads and then using either the '+' or '-' keybindings. Bulk
1590   tagging is still available for all threads matching the current
1591   search with the '*' binding.
1592
1593 More meaningful buffer names for thread-view buffers.
1594
1595   Notmuch now uses the Subject of the thread as the buffer
1596   name. Previously it was using the thread ID, which is a meaningless
1597   number to the user.
1598
1599 Provide for customized colors of threads in search view based on tags.
1600
1601   See the documentation of notmuch-search-line-faces, (or us "M-x
1602   customize" and browse to the "notmuch" group within "Applications"
1603   and "Mail"), for details on how to configure this colorization.
1604
1605 Build-system features
1606 ---------------------
1607 Add support to properly build libnotmuch on Darwin systems (OS X).
1608
1609 Add support to configure for many standard options.
1610
1611   We include actual support for:
1612
1613         --includedir --mandir --sysconfdir
1614
1615   And accept and silently ignore several more:
1616
1617         --build --infodir --libexecdir --localstatedir
1618         --disable-maintainer-mode --disable-dependency-tracking
1619
1620 Install emacs client in "make install" rather than requiring a
1621 separate "make install-emacs".
1622
1623 Automatically compute versions numbers between releases.
1624
1625   This support uses the git-describe notation, so a version such as
1626   0.1-144-g43cbbfc indicates a version that is 144 commits since the
1627   0.1 release and is available as git commit "43cbbfc".
1628
1629 Add a new "make test" target to run the test suite and actually verify
1630 its results.
1631
1632 Notmuch 0.1 (2010-04-05)
1633 ========================
1634 This is the first release of the notmuch mail system.
1635
1636 It includes the libnotmuch library, the notmuch command-line
1637 interface, and an emacs-based interface to notmuch.
1638
1639 Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
1640 1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
1641 a performance bug that made notmuch very slow when modifying
1642 tags. This would cause distracting pauses when reading mail while
1643 notmuch would wait for Xapian when removing the "inbox" and "unread"
1644 tags from messages in a thread.