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