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