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