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