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