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