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