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