]> git.notmuchmail.org Git - notmuch/blob - NEWS
8125e09f477de50915ba0d54115abefb72c7766e
[notmuch] / NEWS
1 Notmuch 0.23.4 (2016-12-24)
2 ===========================
3
4 Command Line Interface
5 ----------------------
6
7 Improve error handling in notmuch insert
8
9   Database lock errors no longer prevent message file delivery to the
10   filesystem.  Certain errors during `notmuch insert` most likely to
11   be temporary return EX_TEMPFAIL.
12
13 Emacs
14 -----
15
16 Restore autoload cookie for notmuch-search.
17
18 Notmuch 0.23.3 (2016-11-27)
19 ===========================
20
21 Command Line Interface
22 ----------------------
23
24 Treat disappearing files during notmuch new as non-fatal.
25
26 Test Suite
27 ----------
28
29 Fix incompatibility (related to signature size) with gnupg 2.1.16.
30
31 Notmuch 0.23.2 (2016-11-20)
32 ===========================
33
34 Emacs
35 -----
36
37 Fix notmuch-interesting-buffer and notmuch-cycle-notmuch-buffers.
38
39   notmuch-tree-mode and notmuch-message-mode buffers are now
40   considered interesting by `notmuch-interesting-buffer` and
41   `notmuch-cycle-notmuch-buffers`.
42
43 Restore compatibility with Emacs 23.
44
45   Notmuch support for Emacs 23 is now deprecated.
46
47 Notmuch 0.23.1 (2016-10-23)
48 ===========================
49
50 General
51 -------
52
53 Require Xapian >= 1.2.6
54
55   The ifdef branch for older Xapian (pre-compact API) had bit-rotted.
56
57 Emacs
58 -----
59
60 Fix default colours for unread and flagged messages
61
62   In 0.23 the default colours for unread and flagged messages in
63   search view were accidentally swapped. This release returns them to
64   the original colours.
65
66   A related change in 0.23 broke the customize widget for
67   notmuch-search-line-faces. This is now fixed.
68
69 Fix test failure with Emacs 25.1
70
71   A previously undiscovered jit-lock related bug was exposed by Emacs
72   25, causing a notmuch-show mode test to fail. This release fixes the
73   bug, and hence the test.
74
75 Notmuch 0.23 (2016-10-03)
76 =========================
77
78 General (Xapian 1.4+)
79 ---------------------
80
81 Compiling against Xapian 1.4 enables several new features.
82
83 Support for single argument date: queries
84
85   `date:<expr>` is equivalent to  `date:<expr>..<expr>`.
86
87 Support for blocking opens
88
89   When opening a database notmuch by default will wait for another
90   process to release a write lock, rather than returning an error.
91
92 Support for named queries
93
94   Named queries (also known as 'saved searches') can be defined with a
95   `query:name` format. The expansion of these queries is stored in the
96   database and they can be used from any notmuch client.
97
98 Library
99 -------
100
101 Message property API
102
103   libnotmuch now supports the attachment of arbitrary key-value pairs
104   to messages. These can be used by various tools to manage their
105   private data without polluting the user tag space. They also support
106   iteration of values with the same key or same key prefix.
107
108 Bug fix for `notmuch_directory_set_mtime`
109
110   Update cached mtime to match on-disk mtime.
111
112 CLI
113 ---
114
115 Support for compile time options
116
117   A group of `built_with` keys is now supported for notmuch
118   config. Initial keys in this group are `compact`, `field_processor`,
119   and `retry_lock`.
120
121 Dump/Restore support for configuration information and properties
122
123   Any configuration information stored in the database (initially just
124   named queries) is dumped and restored. Similarly any properties
125   attached to messages are also dumped and restored. Any new
126   information in the dump format is prefixed by '#' to allow existing
127   scripts to ignore it.
128
129 Emacs
130 -----
131
132 Make notmuch-message-mode use insert for fcc
133
134   Notmuch-message-mode now defaults to using notmuch insert for
135   fcc. The old file based fcc behaviour can be restored by setting the
136   defcustom `notmuch-maildir-use-notmuch-insert` to nil.
137
138   When using notmuch insert, `notmuch-fcc-dirs` must be a subdirectory
139   of the mailstore (absolute paths are not permitted) followed by any
140   tag changes to be applied to the inserted message. The tag changes
141   are applied after the default tagging for new messages. For example
142   setting the header to "sentmail -inbox +sent" would insert the
143   message in the subdirectory sentmail of the mailstore, add the tag
144   "sent", and not add the (normally added) "inbox" tag.
145
146   Finally, if the insert fails (e.g. if the database is locked) the
147   user is presented with the option to retry, ignore, or edit the
148   header.
149
150 Make internal address completion customizable
151
152   There is a new defcustom `notmuch-address-internal-completion` which
153   controls how the internal completion works: it allows the user to
154   choose whether to match on messages the user sent, or the user
155   received, and to filter the messages used for the match, for example
156   by date.
157
158 Allow internal address completion on an individual basis
159
160   There is a new function `notmuch-address-toggle-internal-completion`
161   (by default it has no keybinding) which allows users who normally
162   use an external completion command to use the builtin internal
163   completion for the current buffer.
164
165   Alternatively, if the user has company-mode enabled, then the user
166   can use company mode commands such as `company-complete` to
167   activate the builtin completion for an individual completion.
168
169 Resend messages
170
171   The function `notmuch-show-resend-message` (bound to `b` in show
172   and tree modes) will (attempt to) send current message to new
173   recipients. The headers of the message won't be altered (e.g. `To:`
174   may point to yourself). New `Resent-To:`, `Resent-From:` and so on
175   will be added instead.
176
177 Face customization is easier
178
179   New faces `notmuch-tag-unread`, `notmuch-tag-flagged`,
180   `notmuch-tag-deleted`, `notmuch-tag-added`,
181   `notmuch-search-flagged-face` and `notmuch-search-unread-face` are
182   now used by default. Customize `notmuch-faces` to modify them.
183
184 Omit User-Agent header by default when sending mail
185
186 Ruby Bindings
187 -------------
188
189 Add support for `notmuch_database_get_all_tags`
190
191 Go Bindings
192 -----------
193
194 Go bindings moved to contrib
195
196 Add support for `notmuch_threads_t` and `notmuch_thread_t`
197
198 Fixed constant values so they are not all zero anymore
199
200   Previously, it was impossible to open writable database handles,
201   because `DATABASE_MODE_READ_ONLY` and `DATABASE_MODE_READ_WRITE` were
202   both set to zero.
203   The same issue occured with sort modes.
204
205 Notmuch 0.22.2 (2016-09-08)
206 ===========================
207
208 Test Suite
209 ----------
210
211 Silence gdb more
212
213   Have gdb write to a log file instead of stdout, hiding some more
214   (harmless) stderr chatter which causes test failures.
215
216 Hardcode fingerprint in PGP/MIME tests
217
218   Make the tests more robust against changing GnuPG output formats.
219
220 Notmuch 0.22.1 (2016-07-19)
221 ===========================
222
223 Library
224 -------
225
226 Correct the definition of `LIBNOTMUCH_CHECK_VERSION`.
227
228 Document the (lack of) operations permitted on a closed database.
229
230 Test Suite
231 ----------
232
233 Fix race condition in dump / restore tests.
234
235 Notmuch-Mutt
236 ------------
237
238 Use `env` to locate perl.
239
240 Emacs
241 -----
242
243 Tell `message-mode` mode that outgoing messages are mail
244
245   This makes message-mode configuration behave more predictably.
246
247 Respect charset of MIME parts when reading them
248
249   Fix previous assumption that everyone uses UTF-8.
250
251 Notmuch 0.22 (2016-04-26)
252 =========================
253
254 General
255 -------
256
257 Xapian 1.3 support
258
259   Notmuch should now build (and the test suite should pass) on recent
260   releases of Xapian 1.3.x. It has been tested with Xapian 1.3.5.
261
262 Limited support for S/MIME messages
263
264   Signature verification is supported, but not decryption. S/MIME
265   signature creation and S/MIME encryption are supported via built-in
266   support in Emacs. S/MIME support is not extensively tested at this
267   time.
268
269 Bug Fixes
270
271    Fix for threading bug involving deleting and re-adding
272    messages. Fix for case-sensitive content disposition headers. Fix
273    handling of 1 character directory names at top level.
274
275 Command Line Interface
276 ----------------------
277
278 `notmuch show` now supports verifying S/MIME signatures
279
280   This support relies on an appropriately configured `gpgsm`.
281
282 Build System
283 ------------
284
285 Drop dependency on "pkg-config emacs".
286
287 Emacs Interface
288 ---------------
289
290 Notmuch replies now include all parts shown in the show view
291
292   There are two main user visible changes. The first is that rfc822
293   parts are now included in replies.
294
295   The second change is that part headers are now included in the reply
296   buffer to provide visible separation of the parts. The choice of
297   which part headers to show is customizable via the variable
298   `notmuch-mua-reply-insert-header-p-function`.
299
300 Filtering or Limiting messages is now bound to `l` in the search view
301
302   This binding now matches the analogous binding in show view.
303
304 `F` forwards all open messages in a thread
305
306   When viewing a thread of messages, the new binding `F` can be used
307   to generate a new outgoing message which forwards all of the open
308   messages in the thread. This is analogous to the `f` binding, which
309   forwards only the current message.
310
311 Preferred content type can be determined from the message content
312
313   More flexibility in choosing which sub-part of a
314   multipart/alternative part is initially shown is available by
315   setting `notmuch-multipart/alternative-discouraged` to a function
316   that returns a list of discouraged types. The function so specified
317   is passed the message as an argument and can examine the message
318   content to determine which content types should be discouraged. This
319   is in addition to the current capabilities (i.e. setting
320   `notmuch-multipart/alternative-discouraged` to a list of discouraged
321   types).
322
323 When viewing a thread ("show" mode), queries that match no messages no
324 longer generate empty buffers
325
326   Should an attempt be made to view the thread corresponding to a
327   query that matches no messages, a warning message is now displayed
328   and the terminal bell rung rather than displaying an empty buffer
329   (or, in some cases, displaying an empty buffer and throwing an
330   error). This also affects re-display of the current thread.
331
332 Handle S/MIME signatures in emacs
333
334   The emacs interface is now capable making and verifying S/MIME
335   signatures.
336
337 `notmuch-message-address-insinuate` is now a no-op
338
339   This reduces the amount of interference with non-notmuch uses of
340   message-mode.
341
342 Address completion improvements
343
344   An external script is no longer needed for address completion; if
345   you previously configured one, customize the variable
346   `notmuch-address-command` to try the internal completion. If
347   `company-mode` is available, notmuch uses it by default for
348   interactive address completion.
349
350 Test and experiment with the emacs MUA available in source tree
351
352   `./devel/try-emacs-mua` runs emacs and fills the window with
353   information how to try the MUA safely. Emacs is configured to use
354   the notmuch (lisp) files located in `./emacs` directory.
355
356 Documentation
357 -------------
358
359 New `notmuch-report(1)` and `notmuch-report.json(5)` man pages
360 describe `notmuch-report` and its JSON configuration file.  You can
361 build these files by running `make` in the `devel/nmbug/doc`
362 directory.
363
364 notmuch-report
365 --------------
366
367 Renamed from `nmbug-status`.  This script generates reports based on
368 notmuch queries, and doesn't really have anything to do with nmbug,
369 except for sharing the `NMBGIT` environment variable.  The new name
370 focuses on the script's action, instead of its historical association
371 with the nmbug workflow.  This should make it more discoverable for
372 users looking for generic notmuch reporting tools.
373
374 The default configuration file name (extracted from the `config`
375 branch of `NBMGIT` has changed from `status-config.json` to
376 `notmuch-report.json` so it is more obviously associated with the
377 report-generating script.  The configuration file also has a new
378 `meta.message-url` setting, which is documented in
379 `notmuch-report.json(5)`.
380
381 `notmuch-report` now wraps query phrases in parentheses when and-ing
382 them together, to avoid confusion about clause grouping.
383
384 Notmuch 0.21 (2015-10-29)
385 =========================
386
387 General
388 -------
389
390 Notmuch now requires gmime >= 2.6.7. The gmime 2.4 series is no longer
391 supported.
392
393 Database revision tracking: `lastmod:` queries
394
395   Each message now has a metadata revision number that increases with
396   every tagging operation. See the discussion of `lastmod:` in
397   `notmuch-search-terms(7)` for more information.
398
399 Date queries now support `date:<expr>..!` shorthand for
400 `date:<expr>..<expr>`
401
402   You can use, for example, `date:yesterday..!` to match from the
403   beginning of yesterday to the end of yesterday. For further details,
404   please refer to the `notmuch-search-terms` manual page.
405
406 Notmuch database upgrade to support `lastmod:` queries
407
408   The above mentioned `lastmod:` prefix. This will be done
409   automatically, without prompting on the next time `notmuch new` is
410   run after the upgrade. The upgrade is not reversible, and the
411   upgraded database will not be readable by older versions of
412   Notmuch. As a safeguard, a database dump will be created in the
413   `.notmuch` directory before upgrading.
414
415 Build System
416 ------------
417
418 The ruby bindings are now built as part of the main notmuch build
419 process. This can be disabled with the `--without-ruby` option to
420 configure.
421
422 Building the documentation can be disabled with the `--without-docs`
423 option to configure.
424
425 Skipped individual tests are no longer considered as failures.
426
427 Command Line Interface
428 ----------------------
429
430 Database revision tracking
431
432   Two new options were added to support revision tracking. A global
433   option "--uuid" (`notmuch(1)`) was added for to detect counter
434   rollover and reinitialization, and `notmuch-count(1)` gained a
435   `--lastmod` option to query database revision tracking data.
436
437 The `notmuch address` command supports new deduplication schemes
438
439   `notmuch address` has gained a new `--deduplicate` option to specify
440   how the results should be deduplicated, if at all. The alternatives
441   are `no` (do not deduplicate, useful for processing the results with
442   external tools), `mailbox` (deduplicate based on the full, case
443   sensitive name and email address), and `address` (deduplicate based
444   on the case insensitive address part). See the `notmuch-address`
445   manual page for further information.
446
447 Emacs Interface
448 ---------------
449
450 `notmuch-emacs-version` is used in `User-Agent` header
451
452   The value of recently introduced variable `notmuch-emacs-version` is
453   now used as a part of `User-Agent` header when sending emails.
454
455 Removed `notmuch-version` function by renaming it to `notmuch-cli-version`
456
457   With existing variable `notmuch-emacs-version` the accompanied
458   function which retrieves the version of `notmuch-command` is
459   better named as `notmuch-cli-version`.
460
461 Query input now supports completion for "is:<tag>"
462
463 New message composition mode: `notmuch-compose-mode`
464
465   This is mainly to fix fcc handling, but may be useful for user
466   customization as well.
467
468 Allow filtering of search results in `notmuch-show`
469
470 Add function to rerun current tree-view search in search mode
471
472 Bug fix for replying to encrypted messages in `notmuch-tree` mode
473
474 Allow saved searched to specify tree view rather than search view
475
476   Applies to saved searches run from `notmuch-hello`, or by a keyboard
477   shortcut (`notmuch-jump`).  Can be set in the customize interface, or
478   by adding :search-type tree to the appropriate saved search plist in
479   `notmuch-saved-searches`.
480
481 Increase maximum size of rendered text parts
482
483   The variable `notmuch-show-max-text-part-size` controls the maximum
484   size (in bytes) which is automatically rendered. This may make
485   rendering large threads slower. To get the previous behaviour set
486   this variable to 10000.
487
488 Library
489 -------
490
491 The use of absolute paths is now enforced when calling
492 `notmuch_database_{open, create}`
493
494 New function `notmuch_directory_delete` to delete directory documents
495
496   Previously there was no way to delete directory documents from the
497   database, leading to confusing results when the "ghost" directory
498   document of a renamed or deleted filesystem directory was
499   encountered every time the parent directory was being scanned by
500   `notmuch new`. The mtime of the old directory document was also used
501   if a directory by the same name was added again in the filesystem,
502   potentially bypassing the scan for the directory. The issues are
503   fixed by providing a library call to delete directory documents, and
504   deleting the old documents in `notmuch new` on filesystem directory
505   removal or rename.
506
507 Database revision tracking
508
509   Revision tracking is supported via a new prefix "lastmod:" in the
510   query parser and the new function
511   `notmuch_database_get_revision`. For the latter, see `notmuch(3)`.
512
513 New status code returning API for n_query_count_{messages,threads}
514
515 Deprecated functions
516
517   `notmuch_query_search_threads`, `notmuch_query_search_messages`,
518   `notmuch_query_count_messages`, and `notmuch_query_count_threads`
519   are all deprecated as of this release.  Clients are encouraged to
520   transition to the `_st` variants supporting better error reporting.
521
522 nmbug-status
523 ------------
524
525 `nmbug-status` now supports specifying the sort order for each view.
526
527 Notmuch 0.20.2 (2015-06-27)
528 ===========================
529
530 Emacs Interface
531 ---------------
532
533 Bug fix for marking messages read in `notmuch-tree` mode.
534
535 Notmuch 0.20.1 (2015-06-01)
536 ===========================
537
538 Test Suite
539 ----------
540
541 Work around apparent gdb bug on arm64.
542
543 Notmuch 0.20 (2015-05-31)
544 =========================
545
546 Command-Line Interface
547 ----------------------
548
549 There is a new `mimetype:` search prefix
550
551   The new `mimetype:` search prefix allows searching for the
552   content-type of attachments, which is now indexed. See the
553   `notmuch-search-terms` manual page for details.
554
555 Path to gpg is now configurable
556
557   On systems with multiple versions of gpg, you can tell
558   notmuch which one to use by setting `crypto.gpg_path`
559
560 Emacs
561 -----
562
563 Avoid rendering large text attachements.
564
565 Improved rendering of CID references in HTML.
566
567 Vim
568 ---
569
570 Vim client now respects excluded tags.
571
572 Notmuch-Mutt
573 ------------
574
575 Support messages without Message-IDs.
576
577 Library
578 -------
579
580 Undeprecate single message mboxes
581
582   It seems more trouble to remove this feature than expected, so
583   `notmuch new` will no longer nag about mboxes with a single message.
584
585 New error logging facility
586
587   Clients should call `notmuch_database_status_string` to retrieve
588   output formerly printed to stderr.
589
590 Several bug fixes related to stale iterators
591
592 New status code returning API for n_query_search_{messages,thread}
593
594 Fix for library `install_name` on Mac OS X
595
596 Fix for rounding of seconds
597
598 Documentation
599 -------------
600
601 Sphinx is now mandatory to build docs
602
603   Support for using rst2man in place of sphinx to build the
604   docmumentation has been removed.
605
606 Improved notmuch-search-terms.7
607
608   The man page `notmuch-search-terms(7)` has been extended, merging
609   some material from the relicensed wiki.
610
611 Contrib
612 -------
613
614 `notmuch-deliver` is removed. As far as we know, all functionality
615 previously provided by `notmuch-deliver` should now be provided by
616 `notmuch insert`, provided by the main notmuch binary.
617
618 nmbug-status
619 ------------
620
621 `nmbug-status` now only matches local branches when reading
622 `status-config.json` from the `config` branch of the `NMBGIT`
623 repository.  To help new users running `nmbug-status`, `nmbug clone`
624 now creates a local `config` branch tracking `origin/config`.  Folks
625 who use `nmbug-status` with an in-Git config (i.e. you don't use the
626 `--config` option) who already have `NMBGIT` set up are encouraged to
627 run:
628
629     git checkout config origin/config
630
631 in their `NMBGIT` repository (usually `~/.nmbug`).
632
633 Notmuch 0.19 (2014-11-14)
634 =========================
635
636 Overview
637 --------
638
639 This release improves the reliability of `notmuch dump` and the error
640 handling for `notmuch insert`. The new `notmuch address` command is
641 intended to make searching for email addresses more convenient. At the
642 library level the revised handling of missing messages fixes at least
643 one bug in threading. The release also includes several interface
644 improvements to the emacs interface, most notably the ability to bind
645 keyboard shortcuts to saved searches.
646
647 Command-Line Interface
648 ----------------------
649
650 Stopped `notmuch dump` failing if someone writes to the database
651
652   The dump command now takes the write lock when running. This
653   prevents other processes from writing to the database during the
654   dump which would cause the dump to fail. Note, if another notmuch
655   process already has the write lock the dump will not start, so
656   script callers should still check the return value.
657
658 `notmuch insert` requires successful message indexing for success status
659
660   Previously the `notmuch insert` subcommand indicated success even if
661   the message indexing failed, as long as the message was delivered to
662   file system. This could have lead to delivered messages missing
663   tags, etc. `notmuch insert` is now more strict, also requiring
664   successful indexing for success status. Use the new `--keep` option
665   to revert to the old behaviour (keeping the delivered message file
666   and returning success even if indexing fails).
667
668 `notmuch insert` has gained support for `post-insert` hook
669
670   The new `post-insert` hook is run after message delivery, similar to
671   `post-new`. There's also a new option `notmuch insert --no-hooks` to
672   skip the hook. See the notmuch-hooks(1) man page for details.
673
674 `notmuch deliver` is deprecated
675
676   With this release we believe that `notmuch insert` has reached
677   parity with `notmuch deliver`. We recommend that all users of
678   `notmuch deliver` switch to `notmuch insert` as the former is
679   currently unmaintained.
680
681 `notmuch search` now supports `--duplicate=N` option with `--output=messages`
682
683   Complementing the `notmuch search --duplicate=N --output=files`
684   options, the new `--duplicate=N --output=messages` combination
685   limits output of message IDs to messages matching search terms that
686   have at least `N` files associated with them.
687
688 Added `notmuch address` subcommand
689
690   This new subcommand searches for messages matching the given search
691   terms, and prints the addresses from them. Duplicate addresses are
692   filtered out. The `--output` option controls which of the following
693   information is printed: sender addresses, recipient addresses and
694   count of duplicate addresses.
695
696 Emacs Interface
697 ---------------
698
699 Use the `j` key to access saved searches from anywhere in notmuch
700
701   `j` is now globally bound to `notmuch-jump`, which provides fast,
702   interactive keyboard shortcuts to saved searches.  For example,
703   with the default saved searches `j i` from anywhere in notmuch will
704   bring up the inbox.
705
706 Improved handling of the unread tag
707
708   Notmuch now marks an open message read (i.e., removes the unread
709   tag) if point enters the message at any time in a show buffer
710   regardless of how point got there (mouse click, cursor command, page
711   up/down, notmuch commands such as n,N etc). This fixes various
712   anomalies or bugs in the previous handling. Additionally it is
713   possible to customize the mark read handling by setting
714   `notmuch-show-mark-read-function` to a custom function.
715
716 Expanded default saved search settings
717
718   The default saved searches now include several more common searches,
719   as well as shortcut keys for `notmuch-jump`.
720
721 Improved `q` binding in notmuch buffers
722
723   `q` will now bury rather than kill a notmuch search, show or tree
724   buffer if there are multiple windows showing the buffer. If only a
725   single window is showing the buffer, it is killed.
726
727 `notmuch-show-stash-mlarchive-link-alist` now supports functions
728
729   Some list archives may use a more complicated scheme for referring
730   to messages than just concatenated URL and message ID. For example,
731   patchwork requires a query to translate message ID to a patchwork
732   patch ID. `notmuch-show-stash-mlarchive-link-alist` now supports
733   functions to better cover such cases. See the help documentation for
734   the variable for details.
735
736 Library changes
737 ---------------
738
739 Introduced database version 3 with support for "database features."
740
741   Features are independent aspects of the database schema.
742   Representing these independently of the database version number will
743   let us evolve the database format faster and more incrementally,
744   while maintaining better forwards and backwards compatibility.
745
746 Library users are no longer required to call `notmuch_database_upgrade`
747
748   Previously, library users were required to call
749   `notmuch_database_needs_upgrade` and `notmuch_database_upgrade`
750   before using a writable database.  Even the CLI didn't get this
751   right, and it is no longer required.  Now, individual APIs may
752   return `NOTMUCH_STATUS_UPGRADE_REQUIRED` if the database format is
753   too out of date for that API.
754
755 Library users can now abort an atomic section by closing the database
756
757   Previously there was no supported way to abort an atomic section.
758   Callers can now simply close the database, and any outstanding
759   atomic section will be aborted.
760
761 Add return status to `notmuch_database_close` and
762 `notmuch_database_destroy`
763
764 Bug fixes and performance improvements for thread linking
765
766   The database now represents missing-but-referenced messages ("ghost
767   messages") similarly to how it represents regular messages.  This
768   enables an improved thread linking algorithm that performs better
769   and fixes a bug that sometimes prevented notmuch from linking
770   messages into the same thread.
771
772 nmbug
773 -----
774
775 The Perl script has been translated to Python; you'll need Python 2.7
776 or anything from the 3.x line.  Most of the user-facing interface is
777 the same, but `nmbug help` is now `nmbug --help`, and the following nmbug
778 commands have slightly different interfaces: `archive`, `commit`,
779 `fetch`, `log`, `pull`, `push`, and `status`.  For details on the
780 new interface for a given command, run `nmbug COMMAND --help`.
781
782 nmbug-status
783 ------------
784
785 `nmbug-status` can now optionally load header and footer templates
786 from the config file.  Use something like:
787
788     {
789       "meta": {
790         "header": "<!DOCTYPE html>\n<html lang="en">\n...",
791         "footer": "</body></html>",
792          ...
793       },
794       ...
795     }
796
797 Python Bindings
798 ---------------
799
800 Add support for `notmuch_query_add_tag_exclude`
801
802 Build System
803 ------------
804
805 The notmuch binaries and libraries are now build with debugging symbols
806 by default.  Users concerned with disk space should change the
807 defaults when configuring or use the strip(1) command.
808
809 Notmuch 0.18.2 (2014-10-25)
810 ===========================
811
812 Test Suite
813 ----------
814
815 Translate T380-atomicity to use gdb/python
816
817   The new version is compatible with gdb 7.8
818
819 Emacs 24.4 related bug fixes
820
821   The Messages buffer became read-only, and the generated mime
822   structure for signatures changed slightly.
823
824 Simplify T360-symbol-hiding
825
826    Replace the use of `objdump` on the object files with `nm` on the
827    resulting lib.
828
829 Notmuch 0.18.1 (2014-06-25)
830 ===========================
831
832 This is a bug fix and portability release.
833
834 Build System
835 ------------
836
837 Add a workaround for systems without zlib.pc
838
839 Make emacs install robust against the non-existence of emacs
840
841 Put notmuch lib directory first in RPATH
842
843 Fix handling of `html_static_path` in sphinx
844
845   Both the python bindings and the main docs had spurious settings of
846   this variable.
847
848 Test Suite
849 ----------
850
851 Use --quick when starting emacs
852
853   This avoids a hang in the T160-json tests.
854
855 Allow pending break points in atomicity script
856
857   This allows the atomicity tests to run on several more architectures/OSes.
858
859 Command-Line Interface
860 ----------------------
861
862 To improve portability use fsync instead of fdatasync in
863 `notmuch-dump`. There should be no functional difference.
864
865 Library changes
866 ---------------
867
868 Resurrect support for single-message mbox files
869
870   The removal introduced a bug with previously indexed single-message
871   mboxes.  This support remains deprecated.
872
873 Fix for phrase indexing
874
875   There were several bugs where words intermingled from different
876   headers and MIME parts could match a single phrase query.  This fix
877   will affect only newly indexed messages.
878
879 Emacs Interface
880 ---------------
881
882 Make sure tagging on an empty query is harmless
883
884   Previously tagging an empty query could lead to tags being
885   unintentionally removed.
886
887 Notmuch 0.18 (2014-05-06)
888 =========================
889
890 Overview
891 --------
892
893 This new release includes some enhancements to searching for messages
894 by filesystem location (`folder:` and `path:` prefixes under *General*
895 below).  Saved searches in *Emacs* have also been enhanced to allow
896 distinct search orders for each one.  Another enhancement to the
897 *Emacs* interface is that replies to encrypted messages are now
898 encrypted, reducing the risk of unintentional information disclosure.
899 The default dump output format has changed to the more robust
900 `batch-tag` format. The previously deprecated parsing of single
901 message mboxes has been removed. For detailed release notes, see
902 below.
903
904 General
905 -------
906
907 The `folder:` search prefix now requires an exact match
908
909   The `folder:` prefix has been changed to search for email messages
910   by the exact, case sensitive maildir or MH folder name. Wildcard
911   matching (`folder:foo*`) is no longer supported. The new behaviour
912   allows for more accurate mail folder based searches, makes it
913   possible to search for messages in the top-level folder, and should
914   lead to less surprising results than the old behaviour. Users are
915   advised to see the `notmuch-search-terms` manual page for details,
916   and review how the change affects their existing `folder:` searches.
917
918 There is a new `path:` search prefix
919
920   The new `path:` search prefix complements the `folder:` prefix. The
921   `path:` prefix searches for email messages that are in particular
922   directories within the mail store, optionally recursively using a
923   special syntax. See the `notmuch-search-terms` manual page for
924   details.
925
926 Notmuch database upgrade due to `folder:` and `path:` changes
927
928   The above mentioned changes to the `folder:` prefix and the addition
929   of `path:` prefix require a Notmuch database upgrade. This will be
930   done automatically, without prompting on the next time `notmuch new`
931   is run after the upgrade. The upgrade is not reversible, and the
932   upgraded database will not be readable by older versions of
933   Notmuch. As a safeguard, a database dump will be created in the
934   `.notmuch` directory before upgrading.
935
936 Library changes
937 ---------------
938
939 Notmuch database upgrade
940
941   The libnotmuch consumers are reminded to handle database upgrades
942   properly, either by relying on running `notmuch new`, or checking
943   `notmuch_database_needs_upgrade()` and calling
944   `notmuch_database_upgrade()` as necessary. This has always been the
945   case, but in practise there have been no database upgrades in any
946   released version of Notmuch before now.
947
948 Support for indexing mbox files has been dropped
949
950   There has never been proper support for mbox files containing
951   multiple messages, and the support for single-message mbox files has
952   been deprecated since Notmuch 0.15. The support has now been
953   dropped, and all mbox files will be rejected during indexing.
954
955 Message header parsing changes
956
957   Notmuch previously had an internal parser for message headers. The
958   parser has now been dropped in favour of letting GMime parse both
959   the headers and the message MIME structure at the same pass. This is
960   mostly an internal change, but the GMime parser is stricter in its
961   interpretation of the headers. This may result in messages with
962   slightly malformed message headers being now rejected.
963
964 Command-Line Interface
965 ----------------------
966
967 `notmuch dump` now defaults to `batch-tag` format
968
969   The old format is still available with `--format=sup`.
970
971 `notmuch new` has a --quiet option
972
973   This option suppresses the progress and summary reports.
974
975 `notmuch insert` respects maildir.synchronize_flags config option
976
977   Do not synchronize tags to maildir flags in `notmuch insert` if the
978   user does not want it.
979
980 The commands set consistent exit status codes on failures
981
982   The cli commands now consistently set exit status of 1 on failures,
983   except where explicitly otherwise noted. The notable expections are
984   the status codes for format version mismatches for commands that
985   support formatted output.
986
987 Bug fix for checking configured new.tags for invalid tags
988
989   `notmuch new` and `notmuch insert` now check the user configured
990   new.tags for invalid tags, and refuse to apply them, similar to
991   `notmuch tag`. Invalid tags are currently the empty string and tags
992   starting with `-`.
993
994 Emacs Interface
995 ---------------
996
997 Init file
998
999   If the file pointed by new variable `notmuch-init-file` (typically
1000   `~/.emacs.d/notmuch-config.el`) exists, it is loaded at the end of
1001   `notmuch.el`. Users can put their personal notmuch emacs lisp based
1002   configuration/customization items there instead of filling
1003   `~/.emacs` with these.
1004
1005 Changed format for saved searches
1006
1007   The format for `notmuch-saved-searches` has changed, but old style
1008   saved searches are still supported. The new style means that a saved
1009   search can store the desired sort order for the search, and it can
1010   store a separate query to use for generating the count notmuch
1011   shows.
1012
1013   The variable is fully customizable and any configuration done
1014   through customize should *just work*, with the additional options
1015   mentioned above. For manual customization see the documentation for
1016   `notmuch-saved-searches`.
1017
1018   IMPORTANT: a new style notmuch-saved-searches variable will break
1019   previous versions of notmuch-emacs (even search will not work); to
1020   fix remove the customization for notmuch-saved-searches.
1021
1022   If you have a custom saved search sort function (not unsorted or
1023   alphabetical) then the sort function will need to be
1024   modified. Replacing (car saved-search) by (notmuch-saved-search-get
1025   saved-search :name) and (cdr saved-search) by
1026   (notmuch-saved-search-get saved-search :query) should be sufficient.
1027
1028 The keys of `notmuch-tag-formats` are now regexps
1029
1030   Previously, the keys were literal strings.  Customized settings of
1031   `notmuch-tag-formats` will continue to work as before unless tags
1032   contain regexp special characters like `.` or `*`.
1033
1034 Changed tags are now shown in the buffer
1035
1036   Previously tag changes made in a buffer were shown immediately. In
1037   some cases (particularly automatic tag changes like marking read)
1038   this made it hard to see what had happened (e.g., whether the
1039   message had been unread).
1040
1041   The changes are now shown explicitly in the buffer: by default
1042   deleted tags are displayed with red strike-through and added tags
1043   are displayed underlined in green (inverse video is used for deleted
1044   tags if the terminal does not support strike-through).
1045
1046   The variables `notmuch-tag-deleted-formats` and
1047   `notmuch-tag-added-formats`, which have the same syntax as
1048   `notmuch-tag-formats`, allow this to be customized.
1049
1050   Setting `notmuch-tag-deleted-formats` to `'((".*" nil))` and
1051   `notmuch-tag-added-formats` to `'((".*" tag))` will give the old
1052   behavior of hiding deleted tags and showing added tags identically
1053   to tags already present.
1054
1055 Version variable
1056
1057   The new, build-time generated variable `notmuch-emacs-version` is used
1058   to distinguish between notmuch cli and notmuch emacs versions.
1059   The function `notmuch-hello-versions` (bound to 'v' in notmuch-hello
1060   window) prints both notmuch cli and notmuch emacs versions in case
1061   these differ from each other.
1062   This is especially useful when using notmuch remotely.
1063
1064 Ido-completing-read initialization in Emacs 23
1065
1066   `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless
1067   it is initialized. Defadvice-based *Ido* initialization is defined
1068   for these Emacs versions.
1069
1070 Bug fix for saved searches with newlines in them
1071
1072   Split lines confuse `notmuch count --batch`, so we remove embedded
1073   newlines before calling notmuch count.
1074
1075 Bug fixes for sender identities
1076
1077   Previously, Emacs would rewrite some sender identities in unexpected
1078   and undesirable ways.  Now it will use identities exactly as
1079   configured in `notmuch-identities`.
1080
1081 Replies to encrypted messages will be encrypted by default
1082
1083   In the interest of maintaining confidentiality of communications,
1084   the Notmuch Emacs interface now automatically adds the mml tag to
1085   encrypt replies to encrypted messages. This should make it less
1086   likely to accidentally reply to encrypted messages in plain text.
1087
1088 Reply pushes mark before signature
1089
1090   We push mark and set point on reply so that the user can easily cut
1091   the quoted text. The mark is now pushed before the signature, if
1092   any, instead of end of buffer so the signature is preserved.
1093
1094 Message piping uses the originating buffer's working directory
1095
1096   `notmuch-show-pipe-message` now uses the originating buffer's
1097   current default directory instead of that of the `*notmuch-pipe*`
1098   buffer's.
1099
1100 nmbug
1101 -----
1102
1103 nmbug adds a `clone` command for setting up the initial repository and
1104 uses `@{upstream}` instead of `FETCH_HEAD` to track upstream changes.
1105
1106   The `@{upstream}` change reduces ambiguity when fetching multiple
1107   branches, but requires existing users update their `NMBGIT`
1108   repository (usually `~/.nmbug`) to distinguish between local and
1109   remote-tracking branches.  The easiest way to do this is:
1110
1111   1. If you have any purely local commits (i.e. they aren't in the
1112      nmbug repository on nmbug.tethera.net), push them to a remote
1113      repository.  We'll restore them from the backup in step 4.
1114   2. Remove your `NMBGIT` repository (e.g. `mv .nmbug .nmbug.bak`).
1115   3. Use the new `clone` command to create a fresh clone:
1116
1117         nmbug clone http://nmbug.tethera.net/git/nmbug-tags.git
1118
1119   4. If you had local commits in step 1, add a remote for that
1120      repository and fetch them into the new repository.
1121
1122 Notmuch 0.17 (2013-12-30)
1123 =========================
1124
1125 Incompatible change in SHA1 computation
1126 ---------------------------------------
1127
1128 Previously on big endian architectures like sparc and powerpc the
1129 computation of SHA1 hashes was incorrect. This meant that messages
1130 with overlong or missing message-ids were given different computed
1131 message-ids than on more common little endian architectures like i386
1132 and amd64.  If you use notmuch on a big endian architecture, you are
1133 strongly advised to make a backup of your tags using `notmuch dump`
1134 before this upgrade. You can locate the affected files using something
1135 like:
1136
1137     notmuch dump | \
1138       awk '/^notmuch-sha1-[0-9a-f]{40} / \
1139         {system("notmuch search --exclude=false --output=files id:" $1)}'
1140
1141 Command-Line Interface
1142 ----------------------
1143
1144 New options to better support handling duplicate messages
1145
1146   If more than one message file is associated with a message-id,
1147   `notmuch search --output=files` will print all of them. A new
1148   `--duplicate=N` option can be used to specify which duplicate to
1149   print for each message.
1150
1151   `notmuch count` now supports `--output=files` option to output the
1152   number of files associated with matching messages. This may be
1153   bigger than the number of matching messages due to duplicates
1154   (i.e. multiple files having the same message-id).
1155
1156 Improved `notmuch new` performance for unchanged folders
1157
1158   `notmuch new` now skips over unchanged folders more efficiently,
1159   which can substantially improve the performance of checking for new
1160   mail in some situations (like NFS-mounted Maildirs).
1161
1162 `notmuch reply --format=text` RFC 2047-encodes headers
1163
1164   Previously, this used a mix of standard MIME encoding for the reply
1165   body and UTF-8 for the headers.  Now, the text format reply template
1166   RFC 2047-encodes the headers, making the output a valid RFC 2822
1167   message.  The JSON/sexp format is unchanged.
1168
1169 `notmuch compact` command
1170
1171   The new `compact` command exposes Xapian's compaction
1172   functionality through a more convenient interface than
1173   `xapian-compact`. `notmuch compact` will compact the database to a
1174   temporary location, optionally backup the original database, and
1175   move the compacted database into place.
1176
1177 Emacs Interface
1178 ---------------
1179
1180 `notmuch-tree` (formerly `notmuch-pick`) has been added to mainline
1181
1182   `notmuch-tree` is a threaded message view for the emacs
1183   interface. Each message is one line in the results and the thread
1184   structure is shown using UTF-8 box drawing characters (similar to
1185   Mutt's threaded view). It comes between search and show in terms of
1186   amount of output and can be useful for viewing both single threads
1187   and multiple threads.
1188
1189   Using `notmuch-tree`
1190
1191   The main key entries to notmuch tree are
1192
1193   'z' enter a query to view using notmuch tree (works in hello,
1194       search, show and tree mode itself)
1195
1196   'Z' view the current query in tree notmuch tree (works from search
1197       and show)
1198
1199   Once in tree mode, keybindings are mostly in line with the rest of
1200   notmuch and are all viewable with '?' as usual.
1201
1202   Customising `notmuch-tree`
1203
1204   `notmuch-tree` has several customisation variables. The most
1205   significant is the first notmuch-tree-show-out which determines the
1206   behaviour when selecting a message (with RET) in tree view. By
1207   default tree view uses a split window showing the single message in
1208   the bottom pane. However, if this option is set then it views the
1209   whole thread in the complete window jumping to the selected message
1210   in the thread. In either case command-prefix selects the other option.
1211
1212 Tagging threads in search is now race-free
1213
1214   Previously, adding or removing a tag from a thread in a search
1215   buffer would affect messages that had arrived after the search was
1216   performed, resulting in, for example, archiving messages that were
1217   never seen.  Tagging now affects only the messages that were in the
1218   thread when the search was performed.
1219
1220 `notmuch-hello` refreshes when switching to the buffer
1221
1222   The hello buffer now refreshes whenever you switch to the buffer,
1223   regardless of how you get there.  You can disable automatic
1224   refreshing by customizing `notmuch-hello-auto-refresh`.
1225
1226 Specific mini-buffer prompts for tagging operations
1227
1228   When entering tags to add or remove, the mini-buffer prompt now
1229   indicates what operation will be performed (e.g., "Tag thread", "Tag
1230   message", etc).
1231
1232 Built-in help improvements
1233
1234   Documentation for many commands has been improved, as displayed by
1235   `notmuch-help` (usually bound to "?").  The bindings listed by
1236   `notmuch-help` also now include descriptions of prefixed commands.
1237
1238 Quote replies as they are displayed in show view
1239
1240   We now render the parts for reply quoting the same way they are
1241   rendered for show. At this time, the notable change is that replies
1242   to text/calendar are now pretty instead of raw vcalendar.
1243
1244 Fixed inconsistent use of configured search order
1245
1246   All ways of interactively invoking search now honor the value of
1247   `notmuch-search-oldest-first`.
1248
1249 Common keymap for notmuch-wide bindings
1250
1251   Several key bindings have been moved from mode-specific keymaps to
1252   the single `notmuch-common-keymap`, which is inherited by each
1253   notmuch mode.  If you've customized your key bindings, you may want
1254   to move some of them to the common keymap.
1255
1256 The `notmuch-tag` function now requires a list of tag changes
1257
1258   For users who have scripted the Emacs interface: the `notmuch-tag`
1259   API has changed.  Previously, it accepted either a list of tag
1260   changes or a space-separated string of tag changes.  The latter is
1261   no longer supported and the function now returns nothing.
1262
1263 Fixed `notmuch-reply` putting reply in primary selection
1264
1265   On emacs 24 notmuch-reply used to put the cited text into the
1266   primary selection (which could lead to inadvertently pasting this
1267   cited text elsewhere). Now the primary-selection is not changed.
1268
1269 Fixed `notmuch-show` invisible part handling
1270
1271   In some obscure cases part buttons and invisibility had strange
1272   interactions: in particular, the default action for some parts gave
1273   the wrong action. This has been fixed.
1274
1275 Fixed `notmuch-show` attachment viewers and stderr
1276
1277   In emacs 24.3+ viewing an attachment could cause spurious text to
1278   appear in the show buffer (any stderr or stdout the viewer
1279   produced). By default this output is now discarded. For debugging,
1280   setting `notmuch-show-attachment-debug` causes notmuch to keep the
1281   viewer's stderr and stdout in a separate buffer.
1282
1283 Fixed `notmuch-mua-reply` point placement when signature involved
1284
1285   By restricting cursor movement to body section for cursor placement
1286   after signature is inserted, the cursor cannot "leak" to header
1287   section anymore. Now inserted citation content will definitely go to
1288   the body part of the message.
1289
1290 Vim Interface
1291 -------------
1292
1293   It is now possible to compose new messages in the Vim interface, as
1294   opposed reply to existing messages.  There is also support for
1295   going straight to a search (bypassing the folders view).
1296
1297 Notmuch 0.16 (2013-08-03)
1298 =========================
1299
1300 Command-Line Interface
1301 ----------------------
1302
1303 Support for delivering messages to Maildir
1304
1305   There is a new command `insert` that adds a message to a Maildir
1306   folder and notmuch index.
1307
1308 `notmuch count --batch` option
1309
1310   `notmuch count` now supports batch operations similar to `notmuch
1311   tag`. This is mostly an optimization for remote notmuch usage.
1312
1313 `notmuch tag` option to remove all tags from matching messages
1314
1315   `notmuch tag --remove-all` option has been added to remove all tags
1316   from matching messages. This can be combined with adding new tags,
1317   resulting in setting (rather than modifying) the tags of the
1318   messages.
1319
1320 Decrypting commands explicitly expect a gpg-agent
1321
1322   Decryption in `notmuch show` and `notmuch reply` has only ever
1323   worked with a functioning gpg-agent. This is now made explicit in
1324   code and documentation. The functional change is that it's now
1325   possible to have gpg-agent running, but gpg "use-agent"
1326   configuration option disabled, not forcing the user to use the agent
1327   everywhere.
1328
1329 Configuration file saves follow symbolic links
1330
1331   The notmuch commands that save the configuration file now follow
1332   symbolic links instead of overwrite them.
1333
1334 Top level option to specify configuration file
1335
1336   It's now possible to specify the configuration file to use on the
1337   command line using the `notmuch --config=FILE` option.
1338
1339 Bash command-line completion
1340
1341   The notmuch command-line completion support for the bash shell has
1342   been rewritten. Supported completions include all the notmuch
1343   commands, command-line arguments, values for keyword arguments,
1344   search prefixes (such as "subject:" or "from:") in all commands that
1345   use search terms, tags after + and - in `notmuch tag`, tags after
1346   "tag:" prefix, user's email addresses after "from:" and "to:"
1347   prefixes, and config options (and some config option values) in
1348   `notmuch config`. The new completion support depends on the
1349   bash-completion package.
1350
1351 Deprecated commands "part" and "search-tags" are removed.
1352
1353 Emacs Interface
1354 ---------------
1355
1356 New keymap to view/save parts; removed s/v/o/| part button bindings
1357
1358   The commands to view, save, and open MIME parts are now prefixed
1359   with "." (". s" to save, ". v" to view, etc) and can be invoked with
1360   point anywhere in a part, unlike the old commands, which were
1361   restricted to part buttons.  The old "s"/"v"/"o"/"|" commands on
1362   part buttons have been removed since they clashed with other
1363   bindings (notably "s" for search!) and could not be invoked when
1364   there was no part button.  The new, prefixed bindings appear in
1365   show's help, so you no longer have to memorize them.
1366
1367 Default part save directory is now `mm-default-directory`
1368
1369   Previously, notmuch offered to save parts and attachments to a mix
1370   of `mm-default-directory`, `mailcap-download-directory`, and `~/`.
1371   This has been standardized on `mm-default-directory`.
1372
1373 Key bindings for next/previous thread
1374
1375   Show view has new key bindings M-n and M-p to move to the next and
1376   previous thread in the search results.
1377
1378 Better handling of errors in search buffers
1379
1380   Instead of interleaving errors in search result buffers, search mode
1381   now reports errors in the minibuffer.
1382
1383 Faster search and show
1384
1385   Communication between Emacs and the notmuch CLI is now more
1386   efficient because it uses the CLI's S-expression support.  As a
1387   result, search mode should now fill search buffers faster and
1388   threads should show faster.
1389
1390 No Emacs 22 support
1391
1392   The Emacs 22 support added late 2010 was sufficient only for a short
1393   period of time. After being incomplete for roughly 2 years the code
1394   in question was now removed from this release.
1395
1396 Vim Front-End
1397 -------------
1398
1399 The vim based front-end has been replaced with a new one that uses the Ruby
1400 bindings. The old font-end is available in the contrib subfolder.
1401
1402 Python Bindings
1403 ---------------
1404
1405 Fix loading of libnotmuch shared library on OS X (Darwin) systems.
1406
1407 Notmuch 0.15.2 (2013-02-17)
1408 ===========================
1409
1410 Build fixes
1411 -----------
1412
1413 Update dependencies to avoid problems when building in parallel.
1414
1415 Internal test framework changes
1416 -------------------------------
1417
1418 Adjust Emacs test watchdog mechanism to cope with `process-attributes`
1419 being unimplemented.
1420
1421 Notmuch 0.15.1 (2013-01-24)
1422 ===========================
1423
1424 Internal test framework changes
1425 -------------------------------
1426
1427 Set a default value for TERM when running tests. This fixes certain
1428 build failures in non-interactive environments.
1429
1430 Notmuch 0.15 (2013-01-18)
1431 =========================
1432
1433 General
1434 -------
1435
1436 Date range search support
1437
1438   The `date:` prefix can now be used in queries to restrict the results
1439   to only messages within a particular time range (based on the Date:
1440   header) with a range syntax of `date:<since>..<until>`. Notmuch
1441   supports a wide variety of expressions in `<since>` and
1442   `<until>`. Please refer to the `notmuch-search-terms(7)` manual page
1443   for details.
1444
1445 Empty tag names and tags beginning with "-" are deprecated
1446
1447   Such tags have been a frequent source of confusion and cause
1448   (sometimes unresolvable) conflicts with other syntax.  notmuch tag
1449   no longer allows such tags to be added to messages.  Removing such
1450   tags continues to be supported to allow cleanup of existing tags,
1451   but may be removed in a future release.
1452
1453 Command-Line Interface
1454 ----------------------
1455
1456 `notmuch new` no longer chokes on mboxes
1457
1458   `notmuch new` now rejects mbox files containing more than one
1459   message, rather than treating the file as one giant message.
1460
1461 Support for single message mboxes is deprecated
1462
1463   For historical reasons, `notmuch new` will index mbox files
1464   containing a single message; however, this behavior is now
1465   officially deprecated.
1466
1467 Fixed `notmuch new` to skip ignored broken symlinks
1468
1469   `notmuch new` now correctly skips symlinks if they are in the
1470   ignored files list.  Previously, it would abort when encountering
1471   broken symlink, even if it was ignored.
1472
1473 New dump/restore format and tagging interface
1474
1475   There is a new `batch-tag` format for dump and restore that is more
1476   robust, particularly with respect to tags and message-ids containing
1477   whitespace.
1478
1479   `notmuch tag` now supports the ability to read tag operations and
1480   queries from an input stream, in a format compatible with the new
1481   dump/restore format.
1482
1483 Bcc and Reply-To headers are now available in notmuch show json output
1484
1485   The `notmuch show --format=json` now includes "Bcc" and "Reply-To" headers.
1486   For example notmuch Emacs client can now have these headers visible
1487   when the headers are added to the `notmuch-message-headers` variable.
1488
1489 CLI callers can now request a specific output format version
1490
1491   `notmuch` subcommands that support structured output now support a
1492   `--format-version` argument for requesting a specific version of the
1493   structured output, enabling better compatibility and error handling.
1494
1495 `notmuch search` has gained a null character separated text output format
1496
1497   The new --format=text0 output format for `notmuch search` prints
1498   output separated by null characters rather than newline
1499   characters. This is similar to the find(1) -print0 option, and works
1500   together with the xargs(1) -0 option.
1501
1502 Emacs Interface
1503 ---------------
1504
1505 Removal of the deprecated `notmuch-folders` variable
1506
1507   `notmuch-folders` has been deprecated since the introduction of saved
1508   searches and the notmuch hello view in notmuch 0.3. `notmuch-folders`
1509   has now been removed. Any remaining users should migrate to
1510   `notmuch-saved-searches`.
1511
1512 Visibility of MIME parts can be toggled
1513
1514   Each part of a multi-part MIME email can now be shown or hidden
1515   using the button at the top of each part (by pressing RET on it or
1516   by clicking).  For emails with multiple alternative formats (e.g.,
1517   plain text and HTML), only the preferred format is shown initially,
1518   but other formats can be shown using their part buttons.  To control
1519   the behavior of this, see
1520   `notmuch-multipart/alternative-discouraged` and
1521   `notmuch-show-all-multipart/alternative-parts`.
1522
1523   Note notmuch-show-print-message (bound to '#' by default) will print
1524   all parts of multipart/alternative message regardless of whether
1525   they are currently hidden or shown in the buffer.
1526
1527 Emacs now buttonizes mid: links
1528
1529   mid: links are a standardized way to link to messages by message ID
1530   (see RFC 2392).  Emacs now hyperlinks mid: links to the appropriate
1531   notmuch search.
1532
1533 Handle errors from bodypart insertions
1534
1535   If displaying the text of a message in show mode causes an error (in
1536   the `notmuch-show-insert-part-*` functions), notmuch no longer cuts
1537   off thread display at the offending message.  The error is now
1538   simply displayed in place of the message.
1539
1540 Emacs now detects version mismatches with the notmuch CLI
1541
1542   Emacs now detects and reports when the Emacs interface version and
1543   the notmuch CLI version are incompatible.
1544
1545 Improved text/calendar content handling
1546
1547   Carriage returns in embedded text/calendar content caused insertion
1548   of the calendar content fail. Now CRs are removed before calling icalendar
1549   to extract icalendar data. In case icalendar extraction fails an error
1550   is thrown for the bodypart insertion function to deal with.
1551
1552 Disabled coding conversions when reading in `with-current-notmuch-show-message`
1553
1554   Depending on the user's locale, saving attachments containing 8-bit
1555   data may have performed an unintentional encoding conversion,
1556   corrupting the saved attachment.  This has been fixed by making
1557   `with-current-notmuch-show-message` disable coding conversion.
1558
1559 Fixed errors with HTML email containing images in Emacs 24
1560
1561   Emacs 24 ships with a new HTML renderer that produces better output,
1562   but is slightly buggy.  We work around a bug that caused it to fail
1563   for HTML email containing images.
1564
1565 Fixed handling of tags with unusual characters in them
1566
1567   Emacs now handles tags containing spaces, quotes, and parenthesis.
1568
1569 Fixed buttonization of id: links without quote characters
1570
1571   Emacs now correctly buttonizes id: links where the message ID is not
1572   quoted.
1573
1574 `notmuch-hello` refresh point placement improvements
1575
1576   Refreshing the `notmuch-hello` buffer does a better job of keeping
1577   the point where it was.
1578
1579 Automatic tag changes are now unified and customizable
1580
1581   All the automatic tag changes that the Emacs interface makes when
1582   reading, archiving, or replying to messages, can now be
1583   customized. Any number of tag additions and removals is supported
1584   through the `notmuch-show-mark-read`, `notmuch-archive-tags`, and
1585   `notmuch-message-replied-tags` customization variables.
1586
1587 Support for stashing the thread id in show view
1588
1589   Invoking `notmuch-show-stash-message-id` with a prefix argument
1590   stashes the (local and database specific) thread id of the current
1591   thread instead of the message id.
1592
1593 New add-on tool: notmuch-pick
1594 -----------------------------
1595
1596 The new contrib/ tool `notmuch-pick` is an experimental threaded message
1597 view for the emacs interface. Each message is one line in the results
1598 and the thread structure is shown using UTF-8 box drawing characters
1599 (similar to Mutt's threaded view). It comes between search and show in
1600 terms of amount of output and can be useful for viewing both single
1601 threads and multiple threads. See the notmuch-pick README file for
1602 further details and installation.
1603
1604 Portability
1605 -----------
1606
1607 notmuch now builds on OpenBSD.
1608
1609 Internal test framework changes
1610 -------------------------------
1611
1612 The emacsclient binary is now user-configurable
1613
1614   The test framework now accepts `TEST_EMACSCLIENT` in addition to
1615   `TEST_EMACS` for configuring the emacsclient to use.  This is
1616   necessary to avoid using an old emacsclient with a new emacs, which
1617   can result in buggy behavior.
1618
1619 Notmuch 0.14 (2012-08-20)
1620 =========================
1621
1622 General bug fixes
1623 -----------------
1624
1625 Maildir tag synchronization
1626
1627   Maildir flag-to-tag synchronization now applies only to messages in
1628   maildir-like directory structures.  Previously, it applied to any
1629   message that had a maildir "info" part, which meant it could
1630   incorrectly synchronize tags for non-maildir messages, while at the
1631   same time failing to synchronize tags for newly received maildir
1632   messages (typically causing new messages to not receive the "unread"
1633   tag).
1634
1635 Command-Line Interface
1636 ----------------------
1637
1638   The deprecated positional output file argument to `notmuch dump` has
1639   been replaced with an `--output` option. The input file positional
1640   argument to `notmuch restore` has been replaced with an `--input`
1641   option for consistency with dump.  These changes simplify the syntax
1642   of dump/restore options and make them more consistent with other
1643   notmuch commands.
1644
1645 Emacs Interface
1646 ---------------
1647
1648 Search results now get re-colored when tags are updated
1649
1650 The formatting of tags in search results can now be customized
1651
1652   Previously, attempting to change the format of tags in
1653   `notmuch-search-result-format` would usually break tagging from
1654   search-mode.  We no longer make assumptions about the format.
1655
1656 Experimental support for multi-line search result formats
1657
1658   It is now possible to embed newlines in
1659   `notmuch-search-result-format` to make individual search results
1660   span multiple lines.
1661
1662 Next/previous in search and show now move by boundaries
1663
1664   All "next" and "previous" commands in the search and show modes now
1665   move to the next/previous result or message boundary.  This doesn't
1666   change the behavior of "next", but "previous" commands will first
1667   move to the beginning of the current result or message if point is
1668   inside the result or message.
1669
1670 Search now uses the JSON format internally
1671
1672   This should address problems with unusual characters in authors and
1673   subject lines that could confuse the old text-based search parser.
1674
1675 The date shown in search results is no longer padded before applying
1676 user-specified formatting
1677
1678   Previously, the date in the search results was padded to fixed width
1679   before being formatted with `notmuch-search-result-format`.  It is
1680   no longer padded.  The default format has been updated, but if
1681   you've customized this variable, you may have to change your date
1682   format from `"%s "` to `"%12s "`.
1683
1684 The thread-id for the `target-thread` argument for `notmuch-search` should
1685 now be supplied without the "thread:" prefix.
1686
1687 Notmuch 0.13.2 (2012-06-02)
1688 ===========================
1689
1690 Bug-fix release
1691 ---------------
1692
1693 Update `contrib/notmuch-deliver` for API changes in 0.13. This fixes a
1694 compilation error for this contrib package.
1695
1696 Notmuch 0.13.1 (2012-05-29)
1697 ===========================
1698
1699 Bug-fix release
1700 ---------------
1701
1702 Fix inserting of UTF-8 characters from *text/plain* parts in reply
1703
1704   While notmuch gained ability to insert content from other than *text/plain*
1705   parts of email whenever *text/plain* parts are not available (notably
1706   HTML-only emails), replying to mails that do have *text/plain* the
1707   non-ASCII characters were incorrectly decoded. This is now fixed.
1708
1709 `notmuch_database_get_directory` and
1710 `notmuch_database_find_message_by_filename` now work on read-only
1711 databases
1712
1713   Previously, these functions attempted to create directory documents
1714   that didn't exist and would return an error or abort when given a
1715   read-only database.  Now they no longer create directory documents
1716   and simply return a `NULL` object if the directory does not exist,
1717   as documented.
1718
1719 Fix compilation of ruby bindings
1720
1721   Revert to dynamic linking, since the statically linked bindings did
1722   not work well.
1723
1724 Notmuch 0.13 (2012-05-15)
1725 =========================
1726
1727 Command-Line Interface
1728 ----------------------
1729
1730 JSON reply format
1731
1732   `notmuch reply` can now produce JSON output that contains the headers
1733   for a reply message and full information about the original message
1734   begin replied to. This allows MUAs to create replies intelligently.
1735   For example, an MUA that can parse HTML might quote HTML parts.
1736
1737   Calling notmuch reply with `--format=json` imposes the restriction that
1738   only a single message is returned by the search, as replying to
1739   multiple messages does not have a well-defined behavior. The default
1740   retains its current behavior for multiple message replies.
1741
1742 Tag exclusion
1743
1744   Tags can be automatically excluded from search results by adding them
1745   to the new `search.exclude_tags` option in the Notmuch config file.
1746
1747   This behaviour can be overridden by explicitly including an excluded
1748   tag in your query, for example:
1749
1750         notmuch search $your_query and tag:$excluded_tag
1751
1752   Existing users will probably want to run `notmuch setup` again to add
1753   the new well-commented [search] section to the configuration file.
1754
1755   For new configurations, accepting the default setting will cause the
1756   tags "deleted" and "spam" to be excluded, equivalent to running:
1757
1758         notmuch config set search.exclude_tags deleted spam
1759
1760 Raw show format changes
1761
1762   The output of show `--format=raw` has changed for multipart and
1763   message parts.  Previously, the output was a mash of somewhat-parsed
1764   headers and transfer-decoded bodies.  Now, such parts are reproduced
1765   faithfully from the original source.  Message parts (which includes
1766   part 0) output the full message, including the message headers (but
1767   not the transfer headers).  Multipart parts output the part as
1768   encoded in the original message, including the part's headers.  Leaf
1769   parts, as before, output the part's transfer-decoded body.
1770
1771 Listing configuration items
1772
1773   The new `config list` command prints out all configuration items and
1774   their values.
1775
1776 Emacs Interface
1777 ---------------
1778
1779 Changes to tagging interface
1780
1781   The user-facing tagging functions in the Emacs interface have been
1782   normalized across all notmuch modes.  The tagging functions are now
1783   notmuch-search-tag in search-mode, and notmuch-show-tag in
1784   show-mode.  They accept a string representing a single tag change,
1785   or a list of tag changes.  See 'M-x describe-function notmuch-tag'
1786   for more information.
1787
1788   NOTE: This breaks compatibility with old tagging functions, so user
1789   may need to update in custom configurations.
1790
1791 Reply improvement using the JSON format
1792
1793   Emacs now uses the JSON reply format to create replies. It obeys
1794   the customization variables message-citation-line-format and
1795   message-citation-line-function when creating the first line of the
1796   reply body, and it will quote HTML parts if no text/plain parts are
1797   available.
1798
1799 New add-on tool: notmuch-mutt
1800 -----------------------------
1801
1802 The new contrib/ tool `notmuch-mutt` provides Notmuch integration for
1803 the Mutt mail user agent. Using it, Mutt users can perform mail
1804 search, thread reconstruction, and mail tagging/untagging without
1805 leaving Mutt.  notmuch-mutt, formerly distributed under the name
1806 `mutt-notmuch` by Stefano Zacchiroli, will be maintained as a notmuch
1807 contrib/ from now on.
1808
1809 Library changes
1810 ---------------
1811
1812 The API changes detailed below break binary and source compatibility,
1813 so libnotmuch has been bumped to version 3.0.0.
1814
1815 The function `notmuch_database_close` has been split into
1816 `notmuch_database_close` and `notmuch_database_destroy`
1817
1818   This makes it possible for long running programs to close the xapian
1819   database and thus release the lock associated with it without
1820   destroying the data structures obtained from it.
1821
1822 `notmuch_database_open`, `notmuch_database_create`, and
1823 `notmuch_database_get_directory` now return errors
1824
1825   The type signatures of these functions have changed so that the
1826   functions now return a `notmuch_status_t` and take an out-argument for
1827   returning the new database object or directory object.
1828
1829 Go bindings changes
1830 -------------------
1831
1832 Go 1 compatibility
1833
1834   The go bindings and the `notmuch-addrlookup` utility are now
1835   compatible with go 1.
1836
1837 Notmuch 0.12 (2012-03-20)
1838 =========================
1839
1840 Command-Line Interface
1841 ----------------------
1842
1843 Reply to sender
1844
1845   `notmuch reply` has gained the ability to create a reply template
1846   for replying just to the sender of the message, in addition to reply
1847   to all. The feature is available through the new command line option
1848   `--reply-to=(all|sender)`.
1849
1850 Mail store folder/file ignore
1851
1852   A new configuration option, `new.ignore`, lets users specify a
1853   ;-separated list of file and directory names that will not be
1854   searched for messages by `notmuch new`.
1855
1856   NOTE: *Every* file/directory that goes by one of those names will
1857   be ignored, independent of its depth/location in the mail store.
1858
1859 Unified help and manual pages
1860
1861   The notmuch help command now runs man for the appropriate page.  If
1862   you install notmuch somewhere "unusual", you may need to update
1863   MANPATH.
1864
1865 Manual page for notmuch configuration options
1866
1867   The notmuch CLI configuration file options are now documented in the
1868   notmuch-config(1) manual page in addition to the configuration file
1869   itself.
1870
1871 Emacs Interface
1872 ---------------
1873
1874 Reply to sender
1875
1876   The Emacs interface has, with the new CLI support, gained the
1877   ability to reply to sender in addition to reply to all. In both show
1878   and search modes, 'r' has been bound to reply to sender, replacing
1879   reply to all, which now has key binding 'R'.
1880
1881 More flexible and consistent tagging operations
1882
1883   All tagging operations ('+', '-', '*') now accept multiple tags with
1884   '+' or '-' prefix, like '*' operation in notmuch-search view before.
1885
1886   '*' operation (`notmuch-show-tag-all`) is now available in
1887   notmuch-show view.
1888
1889   `notmuch-show-{add,remove}-tag` functions no longer accept tag
1890   argument, `notmuch-show-tag-message` should be used instead.  Custom
1891   bindings using these functions should be updated, e.g.:
1892
1893         (notmuch-show-remove-tag "unread")
1894
1895   should be changed to:
1896
1897         (notmuch-show-tag-message "-unread")
1898
1899 Refreshing the show view ('=' by default) no longer opens or closes messages
1900
1901   To get the old behavior of putting messages back in their initial
1902   opened/closed state, use a prefix argument, e.g., 'C-u ='.
1903
1904 Attachment buttons can be used to view or save attachments.
1905
1906   When the cursor is on an attachment button the key 's' can be used
1907   to save the attachment, the key 'v' to view the attachment in the
1908   default mailcap application, and the key 'o' prompts the user for an
1909   application to use to open the attachment. By default Enter or mouse
1910   button 1 saves the attachment but this is customisable (option
1911   Notmuch Show Part Button Default Action).
1912
1913 New functions
1914
1915   `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
1916   optionally visiting a URI to the current message at one of a number
1917   of Mailing List Archives.
1918
1919 Fix MML tag quoting in replies
1920
1921   The MML tag quoting fix of 0.11.1 unintentionally quoted tags
1922   inserted in `message-setup-hook`. Quoting is now limited to the
1923   cited message.
1924
1925 Show view archiving key binding changes
1926
1927   The show view archiving key bindings 'a' and 'x' now remove the
1928   "inbox" tag from the current message only (instead of thread), and
1929   move to the next message. At the last message, 'a' proceeds to the
1930   next thread in search results, and 'x' returns to search
1931   results. The thread archiving functions are now available in 'A' and
1932   'X'.
1933
1934 Support text/calendar MIME type
1935
1936   The text/calendar MIME type is now supported in addition to
1937   text/x-vcalendar.
1938
1939 Generate inline patch fake attachment file names from message subject
1940
1941   Use the message subject to generate file names for the inline patch
1942   fake attachments. The names are now similar to the ones generated by
1943   'git format-patch' instead of just "inline patch". See "Notmuch Show
1944   Insert Text/Plain Hook" in the notmuch customize interface.
1945
1946 Enable `notmuch-search-line-faces` by default
1947
1948   Make the `notmuch-search-line-faces` functionality more discoverable
1949   for new users by showing "unread" messages bold and "flagged"
1950   messages blue by default in the search view.
1951
1952 Printing Support
1953
1954   notmuch-show mode now has simple printing support, bound to '#' by
1955   default. You can customize the variable notmuch-print-mechanism.
1956
1957 Library changes
1958 ---------------
1959
1960 New functions
1961
1962   `notmuch_query_add_tag_exclude` supports the new tag exclusion
1963   feature.
1964
1965 Python bindings changes
1966 -----------------------
1967
1968 Python 3.2 compatibility
1969
1970   The python bindings are now compatible with both python 2.5+ and 3.2.
1971
1972 Added missing unicode conversions
1973
1974   Python strings have to be encoded to and decoded from utf-8 when
1975   calling libnotmuch functions. Porting the bindings to python 3.2
1976   revealed a few function calls that were missing these conversions.
1977
1978 Build fixes
1979 -----------
1980
1981 Compatibility with GMime 2.6
1982
1983   It is now possible to build notmuch against both GMime 2.4 and 2.6.
1984   However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
1985   report signatures where the signer key is unavailable (GNOME bug
1986   668085).  For compatibility with GMime 2.4's tolerance of "From "
1987   headers we require GMime 2.6 >= 2.6.7.
1988
1989 Notmuch 0.11.1 (2012-02-03)
1990 ===========================
1991
1992 Bug-fix release
1993 ---------------
1994
1995 Fix error handling in python bindings
1996
1997   The python bindings in 0.11 failed to detect NULL pointers being
1998   returned from libnotmuch functions and thus failed to raise
1999   exceptions to indicate the error condition. Any subsequent calls
2000   into libnotmuch caused segmentation faults.
2001
2002 Quote MML tags in replies
2003
2004   MML tags are text codes that Emacs uses to indicate attachments
2005   (among other things) in messages being composed.  The Emacs
2006   interface did not quote MML tags in the quoted text of a reply.
2007   User could be tricked into replying to a maliciously formatted
2008   message and not editing out the MML tags from the quoted text.  This
2009   could lead to files from the user's machine being attached to the
2010   outgoing message.  The Emacs interface now quotes these tags in
2011   reply text, so that they do not effect outgoing messages.
2012
2013 Notmuch 0.11 (2012-01-13)
2014 =========================
2015
2016 Command-Line Interface
2017 ----------------------
2018
2019 Hooks
2020
2021   Hooks have been introduced to notmuch. Hooks are scripts that notmuch
2022   invokes before and after certain actions. Initially, `notmuch new`
2023   supports `pre-new` and `post-new` hooks that are run before and after
2024   importing new messages into the database.
2025
2026 `notmuch reply --decrypt bugfix`
2027
2028   The `notmuch reply` command with `--decrypt` argument had a rarely
2029   occurring bug that caused an encrypted message not to be decrypted
2030   sometimes. This is now fixed.
2031
2032 Performance
2033 -----------
2034
2035 Automatic tag query optimization
2036
2037   `notmuch tag` now automatically optimizes the user's query to
2038   exclude messages whose tags won't change.  In the past, we've
2039   suggested that people do this by hand; this is no longer necessary.
2040
2041 Don't sort messages when creating a dump file
2042
2043   This speeds up tag dumps considerably, without any loss of
2044   information. To replicate the old behavior of sorted output (for
2045   example to compare two dump files), one can use e.g. `sort(1)`.
2046
2047 Memory Management
2048 -----------------
2049
2050 Reduction of memory leaks
2051
2052   Two memory leaks when searching and showing messages were identified
2053   and fixed in this release.
2054
2055 Emacs Interface
2056 ---------------
2057
2058 Bug fixes
2059
2060   notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
2061   a bug that caused it to always jump to the next message, even if it
2062   should have scrolled down to show more of the current message instead.
2063   This is now fixed.
2064
2065 Support `notmuch new` as a notmuch-poll-script
2066
2067   It's now possible to use `notmuch new` as a notmuch-poll-script
2068   directly. This is also the new default. This allows taking better
2069   advantage of the `notmuch new` hooks from emacs without intermediate
2070   scripts.
2071
2072 Improvements in saved search management
2073
2074   New saved searches are now appended to the list of saved searches,
2075   not inserted in front. It's also possible to define a sort function
2076   for displaying saved searches; alphabetical sort is provided.
2077
2078 Hooks for notmuch-hello
2079
2080   Two new hooks have been added: "notmuch-hello-mode-hook" (called after
2081   entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
2082   after updating a notmuch-hello buffer).
2083
2084 New face for crypto parts headers
2085
2086   Crypto parts used to be displayed with a hardcoded color. A new face
2087   has been introduced to fix this: notmuch-crypto-part-header. It
2088   defaults to the same value as before, but can be customized to match
2089   other color themes.
2090
2091 Use space as default thousands separator
2092
2093   Large numbers in notmuch-hello are now displayed using a space as
2094   thousands separator (e.g. "123 456" instead of "123,456"). This can be
2095   changed by customizing "notmuch-hello-thousands-separator".
2096
2097 Call notmuch-show instead of notmuch-search when clicking on
2098 buttonized id: links
2099
2100 New function notmuch-show-advance
2101
2102   This new function advances through just the current thread, and is
2103   less invasive than notmuch-show-advance-and-archive.  It can easily
2104   be bound to SPC with:
2105
2106         (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
2107
2108 Various performance improvements
2109
2110 New add-on tool
2111 ---------------
2112
2113 The tool `contrib/notmuch-deliver` helps with initial delivery and
2114 tagging of mail (replacing running `notmuch new`).
2115
2116
2117 Notmuch 0.10.2 (2011-12-04)
2118 ===========================
2119
2120 Bug-fix release
2121 ---------------
2122
2123 Fix crash in python bindings
2124
2125   The python bindings did not call `g_type_init`, which caused crashes
2126   for some, but not all users.
2127
2128 Notmuch 0.10.1 (2011-11-25)
2129 ===========================
2130
2131 Bug-fix release
2132 ---------------
2133
2134 Fix `--help` argument
2135
2136   Argument processing changes in 0.10 introduced a bug where
2137   `notmuch --help` crashed while `notmuch help` worked fine.
2138   This is fixed in 0.10.1.
2139
2140 Notmuch 0.10 (2011-11-23)
2141 =========================
2142
2143 New build and testing features
2144 ------------------------------
2145
2146 Emacs tests are now done in `dtach`. This means that dtach is now
2147 needed to run the notmuch test suite, at least until the checking for
2148 prerequisites is improved.
2149
2150 Full test coverage of the stashing feature in Emacs.
2151
2152 New command-line features
2153 -------------------------
2154
2155 Add `notmuch restore --accumulate` option
2156
2157   The `--accumulate` switch causes the union of the existing and new tags to
2158   be applied, instead of replacing each message's tags as they are read in
2159   from the dump file.
2160
2161 Add search terms to `notmuch dump`
2162
2163   The dump command now takes an optional search term much like notmuch
2164   search/show/tag. The output file argument of dump is deprecated in
2165   favour of using stdout.
2166
2167 Add `notmuch search` `--offset` and `--limit` options
2168
2169   The search command now takes options `--offset=[-]N` and `--limit=N` to
2170   limit the number of results shown.
2171
2172 Add `notmuch count --output` option
2173
2174   The count command is now capable of counting threads in addition to
2175   messages. This is selected using the new `--output=(threads|messages)`
2176   option.
2177
2178 New emacs UI features
2179 ---------------------
2180
2181 Add tab-completion for `notmuch-search` and `notmuch-search-filter`
2182
2183   These functions now support completion tags for query parts
2184   starting with "tag:".
2185
2186 Turn "id:MSG-ID" links into buttons associated with notmuch searches
2187
2188   Text of the form "id:MSG-ID" in mails is now a clickable button that
2189   opens a notmuch search for the given message id.
2190
2191 Add keybinding ('c I') for stashing Message-ID's without an id: prefix
2192
2193   Reduces manual labour when stashing them for use outside notmuch.
2194
2195 Do not query on `notmuch-search` exit
2196
2197   It is harmless to kill the external notmuch process, so the user
2198   is no longer interrogated when they interrupt a search.
2199
2200 Performance
2201 -----------
2202
2203 Emacs now constructs large search buffers more efficiently
2204
2205 Search avoids opening and parsing message files
2206
2207   We now store more information in the database so search no longer
2208   has to open every message file to get basic headers.  This can
2209   improve search speed by as much as 10X, but taking advantage of this
2210   requires a database rebuild:
2211
2212         notmuch dump > notmuch.dump
2213         # Backup, then remove notmuch database ($MAIL/.notmuch)
2214         notmuch new
2215         notmuch restore notmuch.dump
2216
2217 New collection of add-on tools
2218 ------------------------------
2219
2220 The source directory "contrib" contains tools built on notmuch.  These
2221 tools are not part of notmuch, and you should check their individual
2222 licenses.  Feel free to report problems with them to the notmuch
2223 mailing list.
2224
2225 nmbug - share tags with a given prefix
2226
2227   nmbug helps maintain a git repo containing all tags with a given
2228   prefix (by default "notmuch::"). Tags can be shared by commiting
2229   them to git in one location and restoring in another.
2230
2231 Notmuch 0.9 (2011-10-01)
2232 ========================
2233
2234 New, general features
2235 ---------------------
2236
2237 Correct handling of interruptions during `notmuch new`
2238
2239   `notmuch new` now operates as a series of small, self-consistent
2240   transactions, so it can correctly resume after an interruption or
2241   crash.  Previously, interruption could lose existing tags, fail to
2242   detect messages on resume, or leave the database in a state
2243   temporarily or permanently inconsistent with the mail store.
2244
2245 Library changes
2246 ---------------
2247
2248 New functions
2249
2250   `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
2251   allow multiple database operations to be performed atomically.
2252
2253   `notmuch_database_find_message_by_filename` does exactly what it says.
2254
2255 API changes
2256
2257   `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
2258   a status indicator and uses an output parameter for the
2259   message. This change required changing the SONAME of libnotmuch to
2260   libnotmuch.so.2
2261
2262 Python bindings changes
2263 -----------------------
2264
2265   - Re-encode python unicode objects to utf-8 before passing back to
2266     libnotmuch.
2267   - Support `Database().begin_atomic()/end_atomic()`
2268   - Support `Database().find_message_by_filename()`
2269     NB! This needs a db opened in READ-WRITE mode currently, or it will crash
2270     the python process. The is a limitation (=bug) of the underlying libnotmuch.
2271   - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
2272   - Update for `n_d_find_message*` API changes (see above).
2273
2274 Ruby bindings changes
2275 ---------------------
2276
2277   - Wrap new library functions `notmuch_database_{begin,end}_atomic.`
2278   - Add new exception `Notmuch::UnbalancedAtomicError.`
2279   - Rename destroy to destroy! according to Ruby naming conventions.
2280   - Update for `n_d_find_message*` API changes (see above).
2281
2282 Emacs improvements
2283 ------------------
2284
2285   * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
2286     signing key.
2287   * Add `notmuch-show-refresh-view` function (and corresponding binding)
2288     to refresh the view of a notmuch-show buffer.
2289
2290 Reply formatting cleanup
2291 ------------------------
2292
2293   `notmuch reply` no longer includes notification that non-leafnode
2294   MIME parts are being suppressed.
2295
2296 Notmuch 0.8 (2011-09-10)
2297 ========================
2298
2299 Improved handling of message/rfc822 parts
2300
2301   Both in the CLI and the emacs interface.  Output of rfc822 parts now
2302   includes the primary headers, as well as the body and all subparts.
2303   Output of the completely raw rfc822-formatted message, including all
2304   headers, is unfortunately not yet supported (but hopefully will be
2305   soon).
2306
2307 Improved Build system portability
2308
2309   Certain parts of the shell script generating notmuch.sym were
2310   specific to the GNU versions of sed and nm. The new version should
2311   be more portable to e.g. OpenBSD.
2312
2313 Documentation update for Ruby bindings
2314
2315   Added documentation, typo fixes, and improved support for rdoc.
2316
2317 Unicode, iterator, PEP8 changes for python bindings
2318
2319   - PEP8 (code formatting) changes for python files.
2320   - Remove `Tags.__len__` ; see 0.6 release notes for motivation.
2321   - Decode headers as UTF8, encode (unicode) database paths as UTF8.
2322
2323 Notmuch 0.7 (2011-08-01)
2324 ========================
2325
2326 Vim interface improvements
2327 --------------------------
2328
2329 Jason Woofenden provided a number of bug fixes for the Vim interface
2330
2331   * fix citation/signature fold lengths
2332   * fix cig/cit parsing within multipart/*
2333   * fix on-screen instructions for show-signature
2334   * fix from list reformatting in search view
2335   * fix space key: now archives (did opposite)
2336
2337 Uwe Kleine-König contributed
2338
2339   * use full path for sendmail/doc fix
2340   * fix compose temp file name
2341
2342 Python Bindings changes
2343 -----------------------
2344
2345 Sebastian Spaeth contributed two changes related to unicode and UTF8:
2346
2347   * message tags are now explicitly unicode
2348   * query string is encoded as a UTF8 byte string
2349
2350 Build-System improvements
2351 -------------------------
2352
2353 Generate notmuch.sym after the relevant object files
2354
2355   This fixes a bug in parallel building. Thanks to Thomas Jost for the
2356   patch.
2357
2358 Notmuch 0.6.1 (2011-07-17)
2359 ==========================
2360
2361 Bug-fix release
2362 ---------------
2363
2364 Re-export Xapian exception typeinfo symbols
2365
2366   It turned out our aggressive symbol hiding caused problems for
2367   people running gcc 4.4.5.
2368
2369 Notmuch 0.6 (2011-07-01)
2370 =======================
2371
2372 New, general features
2373 ---------------------
2374
2375 Folder-based searching
2376
2377   Notmuch queries can now include a search term to match the
2378   directories in which mail files are stored (within the mail
2379   storage). The syntax is as follows:
2380
2381         folder:<path>
2382
2383   For example, one might use things such as:
2384
2385         folder:spam
2386         folder:2011-*
2387         folder:work/todo
2388
2389   to match any path containing a directory "spam", "work/todo", or
2390   containing a directory starting with "2011-", respectively.
2391
2392   This feature is particularly useful for users of delivery-agent
2393   software (such as procmail or maildrop) that is filtering mail and
2394   delivering it to particular folders, or users of systems such as
2395   Gmail that use filesystem directories to indicate message tags.
2396
2397   NOTE: Only messages that are newly indexed with this version of
2398   notmuch will be searchable with folder: terms. In order to enable
2399   this feature for all mail, the entire notmuch index will need to be
2400   rebuilt as follows:
2401
2402         notmuch dump > notmuch.dump
2403         # Backup, then remove notmuch database ($MAIL/.notmuch)
2404         notmuch new
2405         notmuch restore notmuch.dump
2406
2407 Support for PGP/MIME
2408
2409   Both the command-line interface and the emacs-interface have new
2410   support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
2411   and Jameson Graef Rollins for making this happen.
2412
2413 New, automatic tags: "signed" and "encrypted"
2414
2415   These tags will automatically be applied to messages containing
2416   multipart/signed and multipart/encrypted parts.
2417
2418   NOTE: Only messages that are newly indexed with this version of
2419   notmuch will receive these tags.
2420
2421 New command-line features
2422 -------------------------
2423
2424 Add new "notmuch show --verify" option for signature verification
2425
2426   This option instruct notmuch to verify the signature of
2427   PGP/MIME-signed parts.
2428
2429 Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
2430
2431   This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
2432   Note that this feature currently requires gpg-agent and a passphrase entry
2433   tool (e.g. pinentry-gtk or pinentry-curses).
2434
2435 Proper nesting of multipart parts in "notmuch show" output
2436
2437   MIME parts are now display with proper nesting to reflect original
2438   MIME hierarchy of a message. This allows clients to correctly
2439   analyze the MIME structure, (such as, for example, determining to
2440   which parts a signature part applies).
2441
2442 Add new "notmuch show --part" option
2443
2444   This is a replacement for the older "notmuch part" command, (which
2445   is now deprecated—it should still work as always, but is no longer
2446   documented). Putting part output under "notmuch show" allows for all
2447   of the "notmuch show" options to be applied when extracting a single
2448   part, (such as --format=json for extracting a message part with JSON
2449   formatting).
2450
2451 Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
2452
2453   The "notmuch search-tags" sub-command has been redundant since the
2454   addition of the --output=tags option to "notmuch search". We now
2455   make that more clear by deprecating "notmuch search-tags", (dropping
2456   it from the documentation). We do continue to support the old syntax
2457   by translating it internally to the new call.
2458
2459 Performance improvements
2460 ------------------------
2461
2462 Faster searches (by doing fewer searches to construct threads)
2463
2464   Whenever a user asks for search results as threads, notmuch first
2465   performs a search for messages matching the query, then performs
2466   additional searches to find other messages in the resulting threads.
2467
2468   Removing inefficiencies and redundancies in these secondary searches
2469   results in a measured speedups of 1.5x for a typical search.
2470
2471 Faster searches (by doing fewer passes to gather message data)
2472
2473   Optimizing Xapian data access patterns (using a single pass to get
2474   all message-document data rather than a pass for each data type)
2475   results in a measured speedup of 1.7x for a typical search.
2476
2477   The benefits of this optimization combine with the preceding
2478   optimization. With both in place, Austin Clements measured a speedup
2479   of 2.5x for a search of all messages in his inbox (was 4.5s, now
2480   1.8s). Thanks, Austin!
2481
2482 Faster initial indexing
2483
2484   More efficient indexing of new messages results in a measured
2485   speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
2486   rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
2487
2488 Make "notmuch new" faster for unchanged directories
2489
2490   Optimizing to not do any further examinations of sub-directories
2491   when the filesystem indicates that a directory is unchanged from the
2492   last "notmuch new" results in measured speedups of 8.5 for the "No
2493   new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
2494
2495 New emacs-interface features
2496 ----------------------------
2497
2498 Support for PGP/MIME (GnuPG)
2499
2500   Automatically indicate validity of signatures for multipart/signed
2501   messages.  Automatically display decrypted content for
2502   multipart/encrypted messages.  See the emacs variable
2503   notmuch-crypto-process-mime for more information. Note that this
2504   needs gpg-agent and a pinentry tool just as the command-line tools.
2505   Also note there is no support SMIME yet.
2506
2507 Output of pipe command is now displayed if pipe command fails
2508
2509   This is extremely useful in the common use case of piping a patch to
2510   "git am". If git fails to cleanly merge the patch the error messages
2511   from the failed merge are now clearly displayed to the user, (where
2512   previously they were silently hidden from the user).
2513
2514 User-selectable From address
2515
2516   A user can choose which configured email addresses should be used as
2517   the From address whenever composing a new message. To do so, simply
2518   press C-u before the command which will open a new message. Emacs
2519   will prompt for the from address to use.
2520
2521   The user can customize the "Notmuch Identities" setting in the
2522   notmuch customize group in order to use addresses other than those in
2523   the notmuch configuration file if desired.
2524
2525   The user can also choose to always be prompted for the from address
2526   when composing a new message (without having to use C-u) by setting
2527   the "Notmuch Always Prompt For Sender" option in the notmuch
2528   customize group.
2529
2530 Hiding of repeated subjects in collapsed thread view
2531
2532   In notmuch-show mode, if a collapsed message has the same subject as
2533   its parent, the subject is not shown.
2534
2535 Automatic detection and hiding of original message in top-posted message
2536
2537   When a message contains a line looking something like:
2538
2539         ----- Original Message -----
2540
2541   emacs hides this and all subsequent lines as an "original message",
2542   (allowing the user to click or press enter on the "original message"
2543   button to display it again). This makes the handling of top-posted
2544   citations work much like conventional citations.
2545
2546 New hooks for running code when tags are modified
2547
2548   Some users want to perform additional actions whenever a particular
2549   tag is added/removed from a message. This could be used to, for
2550   example, interface with some external spam-recognition training
2551   tool. To facilitate this, two new hooks are added which can be
2552   modified in the following settings of the notmuch customize group:
2553
2554         Notmuch Before Tag Hook
2555         Notmuch After Tag Hook
2556
2557 New optional support for hiding some multipart/alternative parts
2558
2559   Many emails are sent with redundant content within a
2560   multipart/alternative group (such as a text/plain part as well as a
2561   text/html part). Users can configure the setting:
2562
2563         Notmuch Show All Multipart/Alternative Parts
2564
2565   to "off" in the notmuch customize group to have the interface
2566   automatically hide some part alternatives (such as text/html
2567   parts). This new part hiding is not configured by default yet
2568   because there's not yet a simple way to re-display such a hidden
2569   part if it is not actually redundant with a displayed part.
2570
2571 Better rendering of text/x-vcalendar parts
2572
2573   These parts are now displayed in a format suitable for use with the
2574   emacs diary.
2575
2576 Avoid getting confused by Subject and Author fields with newline characters
2577
2578   Replacing all characters with ASCII code less than 32 with a question mark.
2579
2580 Cleaner display of From line in email messages
2581
2582   Remove double quotes, and drop "name" if it's actually just a repeat of
2583   the email address.
2584
2585 Vim interface improvements
2586 --------------------------
2587
2588 Felipe Contreras provided a number of updates for the vim interface:
2589
2590   * Using sendmail directly rather than mailx,
2591   * Implementing archive in show view
2592   * Add support to mark as read in show and search views
2593   * Add delete commands
2594   * Various cleanups.
2595
2596 Bindings improvements
2597 ---------------------
2598
2599 Ruby bindings are now much more complete
2600
2601   Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
2602   `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
2603
2604 Python bindings have been updated and extended
2605
2606   (docs online at https://notmuch.readthedocs.io/)
2607
2608   New bindings:
2609
2610   - `Message().get_filenames()`, `Message().tags_to_maildir_flags()`,
2611     `Message().maildir_flags_to_tags()`, `list(Threads())` and
2612     `list(Messages)` works now
2613   - `Message().__cmp__()` and `__hash__()`
2614
2615   These allow, for example:
2616
2617         if msg1 == msg2: ...
2618
2619   As well as set arithmetic on `Messages()`:
2620
2621         s1, s2 = set(msgs1), set(msgs2)
2622         s1.union(s2)
2623         s2 -= s1
2624
2625   Removed:
2626
2627   - `len(Messages())` as it exhausted the iterator
2628
2629   Use `len(list(Messages()))` or `Query.count_messages()`
2630   to get the length.
2631
2632 Added initial Go bindings in bindings/go
2633
2634 New build-system features
2635 -------------------------
2636
2637 Added support for building in a directory other than the source directory
2638
2639   This can be used with the widely-supported idiom of simply running
2640   the configure script from some other directory:
2641
2642         mkdir build
2643         cd build
2644         ../configure
2645         make
2646
2647 Fix to save configure options for future, implicit runs of configure
2648
2649   When a user updates the source (such as with "git pull") calling
2650   "make" may cause an automatic re-run of the configure script. When
2651   this happens, the configure script will automatically be called with
2652   the same options the user originally passed in the most-recent
2653   manual invocation of configure.
2654
2655 New test-suite feature
2656 ----------------------
2657
2658 Binary for bash for running test suite now located via PATH
2659
2660   The notmuch test suite requires a fairly recent version of bash (>=
2661   bash 4). As some systems supply an older version of bash at
2662   /bin/bash, the test suite is now updated to search $PATH to locate
2663   the bash binary. This allows users of systems with old /bin/bash to
2664   simply install bash >= 4 somewhere on $PATH before /bin and then use
2665   the test suite.
2666
2667 Support for testing output with a trailing newline
2668
2669   Previously, some tests would fail to notice a difference in the
2670   presence/absence of a trailing newline in a program output, (which
2671   has led to bugs in the past). Now, carefully-written tests (using
2672   `test_expect_equal_file` rather than `test_expect_equal`) will detect
2673   any change in the presence/absence of a trailing newline. Many tests
2674   are updated to take advantage of this.
2675
2676 Avoiding accessing user's $HOME while running test suite
2677
2678   The test suite now carefully creates its own HOME directory. This
2679   allows the test suite to be run with no existing HOME directory, (as
2680   some build systems apparently do), and avoids test-suite differences
2681   due to configuration files in the users HOME directory.
2682
2683
2684 General bug fixes
2685 -----------------
2686
2687 Output *all* files for "notmuch search --output=files"
2688
2689   For the cases where multiple files have the same Message ID,
2690   previous versions of notmuch would output only one such file. This
2691   command is now fixed to correctly output all files.
2692
2693 Fixed spurious search results from "overlapped" indexing of addresses
2694
2695   This fixed a bug where a search for:
2696
2697         to:user@elsewhere.com
2698
2699   would incorrectly match a message sent:
2700
2701         To: user@example,com, someone@elsewhere.com
2702
2703 Fix --output=json when search has no results
2704
2705   A bug present since notmuch 0.4 had caused searches with no results
2706   to produce an invalid json object. This is now fixed to cleanly
2707   return a valid json object representing an empty array "[]" as
2708   expected.
2709
2710 Fix the automatic detection of the From address for "notmuch reply"
2711 from the Received headers in some cases
2712
2713 Fix core dump on DragonFlyBSD due to -1 return value from
2714 `sysconf(_SC_GETPW_R_SIZE_MAX)`
2715
2716 Cleaned up several memory leaks
2717
2718 Eliminated a few, rare segmentation faults and a double-free
2719
2720 Fix libnotmuch library to only export notmuch API functions
2721
2722   Previous release of the notmuch library also exported some Xapian
2723   C++ exception type symbols. These were never part of the library
2724   interface and were never intended to be exported.
2725
2726 Emacs-interface bug fixes
2727 -------------------------
2728
2729 Display any unexpected output or errors from "notmuch search" invocations
2730
2731   Previously any misformatted output or trailing error messages were
2732   silently ignored. This output is now clearly displayed. This fix was
2733   very helpful in identifying and fixing the bug described below.
2734
2735 Fix bug where some threads would be missing from large search results
2736
2737   When a search returned a "large" number of results, the emacs
2738   interface was incorrectly dropping one thread every time the output
2739   of the "notmuch search" process spanned the emacs read-buffer. This
2740   is now fixed.
2741
2742 Avoid re-compression of .gz files (and similar) when saving attachment
2743
2744   Emacs was being too clever for its own good and trying to
2745   re-compress pre-compressed .gz files when saving such attachments
2746   (potentially corrupting the attachment). The emacs interface is
2747   fixed to avoid this bug.
2748
2749 Fix hiding of a message when a previously-hidden citation is visible
2750
2751   Previously the citation would remain visible in this case. This is
2752   fixed so that hiding a message hides all parts.
2753
2754 Notmuch 0.5 (2010-11-11)
2755 ========================
2756
2757 New, general features
2758 ---------------------
2759
2760 Maildir-flag synchronization
2761
2762   Notmuch now knows how to synchronize flags in maildir filenames with
2763   tags in the notmuch database. The following flag/tag mappings are
2764   supported:
2765
2766         Flag <-> Tag
2767         ----     -----
2768         'D'      draft
2769         'F'      flagged
2770         'P'      passed
2771         'R'      replied
2772         'S'      unread (added when 'S' flag is not present)
2773
2774   The synchronization occurs in both directions, (for example, adding
2775   the 'S' flag to a file will cause the "unread" tag to be added, and
2776   adding the "replied" tag to a message will cause the file to be
2777   renamed with an 'R' flag).
2778
2779   This synchronization is enabled by default for users of the
2780   command-line interface, (though only files in directories named
2781   "cur" or "new" will be renamed). It can be disabled by setting the
2782   new `maildir.synchronize_flags` option in the configuration file. For
2783   example:
2784
2785         notmuch config set maildir.synchronize_flags false
2786
2787   Users upgrading may also want to run "notmuch setup" once (just
2788   accept the existing configuration) to get a new, nicely-commented
2789   [maildir] section added to the configuration file.
2790
2791   For users of the notmuch library, the new synchronization
2792   functionality is available with the following two new functions:
2793
2794         notmuch_message_maildir_flags_to_tags
2795         notmuch_message_tags_to_maildir_flags
2796
2797   It is anticipated that future improvements to this support will
2798   allow for safe synchronization of the 'T' flag with the "deleted"
2799   tag, as well as support for custom flag/tag mappings.
2800
2801 New library features
2802 --------------------
2803
2804 Support for querying multiple filenames for a single message
2805
2806   It is common for the mailstore to contain multiple files with the
2807   same message ID. Previously, notmuch would always hide these
2808   duplicate files, (returning a single, arbitrary filename with
2809   `notmuch_message_get_filename`).
2810
2811   With this release, library users can access all filenames for a
2812   message with the new function:
2813
2814         notmuch_message_get_filenames
2815
2816   Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
2817   and `notmuch_filenames_move_to_next` it is now possible to iterate
2818   over all available filenames for a given message.
2819
2820 New command-line features
2821 -------------------------
2822
2823 New "notmuch show --format=raw" for getting at original email contents
2824
2825   This new feature allows for a fully-functional email client to be
2826   built on top of the notmuch command-line without needing any direct
2827   access to the mail store itself.
2828
2829   For example, it's now possible to run "emacs -f notmuch" on a local
2830   machine with only ssh access to the mail store/notmuch database. To
2831   do this, simply set the notmuch-command variable in emacs to the
2832   name of a script containing:
2833
2834         ssh user@host notmuch "$@"
2835
2836   If the ssh client has enabled connection sharing (ControlMaster
2837   option in OpenSSH), the emacs interface can be quite responsive this
2838   way.
2839
2840 General bug fixes
2841 -----------------
2842
2843 Fix "notmuch search" to print nothing when nothing matches
2844
2845   The 0.4 release had a bug in which:
2846
2847         notmuch search <expression-with-no-matches>
2848
2849   would produce a single blank line of output, (where previous
2850   versions would produce no output. This fix also causes a change in
2851   the --format=json output, (which would previously produce "[]" and
2852   now produces nothing).
2853
2854 Emacs interface improvements
2855 ----------------------------
2856
2857 Fix to allow pipe ('|') command to work when using notmuch over ssh
2858
2859 Fix count of lines in hidden signatures
2860
2861 Omit repeated subject lines in (collapsed) thread display
2862
2863 Display current thread subject in a header line
2864
2865 Provide a "c i" binding to copy a thread ID from the search view
2866
2867 Allow for notmuch-fcc-dirs to have a value of nil
2868
2869   Also, the more complex form of notmuch-fcc-dirs now has a slightly
2870   different format. It no longer has a special first-element, fallback
2871   string. Instead it's now a list of cons cells where the car of each
2872   cell is a regular expression to be matched against the sender
2873   address, and the cdr is the name of a folder to use for an FCC. So
2874   the old fallback behavior can be achieved by including a final cell
2875   of (".*" . "default-fcc-folder").
2876
2877 Vim interface improvements
2878 --------------------------
2879
2880 Felipe Contreras provided a number of updates for the vim interface
2881
2882   These include optimizations, support for newer versions of vim, fixed
2883   support for sending mail on modern systems, new commands, and
2884   various cleanups.
2885
2886 New bindings
2887 ------------
2888
2889 Added initial ruby bindings in bindings/ruby
2890
2891 Notmuch 0.4 (2010-11-01)
2892 ========================
2893
2894 New command-line features
2895 -------------------------
2896
2897 `notmuch search --output=(summary|threads|messages|tags|files)`
2898
2899   This new option allows for particular items to be returned from
2900   notmuch searches. The "summary" option is the default and behaves
2901   just as "notmuch search" has historically behaved.
2902
2903   The new option values allow for thread IDs, message IDs, lists of
2904   tags, and lists of filenames to be returned from searches. It is
2905   expected that this new option will be very useful in shell
2906   scripts. For example:
2907
2908         for file in $(notmuch search --output=files <search-terms>); do
2909                 <operations-on> "$file"
2910         done
2911
2912 `notmuch show --format=mbox <search-specification>`
2913
2914   This new option allows for the messages matching a search
2915   specification to be presented as an mbox. Specifically the "mboxrd"
2916   format is used which allows for reversible quoting of lines
2917   beginning with "From ". A reader should remove a single '>' from the
2918   beginning of all lines beginning with one or more '>' characters
2919   followed by the 5 characters "From ".
2920
2921 `notmuch config [get|set] <section>.<item> [value ...]`
2922
2923   The new top-level "config" command allows for any value in the
2924   notmuch configuration file to be queried or set to a new value. Both
2925   single-valued and multi-valued items are supported, as our any
2926   custom items stored in the configuration file.
2927
2928 Avoid setting Bcc header in "notmuch reply"
2929
2930   We decided that this was a bit heavy-handed as the actual mail
2931   user-agent should be responsible for setting any Bcc option. Also,
2932   see below for the notmuch/emacs user-agent now setting an Fcc by
2933   default rather than Bcc.
2934
2935 New library features
2936 --------------------
2937
2938 Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
2939
2940   These are simply functions for querying properties of a
2941   `notmuch_query_t` object.
2942
2943 New emacs features
2944 ------------------
2945
2946 Enable Fcc of all sent messages by default (to "sent" directory)
2947
2948   All messages sent from the emacs interface will now be saved to the
2949   notmuch mail store where they will be incorporated to the database
2950   by the next "notmuch new". By default, messages are saved to the
2951   "sent" directory at the top-level of the mail store. This directory
2952   can be customized by means of the "Notmuch Fcc Dirs" option in the
2953   notmuch customize interface.
2954
2955 Ability to all open messages in a thread to a pipe
2956
2957   Historically, the '|' keybinding allows for piping a single message
2958   to an external command. Now, by prefixing this key with a prefix
2959   argument, (for example, by pressing "Control-U |"), all open
2960   messages in the current thread will be sent to the external command.
2961
2962 Optional support for detecting inline patches
2963
2964   This hook is disabled by default but can be enabled with a checkbox
2965   under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
2966   interface. It allows for inline patches to be detected and treated
2967   as if they were attachments, (with context-sensitive highlighting).
2968
2969 Automatically tag messages as "replied" when sending a reply
2970
2971   Messages replied to within the emacs interface will now be tagged as
2972   "replied". This feature can easily be customized to add or remove
2973   other tags as well. For example, a user might use a tag of
2974   "needs-reply" and can configure this feature to automatically remove
2975   that tag when replying. See "Notmuch Message Mark Replied" in the
2976   notmuch customize interface.
2977
2978 Allow search-result color specifications to overlay each other
2979
2980   For example, one tag can specify the background color of matching
2981   lines, while another can specify the foreground. With this change,
2982   both settings will now be visible simultaneously, (which was not the
2983   case in previous releases). See "Notmuch Search Line Faces" in the
2984   notmuch customize interface.
2985
2986 Make hidden author names still available for incremental search
2987
2988   When there is insufficient space to display all authors of a thread
2989   in search results, the names of hidden authors are now still made
2990   available to emacs' incremental search commands. As the user
2991   searches, matching lines will temporarily expand to show the hidden
2992   names.
2993
2994 New binding of Control-TAB (works like TAB in reverse)
2995
2996   Many notmuch nodes already use TAB to navigate forward through
2997   various items allowing actions, (message headers, email attachments,
2998   etc.). The new Control-TAB binding operates similarly but in the
2999   opposite direction.
3000
3001 New build-system features
3002 -------------------------
3003
3004 Various portability fixes have been applied
3005
3006   These include fixes for build failures on at least Solaris, FreeBSD,
3007   and Fedora systems. We're hopeful that the notmuch code base is now
3008   more portable than ever before.
3009
3010 Arrange for libnotmuch to be found automatically after make install
3011
3012   The notmuch build system is now careful to help the user avoid
3013   errors of the form "libnotmuch.so could not be found" immediately
3014   after installing. This support takes two forms:
3015
3016   1. If the library is installed to a system directory,
3017      (configured in /etc/ld.so.conf), then "make install" will
3018      automatically run ldconfig.
3019
3020   2. If the library is installed to a non-system directory, the
3021      build system adds a `DR_RUNPATH` entry to the final binary
3022      pointing to the directory to which the library is installed.
3023
3024   When this support works, the user should be able to run notmuch
3025   immediately after "make install", without any errors trying to find
3026   the notmuch library, and without having to manually set environment
3027   variables such as `LD_LIBRARY_PATH`.
3028
3029 Check compiler/linker options before using them
3030
3031   The configure script now carefully checks that any desired
3032   compilation options, (whether for enabling compiler warnings, or for
3033   embedding rpath, etc.), are supported. Only supported options are
3034   used in the resulting Makefile.
3035
3036 New test-suite features
3037 -----------------------
3038
3039 New modularization of test suite
3040
3041   Thanks to a gracious relicensing of the test-suite infrastructure
3042   from the git project, notmuch now has a modular test suite. This
3043   provides the ability to run individual sections of the test suite
3044   rather than the whole things. It also provides better summary of
3045   test results, with support for tests that are expected to fail
3046   (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
3047   it easy to run the test suite within valgrind (pass --valgrind to
3048   notmuch-test or to any sub-script) which has been very useful.
3049
3050 New testing of emacs interface
3051
3052   The test suite has been augmented to allow automated testing of the
3053   emacs interfaces. So far, this includes basic searches, display of
3054   threads, and tag manipulation. This also includes a test that a new
3055   message can successfully be sent out through a (dummy) SMTP server
3056   and that said message is successfully integrated into the notmuch
3057   database via the FCC setting.
3058
3059 General bug fixes
3060 -----------------
3061
3062 Fix potential corruption of database when "notmuch new" is interrupted
3063
3064   Previously, an interruption of "notmuch new" would (rarely) result
3065   in a corrupt database. The corruption would manifest itself by a
3066   persistent error of the form:
3067
3068         document ID of 1234 has no thread ID
3069
3070   The message-adding code has been carefully audited and reworked to
3071   avoid this sort of corruption regardless of when it is interrupted.
3072
3073 Fix failure with extremely long message ID headers
3074
3075   Previously, a message with an extremely long message ID, (say, more
3076   than 300 characters), would fail to be added to notmuch, (triggering
3077   Xapian exceptions). This has now been fixed.
3078
3079 Fix for messages with "charset=unknown-8bit"
3080
3081   Previously, messages with this charset would cause notmuch to emit a
3082   GMime warning, (which would then trip up emacs or other interfaces
3083   parsing the notmuch results).
3084
3085 Fix `notmuch_query_search_threads` function to return NULL on any exception
3086
3087 Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
3088 fails
3089
3090   Previously, this command could confusingly report a Xapian
3091   exception, yet still return an error code of 0. It now correctly
3092   returns a failing error code of 1 in this case.
3093
3094 Emacs bug fixes
3095 ---------------
3096
3097 Fix to handle a message with a subject containing, for example "[1234]"
3098
3099   Previously, a message subject containing a sequence of digits within
3100   square brackets would cause the emacs interface to mis-parse the
3101   output of "notmuch search". This would result in the message being
3102   mis-displayed and prevent the user from manipulating the message in
3103   the emacs interface.
3104
3105 Fix to correctly handle message IDs containing ".."
3106
3107   The emacs interface now properly quotes message IDs to avoid a
3108   Xapian bug in which the ".." within a message ID would be
3109   misinterpreted as a numeric range specification.
3110
3111 Python-binding fixes
3112 --------------------
3113
3114 The python bindings for notmuch have been updated to work with python3.
3115
3116 Debian-specific fixes
3117 ---------------------
3118
3119 Fix emacs initialization so "M-x notmuch" works for users by default
3120
3121   Now, a new Debian user can immediately run "emacs -f notmuch" after
3122   "apt-get install notmuch". Previously, the user would have had to
3123   edit the ~/.emacs file to add "(require 'notmuch)" before this would
3124   work.
3125
3126 Notmuch 0.3.1 (2010-04-27)
3127 ==========================
3128
3129 General bug fixes
3130 -----------------
3131
3132 Fix an infinite loop in "notmuch reply"
3133
3134   This bug could be triggered by replying to a message where the
3135   user's primary email address did not appear in the To: header and
3136   the user had not configured any secondary email addresses. The bug
3137   was a simple re-use of the same iterator variable in nested loops.
3138
3139 Fix a potential SEGV in "notmuch search"
3140
3141   This bug could be triggered by an author name ending in a ','.
3142   Admittedly - that's almost certainly a spam email, but we never
3143   want notmuch to crash.
3144
3145 Emacs bug fixes
3146 ---------------
3147
3148 Fix calculations for line wrapping in the primary "notmuch" view
3149
3150 Fix Fcc support to prompt to create a directory if the specified Fcc
3151 directory does not exist
3152
3153 Build fix
3154 ---------
3155
3156 Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
3157
3158   Without this, the C++ sources could not find strcasestr and the
3159   final linking of notmuch would fail.
3160
3161 Notmuch 0.3 (2010-04-27)
3162 ========================
3163
3164 New command-line features
3165 -------------------------
3166
3167 User-configurable tags for new messages
3168
3169   A new "new.tags" option is available in the configuration file to
3170   determine which tags are applied to new messages. Run "notmuch
3171   setup" to generate new documentation within ~/.notmuch-config on how
3172   to specify this value.
3173
3174 Threads search results named based on subjects that match search
3175
3176   This means that when new mails arrived to a thread you've previously
3177   read, and the new mails have a new subject, you will see that
3178   subject in the search results rather than the old subject.
3179
3180 Faster operation of "notmuch tag" (avoid unneeded sorting)
3181
3182   Since the user just wants to tag all matching messages, we can make
3183   things perform a bit faster by avoiding the sort.
3184
3185 Even Better guessing of From: header for "notmuch reply"
3186
3187   Notmuch now looks at a number of headers when trying to figure out
3188   the best From: header to use in a reply. This is helpful if you have
3189   several configured email addresses, and you also subscribe to various
3190   mailing lists with different addresses, (so that mails you are
3191   replying to won't always include your subscribed address in the To:
3192   header).
3193
3194 Indication of author names that match a search
3195
3196   When notmuch displays threads as the result of a search, it now
3197   lists the authors that match the search before listing the other
3198   authors in the thread. It inserts a pipe '|' symbol between the last
3199   matching and first non-matching author. This is especially useful in
3200   a search that includes tag:unread. Now the authors of the unread
3201   messages in the thread are listed first.
3202
3203 New: Python bindings
3204 --------------------
3205
3206 Sebastian Spaeth has contributed his python bindings for the notmuch
3207 library to the central repository. These bindings were previously
3208 known as "cnotmuch" within python but have now been renamed to be
3209 accessible with a simple, and more official-looking "import notmuch".
3210
3211 The bindings have already proven very useful as people proficient in
3212 python have been able to easily develop programs to do notmuch-based
3213 searches for email-address completion, maildir-flag synchronization,
3214 and other tasks.
3215
3216 These bindings are available within the bindings/python directory, but
3217 are not yet integrated into the top-level Makefiles, nor the top-level
3218 package-building scripts. Improvements are welcome.
3219
3220 Emacs interface improvements
3221 ----------------------------
3222
3223 An entirely new initial view for notmuch, (friendly yet powerful)
3224
3225   Some of us call the new view "notmuch hello" but you can get at it
3226   by simply calling "emacs -f notmuch". The new view provides a search
3227   bar where new searches can be performed. It also displays a list of
3228   recent searches, along with a button to save any of these, giving it
3229   a new name as a "saved search". Many people find these "saved
3230   searches" one of the most convenient ways of organizing their mail,
3231   (providing all of the features of "folders" in other mail clients,
3232   but without any of the disadvantages).
3233
3234   Finally, this view can also optionally display all of the tags that
3235   exist in the database, along with a count for each tag, and a custom
3236   search of messages with that tag that's simply a click (or keypress)
3237   away.
3238
3239   NOTE: For users that liked the original mode of "emacs -f notmuch"
3240   immediately displaying a particular search result, we recommend
3241   instead running something like:
3242
3243         emacs --eval '(notmuch search "tag:inbox" t)'
3244
3245   The "t" means to sort the messages in an "oldest first" order,
3246   (as notmuch would do previously by default). You can also
3247   leave that off to have your search results in "newest first"
3248   order.
3249
3250 Full-featured "customize" support for configuring notmuch
3251
3252   Notmuch now plugs in well to the emacs "customize" mode to make it
3253   much simpler to find things about the notmuch interface that can be
3254   tweaked by the user.
3255
3256   You can get to this mode by starting at the main "Customize" menu in
3257   emacs, then browsing through "Applications", "Mail", and
3258   "Notmuch". Or you can go straight to "M-x customize-group"
3259   "notmuch".
3260
3261   Once you're at the customize screen, you'll see a list of documented
3262   options that can be manipulated along with checkboxes, drop-down
3263   selectors, and text-entry boxes for configuring the various
3264   settings.
3265
3266 Support for doing tab-completion of email addresses
3267
3268   This support currently relies on an external program,
3269   (notmuch-addresses), that is not yet shipped with notmuch
3270   itself. But multiple, suitable implementations of this program have
3271   already been written that generate address completions by doing
3272   notmuch searches of your email collection. For example, providing
3273   first those addresses that you have composed messages to in the
3274   past, etc.
3275
3276   One such program (implemented in python with the python bindings to
3277   notmuch) is available via:
3278
3279         git clone  http://jkr.acm.jhu.edu/git/notmuch_addresses.git
3280
3281   Install that program as notmuch-addresses on your PATH, and then
3282   hitting TAB on a partial email address or name within the To: or Cc:
3283   line of an email message will provide matching completions.
3284
3285 Support for file-based (Fcc) delivery of sent messages to mail store
3286
3287   This isn't yet enabled by default. To enable this, one will have to
3288   set the "Notmuch Fcc Dirs" setting within the notmuch customize
3289   screen, (see its documentation there for details). We anticipate
3290   making this automatic in a future release.
3291
3292 New 'G' key binding to trigger mail refresh (G == "Get new mail")
3293
3294   The 'G' key works wherever '=' works. Before refreshing the screen
3295   it calls an external program that can be used to poll email servers,
3296   run notmuch new and set up specific tags for the new emails. The
3297   script to be called should be configured with the "Notmuch Poll
3298   Script" setting in the customize interface. This script will
3299   typically invoke "notmuch new" and then perhaps several "notmuch
3300   tag" commands.
3301
3302 Implement emacs message display with the JSON output from notmuch
3303
3304   This is much more robust than the previous implementation, (where
3305   some HTML mails and mail quoting the notmuch code with the delimiter
3306   characters in it would cause the parser to fall over).
3307
3308 Better handling of HTML messages and MIME attachments (inline images!)
3309
3310   Allow for any MIME parts that emacs can display to be displayed
3311   inline. This includes inline viewing of image attachments, (provided
3312   the window is large enough to fit the image at its natural size).
3313
3314   Much more robust handling of HTML messages. Currently both text/plain
3315   and text/html alternates will be rendered next to each other. In a
3316   future release, users will be able to decide to see only one or the
3317   other representation.
3318
3319   Each attachment now has its own button so that attachments can be
3320   saved individually (the 'w' key is still available to save all
3321   attachments).
3322
3323 Customizable support for tidying of text/plain message content
3324
3325   Many new functions are available for tidying up message
3326   content. These include options such as wrapping long lines,
3327   compressing duplicate blank lines, etc.
3328
3329   Most of these are disabled by default, but can easily be enabled by
3330   clicking the available check boxes under the "Notmuch Show Insert
3331   Text/Plain Hook" within the notmuch customize screen.
3332
3333 New support for searchable citations (even when hidden)
3334
3335   When portions of overly-long citations are hidden, the contents of
3336   these citations will still be available for emacs' standard
3337   "incremental search" functions. When the search matches any portion
3338   of a hidden citation, the citation will become visible temporarily
3339   to display the search result.
3340
3341 More flexible handling of header visibility
3342
3343   As an answer to complaints from many users, the To, Cc, and Date
3344   headers of messages are no longer hidden by default. For those users
3345   that liked that these were hidden, a new "Notmuch Messages Headers
3346   Visible" option in the customize interface can be set to nil. The
3347   visibility of headers can still be toggled on a per-message basis
3348   with the 'h' keybinding.
3349
3350   For users that don't want to see some subset of those headers, the
3351   new "Notmuch Message Headers" variable can be customized to list
3352   only those headers that should be present in the display of a message.
3353
3354 The Return key now toggles message visibility anywhere
3355
3356   Previously this worked only on the first summary-line of a message.
3357
3358 Customizable formatting of search results
3359
3360   The user can easily customize the order, width, and formatting of
3361   the various fields in a "notmuch search" buffer. See the "Notmuch
3362   Search Result Format" section of the customize interface.
3363
3364 Generate nicer names for search buffers when using a saved search
3365
3366 Add a notmuch User-Agent header when sending mail from notmuch/emacs
3367
3368 New keybinding (M-Ret) to open all collapsed messages in a thread
3369
3370 New library feature
3371 -------------------
3372
3373 Provide a new `NOTMUCH_SORT_UNSORTED` value for queries
3374
3375   This can be somewhat faster when sorting simply isn't desired. For
3376   example when collecting a set of messages that will all be
3377   manipulated identically, (adding a tag, removing a tag, deleting the
3378   messages), then there's no advantage to sorting the messages by
3379   date.
3380
3381 Build fixes
3382 -----------
3383
3384 Fix to compile against GMime 2.6
3385
3386   Previously notmuch insisted on being able to find GMime 2.4, (even
3387   though GMime 2.6 would have worked all along).
3388
3389 Fix configure script to accept (and ignore) various standard options
3390
3391   For example, those that the Gentoo build scripts expect configure to
3392   accept are now all accepted.
3393
3394 Test suite
3395 ----------
3396
3397 A large number of new tests for the many new features
3398
3399 Better display of output from failed tests
3400
3401   Now shows failures with diff rather than forcing the user to gaze at
3402   complete actual and expected output looking for deviation.
3403
3404 Notmuch 0.2 (2010-04-16)
3405 ========================
3406
3407 This is the second release of the notmuch mail system, with actual
3408 detailed release notes this time!
3409
3410 This release consists of a number of minor new features that make
3411 notmuch more pleasant to use, and a few fairly major bug fixes.
3412
3413 We didn't quite hit our release target of "about a week" from the 0.1
3414 release, (0.2 is happening 11 days after 0.1), but we hope to do
3415 better for next week. Look forward to some major features coming to
3416 notmuch in subsequent releases.
3417
3418 -Carl
3419
3420 General features
3421 ----------------
3422
3423 Better guessing of From: header
3424
3425   Notmuch now tries harder to guess which configured address should be
3426   used as the From: line in a "notmuch reply". It will examine the
3427   Received: headers if it fails to find any configured address in To:
3428   or Cc:. This allows it to often choose the correct address even when
3429   replying to a message sent to a mailing list, and not directly to a
3430   configured address.
3431
3432 Make "notmuch count" with no arguments count all messages
3433
3434   Previously, it was hard to construct a search term that was
3435   guaranteed to match all messages.
3436
3437 Provide a new special-case search term of "*" to match all messages
3438
3439   This can be used in any command accepting a search term, such as
3440   "notmuch search '*'". Note that you'll want to take care that the
3441   shell doesn't expand * against the current files. And note that the
3442   support for "*" is a special case. It's only meaningful as a single
3443   search term and loses its special meaning when combined with any
3444   other search terms.
3445
3446 Automatically detect thread connections even when a parent message is
3447 missing
3448
3449   Previously, if two or more message were received with a common
3450   parent, but that parent was not received, then these messages would
3451   not be recognized as belonging to the same thread. This is now fixed
3452   so that such messages are properly connected in a thread.
3453
3454 General bug fixes
3455 -----------------
3456
3457 Fix potential data loss in "notmuch new" with SIGINT
3458
3459   One code path in "notmuch new" was not properly handling
3460   SIGINT. Previously, this could lead to messages being removed from
3461   the database (and their tags being lost) if the user pressed
3462   Control-C while "notmuch new" was working.
3463
3464 Fix segfault when a message includes a MIME part that is empty
3465
3466 Fix handling of non-ASCII characters with --format=json
3467
3468   Previously, characters outside the range of 7-bit ASCII were
3469   silently dropped from the JSON output. This led to corrupted display
3470   of utf-8 content in the upcoming notmuch web-based frontends.
3471
3472 Fix headers to be properly decoded in "notmuch reply"
3473
3474   Previously, the user might see:
3475
3476         Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
3477
3478   rather than:
3479
3480         Subject: Re: Rozlučka
3481
3482   The former text is properly encoded to be RFC-compliant SMTP, will
3483   be sent correctly, and will be properly decoded by the
3484   recipient. But the user trying to edit the reply would likely be
3485   unable to read or edit that field in its encoded form.
3486
3487 Emacs client features
3488 ---------------------
3489
3490 Show the last few lines of citations as well as the first few lines
3491
3492   It's often the case that the last sentence of a citation is what is
3493   being replied to directly, so the last few lines are often much more
3494   important. The number of lines shown at the beginning and end of any
3495   citation can be configured, (notmuch-show-citation-lines-prefix and
3496   notmuch-show-citation-lines-suffix).
3497
3498 The '+' and '-' commands in the search view can now add and remove
3499 tags by region
3500
3501   Selective bulk tagging is now possible by selecting a region of
3502   threads and then using either the '+' or '-' keybindings. Bulk
3503   tagging is still available for all threads matching the current
3504   search with the '*' binding.
3505
3506 More meaningful buffer names for thread-view buffers
3507
3508   Notmuch now uses the Subject of the thread as the buffer
3509   name. Previously it was using the thread ID, which is a meaningless
3510   number to the user.
3511
3512 Provide for customized colors of threads in search view based on tags
3513
3514   See the documentation of notmuch-search-line-faces, (or us "M-x
3515   customize" and browse to the "notmuch" group within "Applications"
3516   and "Mail"), for details on how to configure this colorization.
3517
3518 Build-system features
3519 ---------------------
3520
3521 Add support to properly build libnotmuch on Darwin systems (OS X)
3522
3523 Add support to configure for many standard options
3524
3525   We include actual support for:
3526
3527         --includedir --mandir --sysconfdir
3528
3529   And accept and silently ignore several more:
3530
3531         --build --infodir --libexecdir --localstatedir
3532         --disable-maintainer-mode --disable-dependency-tracking
3533
3534 Install emacs client in "make install" rather than requiring a
3535 separate "make install-emacs"
3536
3537 Automatically compute versions numbers between releases
3538
3539   This support uses the git-describe notation, so a version such as
3540   0.1-144-g43cbbfc indicates a version that is 144 commits since the
3541   0.1 release and is available as git commit "43cbbfc".
3542
3543 Add a new "make test" target to run the test suite and actually
3544 verify its results
3545
3546 Notmuch 0.1 (2010-04-05)
3547 ========================
3548
3549 This is the first release of the notmuch mail system.
3550
3551 It includes the libnotmuch library, the notmuch command-line
3552 interface, and an emacs-based interface to notmuch.
3553
3554 Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
3555 1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
3556 a performance bug that made notmuch very slow when modifying
3557 tags. This would cause distracting pauses when reading mail while
3558 notmuch would wait for Xapian when removing the "inbox" and "unread"
3559 tags from messages in a thread.
3560
3561
3562 <!--
3563  Local variables:
3564  mode: text
3565  tab-width: 8
3566  indent-tabs-mode: nil
3567  End:
3568  vi: sw=8 ts=8 et
3569 -->