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