1 Notmuch 0.33 (UNRELEASED)
2 =========================
7 `notmuch` no longer sets `mail-user-agent` on load. To restore the
8 previous behaviour of using notmuch to send mail by default, customize
9 `mail-user-agent` to `notmuch-user-agent`.
11 `notmuch-company` now works in `org-msg`.
16 Respect excluded tags when showing a thread.
18 Notmuch 0.32.2 (UNRELEASED)
19 ===========================
24 Fix a bug from 2017 that can add duplicate thread-id terms to message
30 Add `(require 'seq)` for `seq-some`.
35 Fix man page build for Sphinx 4.x. Fix variable name in emacs docs.
40 Fix backup creation in `perf-test/T00-new`. Check openssl
41 prerequisite in `add_gpgsm_home`.
43 Notmuch 0.32.1 (2021-05-15)
44 ===========================
49 Restore handling of relative values for `database.path` that was
50 broken by 0.32. Extend this handling to `database.mail_root`,
51 `database.backup_dir`, and `database.hook_dir`.
53 Reload certain metadata from Xapian database in
54 notmuch_database_reopen. This fixes a bug when adding messages to the
55 database in a pre-new hook.
57 Fix default of `$HOME/mail` for `database.path`. In release 0.32, this
58 default worked only in "notmuch config".
63 Restore the dynamically bound variables `tag-changes` and `query` in
64 in `notmuch-before-tag-hook` and `notmuch-after-tag-hook`.
66 Notmuch 0.32 (2021-05-02)
67 =========================
72 This release includes a significant overhaul of the configuration
73 management facilities for notmuch. The previous distinction between
74 configuration items that can be modified via plain text configuration
75 files and those that must be set in the database via the "notmuch
76 config" subcommand is gone, and all configuration items can be set in
77 both ways. The external configuration file overrides configuration
78 items in the database. The location of database, hooks, and
79 configuration files is now more flexible, with several new
80 configuration variables. In particular XDG locations are now supported
81 as fallbacks for database, configuration and hooks. For more
82 information see `notmuch-config(1)`.
87 To support the new configuration facilities, several functions and
88 constants have been added to the notmuch API. Most notably:
90 - `notmuch_database_create_with_config`
91 - `notmuch_database_open_with_config`
92 - `notmuch_database_load_config`
93 - `notmuch_config_get`
95 A previously requested API change is that `notmuch_database_reopen` is
96 now exposed (and generalized).
98 The previously severe slowdowns from large numbers calls to
99 notmuch_database_remove_message or notmuch_message_delete in one
100 session has been fixed.
102 As always, the canonical source of API documentation is
103 `lib/notmuch.h`, or the doxygen formatted documentation in `notmuch(3)`
108 The `notmuch config set` subcommand gained a `--database` argument to
109 specify that the database should be updated, rather than a config file.
111 The speed of `notmuch new` and `notmuch reindex` in dealing with large
112 numbers of mail file deletions is significantly improved.
117 Completion related updates include: de-duplicating tags offered for
118 completion, use the actual initial input in address completion, allow
119 users to opt out of notmuch address completion, and do not force Ido
120 when prompting for senders.
122 Some keymaps used to contain bindings for unnamed commands. These
123 lambda expressions have been replaced by named commands (symbols), to
126 Lexical binding is now used in all notmuch-emacs libraries.
128 Fix bug in calling `notmuch-mua-mail` with a non-nil RETURN-ACTION.
130 Removed, inlined or renamed functions and variables:
131 `notmuch-address-locate-command`,
132 `notmuch-documentation-first-line`, `notmuch-folder`,
133 `notmuch-hello-trim', `notmuch-hello-versions` => `notmuch-version`,
134 `notmuch-remove-if-not`, `notmuch-search-disjunctive-regexp`,
135 `notmuch-sexp-eof`, `notmuch-split-content-type`, and
136 `notmuch-tree-button-activate`.
138 Keymaps are no longer fset, which means they need to be referred to in
139 define-key directly (without quotes). If your Emacs configuration has a
141 (define-key 'notmuch-show-mode-map "7" 'foo)
142 you should change it to:
143 (define-key notmuch-show-mode-map "7" 'foo)
145 Notmuch 0.31.4 (2021-02-18)
146 ===========================
151 Fix include bug triggered by glib 2.67.
156 Fix race condition in T568-lib-thread.
158 Notmuch 0.31.3 (2020-12-25)
159 ===========================
164 Fix for exclude tags in notmuch2 bindings.
169 Portability update for T360-symbol-hiding
174 Fix for memory error in notmuch_database_get_config_list
176 Notmuch 0.31.2 (2020-11-08)
177 ===========================
182 Catch one more occurence of "version" in the build system, which
183 caused the file to be regenerated in the release tarball.
185 Notmuch 0.31.1 (2020-11-08)
186 ===========================
191 Fix a memory initialization bug in notmuch_database_get_config_list.
196 Rename file 'version' to 'version.txt'. The old file name conflicted
197 with a C++ header for some compilers.
199 Replace use of coreutils `realpath` in configure.
201 Notmuch 0.31 (2020-09-05)
202 =========================
207 Notmuch now supports Emacs 27.1. You may need to set
208 `mml-secure-openpgp-sign-with-sender` and/or
209 `mml-secure-smime-sign-with-sender` to continue signing messages.
211 The minimum supported major version of GNU Emacs is now 25.1.
213 Add support for moving between threads after notmuch-tree-from-search-thread.
215 New `notmuch-unthreaded` mode (added in Notmuch 0.30)
217 Unthreaded view is a mode where each matching message is shown on a
220 The main key entries to unthreaded view are
222 'u' enter a query to view in unthreaded mode (works in hello,
223 search, show and tree mode)
225 'U' view the current query in unthreaded mode (works from search,
228 Saved searches can also specify that they should open in unthreaded
231 Currently it is not possible to specify the sort order: it will
232 always be newest first.
237 The shell pipeline executed by notmuch-mutt, which symlinked matched
238 files to a maildir for mutt to access is replaced with internal perl
239 processing. This search operation is now more portable, and somewhat
245 Improve exception handling in the library. This should
246 largely eliminate terminations inside the library due to uncaught
247 exceptions or internal errors. No doubt there are a few uncovered
248 code paths still; please report them as bugs.
250 Add `notmuch_message_get_flag_st` and
251 `notmuch_message_has_maildir_flag_st`, and deprecate the existing
252 non-status providing versions.
254 Move memory de-allocation from `notmuch_database_close` to
255 `notmuch_database_destroy`.
257 Handle relative filenames in `notmuch_database_index_file`, as
258 promised in the documentation.
263 Documentation for the python bindings is merged into the main
264 sphinx-doc documentation tree. The merged documentation can be built
265 with e.g. `make sphinx-html`
270 We now support building notmuch against Xapian 1.5 (the current
271 development version).
276 Test suite fixes for compatibility with Emacs 27.1.
281 Man pages are now compressed reproducibly.
283 Notmuch 0.30 (2020-07-10)
284 =========================
289 Handle S/MIME (PKCS#7) messages -- one-part signed messages, encrypted
290 messages, and multilayer messages. Treat them symmetrically to
291 OpenPGP messages. This includes handling protected headers
294 If you're using Notmuch with S/MIME, you currently need to configure
300 Detect and automatically repair a common form of message mangling
301 created by Microsoft Exchange (see index.repaired=mixedup in
302 notmuch-properties(7)).
307 Avoid indexing the legacy-display part of an encrypted message that
308 has protected headers (see
309 index.repaired=skip-protected-headers-legacy-display in
310 notmuch-properties(7)).
315 Drop support for python2, focus on python3.
317 Introduce new CFFI-based python bindings in the python module named
318 "notmuch2". Officially deprecate (but still support) the older
324 Support for Xapian 1.2 is removed. The minimum supported version of
327 Notmuch 0.29.3 (2019-11-27)
328 ===========================
333 Fix for use-after-free in notmuch_config_list_{key,val}.
335 Fix for double close of file in notmuch-dump.
340 Drop python2 support from shipped debian packaging.
342 Notmuch 0.29.2 (2019-10-19)
343 ===========================
348 Fix for file descriptor leak when opening gzipped mail files. Thanks
349 to James Troup for the bug report and the fix.
351 Notmuch 0.29.1 (2019-06-11)
352 ===========================
357 Fix for installation failure with `configure --without-emacs`.
359 Notmuch 0.29 (2019-06-07)
360 =========================
365 Add "body:" field to allow searching for terms that occur only in the
366 message body. Users will need to reindex their mail to take advantage
369 Add support for indexing user specified headers (e.g. List-Id). See
370 notmuch-config(1) for details. This requires reindexing after changing
371 the set of headers to be indexed.
373 Fix bug for searching in some headers for Xapian keywords in quoted
376 Add support for gzip compressed mail messages (/not/ multi-message
377 mboxes); e.g. `gzip -9 $MAIL/archive/giant-message && notmuch new`
378 should work. Note that maildir flag syncing for gzipped messages is
381 Notmuch is now capable of indexing, searching and rendering
382 cryptographically-protected Subject: headers of the form produced by
383 Enigmail and K-9 mail in encrypted messages.
385 Command Line Interface
386 ----------------------
388 `notmuch show` now supports --body=false and --include-html with
391 Fix several performance problems with `notmuch reindex`.
393 `notmuch show` and `notmuch reply` now emit per-message cryptographic
394 status in their json and sexp output formats. See devel/schemata for
395 more details about what is included there. This status includes
396 information about cryptographic protections for the Subject header.
401 Optionally check for missing attachments in outgoing messages (see
402 function `notmuch-mua-attachment-check`).
404 Bind `B` to browse URLs in current message.
406 Bind `g` to refresh the current notmuch buffer.
408 Editing a message as new now includes an FCC header.
410 Forwarded messages are now tagged as +forwarded (customizable).
412 Add references header to link forwarded message to thread of original
415 The minimum supported major version of Emacs is now 24.
417 Support for GNU Emacs older than 25.1 is deprecated with this release,
418 and may be removed in a future release.
420 Notmuch-emacs documentation is somewhat expanded. More contributions
426 Notmuch release tarballs are now compressed with `xz`.
428 We now provide conventional detached signatures of the release
429 tarballs in addition to the signed `sha256sum` files.
434 Support for GMime 2.6 is removed. The minimum supported version of
435 GMime is now 3.0.3. GMime also needs to have been compiled with
436 cryptography support.
441 If either GNU parallel or moreutils parallel is installed, the tests
442 in the test suite will now be run in parallel (one per available
443 core). This can be disabled with NOTMUCH_TEST_SERIALIZE=1.
445 Notmuch 0.28.4 (2019-05-05)
446 ===========================
448 Command line interface
449 ----------------------
451 Fix a spurious error when using `notmuch show --raw` on messages whose
452 size is a multiple of the internal buffer size.
454 Notmuch 0.28.3 (2019-03-05)
455 ===========================
460 Fix a bug with the internal data structure _notmuch_string_map_t used
461 by message properties.
466 Serialize calls to sphinx-build to avoid race condition.
468 Notmuch 0.28.2 (2019-02-17)
469 ===========================
474 Invoke gpg with --batch and --no-tty.
479 Fix documentation build with Python 3.7. Note that Python >= 3.3 is
480 now needed to build this documentation.
482 Notmuch 0.28.1 (2019-02-01)
483 ===========================
488 `configure` no longer uses the special variable BASH, as this causes
489 problems on systems where /bin/sh is bash.
491 Notmuch 0.28 (2018-10-12)
492 =========================
499 The threading algorithm has been updated to consider all references,
500 not just the heuristically chosen parent (e.g. when that parent is
501 not in the database). The heuristic for choosing a parent message
502 has also been updated to again consider the In-Reply-To header, if
503 it looks sensible. Re-indexing might be needed to take advantage of
506 Handle mislabelled Windows-1252 parts
508 Messages that contain Windows-1252 are apparently frequently
509 mislabelled as ISO 8859-1. Use GMime functionality to apply the
510 correct encoding for such messages.
512 Command Line Interface
513 ----------------------
515 Support relative database paths
517 Database paths (i.e. parameters to `notmuch config set
518 database.path`) without a leading `/` are now interpreted relative
519 to $HOME of the invoking user.
524 Improve stderr handling
526 Add a real sentinel process to clean up stderr buffer. This is
527 needed on e.g. macOS.
529 Call `notmuch-mua-send-hook` hooks when sending a message
531 This hook was documented, but not functional for a very long time.
536 The zsh completion has been updated to cover most of the notmuch
537 CLI. Internally it uses regexp searching, so needs at least Notmuch
543 The build system now installs notmuch-mutt and notmuch-emacs-mua with
544 absolute shebangs, following the conventions of most Linux
550 Fix certain tests that were failing with GMime 2.6. Users are reminded
551 that support for versions of GMime before 3.0.3 has been deprecated
554 Notmuch 0.27 (2018-06-13)
555 =========================
560 Add support for thread:{} queries
562 Queries of the form `thread:{foo} and thread:{bar}` match threads
563 containing (possibly distinct) messages matching foo and bar. See
564 `notmuch-search-terms(7)` for details.
566 Command Line Interface
567 ----------------------
569 Add the --full-scan option to `notmuch new`
571 This option disables mtime based optimization of scanning for new mail.
573 Add new --decrypt=stash option for `notmuch show`
575 This facilitates a workflow for encrypted messages where message
576 cleartext are indexed on first read, but the user's decryption key
577 does not have to be available during message receipt.
582 An initial manual for `notmuch-emacs` is now installed by default (in
588 As of this release, support for versions of Xapian before 1.4.0 is
589 deprecated, and may disappear in a future release of notmuch.
591 Notmuch 0.26.2 (2018-04-28)
592 ===========================
597 Work around Xapian bug with `get_mset(0,0, x)`
599 This causes aborts in `_notmuch_query_count_documents` on
600 e.g. Fedora 28. The underlying bug is fixed in Xapian commit
601 f92e2a936c1592, and will be fixed in Xapian 1.4.6.
603 Make thread indexing more robust against reference loops
605 Choose a thread root by date in case of reference loops. Fix a
606 related abort in `notmuch show`.
608 Notmuch 0.26.1 (2018-04-02)
609 ===========================
614 Bump the library minor version. This should have happened in 0.26, but
615 better late than never.
618 Notmuch 0.26 (2018-01-09)
619 =========================
621 Command Line Interface
622 ----------------------
624 Support for re-indexing existing messages
626 There is a new subcommand, `notmuch reindex`, which re-indexes all
627 messages matching supplied search terms. This permits users to
628 change the way specific messages are indexed.
630 Note that for messages with multiple variants in the message
631 archive, the recorded Subject: of may change upon reindexing,
632 depending on the order in which the variants are indexed.
634 Improved error reporting in notmuch new
636 Give more details when reporting certain Xapian exceptions.
638 Support maildir synced tags in `new.tags`
640 Tags `draft`, `flagged`, `passed`, and `replied` are now supported
641 in `new.tags`. The tag `unread` is still special in the presence of
642 maildir syncing, and will be added for files in `new/` regardless of
643 the setting of `new.tags`.
645 Support /regex/ in new.ignore
647 Files and directories may be ignored based on regular expressions.
649 Allow `notmuch insert --folder=""`
651 This inserts into the top level folder.
653 Strip trailing '/' from folder path for notmuch insert
655 This prevents a potential problem with duplicated database records.
657 New option --output=address for notmuch address
659 Make `notmuch show` more robust against deleting duplicate files
661 The option --decrypt now takes an explicit argument
663 The --decrypt option to `notmuch show` and `notmuch reply` now takes
664 an explicit argument. If you were used to invoking `notmuch show
665 --decrypt`, you should switch to `notmuch show --decrypt=true`.
667 Boolean and keyword arguments now take a `--no-` prefix
672 Indexing cleartext of encrypted e-mails
674 It's now possible to include the cleartext of encrypted e-mails in
675 the notmuch index. This makes it possible to search your encrypted
676 e-mails with the same ease as searching cleartext. This can be done
677 on a per-message basis by passing --decrypt=true to indexing
678 commands (new, insert, reindex), or by default by running "notmuch
679 config set index.decrypt true".
681 Encrypted messages whose cleartext is indexed will typically also
682 have their session keys stashed as properties associated with the
683 message. Stashed session keys permit rapid rendering of long
684 encrypted threads, and disposal of expired encryption-capable keys.
685 If for some reason you want cleartext indexing without stashed
686 session keys, use --decrypt=nostash for your indexing commands (or
687 run "notmuch config set index.decrypt nostash"). See `index.decrypt`
688 in notmuch-config(1) for more details.
690 Note that stashed session keys permit reconstruction of the
691 cleartext of the encrypted message itself, and the contents of the
692 index are roughly equivalent to the cleartext as well. DO NOT USE
693 this feature without considering the security of your index.
698 Guard against concurrent searches in notmuch-tree
700 Use make-process when available
702 This allows newer Emacs to separate stdout and stderr from the
703 notmuch command without using temporary files.
708 Indexing files with duplicate message-id
710 Files with duplicate message-id's are now indexed, and searchable
711 via terms and phrases. There are known issues related to
712 presentation of results and regular-expression search, but in
713 principle no mail file should be completely unsearchable now.
715 New functions to count files
717 Two new functions in the libnotmuch API:
718 `notmuch_message_count_files`, and `notmuch_thread_get_total_files`.
720 New function to remove properties
722 A new function was added to the libnotmuch API to make it easier to
723 drop all properties with a common pattern:
724 `notmuch_message_remove_all_properties_with_prefix`
726 Change of return value of `notmuch_thread_get_authors`
728 In certain corner cases, `notmuch_thread_get_authors` previously
729 returned NULL. This has been replaced by an empty string, since the
730 possibility of NULL was not documented.
732 Transition `notmuch_database_add_message` to `notmuch_database_index_file`
734 When indexing an e-mail message, the new
735 `notmuch_database_index_file` function is the preferred form, and
736 the old `notmuch_database_add_message` is deprecated. The new form
737 allows passing a set of options to the indexing engine, which the
738 operator may decide to change from message to message.
745 The test suite now works properly with out-of-tree builds, i.e. with
746 separate source and build directories. The --root option to tests
747 has been dropped. The same can now be achieved more reliably using
753 Python bindings specific Debian packaging is removed
755 The bindings have been build by the top level Debian packaging for a
756 long time, and `bindings/python/debian` has bit-rotted.
758 Open mail files in binary mode when using Python 3
760 This avoids certain encoding related crashes under Python 3.
762 Add python bindings for `notmuch_database_{get,set}_config*`
764 Optional `decrypt_policy` flag is available for notmuch.database().index_file()
769 nmbug's internal version increases to 0.3 in this notmuch release.
770 User-facing changes with this notmuch release:
772 * Accept failures to unset `core.worktree` in `clone`, which allows
773 nmbug to be used with Git 2.11.0 and later.
774 * Auto-checkout in `clone` if it wouldn't clobber existing content,
775 which makes the initial clone more convenient.
776 * Only error for invalid diff lines in `tags/`, which allows for
777 `README`s and similar in nmbug repositories.
782 New man page: notmuch-properties(7)
784 This new page to the manual describes common conventions for how
785 properties are used by libnotmuch, the CLI, and associated programs.
786 External projects that use properties are encouraged to claim their
787 properties and conventions here to avoid collisions.
789 Notmuch 0.25.3 (2017-12-08)
790 ===========================
795 Extend mitigation (disabling handling x-display in text/enriched) for
796 Emacs bug #28350 to Emacs versions before 24.4 (i.e. without
799 Command Line Interface
800 ----------------------
802 Correctly report userid validity. Fix test suite failure for GMime >=
803 3.0.3. This change raises the minimum supported version of GMime 3.x
806 Notmuch 0.25.2 (2017-11-05)
807 ===========================
809 Command Line Interface
810 ----------------------
812 Fix segfault in notmuch-show crypto handling when compiled against
813 GMime 2.6; this was a regression in 0.25.
818 Support for GMime before 3.0 is now deprecated, and will be removed in
821 Notmuch 0.25.1 (2017-09-11)
822 ===========================
827 Disable handling x-display in text/enriched messages. Mitigation for
830 Notmuch 0.25 (2017-07-25)
831 =========================
836 Add regexp searching for mid, paths, and tags.
838 Skip HTML tags when indexing
840 In particular this avoids indexing large inline images.
842 Command Line Interface
843 ----------------------
845 Bash completion is now installed to /usr/share by default.
847 Allow space as separator for keyword arguments.
852 Support for stashing message timestamp in show and tree views
854 Invoking `notmuch-show-stash-date` with a prefix argument
855 stashes the unix timestamp of the current message instead of
858 Don't use 'function' as variable name, workaround emacs bug 26406.
863 Add workaround for date parsing of bad input in older GMime
865 In certain circumstances, older GMime libraries could return
866 negative numbers when parsing syntactically invalid dates.
868 Replace deprecated functions with status returning versions
870 API of notmuch_query_{search,count}_{messages,threads} has
871 changed. notmuch_query_add_tag_exclude now returns a status
874 Add support for building against GMime 3.0.
876 Rename libutil.a to libnotmuch_util.a.
878 libnotmuch SONAME is incremented to libnotmuch.so.5.
880 Notmuch 0.24.2 (2017-06-01)
881 ===========================
883 Command Line Interface
884 ----------------------
886 Fix output from `notmuch dump --include=properties` to not include tags.
891 Fix filename stashing in tree view.
893 Notmuch 0.24.1 (2017-04-01)
894 ===========================
899 Fix regressions in non-regexp search for `from:` and `subject:`
901 The regexp search code in 0.24 introduced a regression in the
902 handling of empty queries and wildcards. These are both corrected in
905 Command Line Interface
906 ----------------------
908 Fix several memory leaks in `notmuch show`
910 Update NEWS for 0.24 to mention schema changes
912 Fix bug in dump header
914 The previous version of the dump header failed to mention the
915 inclusion of tags. This fix bumps the version number of the dump
916 format to 3. There are no other changes to the format.
921 Fix a read-after-free in the library.
923 Notmuch 0.24 (2017-03-12)
924 =========================
929 Regular expression searches supported for `from:` and `subject:`
931 This requires recent Xapian (1.4+) See notmuch-search-terms(7) for
934 Command Line Interface
935 ----------------------
937 Run external `notmuch-` prefixed commands as subcommands
939 You can now add your own `notmuch-` prefixed commands in PATH, and
940 have notmuch run them as if they were notmuch commands. See the
941 `notmuch(1)` man page for details
943 New default output format to 3
945 See devel/schemata for details. Users of the structured output
946 format are reminded of the `--format-version` argument to `notmuch
947 show` and `notmuch search` which can prevent breakage when the
948 default format changes.
953 Postpone and resume messages in `notmuch-message-mode` (composition)
955 Notmuch now has built in support for postponing, saving and resuming
956 messages. The default bindings are C-x C-s to save a draft, C-c C-p
957 to postpone a draft (save and exit compose buffer), and "e" in show
958 or tree view to resume.
960 Draft messages are tagged with `notmuch-draft-tags` (draft by
961 default) so you may wish to add that to the excluded tags list. When
962 saving a previously saved draft message the earlier draft gets
965 Note that attachments added before postponing will be included as
966 they were when you postponed in the final message.
970 It is now possible to save the list of address completions for
971 notmuch's internal completion between runs of emacs. This makes the
972 first calls to address completion much better and faster. For
973 privacy reasons it is disabled by default, to enable set or
974 customize `notmuch-address-save-filename`.
978 It is now possible to configure tagging shortcuts (with an interface
979 like notmuch jump). For example (by default) k u will remove the
980 unread tag, and k s will add a tag "spam" and remove the inbox
981 tag. Pressing k twice will do the reverse operation so, for example,
982 k k s removes the spam tag and adds the inbox tag. See the customize
983 variable `notmuch-tagging-keys` for more information.
987 It is now possible to refresh all notmuch buffers to reflect the
988 current state of the database with a single command, `M-=`.
990 Stop display of `application/*` parts
992 By default gnus displays all `application/*` parts such as
993 application/zip in the message buffer. This has several undesirable
994 effects for notmuch (security, triggering errors etc). Notmuch now
995 overrides this and does not display them by default. If you have
996 customized `mm-inline-override-types` then we assume you know what
997 you want and do not interfere; if you do want to stop the display of
998 `application/*` add `application/*` to your customization. If you want
999 to allow `application/*` then set `mm-inline-override-types` to
1002 Small change in the api for notmuch-search-tag
1004 When `notmuch-search-tag` is called non-interactively and the region
1005 is set, then it only tags the threads in the region. (Previously it
1006 only tagged the current thread.)
1008 Bugfix for sending messages with very long headers
1010 Previously emacs didn't fold very long headers when sending which
1011 could cause the MTA to refuse to send the message. This makes sure
1012 it does fold any long headers so the message is RFC compliant.
1014 `notmuch emacs-mua` command installed with the Emacs interface
1016 We've carried a `notmuch-emacs-mua` script in the source tree for
1017 quite some time. It can be used to launch the Notmuch Emacs
1018 interface from the command line in many different ways. Starting
1019 with this release, it will be installed with the Emacs
1020 interface. With the new external subcommand support, the script
1021 transparently becomes a new notmuch command. See the
1022 `notmuch-emacs-mua(1)` man page for details.
1024 Notmuch Emacs desktop integration
1026 The desktop integration file will now be installed with the Notmuch
1027 Emacs interface, adding a Notmuch menu item and configuration to
1028 allow the user to set up Notmuch Emacs as the `mailto:` URL handler.
1033 `notmuch_query_count_messages` is now non-destructive
1035 Internally the implementation of excludes has changed to make this
1038 Improved handling of DatabaseModifiedError
1040 Previously uncaught exceptions reading message metadata are now
1043 Notmuch 0.23.7 (2017-02-28)
1044 ===========================
1049 Drop use of gpgconf --create-socketdir. Move $GNUPGHOME to /tmp.
1051 It turns out the hardcoded use of /run/user in gpg doesn't work out
1052 that well in some environments. The more low tech fix is to move all
1053 of $GNUPGHOME to somewhere where we can control the length of the
1056 Notmuch 0.23.6 (2017-02-27)
1057 ===========================
1059 Command Line Interface
1060 ----------------------
1062 Fix read-after-free bug in `notmuch new`.
1067 Use gpgconf --create-socketdir if available.
1069 GnuPG has a facility to use sockets in /run or /var/run to avoid
1070 problems with long socket paths, but this is not enabled by default
1071 for GNUPGHOME other than $HOME/.gnupg. Enable it, if possible.
1073 Notmuch 0.23.5 (2017-01-09)
1074 ===========================
1079 Fix quoting bug in configure. This had introduced a RUNPATH into the
1080 notmuch binary in cases where it was not not needed.
1082 Notmuch 0.23.4 (2016-12-24)
1083 ===========================
1085 Command Line Interface
1086 ----------------------
1088 Improve error handling in notmuch insert
1090 Database lock errors no longer prevent message file delivery to the
1091 filesystem. Certain errors during `notmuch insert` most likely to
1092 be temporary return EX_TEMPFAIL.
1097 Restore autoload cookie for notmuch-search.
1099 Notmuch 0.23.3 (2016-11-27)
1100 ===========================
1102 Command Line Interface
1103 ----------------------
1105 Treat disappearing files during notmuch new as non-fatal.
1110 Fix incompatibility (related to signature size) with gnupg 2.1.16.
1112 Notmuch 0.23.2 (2016-11-20)
1113 ===========================
1118 Fix notmuch-interesting-buffer and notmuch-cycle-notmuch-buffers.
1120 notmuch-tree-mode and notmuch-message-mode buffers are now
1121 considered interesting by `notmuch-interesting-buffer` and
1122 `notmuch-cycle-notmuch-buffers`.
1124 Restore compatibility with Emacs 23.
1126 Notmuch support for Emacs 23 is now deprecated.
1128 Notmuch 0.23.1 (2016-10-23)
1129 ===========================
1134 Require Xapian >= 1.2.6
1136 The ifdef branch for older Xapian (pre-compact API) had bit-rotted.
1141 Fix default colours for unread and flagged messages
1143 In 0.23 the default colours for unread and flagged messages in
1144 search view were accidentally swapped. This release returns them to
1145 the original colours.
1147 A related change in 0.23 broke the customize widget for
1148 notmuch-search-line-faces. This is now fixed.
1150 Fix test failure with Emacs 25.1
1152 A previously undiscovered jit-lock related bug was exposed by Emacs
1153 25, causing a notmuch-show mode test to fail. This release fixes the
1154 bug, and hence the test.
1156 Notmuch 0.23 (2016-10-03)
1157 =========================
1159 General (Xapian 1.4+)
1160 ---------------------
1162 Compiling against Xapian 1.4 enables several new features.
1164 Support for single argument date: queries
1166 `date:<expr>` is equivalent to `date:<expr>..<expr>`.
1168 Support for blocking opens
1170 When opening a database notmuch by default will wait for another
1171 process to release a write lock, rather than returning an error.
1173 Support for named queries
1175 Named queries (also known as 'saved searches') can be defined with a
1176 `query:name` format. The expansion of these queries is stored in the
1177 database and they can be used from any notmuch client.
1182 Message property API
1184 libnotmuch now supports the attachment of arbitrary key-value pairs
1185 to messages. These can be used by various tools to manage their
1186 private data without polluting the user tag space. They also support
1187 iteration of values with the same key or same key prefix.
1189 Bug fix for `notmuch_directory_set_mtime`
1191 Update cached mtime to match on-disk mtime.
1196 Support for compile time options
1198 A group of `built_with` keys is now supported for notmuch
1199 config. Initial keys in this group are `compact`, `field_processor`,
1202 Dump/Restore support for configuration information and properties
1204 Any configuration information stored in the database (initially just
1205 named queries) is dumped and restored. Similarly any properties
1206 attached to messages are also dumped and restored. Any new
1207 information in the dump format is prefixed by '#' to allow existing
1208 scripts to ignore it.
1213 Make notmuch-message-mode use insert for fcc
1215 Notmuch-message-mode now defaults to using notmuch insert for
1216 fcc. The old file based fcc behaviour can be restored by setting the
1217 defcustom `notmuch-maildir-use-notmuch-insert` to nil.
1219 When using notmuch insert, `notmuch-fcc-dirs` must be a subdirectory
1220 of the mailstore (absolute paths are not permitted) followed by any
1221 tag changes to be applied to the inserted message. The tag changes
1222 are applied after the default tagging for new messages. For example
1223 setting the header to "sentmail -inbox +sent" would insert the
1224 message in the subdirectory sentmail of the mailstore, add the tag
1225 "sent", and not add the (normally added) "inbox" tag.
1227 Finally, if the insert fails (e.g. if the database is locked) the
1228 user is presented with the option to retry, ignore, or edit the
1231 Make internal address completion customizable
1233 There is a new defcustom `notmuch-address-internal-completion` which
1234 controls how the internal completion works: it allows the user to
1235 choose whether to match on messages the user sent, or the user
1236 received, and to filter the messages used for the match, for example
1239 Allow internal address completion on an individual basis
1241 There is a new function `notmuch-address-toggle-internal-completion`
1242 (by default it has no keybinding) which allows users who normally
1243 use an external completion command to use the builtin internal
1244 completion for the current buffer.
1246 Alternatively, if the user has company-mode enabled, then the user
1247 can use company mode commands such as `company-complete` to
1248 activate the builtin completion for an individual completion.
1252 The function `notmuch-show-resend-message` (bound to `b` in show
1253 and tree modes) will (attempt to) send current message to new
1254 recipients. The headers of the message won't be altered (e.g. `To:`
1255 may point to yourself). New `Resent-To:`, `Resent-From:` and so on
1256 will be added instead.
1258 Face customization is easier
1260 New faces `notmuch-tag-unread`, `notmuch-tag-flagged`,
1261 `notmuch-tag-deleted`, `notmuch-tag-added`,
1262 `notmuch-search-flagged-face` and `notmuch-search-unread-face` are
1263 now used by default. Customize `notmuch-faces` to modify them.
1265 Omit User-Agent header by default when sending mail
1270 Add support for `notmuch_database_get_all_tags`
1275 Go bindings moved to contrib
1277 Add support for `notmuch_threads_t` and `notmuch_thread_t`
1279 Fixed constant values so they are not all zero anymore
1281 Previously, it was impossible to open writable database handles,
1282 because `DATABASE_MODE_READ_ONLY` and `DATABASE_MODE_READ_WRITE` were
1284 The same issue occurred with sort modes.
1286 Notmuch 0.22.2 (2016-09-08)
1287 ===========================
1294 Have gdb write to a log file instead of stdout, hiding some more
1295 (harmless) stderr chatter which causes test failures.
1297 Hardcode fingerprint in PGP/MIME tests
1299 Make the tests more robust against changing GnuPG output formats.
1301 Notmuch 0.22.1 (2016-07-19)
1302 ===========================
1307 Correct the definition of `LIBNOTMUCH_CHECK_VERSION`.
1309 Document the (lack of) operations permitted on a closed database.
1314 Fix race condition in dump / restore tests.
1319 Use `env` to locate perl.
1324 Tell `message-mode` mode that outgoing messages are mail
1326 This makes message-mode configuration behave more predictably.
1328 Respect charset of MIME parts when reading them
1330 Fix previous assumption that everyone uses UTF-8.
1332 Notmuch 0.22 (2016-04-26)
1333 =========================
1340 Notmuch should now build (and the test suite should pass) on recent
1341 releases of Xapian 1.3.x. It has been tested with Xapian 1.3.5.
1343 Limited support for S/MIME messages
1345 Signature verification is supported, but not decryption. S/MIME
1346 signature creation and S/MIME encryption are supported via built-in
1347 support in Emacs. S/MIME support is not extensively tested at this
1352 Fix for threading bug involving deleting and re-adding
1353 messages. Fix for case-sensitive content disposition headers. Fix
1354 handling of 1 character directory names at top level.
1356 Command Line Interface
1357 ----------------------
1359 `notmuch show` now supports verifying S/MIME signatures
1361 This support relies on an appropriately configured `gpgsm`.
1366 Drop dependency on "pkg-config emacs".
1371 Notmuch replies now include all parts shown in the show view
1373 There are two main user visible changes. The first is that rfc822
1374 parts are now included in replies.
1376 The second change is that part headers are now included in the reply
1377 buffer to provide visible separation of the parts. The choice of
1378 which part headers to show is customizable via the variable
1379 `notmuch-mua-reply-insert-header-p-function`.
1381 Filtering or Limiting messages is now bound to `l` in the search view
1383 This binding now matches the analogous binding in show view.
1385 `F` forwards all open messages in a thread
1387 When viewing a thread of messages, the new binding `F` can be used
1388 to generate a new outgoing message which forwards all of the open
1389 messages in the thread. This is analogous to the `f` binding, which
1390 forwards only the current message.
1392 Preferred content type can be determined from the message content
1394 More flexibility in choosing which sub-part of a
1395 multipart/alternative part is initially shown is available by
1396 setting `notmuch-multipart/alternative-discouraged` to a function
1397 that returns a list of discouraged types. The function so specified
1398 is passed the message as an argument and can examine the message
1399 content to determine which content types should be discouraged. This
1400 is in addition to the current capabilities (i.e. setting
1401 `notmuch-multipart/alternative-discouraged` to a list of discouraged
1404 When viewing a thread ("show" mode), queries that match no messages no
1405 longer generate empty buffers
1407 Should an attempt be made to view the thread corresponding to a
1408 query that matches no messages, a warning message is now displayed
1409 and the terminal bell rung rather than displaying an empty buffer
1410 (or, in some cases, displaying an empty buffer and throwing an
1411 error). This also affects re-display of the current thread.
1413 Handle S/MIME signatures in emacs
1415 The emacs interface is now capable making and verifying S/MIME
1418 `notmuch-message-address-insinuate` is now a no-op
1420 This reduces the amount of interference with non-notmuch uses of
1423 Address completion improvements
1425 An external script is no longer needed for address completion; if
1426 you previously configured one, customize the variable
1427 `notmuch-address-command` to try the internal completion. If
1428 `company-mode` is available, notmuch uses it by default for
1429 interactive address completion.
1431 Test and experiment with the emacs MUA available in source tree
1433 `./devel/try-emacs-mua` runs emacs and fills the window with
1434 information how to try the MUA safely. Emacs is configured to use
1435 the notmuch (lisp) files located in `./emacs` directory.
1440 New `notmuch-report(1)` and `notmuch-report.json(5)` man pages
1441 describe `notmuch-report` and its JSON configuration file. You can
1442 build these files by running `make` in the `devel/nmbug/doc`
1448 Renamed from `nmbug-status`. This script generates reports based on
1449 notmuch queries, and doesn't really have anything to do with nmbug,
1450 except for sharing the `NMBGIT` environment variable. The new name
1451 focuses on the script's action, instead of its historical association
1452 with the nmbug workflow. This should make it more discoverable for
1453 users looking for generic notmuch reporting tools.
1455 The default configuration file name (extracted from the `config`
1456 branch of `NBMGIT` has changed from `status-config.json` to
1457 `notmuch-report.json` so it is more obviously associated with the
1458 report-generating script. The configuration file also has a new
1459 `meta.message-url` setting, which is documented in
1460 `notmuch-report.json(5)`.
1462 `notmuch-report` now wraps query phrases in parentheses when and-ing
1463 them together, to avoid confusion about clause grouping.
1465 Notmuch 0.21 (2015-10-29)
1466 =========================
1471 Notmuch now requires gmime >= 2.6.7. The gmime 2.4 series is no longer
1474 Database revision tracking: `lastmod:` queries
1476 Each message now has a metadata revision number that increases with
1477 every tagging operation. See the discussion of `lastmod:` in
1478 `notmuch-search-terms(7)` for more information.
1480 Date queries now support `date:<expr>..!` shorthand for
1481 `date:<expr>..<expr>`
1483 You can use, for example, `date:yesterday..!` to match from the
1484 beginning of yesterday to the end of yesterday. For further details,
1485 please refer to the `notmuch-search-terms` manual page.
1487 Notmuch database upgrade to support `lastmod:` queries
1489 The above mentioned `lastmod:` prefix. This will be done
1490 automatically, without prompting on the next time `notmuch new` is
1491 run after the upgrade. The upgrade is not reversible, and the
1492 upgraded database will not be readable by older versions of
1493 Notmuch. As a safeguard, a database dump will be created in the
1494 `.notmuch` directory before upgrading.
1499 The ruby bindings are now built as part of the main notmuch build
1500 process. This can be disabled with the `--without-ruby` option to
1503 Building the documentation can be disabled with the `--without-docs`
1504 option to configure.
1506 Skipped individual tests are no longer considered as failures.
1508 Command Line Interface
1509 ----------------------
1511 Database revision tracking
1513 Two new options were added to support revision tracking. A global
1514 option "--uuid" (`notmuch(1)`) was added for to detect counter
1515 rollover and reinitialization, and `notmuch-count(1)` gained a
1516 `--lastmod` option to query database revision tracking data.
1518 The `notmuch address` command supports new deduplication schemes
1520 `notmuch address` has gained a new `--deduplicate` option to specify
1521 how the results should be deduplicated, if at all. The alternatives
1522 are `no` (do not deduplicate, useful for processing the results with
1523 external tools), `mailbox` (deduplicate based on the full, case
1524 sensitive name and email address), and `address` (deduplicate based
1525 on the case insensitive address part). See the `notmuch-address`
1526 manual page for further information.
1531 `notmuch-emacs-version` is used in `User-Agent` header
1533 The value of recently introduced variable `notmuch-emacs-version` is
1534 now used as a part of `User-Agent` header when sending emails.
1536 Removed `notmuch-version` function by renaming it to `notmuch-cli-version`
1538 With existing variable `notmuch-emacs-version` the accompanied
1539 function which retrieves the version of `notmuch-command` is
1540 better named as `notmuch-cli-version`.
1542 Query input now supports completion for "is:<tag>"
1544 New message composition mode: `notmuch-compose-mode`
1546 This is mainly to fix fcc handling, but may be useful for user
1547 customization as well.
1549 Allow filtering of search results in `notmuch-show`
1551 Add function to rerun current tree-view search in search mode
1553 Bug fix for replying to encrypted messages in `notmuch-tree` mode
1555 Allow saved searched to specify tree view rather than search view
1557 Applies to saved searches run from `notmuch-hello`, or by a keyboard
1558 shortcut (`notmuch-jump`). Can be set in the customize interface, or
1559 by adding :search-type tree to the appropriate saved search plist in
1560 `notmuch-saved-searches`.
1562 Increase maximum size of rendered text parts
1564 The variable `notmuch-show-max-text-part-size` controls the maximum
1565 size (in bytes) which is automatically rendered. This may make
1566 rendering large threads slower. To get the previous behaviour set
1567 this variable to 10000.
1572 The use of absolute paths is now enforced when calling
1573 `notmuch_database_{open, create}`
1575 New function `notmuch_directory_delete` to delete directory documents
1577 Previously there was no way to delete directory documents from the
1578 database, leading to confusing results when the "ghost" directory
1579 document of a renamed or deleted filesystem directory was
1580 encountered every time the parent directory was being scanned by
1581 `notmuch new`. The mtime of the old directory document was also used
1582 if a directory by the same name was added again in the filesystem,
1583 potentially bypassing the scan for the directory. The issues are
1584 fixed by providing a library call to delete directory documents, and
1585 deleting the old documents in `notmuch new` on filesystem directory
1588 Database revision tracking
1590 Revision tracking is supported via a new prefix "lastmod:" in the
1591 query parser and the new function
1592 `notmuch_database_get_revision`. For the latter, see `notmuch(3)`.
1594 New status code returning API for n_query_count_{messages,threads}
1596 Deprecated functions
1598 `notmuch_query_search_threads`, `notmuch_query_search_messages`,
1599 `notmuch_query_count_messages`, and `notmuch_query_count_threads`
1600 are all deprecated as of this release. Clients are encouraged to
1601 transition to the `_st` variants supporting better error reporting.
1606 `nmbug-status` now supports specifying the sort order for each view.
1608 Notmuch 0.20.2 (2015-06-27)
1609 ===========================
1614 Bug fix for marking messages read in `notmuch-tree` mode.
1616 Notmuch 0.20.1 (2015-06-01)
1617 ===========================
1622 Work around apparent gdb bug on arm64.
1624 Notmuch 0.20 (2015-05-31)
1625 =========================
1627 Command-Line Interface
1628 ----------------------
1630 There is a new `mimetype:` search prefix
1632 The new `mimetype:` search prefix allows searching for the
1633 content-type of attachments, which is now indexed. See the
1634 `notmuch-search-terms` manual page for details.
1636 Path to gpg is now configurable
1638 On systems with multiple versions of gpg, you can tell
1639 notmuch which one to use by setting `crypto.gpg_path`
1644 Avoid rendering large text attachments.
1646 Improved rendering of CID references in HTML.
1651 Vim client now respects excluded tags.
1656 Support messages without Message-IDs.
1661 Undeprecate single message mboxes
1663 It seems more trouble to remove this feature than expected, so
1664 `notmuch new` will no longer nag about mboxes with a single message.
1666 New error logging facility
1668 Clients should call `notmuch_database_status_string` to retrieve
1669 output formerly printed to stderr.
1671 Several bug fixes related to stale iterators
1673 New status code returning API for n_query_search_{messages,thread}
1675 Fix for library `install_name` on Mac OS X
1677 Fix for rounding of seconds
1682 Sphinx is now mandatory to build docs
1684 Support for using rst2man in place of sphinx to build the
1685 documentation has been removed.
1687 Improved notmuch-search-terms.7
1689 The man page `notmuch-search-terms(7)` has been extended, merging
1690 some material from the relicensed wiki.
1695 `notmuch-deliver` is removed. As far as we know, all functionality
1696 previously provided by `notmuch-deliver` should now be provided by
1697 `notmuch insert`, provided by the main notmuch binary.
1702 `nmbug-status` now only matches local branches when reading
1703 `status-config.json` from the `config` branch of the `NMBGIT`
1704 repository. To help new users running `nmbug-status`, `nmbug clone`
1705 now creates a local `config` branch tracking `origin/config`. Folks
1706 who use `nmbug-status` with an in-Git config (i.e. you don't use the
1707 `--config` option) who already have `NMBGIT` set up are encouraged to
1710 git checkout config origin/config
1712 in their `NMBGIT` repository (usually `~/.nmbug`).
1714 Notmuch 0.19 (2014-11-14)
1715 =========================
1720 This release improves the reliability of `notmuch dump` and the error
1721 handling for `notmuch insert`. The new `notmuch address` command is
1722 intended to make searching for email addresses more convenient. At the
1723 library level the revised handling of missing messages fixes at least
1724 one bug in threading. The release also includes several interface
1725 improvements to the emacs interface, most notably the ability to bind
1726 keyboard shortcuts to saved searches.
1728 Command-Line Interface
1729 ----------------------
1731 Stopped `notmuch dump` failing if someone writes to the database
1733 The dump command now takes the write lock when running. This
1734 prevents other processes from writing to the database during the
1735 dump which would cause the dump to fail. Note, if another notmuch
1736 process already has the write lock the dump will not start, so
1737 script callers should still check the return value.
1739 `notmuch insert` requires successful message indexing for success status
1741 Previously the `notmuch insert` subcommand indicated success even if
1742 the message indexing failed, as long as the message was delivered to
1743 file system. This could have lead to delivered messages missing
1744 tags, etc. `notmuch insert` is now more strict, also requiring
1745 successful indexing for success status. Use the new `--keep` option
1746 to revert to the old behaviour (keeping the delivered message file
1747 and returning success even if indexing fails).
1749 `notmuch insert` has gained support for `post-insert` hook
1751 The new `post-insert` hook is run after message delivery, similar to
1752 `post-new`. There's also a new option `notmuch insert --no-hooks` to
1753 skip the hook. See the notmuch-hooks(1) man page for details.
1755 `notmuch deliver` is deprecated
1757 With this release we believe that `notmuch insert` has reached
1758 parity with `notmuch deliver`. We recommend that all users of
1759 `notmuch deliver` switch to `notmuch insert` as the former is
1760 currently unmaintained.
1762 `notmuch search` now supports `--duplicate=N` option with `--output=messages`
1764 Complementing the `notmuch search --duplicate=N --output=files`
1765 options, the new `--duplicate=N --output=messages` combination
1766 limits output of message IDs to messages matching search terms that
1767 have at least `N` files associated with them.
1769 Added `notmuch address` subcommand
1771 This new subcommand searches for messages matching the given search
1772 terms, and prints the addresses from them. Duplicate addresses are
1773 filtered out. The `--output` option controls which of the following
1774 information is printed: sender addresses, recipient addresses and
1775 count of duplicate addresses.
1780 Use the `j` key to access saved searches from anywhere in notmuch
1782 `j` is now globally bound to `notmuch-jump`, which provides fast,
1783 interactive keyboard shortcuts to saved searches. For example,
1784 with the default saved searches `j i` from anywhere in notmuch will
1787 Improved handling of the unread tag
1789 Notmuch now marks an open message read (i.e., removes the unread
1790 tag) if point enters the message at any time in a show buffer
1791 regardless of how point got there (mouse click, cursor command, page
1792 up/down, notmuch commands such as n,N etc). This fixes various
1793 anomalies or bugs in the previous handling. Additionally it is
1794 possible to customize the mark read handling by setting
1795 `notmuch-show-mark-read-function` to a custom function.
1797 Expanded default saved search settings
1799 The default saved searches now include several more common searches,
1800 as well as shortcut keys for `notmuch-jump`.
1802 Improved `q` binding in notmuch buffers
1804 `q` will now bury rather than kill a notmuch search, show or tree
1805 buffer if there are multiple windows showing the buffer. If only a
1806 single window is showing the buffer, it is killed.
1808 `notmuch-show-stash-mlarchive-link-alist` now supports functions
1810 Some list archives may use a more complicated scheme for referring
1811 to messages than just concatenated URL and message ID. For example,
1812 patchwork requires a query to translate message ID to a patchwork
1813 patch ID. `notmuch-show-stash-mlarchive-link-alist` now supports
1814 functions to better cover such cases. See the help documentation for
1815 the variable for details.
1820 Introduced database version 3 with support for "database features."
1822 Features are independent aspects of the database schema.
1823 Representing these independently of the database version number will
1824 let us evolve the database format faster and more incrementally,
1825 while maintaining better forwards and backwards compatibility.
1827 Library users are no longer required to call `notmuch_database_upgrade`
1829 Previously, library users were required to call
1830 `notmuch_database_needs_upgrade` and `notmuch_database_upgrade`
1831 before using a writable database. Even the CLI didn't get this
1832 right, and it is no longer required. Now, individual APIs may
1833 return `NOTMUCH_STATUS_UPGRADE_REQUIRED` if the database format is
1834 too out of date for that API.
1836 Library users can now abort an atomic section by closing the database
1838 Previously there was no supported way to abort an atomic section.
1839 Callers can now simply close the database, and any outstanding
1840 atomic section will be aborted.
1842 Add return status to `notmuch_database_close` and
1843 `notmuch_database_destroy`
1845 Bug fixes and performance improvements for thread linking
1847 The database now represents missing-but-referenced messages ("ghost
1848 messages") similarly to how it represents regular messages. This
1849 enables an improved thread linking algorithm that performs better
1850 and fixes a bug that sometimes prevented notmuch from linking
1851 messages into the same thread.
1856 The Perl script has been translated to Python; you'll need Python 2.7
1857 or anything from the 3.x line. Most of the user-facing interface is
1858 the same, but `nmbug help` is now `nmbug --help`, and the following nmbug
1859 commands have slightly different interfaces: `archive`, `commit`,
1860 `fetch`, `log`, `pull`, `push`, and `status`. For details on the
1861 new interface for a given command, run `nmbug COMMAND --help`.
1866 `nmbug-status` can now optionally load header and footer templates
1867 from the config file. Use something like:
1871 "header": "<!DOCTYPE html>\n<html lang="en">\n...",
1872 "footer": "</body></html>",
1881 Add support for `notmuch_query_add_tag_exclude`
1886 The notmuch binaries and libraries are now build with debugging symbols
1887 by default. Users concerned with disk space should change the
1888 defaults when configuring or use the strip(1) command.
1890 Notmuch 0.18.2 (2014-10-25)
1891 ===========================
1896 Translate T380-atomicity to use gdb/python
1898 The new version is compatible with gdb 7.8
1900 Emacs 24.4 related bug fixes
1902 The Messages buffer became read-only, and the generated mime
1903 structure for signatures changed slightly.
1905 Simplify T360-symbol-hiding
1907 Replace the use of `objdump` on the object files with `nm` on the
1910 Notmuch 0.18.1 (2014-06-25)
1911 ===========================
1913 This is a bug fix and portability release.
1918 Add a workaround for systems without zlib.pc
1920 Make emacs install robust against the non-existence of emacs
1922 Put notmuch lib directory first in RPATH
1924 Fix handling of `html_static_path` in sphinx
1926 Both the python bindings and the main docs had spurious settings of
1932 Use --quick when starting emacs
1934 This avoids a hang in the T160-json tests.
1936 Allow pending break points in atomicity script
1938 This allows the atomicity tests to run on several more architectures/OSes.
1940 Command-Line Interface
1941 ----------------------
1943 To improve portability use fsync instead of fdatasync in
1944 `notmuch-dump`. There should be no functional difference.
1949 Resurrect support for single-message mbox files
1951 The removal introduced a bug with previously indexed single-message
1952 mboxes. This support remains deprecated.
1954 Fix for phrase indexing
1956 There were several bugs where words intermingled from different
1957 headers and MIME parts could match a single phrase query. This fix
1958 will affect only newly indexed messages.
1963 Make sure tagging on an empty query is harmless
1965 Previously tagging an empty query could lead to tags being
1966 unintentionally removed.
1968 Notmuch 0.18 (2014-05-06)
1969 =========================
1974 This new release includes some enhancements to searching for messages
1975 by filesystem location (`folder:` and `path:` prefixes under *General*
1976 below). Saved searches in *Emacs* have also been enhanced to allow
1977 distinct search orders for each one. Another enhancement to the
1978 *Emacs* interface is that replies to encrypted messages are now
1979 encrypted, reducing the risk of unintentional information disclosure.
1980 The default dump output format has changed to the more robust
1981 `batch-tag` format. The previously deprecated parsing of single
1982 message mboxes has been removed. For detailed release notes, see
1988 The `folder:` search prefix now requires an exact match
1990 The `folder:` prefix has been changed to search for email messages
1991 by the exact, case sensitive maildir or MH folder name. Wildcard
1992 matching (`folder:foo*`) is no longer supported. The new behaviour
1993 allows for more accurate mail folder based searches, makes it
1994 possible to search for messages in the top-level folder, and should
1995 lead to less surprising results than the old behaviour. Users are
1996 advised to see the `notmuch-search-terms` manual page for details,
1997 and review how the change affects their existing `folder:` searches.
1999 There is a new `path:` search prefix
2001 The new `path:` search prefix complements the `folder:` prefix. The
2002 `path:` prefix searches for email messages that are in particular
2003 directories within the mail store, optionally recursively using a
2004 special syntax. See the `notmuch-search-terms` manual page for
2007 Notmuch database upgrade due to `folder:` and `path:` changes
2009 The above mentioned changes to the `folder:` prefix and the addition
2010 of `path:` prefix require a Notmuch database upgrade. This will be
2011 done automatically, without prompting on the next time `notmuch new`
2012 is run after the upgrade. The upgrade is not reversible, and the
2013 upgraded database will not be readable by older versions of
2014 Notmuch. As a safeguard, a database dump will be created in the
2015 `.notmuch` directory before upgrading.
2020 Notmuch database upgrade
2022 The libnotmuch consumers are reminded to handle database upgrades
2023 properly, either by relying on running `notmuch new`, or checking
2024 `notmuch_database_needs_upgrade()` and calling
2025 `notmuch_database_upgrade()` as necessary. This has always been the
2026 case, but in practise there have been no database upgrades in any
2027 released version of Notmuch before now.
2029 Support for indexing mbox files has been dropped
2031 There has never been proper support for mbox files containing
2032 multiple messages, and the support for single-message mbox files has
2033 been deprecated since Notmuch 0.15. The support has now been
2034 dropped, and all mbox files will be rejected during indexing.
2036 Message header parsing changes
2038 Notmuch previously had an internal parser for message headers. The
2039 parser has now been dropped in favour of letting GMime parse both
2040 the headers and the message MIME structure at the same pass. This is
2041 mostly an internal change, but the GMime parser is stricter in its
2042 interpretation of the headers. This may result in messages with
2043 slightly malformed message headers being now rejected.
2045 Command-Line Interface
2046 ----------------------
2048 `notmuch dump` now defaults to `batch-tag` format
2050 The old format is still available with `--format=sup`.
2052 `notmuch new` has a --quiet option
2054 This option suppresses the progress and summary reports.
2056 `notmuch insert` respects maildir.synchronize_flags config option
2058 Do not synchronize tags to maildir flags in `notmuch insert` if the
2059 user does not want it.
2061 The commands set consistent exit status codes on failures
2063 The cli commands now consistently set exit status of 1 on failures,
2064 except where explicitly otherwise noted. The notable exceptions are
2065 the status codes for format version mismatches for commands that
2066 support formatted output.
2068 Bug fix for checking configured new.tags for invalid tags
2070 `notmuch new` and `notmuch insert` now check the user configured
2071 new.tags for invalid tags, and refuse to apply them, similar to
2072 `notmuch tag`. Invalid tags are currently the empty string and tags
2080 If the file pointed by new variable `notmuch-init-file` (typically
2081 `~/.emacs.d/notmuch-config.el`) exists, it is loaded at the end of
2082 `notmuch.el`. Users can put their personal notmuch emacs lisp based
2083 configuration/customization items there instead of filling
2084 `~/.emacs` with these.
2086 Changed format for saved searches
2088 The format for `notmuch-saved-searches` has changed, but old style
2089 saved searches are still supported. The new style means that a saved
2090 search can store the desired sort order for the search, and it can
2091 store a separate query to use for generating the count notmuch
2094 The variable is fully customizable and any configuration done
2095 through customize should *just work*, with the additional options
2096 mentioned above. For manual customization see the documentation for
2097 `notmuch-saved-searches`.
2099 IMPORTANT: a new style notmuch-saved-searches variable will break
2100 previous versions of notmuch-emacs (even search will not work); to
2101 fix remove the customization for notmuch-saved-searches.
2103 If you have a custom saved search sort function (not unsorted or
2104 alphabetical) then the sort function will need to be
2105 modified. Replacing (car saved-search) by (notmuch-saved-search-get
2106 saved-search :name) and (cdr saved-search) by
2107 (notmuch-saved-search-get saved-search :query) should be sufficient.
2109 The keys of `notmuch-tag-formats` are now regexps
2111 Previously, the keys were literal strings. Customized settings of
2112 `notmuch-tag-formats` will continue to work as before unless tags
2113 contain regexp special characters like `.` or `*`.
2115 Changed tags are now shown in the buffer
2117 Previously tag changes made in a buffer were shown immediately. In
2118 some cases (particularly automatic tag changes like marking read)
2119 this made it hard to see what had happened (e.g., whether the
2120 message had been unread).
2122 The changes are now shown explicitly in the buffer: by default
2123 deleted tags are displayed with red strike-through and added tags
2124 are displayed underlined in green (inverse video is used for deleted
2125 tags if the terminal does not support strike-through).
2127 The variables `notmuch-tag-deleted-formats` and
2128 `notmuch-tag-added-formats`, which have the same syntax as
2129 `notmuch-tag-formats`, allow this to be customized.
2131 Setting `notmuch-tag-deleted-formats` to `'((".*" nil))` and
2132 `notmuch-tag-added-formats` to `'((".*" tag))` will give the old
2133 behavior of hiding deleted tags and showing added tags identically
2134 to tags already present.
2138 The new, build-time generated variable `notmuch-emacs-version` is used
2139 to distinguish between notmuch cli and notmuch emacs versions.
2140 The function `notmuch-hello-versions` (bound to 'v' in notmuch-hello
2141 window) prints both notmuch cli and notmuch emacs versions in case
2142 these differ from each other.
2143 This is especially useful when using notmuch remotely.
2145 Ido-completing-read initialization in Emacs 23
2147 `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless
2148 it is initialized. Defadvice-based *Ido* initialization is defined
2149 for these Emacs versions.
2151 Bug fix for saved searches with newlines in them
2153 Split lines confuse `notmuch count --batch`, so we remove embedded
2154 newlines before calling notmuch count.
2156 Bug fixes for sender identities
2158 Previously, Emacs would rewrite some sender identities in unexpected
2159 and undesirable ways. Now it will use identities exactly as
2160 configured in `notmuch-identities`.
2162 Replies to encrypted messages will be encrypted by default
2164 In the interest of maintaining confidentiality of communications,
2165 the Notmuch Emacs interface now automatically adds the mml tag to
2166 encrypt replies to encrypted messages. This should make it less
2167 likely to accidentally reply to encrypted messages in plain text.
2169 Reply pushes mark before signature
2171 We push mark and set point on reply so that the user can easily cut
2172 the quoted text. The mark is now pushed before the signature, if
2173 any, instead of end of buffer so the signature is preserved.
2175 Message piping uses the originating buffer's working directory
2177 `notmuch-show-pipe-message` now uses the originating buffer's
2178 current default directory instead of that of the `*notmuch-pipe*`
2184 nmbug adds a `clone` command for setting up the initial repository and
2185 uses `@{upstream}` instead of `FETCH_HEAD` to track upstream changes.
2187 The `@{upstream}` change reduces ambiguity when fetching multiple
2188 branches, but requires existing users update their `NMBGIT`
2189 repository (usually `~/.nmbug`) to distinguish between local and
2190 remote-tracking branches. The easiest way to do this is:
2192 1. If you have any purely local commits (i.e. they aren't in the
2193 nmbug repository on nmbug.tethera.net), push them to a remote
2194 repository. We'll restore them from the backup in step 4.
2195 2. Remove your `NMBGIT` repository (e.g. `mv .nmbug .nmbug.bak`).
2196 3. Use the new `clone` command to create a fresh clone:
2198 nmbug clone https://nmbug.notmuchmail.org/git/nmbug-tags.git
2200 4. If you had local commits in step 1, add a remote for that
2201 repository and fetch them into the new repository.
2203 Notmuch 0.17 (2013-12-30)
2204 =========================
2206 Incompatible change in SHA1 computation
2207 ---------------------------------------
2209 Previously on big endian architectures like sparc and powerpc the
2210 computation of SHA1 hashes was incorrect. This meant that messages
2211 with overlong or missing message-ids were given different computed
2212 message-ids than on more common little endian architectures like i386
2213 and amd64. If you use notmuch on a big endian architecture, you are
2214 strongly advised to make a backup of your tags using `notmuch dump`
2215 before this upgrade. You can locate the affected files using something
2219 awk '/^notmuch-sha1-[0-9a-f]{40} / \
2220 {system("notmuch search --exclude=false --output=files id:" $1)}'
2222 Command-Line Interface
2223 ----------------------
2225 New options to better support handling duplicate messages
2227 If more than one message file is associated with a message-id,
2228 `notmuch search --output=files` will print all of them. A new
2229 `--duplicate=N` option can be used to specify which duplicate to
2230 print for each message.
2232 `notmuch count` now supports `--output=files` option to output the
2233 number of files associated with matching messages. This may be
2234 bigger than the number of matching messages due to duplicates
2235 (i.e. multiple files having the same message-id).
2237 Improved `notmuch new` performance for unchanged folders
2239 `notmuch new` now skips over unchanged folders more efficiently,
2240 which can substantially improve the performance of checking for new
2241 mail in some situations (like NFS-mounted Maildirs).
2243 `notmuch reply --format=text` RFC 2047-encodes headers
2245 Previously, this used a mix of standard MIME encoding for the reply
2246 body and UTF-8 for the headers. Now, the text format reply template
2247 RFC 2047-encodes the headers, making the output a valid RFC 2822
2248 message. The JSON/sexp format is unchanged.
2250 `notmuch compact` command
2252 The new `compact` command exposes Xapian's compaction
2253 functionality through a more convenient interface than
2254 `xapian-compact`. `notmuch compact` will compact the database to a
2255 temporary location, optionally backup the original database, and
2256 move the compacted database into place.
2261 `notmuch-tree` (formerly `notmuch-pick`) has been added to mainline
2263 `notmuch-tree` is a threaded message view for the emacs
2264 interface. Each message is one line in the results and the thread
2265 structure is shown using UTF-8 box drawing characters (similar to
2266 Mutt's threaded view). It comes between search and show in terms of
2267 amount of output and can be useful for viewing both single threads
2268 and multiple threads.
2270 Using `notmuch-tree`
2272 The main key entries to notmuch tree are
2274 'z' enter a query to view using notmuch tree (works in hello,
2275 search, show and tree mode itself)
2277 'Z' view the current query in tree notmuch tree (works from search
2280 Once in tree mode, keybindings are mostly in line with the rest of
2281 notmuch and are all viewable with '?' as usual.
2283 Customising `notmuch-tree`
2285 `notmuch-tree` has several customisation variables. The most
2286 significant is the first notmuch-tree-show-out which determines the
2287 behaviour when selecting a message (with RET) in tree view. By
2288 default tree view uses a split window showing the single message in
2289 the bottom pane. However, if this option is set then it views the
2290 whole thread in the complete window jumping to the selected message
2291 in the thread. In either case command-prefix selects the other option.
2293 Tagging threads in search is now race-free
2295 Previously, adding or removing a tag from a thread in a search
2296 buffer would affect messages that had arrived after the search was
2297 performed, resulting in, for example, archiving messages that were
2298 never seen. Tagging now affects only the messages that were in the
2299 thread when the search was performed.
2301 `notmuch-hello` refreshes when switching to the buffer
2303 The hello buffer now refreshes whenever you switch to the buffer,
2304 regardless of how you get there. You can disable automatic
2305 refreshing by customizing `notmuch-hello-auto-refresh`.
2307 Specific mini-buffer prompts for tagging operations
2309 When entering tags to add or remove, the mini-buffer prompt now
2310 indicates what operation will be performed (e.g., "Tag thread", "Tag
2313 Built-in help improvements
2315 Documentation for many commands has been improved, as displayed by
2316 `notmuch-help` (usually bound to "?"). The bindings listed by
2317 `notmuch-help` also now include descriptions of prefixed commands.
2319 Quote replies as they are displayed in show view
2321 We now render the parts for reply quoting the same way they are
2322 rendered for show. At this time, the notable change is that replies
2323 to text/calendar are now pretty instead of raw vcalendar.
2325 Fixed inconsistent use of configured search order
2327 All ways of interactively invoking search now honor the value of
2328 `notmuch-search-oldest-first`.
2330 Common keymap for notmuch-wide bindings
2332 Several key bindings have been moved from mode-specific keymaps to
2333 the single `notmuch-common-keymap`, which is inherited by each
2334 notmuch mode. If you've customized your key bindings, you may want
2335 to move some of them to the common keymap.
2337 The `notmuch-tag` function now requires a list of tag changes
2339 For users who have scripted the Emacs interface: the `notmuch-tag`
2340 API has changed. Previously, it accepted either a list of tag
2341 changes or a space-separated string of tag changes. The latter is
2342 no longer supported and the function now returns nothing.
2344 Fixed `notmuch-reply` putting reply in primary selection
2346 On emacs 24 notmuch-reply used to put the cited text into the
2347 primary selection (which could lead to inadvertently pasting this
2348 cited text elsewhere). Now the primary-selection is not changed.
2350 Fixed `notmuch-show` invisible part handling
2352 In some obscure cases part buttons and invisibility had strange
2353 interactions: in particular, the default action for some parts gave
2354 the wrong action. This has been fixed.
2356 Fixed `notmuch-show` attachment viewers and stderr
2358 In emacs 24.3+ viewing an attachment could cause spurious text to
2359 appear in the show buffer (any stderr or stdout the viewer
2360 produced). By default this output is now discarded. For debugging,
2361 setting `notmuch-show-attachment-debug` causes notmuch to keep the
2362 viewer's stderr and stdout in a separate buffer.
2364 Fixed `notmuch-mua-reply` point placement when signature involved
2366 By restricting cursor movement to body section for cursor placement
2367 after signature is inserted, the cursor cannot "leak" to header
2368 section anymore. Now inserted citation content will definitely go to
2369 the body part of the message.
2374 It is now possible to compose new messages in the Vim interface, as
2375 opposed reply to existing messages. There is also support for
2376 going straight to a search (bypassing the folders view).
2378 Notmuch 0.16 (2013-08-03)
2379 =========================
2381 Command-Line Interface
2382 ----------------------
2384 Support for delivering messages to Maildir
2386 There is a new command `insert` that adds a message to a Maildir
2387 folder and notmuch index.
2389 `notmuch count --batch` option
2391 `notmuch count` now supports batch operations similar to `notmuch
2392 tag`. This is mostly an optimization for remote notmuch usage.
2394 `notmuch tag` option to remove all tags from matching messages
2396 `notmuch tag --remove-all` option has been added to remove all tags
2397 from matching messages. This can be combined with adding new tags,
2398 resulting in setting (rather than modifying) the tags of the
2401 Decrypting commands explicitly expect a gpg-agent
2403 Decryption in `notmuch show` and `notmuch reply` has only ever
2404 worked with a functioning gpg-agent. This is now made explicit in
2405 code and documentation. The functional change is that it's now
2406 possible to have gpg-agent running, but gpg "use-agent"
2407 configuration option disabled, not forcing the user to use the agent
2410 Configuration file saves follow symbolic links
2412 The notmuch commands that save the configuration file now follow
2413 symbolic links instead of overwrite them.
2415 Top level option to specify configuration file
2417 It's now possible to specify the configuration file to use on the
2418 command line using the `notmuch --config=FILE` option.
2420 Bash command-line completion
2422 The notmuch command-line completion support for the bash shell has
2423 been rewritten. Supported completions include all the notmuch
2424 commands, command-line arguments, values for keyword arguments,
2425 search prefixes (such as "subject:" or "from:") in all commands that
2426 use search terms, tags after + and - in `notmuch tag`, tags after
2427 "tag:" prefix, user's email addresses after "from:" and "to:"
2428 prefixes, and config options (and some config option values) in
2429 `notmuch config`. The new completion support depends on the
2430 bash-completion package.
2432 Deprecated commands "part" and "search-tags" are removed.
2437 New keymap to view/save parts; removed s/v/o/| part button bindings
2439 The commands to view, save, and open MIME parts are now prefixed
2440 with "." (". s" to save, ". v" to view, etc) and can be invoked with
2441 point anywhere in a part, unlike the old commands, which were
2442 restricted to part buttons. The old "s"/"v"/"o"/"|" commands on
2443 part buttons have been removed since they clashed with other
2444 bindings (notably "s" for search!) and could not be invoked when
2445 there was no part button. The new, prefixed bindings appear in
2446 show's help, so you no longer have to memorize them.
2448 Default part save directory is now `mm-default-directory`
2450 Previously, notmuch offered to save parts and attachments to a mix
2451 of `mm-default-directory`, `mailcap-download-directory`, and `~/`.
2452 This has been standardized on `mm-default-directory`.
2454 Key bindings for next/previous thread
2456 Show view has new key bindings M-n and M-p to move to the next and
2457 previous thread in the search results.
2459 Better handling of errors in search buffers
2461 Instead of interleaving errors in search result buffers, search mode
2462 now reports errors in the minibuffer.
2464 Faster search and show
2466 Communication between Emacs and the notmuch CLI is now more
2467 efficient because it uses the CLI's S-expression support. As a
2468 result, search mode should now fill search buffers faster and
2469 threads should show faster.
2473 The Emacs 22 support added late 2010 was sufficient only for a short
2474 period of time. After being incomplete for roughly 2 years the code
2475 in question was now removed from this release.
2480 The vim based front-end has been replaced with a new one that uses the Ruby
2481 bindings. The old font-end is available in the contrib subfolder.
2486 Fix loading of libnotmuch shared library on OS X (Darwin) systems.
2488 Notmuch 0.15.2 (2013-02-17)
2489 ===========================
2494 Update dependencies to avoid problems when building in parallel.
2496 Internal test framework changes
2497 -------------------------------
2499 Adjust Emacs test watchdog mechanism to cope with `process-attributes`
2500 being unimplemented.
2502 Notmuch 0.15.1 (2013-01-24)
2503 ===========================
2505 Internal test framework changes
2506 -------------------------------
2508 Set a default value for TERM when running tests. This fixes certain
2509 build failures in non-interactive environments.
2511 Notmuch 0.15 (2013-01-18)
2512 =========================
2517 Date range search support
2519 The `date:` prefix can now be used in queries to restrict the results
2520 to only messages within a particular time range (based on the Date:
2521 header) with a range syntax of `date:<since>..<until>`. Notmuch
2522 supports a wide variety of expressions in `<since>` and
2523 `<until>`. Please refer to the `notmuch-search-terms(7)` manual page
2526 Empty tag names and tags beginning with "-" are deprecated
2528 Such tags have been a frequent source of confusion and cause
2529 (sometimes unresolvable) conflicts with other syntax. notmuch tag
2530 no longer allows such tags to be added to messages. Removing such
2531 tags continues to be supported to allow cleanup of existing tags,
2532 but may be removed in a future release.
2534 Command-Line Interface
2535 ----------------------
2537 `notmuch new` no longer chokes on mboxes
2539 `notmuch new` now rejects mbox files containing more than one
2540 message, rather than treating the file as one giant message.
2542 Support for single message mboxes is deprecated
2544 For historical reasons, `notmuch new` will index mbox files
2545 containing a single message; however, this behavior is now
2546 officially deprecated.
2548 Fixed `notmuch new` to skip ignored broken symlinks
2550 `notmuch new` now correctly skips symlinks if they are in the
2551 ignored files list. Previously, it would abort when encountering
2552 broken symlink, even if it was ignored.
2554 New dump/restore format and tagging interface
2556 There is a new `batch-tag` format for dump and restore that is more
2557 robust, particularly with respect to tags and message-ids containing
2560 `notmuch tag` now supports the ability to read tag operations and
2561 queries from an input stream, in a format compatible with the new
2562 dump/restore format.
2564 Bcc and Reply-To headers are now available in notmuch show json output
2566 The `notmuch show --format=json` now includes "Bcc" and "Reply-To" headers.
2567 For example notmuch Emacs client can now have these headers visible
2568 when the headers are added to the `notmuch-message-headers` variable.
2570 CLI callers can now request a specific output format version
2572 `notmuch` subcommands that support structured output now support a
2573 `--format-version` argument for requesting a specific version of the
2574 structured output, enabling better compatibility and error handling.
2576 `notmuch search` has gained a null character separated text output format
2578 The new --format=text0 output format for `notmuch search` prints
2579 output separated by null characters rather than newline
2580 characters. This is similar to the find(1) -print0 option, and works
2581 together with the xargs(1) -0 option.
2586 Removal of the deprecated `notmuch-folders` variable
2588 `notmuch-folders` has been deprecated since the introduction of saved
2589 searches and the notmuch hello view in notmuch 0.3. `notmuch-folders`
2590 has now been removed. Any remaining users should migrate to
2591 `notmuch-saved-searches`.
2593 Visibility of MIME parts can be toggled
2595 Each part of a multi-part MIME email can now be shown or hidden
2596 using the button at the top of each part (by pressing RET on it or
2597 by clicking). For emails with multiple alternative formats (e.g.,
2598 plain text and HTML), only the preferred format is shown initially,
2599 but other formats can be shown using their part buttons. To control
2600 the behavior of this, see
2601 `notmuch-multipart/alternative-discouraged` and
2602 `notmuch-show-all-multipart/alternative-parts`.
2604 Note notmuch-show-print-message (bound to '#' by default) will print
2605 all parts of multipart/alternative message regardless of whether
2606 they are currently hidden or shown in the buffer.
2608 Emacs now buttonizes mid: links
2610 mid: links are a standardized way to link to messages by message ID
2611 (see RFC 2392). Emacs now hyperlinks mid: links to the appropriate
2614 Handle errors from bodypart insertions
2616 If displaying the text of a message in show mode causes an error (in
2617 the `notmuch-show-insert-part-*` functions), notmuch no longer cuts
2618 off thread display at the offending message. The error is now
2619 simply displayed in place of the message.
2621 Emacs now detects version mismatches with the notmuch CLI
2623 Emacs now detects and reports when the Emacs interface version and
2624 the notmuch CLI version are incompatible.
2626 Improved text/calendar content handling
2628 Carriage returns in embedded text/calendar content caused insertion
2629 of the calendar content fail. Now CRs are removed before calling icalendar
2630 to extract icalendar data. In case icalendar extraction fails an error
2631 is thrown for the bodypart insertion function to deal with.
2633 Disabled coding conversions when reading in `with-current-notmuch-show-message`
2635 Depending on the user's locale, saving attachments containing 8-bit
2636 data may have performed an unintentional encoding conversion,
2637 corrupting the saved attachment. This has been fixed by making
2638 `with-current-notmuch-show-message` disable coding conversion.
2640 Fixed errors with HTML email containing images in Emacs 24
2642 Emacs 24 ships with a new HTML renderer that produces better output,
2643 but is slightly buggy. We work around a bug that caused it to fail
2644 for HTML email containing images.
2646 Fixed handling of tags with unusual characters in them
2648 Emacs now handles tags containing spaces, quotes, and parenthesis.
2650 Fixed buttonization of id: links without quote characters
2652 Emacs now correctly buttonizes id: links where the message ID is not
2655 `notmuch-hello` refresh point placement improvements
2657 Refreshing the `notmuch-hello` buffer does a better job of keeping
2658 the point where it was.
2660 Automatic tag changes are now unified and customizable
2662 All the automatic tag changes that the Emacs interface makes when
2663 reading, archiving, or replying to messages, can now be
2664 customized. Any number of tag additions and removals is supported
2665 through the `notmuch-show-mark-read`, `notmuch-archive-tags`, and
2666 `notmuch-message-replied-tags` customization variables.
2668 Support for stashing the thread id in show view
2670 Invoking `notmuch-show-stash-message-id` with a prefix argument
2671 stashes the (local and database specific) thread id of the current
2672 thread instead of the message id.
2674 New add-on tool: notmuch-pick
2675 -----------------------------
2677 The new contrib/ tool `notmuch-pick` is an experimental threaded message
2678 view for the emacs interface. Each message is one line in the results
2679 and the thread structure is shown using UTF-8 box drawing characters
2680 (similar to Mutt's threaded view). It comes between search and show in
2681 terms of amount of output and can be useful for viewing both single
2682 threads and multiple threads. See the notmuch-pick README file for
2683 further details and installation.
2688 notmuch now builds on OpenBSD.
2690 Internal test framework changes
2691 -------------------------------
2693 The emacsclient binary is now user-configurable
2695 The test framework now accepts `TEST_EMACSCLIENT` in addition to
2696 `TEST_EMACS` for configuring the emacsclient to use. This is
2697 necessary to avoid using an old emacsclient with a new emacs, which
2698 can result in buggy behavior.
2700 Notmuch 0.14 (2012-08-20)
2701 =========================
2706 Maildir tag synchronization
2708 Maildir flag-to-tag synchronization now applies only to messages in
2709 maildir-like directory structures. Previously, it applied to any
2710 message that had a maildir "info" part, which meant it could
2711 incorrectly synchronize tags for non-maildir messages, while at the
2712 same time failing to synchronize tags for newly received maildir
2713 messages (typically causing new messages to not receive the "unread"
2716 Command-Line Interface
2717 ----------------------
2719 The deprecated positional output file argument to `notmuch dump` has
2720 been replaced with an `--output` option. The input file positional
2721 argument to `notmuch restore` has been replaced with an `--input`
2722 option for consistency with dump. These changes simplify the syntax
2723 of dump/restore options and make them more consistent with other
2729 Search results now get re-colored when tags are updated
2731 The formatting of tags in search results can now be customized
2733 Previously, attempting to change the format of tags in
2734 `notmuch-search-result-format` would usually break tagging from
2735 search-mode. We no longer make assumptions about the format.
2737 Experimental support for multi-line search result formats
2739 It is now possible to embed newlines in
2740 `notmuch-search-result-format` to make individual search results
2741 span multiple lines.
2743 Next/previous in search and show now move by boundaries
2745 All "next" and "previous" commands in the search and show modes now
2746 move to the next/previous result or message boundary. This doesn't
2747 change the behavior of "next", but "previous" commands will first
2748 move to the beginning of the current result or message if point is
2749 inside the result or message.
2751 Search now uses the JSON format internally
2753 This should address problems with unusual characters in authors and
2754 subject lines that could confuse the old text-based search parser.
2756 The date shown in search results is no longer padded before applying
2757 user-specified formatting
2759 Previously, the date in the search results was padded to fixed width
2760 before being formatted with `notmuch-search-result-format`. It is
2761 no longer padded. The default format has been updated, but if
2762 you've customized this variable, you may have to change your date
2763 format from `"%s "` to `"%12s "`.
2765 The thread-id for the `target-thread` argument for `notmuch-search` should
2766 now be supplied without the "thread:" prefix.
2768 Notmuch 0.13.2 (2012-06-02)
2769 ===========================
2774 Update `contrib/notmuch-deliver` for API changes in 0.13. This fixes a
2775 compilation error for this contrib package.
2777 Notmuch 0.13.1 (2012-05-29)
2778 ===========================
2783 Fix inserting of UTF-8 characters from *text/plain* parts in reply
2785 While notmuch gained ability to insert content from other than *text/plain*
2786 parts of email whenever *text/plain* parts are not available (notably
2787 HTML-only emails), replying to mails that do have *text/plain* the
2788 non-ASCII characters were incorrectly decoded. This is now fixed.
2790 `notmuch_database_get_directory` and
2791 `notmuch_database_find_message_by_filename` now work on read-only
2794 Previously, these functions attempted to create directory documents
2795 that didn't exist and would return an error or abort when given a
2796 read-only database. Now they no longer create directory documents
2797 and simply return a `NULL` object if the directory does not exist,
2800 Fix compilation of ruby bindings
2802 Revert to dynamic linking, since the statically linked bindings did
2805 Notmuch 0.13 (2012-05-15)
2806 =========================
2808 Command-Line Interface
2809 ----------------------
2813 `notmuch reply` can now produce JSON output that contains the headers
2814 for a reply message and full information about the original message
2815 begin replied to. This allows MUAs to create replies intelligently.
2816 For example, an MUA that can parse HTML might quote HTML parts.
2818 Calling notmuch reply with `--format=json` imposes the restriction that
2819 only a single message is returned by the search, as replying to
2820 multiple messages does not have a well-defined behavior. The default
2821 retains its current behavior for multiple message replies.
2825 Tags can be automatically excluded from search results by adding them
2826 to the new `search.exclude_tags` option in the Notmuch config file.
2828 This behaviour can be overridden by explicitly including an excluded
2829 tag in your query, for example:
2831 notmuch search $your_query and tag:$excluded_tag
2833 Existing users will probably want to run `notmuch setup` again to add
2834 the new well-commented [search] section to the configuration file.
2836 For new configurations, accepting the default setting will cause the
2837 tags "deleted" and "spam" to be excluded, equivalent to running:
2839 notmuch config set search.exclude_tags deleted spam
2841 Raw show format changes
2843 The output of show `--format=raw` has changed for multipart and
2844 message parts. Previously, the output was a mash of somewhat-parsed
2845 headers and transfer-decoded bodies. Now, such parts are reproduced
2846 faithfully from the original source. Message parts (which includes
2847 part 0) output the full message, including the message headers (but
2848 not the transfer headers). Multipart parts output the part as
2849 encoded in the original message, including the part's headers. Leaf
2850 parts, as before, output the part's transfer-decoded body.
2852 Listing configuration items
2854 The new `config list` command prints out all configuration items and
2860 Changes to tagging interface
2862 The user-facing tagging functions in the Emacs interface have been
2863 normalized across all notmuch modes. The tagging functions are now
2864 notmuch-search-tag in search-mode, and notmuch-show-tag in
2865 show-mode. They accept a string representing a single tag change,
2866 or a list of tag changes. See 'M-x describe-function notmuch-tag'
2867 for more information.
2869 NOTE: This breaks compatibility with old tagging functions, so user
2870 may need to update in custom configurations.
2872 Reply improvement using the JSON format
2874 Emacs now uses the JSON reply format to create replies. It obeys
2875 the customization variables message-citation-line-format and
2876 message-citation-line-function when creating the first line of the
2877 reply body, and it will quote HTML parts if no text/plain parts are
2880 New add-on tool: notmuch-mutt
2881 -----------------------------
2883 The new contrib/ tool `notmuch-mutt` provides Notmuch integration for
2884 the Mutt mail user agent. Using it, Mutt users can perform mail
2885 search, thread reconstruction, and mail tagging/untagging without
2886 leaving Mutt. notmuch-mutt, formerly distributed under the name
2887 `mutt-notmuch` by Stefano Zacchiroli, will be maintained as a notmuch
2888 contrib/ from now on.
2893 The API changes detailed below break binary and source compatibility,
2894 so libnotmuch has been bumped to version 3.0.0.
2896 The function `notmuch_database_close` has been split into
2897 `notmuch_database_close` and `notmuch_database_destroy`
2899 This makes it possible for long running programs to close the xapian
2900 database and thus release the lock associated with it without
2901 destroying the data structures obtained from it.
2903 `notmuch_database_open`, `notmuch_database_create`, and
2904 `notmuch_database_get_directory` now return errors
2906 The type signatures of these functions have changed so that the
2907 functions now return a `notmuch_status_t` and take an out-argument for
2908 returning the new database object or directory object.
2915 The go bindings and the `notmuch-addrlookup` utility are now
2916 compatible with go 1.
2918 Notmuch 0.12 (2012-03-20)
2919 =========================
2921 Command-Line Interface
2922 ----------------------
2926 `notmuch reply` has gained the ability to create a reply template
2927 for replying just to the sender of the message, in addition to reply
2928 to all. The feature is available through the new command line option
2929 `--reply-to=(all|sender)`.
2931 Mail store folder/file ignore
2933 A new configuration option, `new.ignore`, lets users specify a
2934 ;-separated list of file and directory names that will not be
2935 searched for messages by `notmuch new`.
2937 NOTE: *Every* file/directory that goes by one of those names will
2938 be ignored, independent of its depth/location in the mail store.
2940 Unified help and manual pages
2942 The notmuch help command now runs man for the appropriate page. If
2943 you install notmuch somewhere "unusual", you may need to update
2946 Manual page for notmuch configuration options
2948 The notmuch CLI configuration file options are now documented in the
2949 notmuch-config(1) manual page in addition to the configuration file
2957 The Emacs interface has, with the new CLI support, gained the
2958 ability to reply to sender in addition to reply to all. In both show
2959 and search modes, 'r' has been bound to reply to sender, replacing
2960 reply to all, which now has key binding 'R'.
2962 More flexible and consistent tagging operations
2964 All tagging operations ('+', '-', '*') now accept multiple tags with
2965 '+' or '-' prefix, like '*' operation in notmuch-search view before.
2967 '*' operation (`notmuch-show-tag-all`) is now available in
2970 `notmuch-show-{add,remove}-tag` functions no longer accept tag
2971 argument, `notmuch-show-tag-message` should be used instead. Custom
2972 bindings using these functions should be updated, e.g.:
2974 (notmuch-show-remove-tag "unread")
2976 should be changed to:
2978 (notmuch-show-tag-message "-unread")
2980 Refreshing the show view ('=' by default) no longer opens or closes messages
2982 To get the old behavior of putting messages back in their initial
2983 opened/closed state, use a prefix argument, e.g., 'C-u ='.
2985 Attachment buttons can be used to view or save attachments.
2987 When the cursor is on an attachment button the key 's' can be used
2988 to save the attachment, the key 'v' to view the attachment in the
2989 default mailcap application, and the key 'o' prompts the user for an
2990 application to use to open the attachment. By default Enter or mouse
2991 button 1 saves the attachment but this is customisable (option
2992 Notmuch Show Part Button Default Action).
2996 `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
2997 optionally visiting a URI to the current message at one of a number
2998 of Mailing List Archives.
3000 Fix MML tag quoting in replies
3002 The MML tag quoting fix of 0.11.1 unintentionally quoted tags
3003 inserted in `message-setup-hook`. Quoting is now limited to the
3006 Show view archiving key binding changes
3008 The show view archiving key bindings 'a' and 'x' now remove the
3009 "inbox" tag from the current message only (instead of thread), and
3010 move to the next message. At the last message, 'a' proceeds to the
3011 next thread in search results, and 'x' returns to search
3012 results. The thread archiving functions are now available in 'A' and
3015 Support text/calendar MIME type
3017 The text/calendar MIME type is now supported in addition to
3020 Generate inline patch fake attachment file names from message subject
3022 Use the message subject to generate file names for the inline patch
3023 fake attachments. The names are now similar to the ones generated by
3024 'git format-patch' instead of just "inline patch". See "Notmuch Show
3025 Insert Text/Plain Hook" in the notmuch customize interface.
3027 Enable `notmuch-search-line-faces` by default
3029 Make the `notmuch-search-line-faces` functionality more discoverable
3030 for new users by showing "unread" messages bold and "flagged"
3031 messages blue by default in the search view.
3035 notmuch-show mode now has simple printing support, bound to '#' by
3036 default. You can customize the variable notmuch-print-mechanism.
3043 `notmuch_query_add_tag_exclude` supports the new tag exclusion
3046 Python bindings changes
3047 -----------------------
3049 Python 3.2 compatibility
3051 The python bindings are now compatible with both python 2.5+ and 3.2.
3053 Added missing unicode conversions
3055 Python strings have to be encoded to and decoded from utf-8 when
3056 calling libnotmuch functions. Porting the bindings to python 3.2
3057 revealed a few function calls that were missing these conversions.
3062 Compatibility with GMime 2.6
3064 It is now possible to build notmuch against both GMime 2.4 and 2.6.
3065 However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
3066 report signatures where the signer key is unavailable (GNOME bug
3067 668085). For compatibility with GMime 2.4's tolerance of "From "
3068 headers we require GMime 2.6 >= 2.6.7.
3070 Notmuch 0.11.1 (2012-02-03)
3071 ===========================
3076 Fix error handling in python bindings
3078 The python bindings in 0.11 failed to detect NULL pointers being
3079 returned from libnotmuch functions and thus failed to raise
3080 exceptions to indicate the error condition. Any subsequent calls
3081 into libnotmuch caused segmentation faults.
3083 Quote MML tags in replies
3085 MML tags are text codes that Emacs uses to indicate attachments
3086 (among other things) in messages being composed. The Emacs
3087 interface did not quote MML tags in the quoted text of a reply.
3088 User could be tricked into replying to a maliciously formatted
3089 message and not editing out the MML tags from the quoted text. This
3090 could lead to files from the user's machine being attached to the
3091 outgoing message. The Emacs interface now quotes these tags in
3092 reply text, so that they do not effect outgoing messages.
3094 Notmuch 0.11 (2012-01-13)
3095 =========================
3097 Command-Line Interface
3098 ----------------------
3102 Hooks have been introduced to notmuch. Hooks are scripts that notmuch
3103 invokes before and after certain actions. Initially, `notmuch new`
3104 supports `pre-new` and `post-new` hooks that are run before and after
3105 importing new messages into the database.
3107 `notmuch reply --decrypt bugfix`
3109 The `notmuch reply` command with `--decrypt` argument had a rarely
3110 occurring bug that caused an encrypted message not to be decrypted
3111 sometimes. This is now fixed.
3116 Automatic tag query optimization
3118 `notmuch tag` now automatically optimizes the user's query to
3119 exclude messages whose tags won't change. In the past, we've
3120 suggested that people do this by hand; this is no longer necessary.
3122 Don't sort messages when creating a dump file
3124 This speeds up tag dumps considerably, without any loss of
3125 information. To replicate the old behavior of sorted output (for
3126 example to compare two dump files), one can use e.g. `sort(1)`.
3131 Reduction of memory leaks
3133 Two memory leaks when searching and showing messages were identified
3134 and fixed in this release.
3141 notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
3142 a bug that caused it to always jump to the next message, even if it
3143 should have scrolled down to show more of the current message instead.
3146 Support `notmuch new` as a notmuch-poll-script
3148 It's now possible to use `notmuch new` as a notmuch-poll-script
3149 directly. This is also the new default. This allows taking better
3150 advantage of the `notmuch new` hooks from emacs without intermediate
3153 Improvements in saved search management
3155 New saved searches are now appended to the list of saved searches,
3156 not inserted in front. It's also possible to define a sort function
3157 for displaying saved searches; alphabetical sort is provided.
3159 Hooks for notmuch-hello
3161 Two new hooks have been added: "notmuch-hello-mode-hook" (called after
3162 entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
3163 after updating a notmuch-hello buffer).
3165 New face for crypto parts headers
3167 Crypto parts used to be displayed with a hardcoded color. A new face
3168 has been introduced to fix this: notmuch-crypto-part-header. It
3169 defaults to the same value as before, but can be customized to match
3172 Use space as default thousands separator
3174 Large numbers in notmuch-hello are now displayed using a space as
3175 thousands separator (e.g. "123 456" instead of "123,456"). This can be
3176 changed by customizing "notmuch-hello-thousands-separator".
3178 Call notmuch-show instead of notmuch-search when clicking on
3179 buttonized id: links
3181 New function notmuch-show-advance
3183 This new function advances through just the current thread, and is
3184 less invasive than notmuch-show-advance-and-archive. It can easily
3185 be bound to SPC with:
3187 (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
3189 Various performance improvements
3194 The tool `contrib/notmuch-deliver` helps with initial delivery and
3195 tagging of mail (replacing running `notmuch new`).
3198 Notmuch 0.10.2 (2011-12-04)
3199 ===========================
3204 Fix crash in python bindings
3206 The python bindings did not call `g_type_init`, which caused crashes
3207 for some, but not all users.
3209 Notmuch 0.10.1 (2011-11-25)
3210 ===========================
3215 Fix `--help` argument
3217 Argument processing changes in 0.10 introduced a bug where
3218 `notmuch --help` crashed while `notmuch help` worked fine.
3219 This is fixed in 0.10.1.
3221 Notmuch 0.10 (2011-11-23)
3222 =========================
3224 New build and testing features
3225 ------------------------------
3227 Emacs tests are now done in `dtach`. This means that dtach is now
3228 needed to run the notmuch test suite, at least until the checking for
3229 prerequisites is improved.
3231 Full test coverage of the stashing feature in Emacs.
3233 New command-line features
3234 -------------------------
3236 Add `notmuch restore --accumulate` option
3238 The `--accumulate` switch causes the union of the existing and new tags to
3239 be applied, instead of replacing each message's tags as they are read in
3242 Add search terms to `notmuch dump`
3244 The dump command now takes an optional search term much like notmuch
3245 search/show/tag. The output file argument of dump is deprecated in
3246 favour of using stdout.
3248 Add `notmuch search` `--offset` and `--limit` options
3250 The search command now takes options `--offset=[-]N` and `--limit=N` to
3251 limit the number of results shown.
3253 Add `notmuch count --output` option
3255 The count command is now capable of counting threads in addition to
3256 messages. This is selected using the new `--output=(threads|messages)`
3259 New emacs UI features
3260 ---------------------
3262 Add tab-completion for `notmuch-search` and `notmuch-search-filter`
3264 These functions now support completion tags for query parts
3265 starting with "tag:".
3267 Turn "id:MSG-ID" links into buttons associated with notmuch searches
3269 Text of the form "id:MSG-ID" in mails is now a clickable button that
3270 opens a notmuch search for the given message id.
3272 Add keybinding ('c I') for stashing Message-ID's without an id: prefix
3274 Reduces manual labor when stashing them for use outside notmuch.
3276 Do not query on `notmuch-search` exit
3278 It is harmless to kill the external notmuch process, so the user
3279 is no longer interrogated when they interrupt a search.
3284 Emacs now constructs large search buffers more efficiently
3286 Search avoids opening and parsing message files
3288 We now store more information in the database so search no longer
3289 has to open every message file to get basic headers. This can
3290 improve search speed by as much as 10X, but taking advantage of this
3291 requires a database rebuild:
3293 notmuch dump > notmuch.dump
3294 # Backup, then remove notmuch database ($MAIL/.notmuch)
3296 notmuch restore notmuch.dump
3298 New collection of add-on tools
3299 ------------------------------
3301 The source directory "contrib" contains tools built on notmuch. These
3302 tools are not part of notmuch, and you should check their individual
3303 licenses. Feel free to report problems with them to the notmuch
3306 nmbug - share tags with a given prefix
3308 nmbug helps maintain a git repo containing all tags with a given
3309 prefix (by default "notmuch::"). Tags can be shared by committing
3310 them to git in one location and restoring in another.
3312 Notmuch 0.9 (2011-10-01)
3313 ========================
3315 New, general features
3316 ---------------------
3318 Correct handling of interruptions during `notmuch new`
3320 `notmuch new` now operates as a series of small, self-consistent
3321 transactions, so it can correctly resume after an interruption or
3322 crash. Previously, interruption could lose existing tags, fail to
3323 detect messages on resume, or leave the database in a state
3324 temporarily or permanently inconsistent with the mail store.
3331 `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
3332 allow multiple database operations to be performed atomically.
3334 `notmuch_database_find_message_by_filename` does exactly what it says.
3338 `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
3339 a status indicator and uses an output parameter for the
3340 message. This change required changing the SONAME of libnotmuch to
3343 Python bindings changes
3344 -----------------------
3346 - Re-encode python unicode objects to utf-8 before passing back to
3348 - Support `Database().begin_atomic()/end_atomic()`
3349 - Support `Database().find_message_by_filename()`
3350 NB! This needs a db opened in READ-WRITE mode currently, or it will crash
3351 the python process. The is a limitation (=bug) of the underlying libnotmuch.
3352 - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
3353 - Update for `n_d_find_message*` API changes (see above).
3355 Ruby bindings changes
3356 ---------------------
3358 - Wrap new library functions `notmuch_database_{begin,end}_atomic.`
3359 - Add new exception `Notmuch::UnbalancedAtomicError.`
3360 - Rename destroy to destroy! according to Ruby naming conventions.
3361 - Update for `n_d_find_message*` API changes (see above).
3366 * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
3368 * Add `notmuch-show-refresh-view` function (and corresponding binding)
3369 to refresh the view of a notmuch-show buffer.
3371 Reply formatting cleanup
3372 ------------------------
3374 `notmuch reply` no longer includes notification that non-leafnode
3375 MIME parts are being suppressed.
3377 Notmuch 0.8 (2011-09-10)
3378 ========================
3380 Improved handling of message/rfc822 parts
3382 Both in the CLI and the emacs interface. Output of rfc822 parts now
3383 includes the primary headers, as well as the body and all subparts.
3384 Output of the completely raw rfc822-formatted message, including all
3385 headers, is unfortunately not yet supported (but hopefully will be
3388 Improved Build system portability
3390 Certain parts of the shell script generating notmuch.sym were
3391 specific to the GNU versions of sed and nm. The new version should
3392 be more portable to e.g. OpenBSD.
3394 Documentation update for Ruby bindings
3396 Added documentation, typo fixes, and improved support for rdoc.
3398 Unicode, iterator, PEP8 changes for python bindings
3400 - PEP8 (code formatting) changes for python files.
3401 - Remove `Tags.__len__` ; see 0.6 release notes for motivation.
3402 - Decode headers as UTF8, encode (unicode) database paths as UTF8.
3404 Notmuch 0.7 (2011-08-01)
3405 ========================
3407 Vim interface improvements
3408 --------------------------
3410 Jason Woofenden provided a number of bug fixes for the Vim interface
3412 * fix citation/signature fold lengths
3413 * fix cig/cit parsing within multipart/*
3414 * fix on-screen instructions for show-signature
3415 * fix from list reformatting in search view
3416 * fix space key: now archives (did opposite)
3418 Uwe Kleine-König contributed
3420 * use full path for sendmail/doc fix
3421 * fix compose temp file name
3423 Python Bindings changes
3424 -----------------------
3426 Sebastian Spaeth contributed two changes related to unicode and UTF8:
3428 * message tags are now explicitly unicode
3429 * query string is encoded as a UTF8 byte string
3431 Build-System improvements
3432 -------------------------
3434 Generate notmuch.sym after the relevant object files
3436 This fixes a bug in parallel building. Thanks to Thomas Jost for the
3439 Notmuch 0.6.1 (2011-07-17)
3440 ==========================
3445 Re-export Xapian exception typeinfo symbols
3447 It turned out our aggressive symbol hiding caused problems for
3448 people running gcc 4.4.5.
3450 Notmuch 0.6 (2011-07-01)
3451 =======================
3453 New, general features
3454 ---------------------
3456 Folder-based searching
3458 Notmuch queries can now include a search term to match the
3459 directories in which mail files are stored (within the mail
3460 storage). The syntax is as follows:
3464 For example, one might use things such as:
3470 to match any path containing a directory "spam", "work/todo", or
3471 containing a directory starting with "2011-", respectively.
3473 This feature is particularly useful for users of delivery-agent
3474 software (such as procmail or maildrop) that is filtering mail and
3475 delivering it to particular folders, or users of systems such as
3476 Gmail that use filesystem directories to indicate message tags.
3478 NOTE: Only messages that are newly indexed with this version of
3479 notmuch will be searchable with folder: terms. In order to enable
3480 this feature for all mail, the entire notmuch index will need to be
3483 notmuch dump > notmuch.dump
3484 # Backup, then remove notmuch database ($MAIL/.notmuch)
3486 notmuch restore notmuch.dump
3488 Support for PGP/MIME
3490 Both the command-line interface and the emacs-interface have new
3491 support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
3492 and Jameson Graef Rollins for making this happen.
3494 New, automatic tags: "signed" and "encrypted"
3496 These tags will automatically be applied to messages containing
3497 multipart/signed and multipart/encrypted parts.
3499 NOTE: Only messages that are newly indexed with this version of
3500 notmuch will receive these tags.
3502 New command-line features
3503 -------------------------
3505 Add new "notmuch show --verify" option for signature verification
3507 This option instruct notmuch to verify the signature of
3508 PGP/MIME-signed parts.
3510 Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
3512 This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
3513 Note that this feature currently requires gpg-agent and a passphrase entry
3514 tool (e.g. pinentry-gtk or pinentry-curses).
3516 Proper nesting of multipart parts in "notmuch show" output
3518 MIME parts are now display with proper nesting to reflect original
3519 MIME hierarchy of a message. This allows clients to correctly
3520 analyze the MIME structure, (such as, for example, determining to
3521 which parts a signature part applies).
3523 Add new "notmuch show --part" option
3525 This is a replacement for the older "notmuch part" command, (which
3526 is now deprecated—it should still work as always, but is no longer
3527 documented). Putting part output under "notmuch show" allows for all
3528 of the "notmuch show" options to be applied when extracting a single
3529 part, (such as --format=json for extracting a message part with JSON
3532 Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
3534 The "notmuch search-tags" sub-command has been redundant since the
3535 addition of the --output=tags option to "notmuch search". We now
3536 make that more clear by deprecating "notmuch search-tags", (dropping
3537 it from the documentation). We do continue to support the old syntax
3538 by translating it internally to the new call.
3540 Performance improvements
3541 ------------------------
3543 Faster searches (by doing fewer searches to construct threads)
3545 Whenever a user asks for search results as threads, notmuch first
3546 performs a search for messages matching the query, then performs
3547 additional searches to find other messages in the resulting threads.
3549 Removing inefficiencies and redundancies in these secondary searches
3550 results in a measured speedups of 1.5x for a typical search.
3552 Faster searches (by doing fewer passes to gather message data)
3554 Optimizing Xapian data access patterns (using a single pass to get
3555 all message-document data rather than a pass for each data type)
3556 results in a measured speedup of 1.7x for a typical search.
3558 The benefits of this optimization combine with the preceding
3559 optimization. With both in place, Austin Clements measured a speedup
3560 of 2.5x for a search of all messages in his inbox (was 4.5s, now
3561 1.8s). Thanks, Austin!
3563 Faster initial indexing
3565 More efficient indexing of new messages results in a measured
3566 speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
3567 rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
3569 Make "notmuch new" faster for unchanged directories
3571 Optimizing to not do any further examinations of sub-directories
3572 when the filesystem indicates that a directory is unchanged from the
3573 last "notmuch new" results in measured speedups of 8.5 for the "No
3574 new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
3576 New emacs-interface features
3577 ----------------------------
3579 Support for PGP/MIME (GnuPG)
3581 Automatically indicate validity of signatures for multipart/signed
3582 messages. Automatically display decrypted content for
3583 multipart/encrypted messages. See the emacs variable
3584 notmuch-crypto-process-mime for more information. Note that this
3585 needs gpg-agent and a pinentry tool just as the command-line tools.
3586 Also note there is no support SMIME yet.
3588 Output of pipe command is now displayed if pipe command fails
3590 This is extremely useful in the common use case of piping a patch to
3591 "git am". If git fails to cleanly merge the patch the error messages
3592 from the failed merge are now clearly displayed to the user, (where
3593 previously they were silently hidden from the user).
3595 User-selectable From address
3597 A user can choose which configured email addresses should be used as
3598 the From address whenever composing a new message. To do so, simply
3599 press C-u before the command which will open a new message. Emacs
3600 will prompt for the from address to use.
3602 The user can customize the "Notmuch Identities" setting in the
3603 notmuch customize group in order to use addresses other than those in
3604 the notmuch configuration file if desired.
3606 The user can also choose to always be prompted for the from address
3607 when composing a new message (without having to use C-u) by setting
3608 the "Notmuch Always Prompt For Sender" option in the notmuch
3611 Hiding of repeated subjects in collapsed thread view
3613 In notmuch-show mode, if a collapsed message has the same subject as
3614 its parent, the subject is not shown.
3616 Automatic detection and hiding of original message in top-posted message
3618 When a message contains a line looking something like:
3620 ----- Original Message -----
3622 emacs hides this and all subsequent lines as an "original message",
3623 (allowing the user to click or press enter on the "original message"
3624 button to display it again). This makes the handling of top-posted
3625 citations work much like conventional citations.
3627 New hooks for running code when tags are modified
3629 Some users want to perform additional actions whenever a particular
3630 tag is added/removed from a message. This could be used to, for
3631 example, interface with some external spam-recognition training
3632 tool. To facilitate this, two new hooks are added which can be
3633 modified in the following settings of the notmuch customize group:
3635 Notmuch Before Tag Hook
3636 Notmuch After Tag Hook
3638 New optional support for hiding some multipart/alternative parts
3640 Many emails are sent with redundant content within a
3641 multipart/alternative group (such as a text/plain part as well as a
3642 text/html part). Users can configure the setting:
3644 Notmuch Show All Multipart/Alternative Parts
3646 to "off" in the notmuch customize group to have the interface
3647 automatically hide some part alternatives (such as text/html
3648 parts). This new part hiding is not configured by default yet
3649 because there's not yet a simple way to re-display such a hidden
3650 part if it is not actually redundant with a displayed part.
3652 Better rendering of text/x-vcalendar parts
3654 These parts are now displayed in a format suitable for use with the
3657 Avoid getting confused by Subject and Author fields with newline characters
3659 Replacing all characters with ASCII code less than 32 with a question mark.
3661 Cleaner display of From line in email messages
3663 Remove double quotes, and drop "name" if it's actually just a repeat of
3666 Vim interface improvements
3667 --------------------------
3669 Felipe Contreras provided a number of updates for the vim interface:
3671 * Using sendmail directly rather than mailx,
3672 * Implementing archive in show view
3673 * Add support to mark as read in show and search views
3674 * Add delete commands
3677 Bindings improvements
3678 ---------------------
3680 Ruby bindings are now much more complete
3682 Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
3683 `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
3685 Python bindings have been updated and extended
3687 (docs online at https://notmuch.readthedocs.io/)
3691 - `Message().get_filenames()`, `Message().tags_to_maildir_flags()`,
3692 `Message().maildir_flags_to_tags()`, `list(Threads())` and
3693 `list(Messages)` works now
3694 - `Message().__cmp__()` and `__hash__()`
3696 These allow, for example:
3698 if msg1 == msg2: ...
3700 As well as set arithmetic on `Messages()`:
3702 s1, s2 = set(msgs1), set(msgs2)
3708 - `len(Messages())` as it exhausted the iterator
3710 Use `len(list(Messages()))` or `Query.count_messages()`
3713 Added initial Go bindings in bindings/go
3715 New build-system features
3716 -------------------------
3718 Added support for building in a directory other than the source directory
3720 This can be used with the widely-supported idiom of simply running
3721 the configure script from some other directory:
3728 Fix to save configure options for future, implicit runs of configure
3730 When a user updates the source (such as with "git pull") calling
3731 "make" may cause an automatic re-run of the configure script. When
3732 this happens, the configure script will automatically be called with
3733 the same options the user originally passed in the most-recent
3734 manual invocation of configure.
3736 New test-suite feature
3737 ----------------------
3739 Binary for bash for running test suite now located via PATH
3741 The notmuch test suite requires a fairly recent version of bash (>=
3742 bash 4). As some systems supply an older version of bash at
3743 /bin/bash, the test suite is now updated to search $PATH to locate
3744 the bash binary. This allows users of systems with old /bin/bash to
3745 simply install bash >= 4 somewhere on $PATH before /bin and then use
3748 Support for testing output with a trailing newline
3750 Previously, some tests would fail to notice a difference in the
3751 presence/absence of a trailing newline in a program output, (which
3752 has led to bugs in the past). Now, carefully-written tests (using
3753 `test_expect_equal_file` rather than `test_expect_equal`) will detect
3754 any change in the presence/absence of a trailing newline. Many tests
3755 are updated to take advantage of this.
3757 Avoiding accessing user's $HOME while running test suite
3759 The test suite now carefully creates its own HOME directory. This
3760 allows the test suite to be run with no existing HOME directory, (as
3761 some build systems apparently do), and avoids test-suite differences
3762 due to configuration files in the users HOME directory.
3768 Output *all* files for "notmuch search --output=files"
3770 For the cases where multiple files have the same Message ID,
3771 previous versions of notmuch would output only one such file. This
3772 command is now fixed to correctly output all files.
3774 Fixed spurious search results from "overlapped" indexing of addresses
3776 This fixed a bug where a search for:
3778 to:user@elsewhere.com
3780 would incorrectly match a message sent:
3782 To: user@example,com, someone@elsewhere.com
3784 Fix --output=json when search has no results
3786 A bug present since notmuch 0.4 had caused searches with no results
3787 to produce an invalid json object. This is now fixed to cleanly
3788 return a valid json object representing an empty array "[]" as
3791 Fix the automatic detection of the From address for "notmuch reply"
3792 from the Received headers in some cases
3794 Fix core dump on DragonFlyBSD due to -1 return value from
3795 `sysconf(_SC_GETPW_R_SIZE_MAX)`
3797 Cleaned up several memory leaks
3799 Eliminated a few, rare segmentation faults and a double-free
3801 Fix libnotmuch library to only export notmuch API functions
3803 Previous release of the notmuch library also exported some Xapian
3804 C++ exception type symbols. These were never part of the library
3805 interface and were never intended to be exported.
3807 Emacs-interface bug fixes
3808 -------------------------
3810 Display any unexpected output or errors from "notmuch search" invocations
3812 Previously any misformatted output or trailing error messages were
3813 silently ignored. This output is now clearly displayed. This fix was
3814 very helpful in identifying and fixing the bug described below.
3816 Fix bug where some threads would be missing from large search results
3818 When a search returned a "large" number of results, the emacs
3819 interface was incorrectly dropping one thread every time the output
3820 of the "notmuch search" process spanned the emacs read-buffer. This
3823 Avoid re-compression of .gz files (and similar) when saving attachment
3825 Emacs was being too clever for its own good and trying to
3826 re-compress pre-compressed .gz files when saving such attachments
3827 (potentially corrupting the attachment). The emacs interface is
3828 fixed to avoid this bug.
3830 Fix hiding of a message when a previously-hidden citation is visible
3832 Previously the citation would remain visible in this case. This is
3833 fixed so that hiding a message hides all parts.
3835 Notmuch 0.5 (2010-11-11)
3836 ========================
3838 New, general features
3839 ---------------------
3841 Maildir-flag synchronization
3843 Notmuch now knows how to synchronize flags in maildir filenames with
3844 tags in the notmuch database. The following flag/tag mappings are
3853 'S' unread (added when 'S' flag is not present)
3855 The synchronization occurs in both directions, (for example, adding
3856 the 'S' flag to a file will cause the "unread" tag to be added, and
3857 adding the "replied" tag to a message will cause the file to be
3858 renamed with an 'R' flag).
3860 This synchronization is enabled by default for users of the
3861 command-line interface, (though only files in directories named
3862 "cur" or "new" will be renamed). It can be disabled by setting the
3863 new `maildir.synchronize_flags` option in the configuration file. For
3866 notmuch config set maildir.synchronize_flags false
3868 Users upgrading may also want to run "notmuch setup" once (just
3869 accept the existing configuration) to get a new, nicely-commented
3870 [maildir] section added to the configuration file.
3872 For users of the notmuch library, the new synchronization
3873 functionality is available with the following two new functions:
3875 notmuch_message_maildir_flags_to_tags
3876 notmuch_message_tags_to_maildir_flags
3878 It is anticipated that future improvements to this support will
3879 allow for safe synchronization of the 'T' flag with the "deleted"
3880 tag, as well as support for custom flag/tag mappings.
3882 New library features
3883 --------------------
3885 Support for querying multiple filenames for a single message
3887 It is common for the mailstore to contain multiple files with the
3888 same message ID. Previously, notmuch would always hide these
3889 duplicate files, (returning a single, arbitrary filename with
3890 `notmuch_message_get_filename`).
3892 With this release, library users can access all filenames for a
3893 message with the new function:
3895 notmuch_message_get_filenames
3897 Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
3898 and `notmuch_filenames_move_to_next` it is now possible to iterate
3899 over all available filenames for a given message.
3901 New command-line features
3902 -------------------------
3904 New "notmuch show --format=raw" for getting at original email contents
3906 This new feature allows for a fully-functional email client to be
3907 built on top of the notmuch command-line without needing any direct
3908 access to the mail store itself.
3910 For example, it's now possible to run "emacs -f notmuch" on a local
3911 machine with only ssh access to the mail store/notmuch database. To
3912 do this, simply set the notmuch-command variable in emacs to the
3913 name of a script containing:
3915 ssh user@host notmuch "$@"
3917 If the ssh client has enabled connection sharing (ControlMaster
3918 option in OpenSSH), the emacs interface can be quite responsive this
3924 Fix "notmuch search" to print nothing when nothing matches
3926 The 0.4 release had a bug in which:
3928 notmuch search <expression-with-no-matches>
3930 would produce a single blank line of output, (where previous
3931 versions would produce no output. This fix also causes a change in
3932 the --format=json output, (which would previously produce "[]" and
3933 now produces nothing).
3935 Emacs interface improvements
3936 ----------------------------
3938 Fix to allow pipe ('|') command to work when using notmuch over ssh
3940 Fix count of lines in hidden signatures
3942 Omit repeated subject lines in (collapsed) thread display
3944 Display current thread subject in a header line
3946 Provide a "c i" binding to copy a thread ID from the search view
3948 Allow for notmuch-fcc-dirs to have a value of nil
3950 Also, the more complex form of notmuch-fcc-dirs now has a slightly
3951 different format. It no longer has a special first-element, fallback
3952 string. Instead it's now a list of cons cells where the car of each
3953 cell is a regular expression to be matched against the sender
3954 address, and the cdr is the name of a folder to use for an FCC. So
3955 the old fallback behavior can be achieved by including a final cell
3956 of (".*" . "default-fcc-folder").
3958 Vim interface improvements
3959 --------------------------
3961 Felipe Contreras provided a number of updates for the vim interface
3963 These include optimizations, support for newer versions of vim, fixed
3964 support for sending mail on modern systems, new commands, and
3970 Added initial ruby bindings in bindings/ruby
3972 Notmuch 0.4 (2010-11-01)
3973 ========================
3975 New command-line features
3976 -------------------------
3978 `notmuch search --output=(summary|threads|messages|tags|files)`
3980 This new option allows for particular items to be returned from
3981 notmuch searches. The "summary" option is the default and behaves
3982 just as "notmuch search" has historically behaved.
3984 The new option values allow for thread IDs, message IDs, lists of
3985 tags, and lists of filenames to be returned from searches. It is
3986 expected that this new option will be very useful in shell
3987 scripts. For example:
3989 for file in $(notmuch search --output=files <search-terms>); do
3990 <operations-on> "$file"
3993 `notmuch show --format=mbox <search-specification>`
3995 This new option allows for the messages matching a search
3996 specification to be presented as an mbox. Specifically the "mboxrd"
3997 format is used which allows for reversible quoting of lines
3998 beginning with "From ". A reader should remove a single '>' from the
3999 beginning of all lines beginning with one or more '>' characters
4000 followed by the 5 characters "From ".
4002 `notmuch config [get|set] <section>.<item> [value ...]`
4004 The new top-level "config" command allows for any value in the
4005 notmuch configuration file to be queried or set to a new value. Both
4006 single-valued and multi-valued items are supported, as our any
4007 custom items stored in the configuration file.
4009 Avoid setting Bcc header in "notmuch reply"
4011 We decided that this was a bit heavy-handed as the actual mail
4012 user-agent should be responsible for setting any Bcc option. Also,
4013 see below for the notmuch/emacs user-agent now setting an Fcc by
4014 default rather than Bcc.
4016 New library features
4017 --------------------
4019 Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
4021 These are simply functions for querying properties of a
4022 `notmuch_query_t` object.
4027 Enable Fcc of all sent messages by default (to "sent" directory)
4029 All messages sent from the emacs interface will now be saved to the
4030 notmuch mail store where they will be incorporated to the database
4031 by the next "notmuch new". By default, messages are saved to the
4032 "sent" directory at the top-level of the mail store. This directory
4033 can be customized by means of the "Notmuch Fcc Dirs" option in the
4034 notmuch customize interface.
4036 Ability to all open messages in a thread to a pipe
4038 Historically, the '|' keybinding allows for piping a single message
4039 to an external command. Now, by prefixing this key with a prefix
4040 argument, (for example, by pressing "Control-U |"), all open
4041 messages in the current thread will be sent to the external command.
4043 Optional support for detecting inline patches
4045 This hook is disabled by default but can be enabled with a checkbox
4046 under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
4047 interface. It allows for inline patches to be detected and treated
4048 as if they were attachments, (with context-sensitive highlighting).
4050 Automatically tag messages as "replied" when sending a reply
4052 Messages replied to within the emacs interface will now be tagged as
4053 "replied". This feature can easily be customized to add or remove
4054 other tags as well. For example, a user might use a tag of
4055 "needs-reply" and can configure this feature to automatically remove
4056 that tag when replying. See "Notmuch Message Mark Replied" in the
4057 notmuch customize interface.
4059 Allow search-result color specifications to overlay each other
4061 For example, one tag can specify the background color of matching
4062 lines, while another can specify the foreground. With this change,
4063 both settings will now be visible simultaneously, (which was not the
4064 case in previous releases). See "Notmuch Search Line Faces" in the
4065 notmuch customize interface.
4067 Make hidden author names still available for incremental search
4069 When there is insufficient space to display all authors of a thread
4070 in search results, the names of hidden authors are now still made
4071 available to emacs' incremental search commands. As the user
4072 searches, matching lines will temporarily expand to show the hidden
4075 New binding of Control-TAB (works like TAB in reverse)
4077 Many notmuch nodes already use TAB to navigate forward through
4078 various items allowing actions, (message headers, email attachments,
4079 etc.). The new Control-TAB binding operates similarly but in the
4082 New build-system features
4083 -------------------------
4085 Various portability fixes have been applied
4087 These include fixes for build failures on at least Solaris, FreeBSD,
4088 and Fedora systems. We're hopeful that the notmuch code base is now
4089 more portable than ever before.
4091 Arrange for libnotmuch to be found automatically after make install
4093 The notmuch build system is now careful to help the user avoid
4094 errors of the form "libnotmuch.so could not be found" immediately
4095 after installing. This support takes two forms:
4097 1. If the library is installed to a system directory,
4098 (configured in /etc/ld.so.conf), then "make install" will
4099 automatically run ldconfig.
4101 2. If the library is installed to a non-system directory, the
4102 build system adds a `DR_RUNPATH` entry to the final binary
4103 pointing to the directory to which the library is installed.
4105 When this support works, the user should be able to run notmuch
4106 immediately after "make install", without any errors trying to find
4107 the notmuch library, and without having to manually set environment
4108 variables such as `LD_LIBRARY_PATH`.
4110 Check compiler/linker options before using them
4112 The configure script now carefully checks that any desired
4113 compilation options, (whether for enabling compiler warnings, or for
4114 embedding rpath, etc.), are supported. Only supported options are
4115 used in the resulting Makefile.
4117 New test-suite features
4118 -----------------------
4120 New modularization of test suite
4122 Thanks to a gracious relicensing of the test-suite infrastructure
4123 from the git project, notmuch now has a modular test suite. This
4124 provides the ability to run individual sections of the test suite
4125 rather than the whole things. It also provides better summary of
4126 test results, with support for tests that are expected to fail
4127 (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
4128 it easy to run the test suite within valgrind (pass --valgrind to
4129 notmuch-test or to any sub-script) which has been very useful.
4131 New testing of emacs interface
4133 The test suite has been augmented to allow automated testing of the
4134 emacs interfaces. So far, this includes basic searches, display of
4135 threads, and tag manipulation. This also includes a test that a new
4136 message can successfully be sent out through a (dummy) SMTP server
4137 and that said message is successfully integrated into the notmuch
4138 database via the FCC setting.
4143 Fix potential corruption of database when "notmuch new" is interrupted
4145 Previously, an interruption of "notmuch new" would (rarely) result
4146 in a corrupt database. The corruption would manifest itself by a
4147 persistent error of the form:
4149 document ID of 1234 has no thread ID
4151 The message-adding code has been carefully audited and reworked to
4152 avoid this sort of corruption regardless of when it is interrupted.
4154 Fix failure with extremely long message ID headers
4156 Previously, a message with an extremely long message ID, (say, more
4157 than 300 characters), would fail to be added to notmuch, (triggering
4158 Xapian exceptions). This has now been fixed.
4160 Fix for messages with "charset=unknown-8bit"
4162 Previously, messages with this charset would cause notmuch to emit a
4163 GMime warning, (which would then trip up emacs or other interfaces
4164 parsing the notmuch results).
4166 Fix `notmuch_query_search_threads` function to return NULL on any exception
4168 Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
4171 Previously, this command could confusingly report a Xapian
4172 exception, yet still return an error code of 0. It now correctly
4173 returns a failing error code of 1 in this case.
4178 Fix to handle a message with a subject containing, for example "[1234]"
4180 Previously, a message subject containing a sequence of digits within
4181 square brackets would cause the emacs interface to mis-parse the
4182 output of "notmuch search". This would result in the message being
4183 mis-displayed and prevent the user from manipulating the message in
4184 the emacs interface.
4186 Fix to correctly handle message IDs containing ".."
4188 The emacs interface now properly quotes message IDs to avoid a
4189 Xapian bug in which the ".." within a message ID would be
4190 misinterpreted as a numeric range specification.
4192 Python-binding fixes
4193 --------------------
4195 The python bindings for notmuch have been updated to work with python3.
4197 Debian-specific fixes
4198 ---------------------
4200 Fix emacs initialization so "M-x notmuch" works for users by default
4202 Now, a new Debian user can immediately run "emacs -f notmuch" after
4203 "apt-get install notmuch". Previously, the user would have had to
4204 edit the ~/.emacs file to add "(require 'notmuch)" before this would
4207 Notmuch 0.3.1 (2010-04-27)
4208 ==========================
4213 Fix an infinite loop in "notmuch reply"
4215 This bug could be triggered by replying to a message where the
4216 user's primary email address did not appear in the To: header and
4217 the user had not configured any secondary email addresses. The bug
4218 was a simple re-use of the same iterator variable in nested loops.
4220 Fix a potential SEGV in "notmuch search"
4222 This bug could be triggered by an author name ending in a ','.
4223 Admittedly - that's almost certainly a spam email, but we never
4224 want notmuch to crash.
4229 Fix calculations for line wrapping in the primary "notmuch" view
4231 Fix Fcc support to prompt to create a directory if the specified Fcc
4232 directory does not exist
4237 Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
4239 Without this, the C++ sources could not find strcasestr and the
4240 final linking of notmuch would fail.
4242 Notmuch 0.3 (2010-04-27)
4243 ========================
4245 New command-line features
4246 -------------------------
4248 User-configurable tags for new messages
4250 A new "new.tags" option is available in the configuration file to
4251 determine which tags are applied to new messages. Run "notmuch
4252 setup" to generate new documentation within ~/.notmuch-config on how
4253 to specify this value.
4255 Threads search results named based on subjects that match search
4257 This means that when new mails arrived to a thread you've previously
4258 read, and the new mails have a new subject, you will see that
4259 subject in the search results rather than the old subject.
4261 Faster operation of "notmuch tag" (avoid unneeded sorting)
4263 Since the user just wants to tag all matching messages, we can make
4264 things perform a bit faster by avoiding the sort.
4266 Even Better guessing of From: header for "notmuch reply"
4268 Notmuch now looks at a number of headers when trying to figure out
4269 the best From: header to use in a reply. This is helpful if you have
4270 several configured email addresses, and you also subscribe to various
4271 mailing lists with different addresses, (so that mails you are
4272 replying to won't always include your subscribed address in the To:
4275 Indication of author names that match a search
4277 When notmuch displays threads as the result of a search, it now
4278 lists the authors that match the search before listing the other
4279 authors in the thread. It inserts a pipe '|' symbol between the last
4280 matching and first non-matching author. This is especially useful in
4281 a search that includes tag:unread. Now the authors of the unread
4282 messages in the thread are listed first.
4284 New: Python bindings
4285 --------------------
4287 Sebastian Spaeth has contributed his python bindings for the notmuch
4288 library to the central repository. These bindings were previously
4289 known as "cnotmuch" within python but have now been renamed to be
4290 accessible with a simple, and more official-looking "import notmuch".
4292 The bindings have already proven very useful as people proficient in
4293 python have been able to easily develop programs to do notmuch-based
4294 searches for email-address completion, maildir-flag synchronization,
4297 These bindings are available within the bindings/python directory, but
4298 are not yet integrated into the top-level Makefiles, nor the top-level
4299 package-building scripts. Improvements are welcome.
4301 Emacs interface improvements
4302 ----------------------------
4304 An entirely new initial view for notmuch, (friendly yet powerful)
4306 Some of us call the new view "notmuch hello" but you can get at it
4307 by simply calling "emacs -f notmuch". The new view provides a search
4308 bar where new searches can be performed. It also displays a list of
4309 recent searches, along with a button to save any of these, giving it
4310 a new name as a "saved search". Many people find these "saved
4311 searches" one of the most convenient ways of organizing their mail,
4312 (providing all of the features of "folders" in other mail clients,
4313 but without any of the disadvantages).
4315 Finally, this view can also optionally display all of the tags that
4316 exist in the database, along with a count for each tag, and a custom
4317 search of messages with that tag that's simply a click (or keypress)
4320 NOTE: For users that liked the original mode of "emacs -f notmuch"
4321 immediately displaying a particular search result, we recommend
4322 instead running something like:
4324 emacs --eval '(notmuch search "tag:inbox" t)'
4326 The "t" means to sort the messages in an "oldest first" order,
4327 (as notmuch would do previously by default). You can also
4328 leave that off to have your search results in "newest first"
4331 Full-featured "customize" support for configuring notmuch
4333 Notmuch now plugs in well to the emacs "customize" mode to make it
4334 much simpler to find things about the notmuch interface that can be
4335 tweaked by the user.
4337 You can get to this mode by starting at the main "Customize" menu in
4338 emacs, then browsing through "Applications", "Mail", and
4339 "Notmuch". Or you can go straight to "M-x customize-group"
4342 Once you're at the customize screen, you'll see a list of documented
4343 options that can be manipulated along with checkboxes, drop-down
4344 selectors, and text-entry boxes for configuring the various
4347 Support for doing tab-completion of email addresses
4349 This support currently relies on an external program,
4350 (notmuch-addresses), that is not yet shipped with notmuch
4351 itself. But multiple, suitable implementations of this program have
4352 already been written that generate address completions by doing
4353 notmuch searches of your email collection. For example, providing
4354 first those addresses that you have composed messages to in the
4357 One such program (implemented in python with the python bindings to
4358 notmuch) is available via:
4360 git clone http://jkr.acm.jhu.edu/git/notmuch_addresses.git
4362 Install that program as notmuch-addresses on your PATH, and then
4363 hitting TAB on a partial email address or name within the To: or Cc:
4364 line of an email message will provide matching completions.
4366 Support for file-based (Fcc) delivery of sent messages to mail store
4368 This isn't yet enabled by default. To enable this, one will have to
4369 set the "Notmuch Fcc Dirs" setting within the notmuch customize
4370 screen, (see its documentation there for details). We anticipate
4371 making this automatic in a future release.
4373 New 'G' key binding to trigger mail refresh (G == "Get new mail")
4375 The 'G' key works wherever '=' works. Before refreshing the screen
4376 it calls an external program that can be used to poll email servers,
4377 run notmuch new and set up specific tags for the new emails. The
4378 script to be called should be configured with the "Notmuch Poll
4379 Script" setting in the customize interface. This script will
4380 typically invoke "notmuch new" and then perhaps several "notmuch
4383 Implement emacs message display with the JSON output from notmuch
4385 This is much more robust than the previous implementation, (where
4386 some HTML mails and mail quoting the notmuch code with the delimiter
4387 characters in it would cause the parser to fall over).
4389 Better handling of HTML messages and MIME attachments (inline images!)
4391 Allow for any MIME parts that emacs can display to be displayed
4392 inline. This includes inline viewing of image attachments, (provided
4393 the window is large enough to fit the image at its natural size).
4395 Much more robust handling of HTML messages. Currently both text/plain
4396 and text/html alternates will be rendered next to each other. In a
4397 future release, users will be able to decide to see only one or the
4398 other representation.
4400 Each attachment now has its own button so that attachments can be
4401 saved individually (the 'w' key is still available to save all
4404 Customizable support for tidying of text/plain message content
4406 Many new functions are available for tidying up message
4407 content. These include options such as wrapping long lines,
4408 compressing duplicate blank lines, etc.
4410 Most of these are disabled by default, but can easily be enabled by
4411 clicking the available check boxes under the "Notmuch Show Insert
4412 Text/Plain Hook" within the notmuch customize screen.
4414 New support for searchable citations (even when hidden)
4416 When portions of overly-long citations are hidden, the contents of
4417 these citations will still be available for emacs' standard
4418 "incremental search" functions. When the search matches any portion
4419 of a hidden citation, the citation will become visible temporarily
4420 to display the search result.
4422 More flexible handling of header visibility
4424 As an answer to complaints from many users, the To, Cc, and Date
4425 headers of messages are no longer hidden by default. For those users
4426 that liked that these were hidden, a new "Notmuch Messages Headers
4427 Visible" option in the customize interface can be set to nil. The
4428 visibility of headers can still be toggled on a per-message basis
4429 with the 'h' keybinding.
4431 For users that don't want to see some subset of those headers, the
4432 new "Notmuch Message Headers" variable can be customized to list
4433 only those headers that should be present in the display of a message.
4435 The Return key now toggles message visibility anywhere
4437 Previously this worked only on the first summary-line of a message.
4439 Customizable formatting of search results
4441 The user can easily customize the order, width, and formatting of
4442 the various fields in a "notmuch search" buffer. See the "Notmuch
4443 Search Result Format" section of the customize interface.
4445 Generate nicer names for search buffers when using a saved search
4447 Add a notmuch User-Agent header when sending mail from notmuch/emacs
4449 New keybinding (M-Ret) to open all collapsed messages in a thread
4454 Provide a new `NOTMUCH_SORT_UNSORTED` value for queries
4456 This can be somewhat faster when sorting simply isn't desired. For
4457 example when collecting a set of messages that will all be
4458 manipulated identically, (adding a tag, removing a tag, deleting the
4459 messages), then there's no advantage to sorting the messages by
4465 Fix to compile against GMime 2.6
4467 Previously notmuch insisted on being able to find GMime 2.4, (even
4468 though GMime 2.6 would have worked all along).
4470 Fix configure script to accept (and ignore) various standard options
4472 For example, those that the Gentoo build scripts expect configure to
4473 accept are now all accepted.
4478 A large number of new tests for the many new features
4480 Better display of output from failed tests
4482 Now shows failures with diff rather than forcing the user to gaze at
4483 complete actual and expected output looking for deviation.
4485 Notmuch 0.2 (2010-04-16)
4486 ========================
4488 This is the second release of the notmuch mail system, with actual
4489 detailed release notes this time!
4491 This release consists of a number of minor new features that make
4492 notmuch more pleasant to use, and a few fairly major bug fixes.
4494 We didn't quite hit our release target of "about a week" from the 0.1
4495 release, (0.2 is happening 11 days after 0.1), but we hope to do
4496 better for next week. Look forward to some major features coming to
4497 notmuch in subsequent releases.
4504 Better guessing of From: header
4506 Notmuch now tries harder to guess which configured address should be
4507 used as the From: line in a "notmuch reply". It will examine the
4508 Received: headers if it fails to find any configured address in To:
4509 or Cc:. This allows it to often choose the correct address even when
4510 replying to a message sent to a mailing list, and not directly to a
4513 Make "notmuch count" with no arguments count all messages
4515 Previously, it was hard to construct a search term that was
4516 guaranteed to match all messages.
4518 Provide a new special-case search term of "*" to match all messages
4520 This can be used in any command accepting a search term, such as
4521 "notmuch search '*'". Note that you'll want to take care that the
4522 shell doesn't expand * against the current files. And note that the
4523 support for "*" is a special case. It's only meaningful as a single
4524 search term and loses its special meaning when combined with any
4527 Automatically detect thread connections even when a parent message is
4530 Previously, if two or more message were received with a common
4531 parent, but that parent was not received, then these messages would
4532 not be recognized as belonging to the same thread. This is now fixed
4533 so that such messages are properly connected in a thread.
4538 Fix potential data loss in "notmuch new" with SIGINT
4540 One code path in "notmuch new" was not properly handling
4541 SIGINT. Previously, this could lead to messages being removed from
4542 the database (and their tags being lost) if the user pressed
4543 Control-C while "notmuch new" was working.
4545 Fix segfault when a message includes a MIME part that is empty
4547 Fix handling of non-ASCII characters with --format=json
4549 Previously, characters outside the range of 7-bit ASCII were
4550 silently dropped from the JSON output. This led to corrupted display
4551 of utf-8 content in the upcoming notmuch web-based frontends.
4553 Fix headers to be properly decoded in "notmuch reply"
4555 Previously, the user might see:
4557 Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
4561 Subject: Re: Rozlučka
4563 The former text is properly encoded to be RFC-compliant SMTP, will
4564 be sent correctly, and will be properly decoded by the
4565 recipient. But the user trying to edit the reply would likely be
4566 unable to read or edit that field in its encoded form.
4568 Emacs client features
4569 ---------------------
4571 Show the last few lines of citations as well as the first few lines
4573 It's often the case that the last sentence of a citation is what is
4574 being replied to directly, so the last few lines are often much more
4575 important. The number of lines shown at the beginning and end of any
4576 citation can be configured, (notmuch-show-citation-lines-prefix and
4577 notmuch-show-citation-lines-suffix).
4579 The '+' and '-' commands in the search view can now add and remove
4582 Selective bulk tagging is now possible by selecting a region of
4583 threads and then using either the '+' or '-' keybindings. Bulk
4584 tagging is still available for all threads matching the current
4585 search with the '*' binding.
4587 More meaningful buffer names for thread-view buffers
4589 Notmuch now uses the Subject of the thread as the buffer
4590 name. Previously it was using the thread ID, which is a meaningless
4593 Provide for customized colors of threads in search view based on tags
4595 See the documentation of notmuch-search-line-faces, (or us "M-x
4596 customize" and browse to the "notmuch" group within "Applications"
4597 and "Mail"), for details on how to configure this colorization.
4599 Build-system features
4600 ---------------------
4602 Add support to properly build libnotmuch on Darwin systems (OS X)
4604 Add support to configure for many standard options
4606 We include actual support for:
4608 --includedir --mandir --sysconfdir
4610 And accept and silently ignore several more:
4612 --build --infodir --libexecdir --localstatedir
4613 --disable-maintainer-mode --disable-dependency-tracking
4615 Install emacs client in "make install" rather than requiring a
4616 separate "make install-emacs"
4618 Automatically compute versions numbers between releases
4620 This support uses the git-describe notation, so a version such as
4621 0.1-144-g43cbbfc indicates a version that is 144 commits since the
4622 0.1 release and is available as git commit "43cbbfc".
4624 Add a new "make test" target to run the test suite and actually
4627 Notmuch 0.1 (2010-04-05)
4628 ========================
4630 This is the first release of the notmuch mail system.
4632 It includes the libnotmuch library, the notmuch command-line
4633 interface, and an emacs-based interface to notmuch.
4635 Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
4636 1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
4637 a performance bug that made notmuch very slow when modifying
4638 tags. This would cause distracting pauses when reading mail while
4639 notmuch would wait for Xapian when removing the "inbox" and "unread"
4640 tags from messages in a thread.
4647 indent-tabs-mode: nil