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