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