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