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