1 Notmuch 0.39 (UNRELEASED)
2 =========================
7 Allow to customize the separator between individual and matched and
8 non-matched authors when showing threads. See
9 `search.authors_separator` and `search.authors_matched_separator` in
12 Notmuch 0.38.3 (2024-03-09)
13 ===========================
18 Fix a bug in configuration code that caused the notmuch command to
19 erroneously report "Error: could not locate database" under some
22 Notmuch 0.38.2 (2023-12-01)
23 ===========================
28 Make sorting of string maps lexicographic on (key,value) pairs. This
29 avoids some test failures due to variation in message property output
35 Avoid extra separators after the last address in `notmuch-emacs-mua`.
38 Notmuch 0.38.1 (2023-10-26)
39 ===========================
44 Report parse errors in config files.
49 Fix image toggling for Emacs >= 29.1.
54 Fix syntax error in script.
56 Notmuch 0.38 (2023-09-12)
57 =========================
62 Support relative lastmod queries (see notmuch-sexp-queries(7) and
63 notmuch-search-terms(7) for details).
65 Support indexing of designated attachments as text (see
66 notmuch-config(1) for details).
71 Add options --offset and --limit to notmuch-show(1).
76 New commands notmuch-search-edit-search and notmuch-tree-edit-search.
78 Introduce notmuch-tree-outline-mode.
80 Some compatibility fixes for Emacs 29. At least one issue (hiding
81 images) remains in 0.38.
83 Support completion when piping to external command.
85 Fix regression in updating tag display introduced by 0.37.
90 Fix bug creating database when database.path is not set.
92 Incremental performance improvements for message deletion.
94 Catch Xapian exceptions when deleting messages.
96 Sync removed message properties to the database.
98 Replace use of thread-unsafe Query::MatchAll in the infix query
104 Be more careful when clearing the results directory.
109 Use `database_open_with_config`, and provide compatible path search
112 Bugfix for query.get_sort
117 Support testing installed version of notmuch.
119 Adapt to some breaking changes in glib handling of init files.
121 Replace OpenPGP key used in test suite.
126 Update signatures for performance test corpus.
128 Notmuch 0.37 (2022-08-21)
129 =========================
134 Fix uninitialized field in message objects.
136 Improve exception handling and error propagation for message objects.
141 Add one sided lastmod ranges for sexp queries.
143 Expand macro parameters inside regex and wildcard modifiers.
145 Command Line Interface
146 ----------------------
148 `notmuch help` now works for external commands.
150 `NOTMUCH_CONFIG` is now passed to external commands and hooks.
152 Promote the development tool `nmbug` to a user facing tool
153 `notmuch-git`. See notmuch-git(1) for details.
158 The function `notmuch-mua-mail` now moves point depending on the
161 Restrict what mime types are inlined in replies and on refresh.
163 The functions in notmuch-query.el are now obsolete and may be removed
164 in a future version of Notmuch.
166 Add some controls for lazy display of message bodies (See "Dealing
167 with large messages and threads" in the notmuch-emacs documentation).
169 Allow the user to select (with '%') a different duplicate message file
172 Use `message-dont-reply-to-names` in `notmuch-message-mode`.
174 Support custom header-line format for notmuch-show mode.
176 Notmuch 0.36 (2022-04-25)
177 =========================
182 Add the `sexp` prefix to the infix (traditional) query parser. This
183 allows specific subqueries to be parsed by the sexp parser (with
184 appropriate quoting). See `notmuch-search-terms(7)` for details.
186 Add another heuristic to regexp fields to prevent phrase parsing of
187 bracketed sub-expressions.
189 Command Line Interface
190 ----------------------
192 Envelope from ("From ") headers are now escaped as X-Envelope-From: in
193 input to `notmuch-insert`. This prevents creating mbox files when
194 calling `notmuch-insert` from e.g. `postfix`.
196 Python (CFFI) Bindings
197 ----------------------
199 Use the `config_pairs` API in ConfigIterator. This returns all
200 matching key-value pairs, not just those that happen to be stored in
206 Reorganize documentation for `notmuch-config`. Add a few links from
212 Bind the usual undo key sequences to new command
213 "notmuch-tag-undo". This allows transparent undo of tagging
219 Fix smime.4 with newer gmime. Unset `XDG_DATA_HOME` and `MAILDIR` for tests.
221 New add-on tool: notmuch-web
222 -----------------------------
224 The new devel/ tool `notmuch-web` is a very thin web client. It
225 supports a full search interface for one user: there is no facility
226 for multiple users provided today. See the notmuch-web README file
227 for more information.
229 Be careful about running it on a network-connected system: it will
230 expose a web interface that requires no authentication but exposes
233 Notmuch 0.35 (2022-02-06)
234 =========================
239 Implement the `date` and `lastmod` fields in the S-expression parser.
241 Ignore trailing `/` for pathnames in both query parsers.
243 Rename configuration option `built_with.sexpr_query` to
244 `built_with.sexp_queries`.
246 Do not assume a default mail root in split (e.g. XDG) configurations.
248 Fix some small memory leaks in `notmuch_database_open_with_config`.
253 Improve handling of leading/trailing punctuation and space for
256 Only ignore `.notmuch` at the top level in `notmuch new`.
258 Optionally show extra headers in `notmuch show`. See
259 `show.extra_headers` in notmuch-config(1).
264 Drop `C-TAB` binding in hello mode, document `backtab`.
266 Fix visual glitch in search mode by running `notmuch-search-hook`
269 Don't add space to completion candidates, improves compatibility with
270 third party completion frameworks.
272 Make citation formatting more robust against whitespace.
274 Use `--excludes=false` when generating the 'All tags' section.
276 Use cached copy of message body for `Fcc`, avoiding variant bodies for
277 signed and/or encrypted messages.
279 Add notmuch-logo.svg and use it in notmuch-hello view, replacing
282 Make header line in show buffers optional.
284 Add customizable names for search buffers.
289 Fix out-of-tree build for `python-cffi` bindings.
291 Rearrange position of {C,CXX,CPP,LD}FLAGS, prevent some clashes with
292 installed version of notmuch.
294 Ignore more configure options.
299 Replace some uses of `gdb` in the test suite with `LD_PRELOAD` based
302 Use `--with-colons` for gpgsm, fix compatibility with newer gnupg.
307 Add `matched` property to message objects.
309 Users are reminded that the old python bindings in bindings/python are
310 deprecated; this will probably be the last major release that ships
316 Use `database.mail_root` for path completion in bash/zsh.
318 Notmuch 0.34.3 (2022-01-09)
319 ===========================
324 Do not crash when presented with a .notmuch directory without a
325 xapian/ subdirectory.
327 Python Bindings (notmuch2)
328 --------------------------
330 Database constructor now searches for configuration by default. Pass
331 `config=Database.CONFIG.EMPTY` to disable.
333 The `Message.replies()` method now returns OwnedMessage objects, to
334 prevent certain memory de-allocation errors.
336 Fix for importing `notmuch2` module when building bindings
339 Notmuch 0.34.2 (2021-12-09)
340 ===========================
345 Fix a bug that wrongly resolved conflict between the `database_path`
346 parameter to `notmuch_database_open_with_config` and configuration
347 item `database.path` in favour of the latter.
349 Python Bindings (notmuch2)
350 --------------------------
352 When building the documentation for the `notmuch2` python module,
353 import from the built module, not a system wide installed one.
355 The notmuch2.Database constructor now uses the library function
356 `notmuch_database_open_with_config` to support the same configuration
357 and database location options as the library does.
359 Fix some unprintable exception objects.
361 Notmuch 0.34.1 (2021-11-03)
362 ===========================
367 Fix for deallocation and nulling of output parameter for
368 notmuch_database_{open_with,create_with,load}_config when errors
369 occur. This change fixes a potential use-after-free bug that has been
370 present since 0.32. This release also improves the documentation of
371 status returns for the same 3 functions.
373 Notmuch 0.34 (2021-10-20)
374 =========================
379 An optional new s-expression based query parser is available if
380 notmuch is built with the `sfsexp` library. See
381 notmuch-sexp-queries(7) for syntax, and use `notmuch config get
382 built_with.sexpr_query` to check if notmuch is compiled with
383 s-expression query support.
388 Support multiple `Delivered-To` headers in notmuch-reply(1).
393 Functions are now allowed in `notmuch-search-result-format`.
395 Improvements to unthreaded view on large threads.
397 Tolerate bad/missing working directory for most commands.
399 Allow customization of tree drawing symbols in notmuch-tree mode.
401 Notmuch 0.33.2 (2021-09-30)
402 ===========================
407 Improve reliability of T355-smime by changing gpgsm initialization.
409 Notmuch 0.33.1 (2021-09-10)
410 ===========================
415 Replace the fully-qualified-domain-name of the host with "localhost"
416 in the default email address. This should fix two flaky subtests in
419 Notmuch 0.33 (2021-09-03)
420 =========================
425 Correct documentation about transactions.
427 Add a configurable automatic commit of transactions. See
428 `database.autocommit` in notmuch-config(1).
430 Document the algorithm used to find a database.
435 Define format version 5, which supports sorting the output of
441 `notmuch` no longer sets `mail-user-agent` on load. To restore the
442 previous behaviour of using notmuch to send mail by default, customize
443 `mail-user-agent` to `notmuch-user-agent`.
445 `notmuch-company` now works in `org-msg`.
447 Improve the display of messages from long threads in unthreaded mode.
449 Prefer email addresses over User ID when showing valid signatures.
451 Define a new face `notmuch-jump-key`.
453 New commands in notmuch-tree view: `notmuch-tree-filter` and `notmuch-tree-filter-by-tag`.
455 Honour `notmuch-show-text/html-blocked-images` when using `w3m` to
458 Support toggling sort order in notmuch-tree mode.
463 Memory management of allocated notmuch objects (database, messages,
464 etc...) is now done via the Ruby GC. This removes all constraints on
465 the order of object destruction. Database close and destroy are
466 split, following an old library API change.
471 Respect excluded tags when showing a thread.
476 Fix doc build for Sphinx 4.0.
478 Improve the markup and linking of the documentation.
480 Notmuch 0.32.3 (2021-08-17)
481 ===========================
486 Restore location of database via `MAILDIR` environment variable, which
489 Bump libnotmuch minor version to match the documentation in
492 Correct documentation for deprecated database opening functions to
493 point out that they (still) do not load configuration information.
498 Restore "notmuch config get built_with.*", which was broken in 0.32.
500 Notmuch 0.32.2 (2021-06-27)
501 ===========================
506 Fix a bug from 2017 that can add duplicate thread-id terms to message
512 Fix small memory leak in notmuch new.
517 Add `(require 'seq)` for `seq-some`.
522 Fix man page build for Sphinx 4.x. Fix variable name in emacs docs.
527 Fix backup creation in `perf-test/T00-new`. Check openssl
528 prerequisite in `add_gpgsm_home`.
530 Notmuch 0.32.1 (2021-05-15)
531 ===========================
536 Restore handling of relative values for `database.path` that was
537 broken by 0.32. Extend this handling to `database.mail_root`,
538 `database.backup_dir`, and `database.hook_dir`.
540 Reload certain metadata from Xapian database in
541 notmuch_database_reopen. This fixes a bug when adding messages to the
542 database in a pre-new hook.
544 Fix default of `$HOME/mail` for `database.path`. In release 0.32, this
545 default worked only in "notmuch config".
550 Restore the dynamically bound variables `tag-changes` and `query` in
551 in `notmuch-before-tag-hook` and `notmuch-after-tag-hook`.
553 Add `notmuch-jump-key` face to fontify keys in `notmuch-jump` and
554 related functions. To ensure backward compatibility, the new face
555 inherits from `minibuffer-prompt`.
557 Notmuch 0.32 (2021-05-02)
558 =========================
563 This release includes a significant overhaul of the configuration
564 management facilities for notmuch. The previous distinction between
565 configuration items that can be modified via plain text configuration
566 files and those that must be set in the database via the "notmuch
567 config" subcommand is gone, and all configuration items can be set in
568 both ways. The external configuration file overrides configuration
569 items in the database. The location of database, hooks, and
570 configuration files is now more flexible, with several new
571 configuration variables. In particular XDG locations are now supported
572 as fallbacks for database, configuration and hooks. For more
573 information see `notmuch-config(1)`.
578 To support the new configuration facilities, several functions and
579 constants have been added to the notmuch API. Most notably:
581 - `notmuch_database_create_with_config`
582 - `notmuch_database_open_with_config`
583 - `notmuch_database_load_config`
584 - `notmuch_config_get`
586 A previously requested API change is that `notmuch_database_reopen` is
587 now exposed (and generalized).
589 The previously severe slowdowns from large numbers calls to
590 notmuch_database_remove_message or notmuch_message_delete in one
591 session has been fixed.
593 As always, the canonical source of API documentation is
594 `lib/notmuch.h`, or the doxygen formatted documentation in `notmuch(3)`.
599 The `notmuch config set` subcommand gained a `--database` argument to
600 specify that the database should be updated, rather than a config file.
602 The speed of `notmuch new` and `notmuch reindex` in dealing with large
603 numbers of mail file deletions is significantly improved.
608 Completion related updates include: de-duplicating tags offered for
609 completion, use the actual initial input in address completion, allow
610 users to opt out of notmuch address completion, and do not force Ido
611 when prompting for senders.
613 Some keymaps used to contain bindings for unnamed commands. These
614 lambda expressions have been replaced by named commands (symbols), to
617 Lexical binding is now used in all notmuch-emacs libraries.
619 Fix bug in calling `notmuch-mua-mail` with a non-nil RETURN-ACTION.
621 Removed, inlined or renamed functions and variables:
622 `notmuch-address-locate-command`,
623 `notmuch-documentation-first-line`, `notmuch-folder`,
624 `notmuch-hello-trim', `notmuch-hello-versions` => `notmuch-version`,
625 `notmuch-remove-if-not`, `notmuch-search-disjunctive-regexp`,
626 `notmuch-sexp-eof`, `notmuch-split-content-type`, and
627 `notmuch-tree-button-activate`.
629 Keymaps are no longer fset, which means they need to be referred to in
630 define-key directly (without quotes). If your Emacs configuration has a
632 (define-key 'notmuch-show-mode-map "7" 'foo)
633 you should change it to:
634 (define-key notmuch-show-mode-map "7" 'foo)
636 Notmuch 0.31.4 (2021-02-18)
637 ===========================
642 Fix include bug triggered by glib 2.67.
647 Fix race condition in T568-lib-thread.
649 Notmuch 0.31.3 (2020-12-25)
650 ===========================
655 Fix for exclude tags in notmuch2 bindings.
660 Portability update for T360-symbol-hiding.
665 Fix for memory error in notmuch_database_get_config_list.
667 Notmuch 0.31.2 (2020-11-08)
668 ===========================
673 Catch one more occurrence of "version" in the build system, which
674 caused the file to be regenerated in the release tarball.
676 Notmuch 0.31.1 (2020-11-08)
677 ===========================
682 Fix a memory initialization bug in notmuch_database_get_config_list.
687 Rename file 'version' to 'version.txt'. The old file name conflicted
688 with a C++ header for some compilers.
690 Replace use of coreutils `realpath` in configure.
692 Notmuch 0.31 (2020-09-05)
693 =========================
698 Notmuch now supports Emacs 27.1. You may need to set
699 `mml-secure-openpgp-sign-with-sender` and/or
700 `mml-secure-smime-sign-with-sender` to continue signing messages.
702 The minimum supported major version of GNU Emacs is now 25.1.
704 Add support for moving between threads after notmuch-tree-from-search-thread.
706 New `notmuch-unthreaded` mode (added in Notmuch 0.30)
708 Unthreaded view is a mode where each matching message is shown on a
711 The main key entries to unthreaded view are
713 'u' enter a query to view in unthreaded mode (works in hello,
714 search, show and tree mode)
716 'U' view the current query in unthreaded mode (works from search,
719 Saved searches can also specify that they should open in unthreaded
722 Currently it is not possible to specify the sort order: it will
723 always be newest first.
728 The shell pipeline executed by notmuch-mutt, which symlinked matched
729 files to a maildir for mutt to access is replaced with internal perl
730 processing. This search operation is now more portable, and somewhat
736 Improve exception handling in the library. This should
737 largely eliminate terminations inside the library due to uncaught
738 exceptions or internal errors. No doubt there are a few uncovered
739 code paths still; please report them as bugs.
741 Add `notmuch_message_get_flag_st` and
742 `notmuch_message_has_maildir_flag_st`, and deprecate the existing
743 non-status providing versions.
745 Move memory de-allocation from `notmuch_database_close` to
746 `notmuch_database_destroy`.
748 Handle relative filenames in `notmuch_database_index_file`, as
749 promised in the documentation.
754 Documentation for the python bindings is merged into the main
755 sphinx-doc documentation tree. The merged documentation can be built
756 with e.g. `make sphinx-html`
761 We now support building notmuch against Xapian 1.5 (the current
762 development version).
767 Test suite fixes for compatibility with Emacs 27.1.
772 Man pages are now compressed reproducibly.
774 Notmuch 0.30 (2020-07-10)
775 =========================
780 Handle S/MIME (PKCS#7) messages -- one-part signed messages, encrypted
781 messages, and multilayer messages. Treat them symmetrically to
782 OpenPGP messages. This includes handling protected headers
785 If you're using Notmuch with S/MIME, you currently need to configure
791 Detect and automatically repair a common form of message mangling
792 created by Microsoft Exchange (see index.repaired=mixedup in
793 notmuch-properties(7)).
798 Avoid indexing the legacy-display part of an encrypted message that
799 has protected headers (see
800 index.repaired=skip-protected-headers-legacy-display in
801 notmuch-properties(7)).
806 Drop support for python2, focus on python3.
808 Introduce new CFFI-based python bindings in the python module named
809 "notmuch2". Officially deprecate (but still support) the older
815 Support for Xapian 1.2 is removed. The minimum supported version of
818 Notmuch 0.29.3 (2019-11-27)
819 ===========================
824 Fix for use-after-free in notmuch_config_list_{key,val}.
826 Fix for double close of file in notmuch-dump.
831 Drop python2 support from shipped debian packaging.
833 Notmuch 0.29.2 (2019-10-19)
834 ===========================
839 Fix for file descriptor leak when opening gzipped mail files. Thanks
840 to James Troup for the bug report and the fix.
842 Notmuch 0.29.1 (2019-06-11)
843 ===========================
848 Fix for installation failure with `configure --without-emacs`.
850 Notmuch 0.29 (2019-06-07)
851 =========================
856 Add "body:" field to allow searching for terms that occur only in the
857 message body. Users will need to reindex their mail to take advantage
860 Add support for indexing user specified headers (e.g. List-Id). See
861 notmuch-config(1) for details. This requires reindexing after changing
862 the set of headers to be indexed.
864 Fix bug for searching in some headers for Xapian keywords in quoted
867 Add support for gzip compressed mail messages (/not/ multi-message
868 mboxes); e.g. `gzip -9 $MAIL/archive/giant-message && notmuch new`
869 should work. Note that maildir flag syncing for gzipped messages is
872 Notmuch is now capable of indexing, searching and rendering
873 cryptographically-protected Subject: headers of the form produced by
874 Enigmail and K-9 mail in encrypted messages.
876 Command Line Interface
877 ----------------------
879 `notmuch show` now supports --body=false and --include-html with
882 Fix several performance problems with `notmuch reindex`.
884 `notmuch show` and `notmuch reply` now emit per-message cryptographic
885 status in their json and sexp output formats. See devel/schemata for
886 more details about what is included there. This status includes
887 information about cryptographic protections for the Subject header.
892 Optionally check for missing attachments in outgoing messages (see
893 function `notmuch-mua-attachment-check`).
895 Bind `B` to browse URLs in current message.
897 Bind `g` to refresh the current notmuch buffer.
899 Editing a message as new now includes an FCC header.
901 Forwarded messages are now tagged as +forwarded (customizable).
903 Add references header to link forwarded message to thread of original
906 The minimum supported major version of Emacs is now 24.
908 Support for GNU Emacs older than 25.1 is deprecated with this release,
909 and may be removed in a future release.
911 Notmuch-emacs documentation is somewhat expanded. More contributions
917 Notmuch release tarballs are now compressed with `xz`.
919 We now provide conventional detached signatures of the release
920 tarballs in addition to the signed `sha256sum` files.
925 Support for GMime 2.6 is removed. The minimum supported version of
926 GMime is now 3.0.3. GMime also needs to have been compiled with
927 cryptography support.
932 If either GNU parallel or moreutils parallel is installed, the tests
933 in the test suite will now be run in parallel (one per available
934 core). This can be disabled with NOTMUCH_TEST_SERIALIZE=1.
936 Notmuch 0.28.4 (2019-05-05)
937 ===========================
939 Command line interface
940 ----------------------
942 Fix a spurious error when using `notmuch show --raw` on messages whose
943 size is a multiple of the internal buffer size.
945 Notmuch 0.28.3 (2019-03-05)
946 ===========================
951 Fix a bug with the internal data structure _notmuch_string_map_t used
952 by message properties.
957 Serialize calls to sphinx-build to avoid race condition.
959 Notmuch 0.28.2 (2019-02-17)
960 ===========================
965 Invoke gpg with --batch and --no-tty.
970 Fix documentation build with Python 3.7. Note that Python >= 3.3 is
971 now needed to build this documentation.
973 Notmuch 0.28.1 (2019-02-01)
974 ===========================
979 `configure` no longer uses the special variable BASH, as this causes
980 problems on systems where /bin/sh is bash.
982 Notmuch 0.28 (2018-10-12)
983 =========================
990 The threading algorithm has been updated to consider all references,
991 not just the heuristically chosen parent (e.g. when that parent is
992 not in the database). The heuristic for choosing a parent message
993 has also been updated to again consider the In-Reply-To header, if
994 it looks sensible. Re-indexing might be needed to take advantage of
997 Handle mislabelled Windows-1252 parts
999 Messages that contain Windows-1252 are apparently frequently
1000 mislabelled as ISO 8859-1. Use GMime functionality to apply the
1001 correct encoding for such messages.
1003 Command Line Interface
1004 ----------------------
1006 Support relative database paths
1008 Database paths (i.e. parameters to `notmuch config set
1009 database.path`) without a leading `/` are now interpreted relative
1010 to $HOME of the invoking user.
1015 Improve stderr handling
1017 Add a real sentinel process to clean up stderr buffer. This is
1018 needed on e.g. macOS.
1020 Call `notmuch-mua-send-hook` hooks when sending a message
1022 This hook was documented, but not functional for a very long time.
1027 The zsh completion has been updated to cover most of the notmuch
1028 CLI. Internally it uses regexp searching, so needs at least Notmuch
1034 The build system now installs notmuch-mutt and notmuch-emacs-mua with
1035 absolute shebangs, following the conventions of most Linux
1041 Fix certain tests that were failing with GMime 2.6. Users are reminded
1042 that support for versions of GMime before 3.0.3 has been deprecated
1045 Notmuch 0.27 (2018-06-13)
1046 =========================
1051 Add support for thread:{} queries
1053 Queries of the form `thread:{foo} and thread:{bar}` match threads
1054 containing (possibly distinct) messages matching foo and bar. See
1055 `notmuch-search-terms(7)` for details.
1057 Command Line Interface
1058 ----------------------
1060 Add the --full-scan option to `notmuch new`
1062 This option disables mtime based optimization of scanning for new mail.
1064 Add new --decrypt=stash option for `notmuch show`
1066 This facilitates a workflow for encrypted messages where message
1067 cleartext are indexed on first read, but the user's decryption key
1068 does not have to be available during message receipt.
1073 An initial manual for `notmuch-emacs` is now installed by default (in
1079 As of this release, support for versions of Xapian before 1.4.0 is
1080 deprecated, and may disappear in a future release of notmuch.
1082 Notmuch 0.26.2 (2018-04-28)
1083 ===========================
1088 Work around Xapian bug with `get_mset(0,0, x)`
1090 This causes aborts in `_notmuch_query_count_documents` on
1091 e.g. Fedora 28. The underlying bug is fixed in Xapian commit
1092 f92e2a936c1592, and will be fixed in Xapian 1.4.6.
1094 Make thread indexing more robust against reference loops
1096 Choose a thread root by date in case of reference loops. Fix a
1097 related abort in `notmuch show`.
1099 Notmuch 0.26.1 (2018-04-02)
1100 ===========================
1105 Bump the library minor version. This should have happened in 0.26, but
1106 better late than never.
1109 Notmuch 0.26 (2018-01-09)
1110 =========================
1112 Command Line Interface
1113 ----------------------
1115 Support for re-indexing existing messages
1117 There is a new subcommand, `notmuch reindex`, which re-indexes all
1118 messages matching supplied search terms. This permits users to
1119 change the way specific messages are indexed.
1121 Note that for messages with multiple variants in the message
1122 archive, the recorded Subject: of may change upon reindexing,
1123 depending on the order in which the variants are indexed.
1125 Improved error reporting in notmuch new
1127 Give more details when reporting certain Xapian exceptions.
1129 Support maildir synced tags in `new.tags`
1131 Tags `draft`, `flagged`, `passed`, and `replied` are now supported
1132 in `new.tags`. The tag `unread` is still special in the presence of
1133 maildir syncing, and will be added for files in `new/` regardless of
1134 the setting of `new.tags`.
1136 Support /regex/ in new.ignore
1138 Files and directories may be ignored based on regular expressions.
1140 Allow `notmuch insert --folder=""`
1142 This inserts into the top level folder.
1144 Strip trailing '/' from folder path for notmuch insert
1146 This prevents a potential problem with duplicated database records.
1148 New option --output=address for notmuch address
1150 Make `notmuch show` more robust against deleting duplicate files
1152 The option --decrypt now takes an explicit argument
1154 The --decrypt option to `notmuch show` and `notmuch reply` now takes
1155 an explicit argument. If you were used to invoking `notmuch show
1156 --decrypt`, you should switch to `notmuch show --decrypt=true`.
1158 Boolean and keyword arguments now take a `--no-` prefix
1163 Indexing cleartext of encrypted e-mails
1165 It's now possible to include the cleartext of encrypted e-mails in
1166 the notmuch index. This makes it possible to search your encrypted
1167 e-mails with the same ease as searching cleartext. This can be done
1168 on a per-message basis by passing --decrypt=true to indexing
1169 commands (new, insert, reindex), or by default by running "notmuch
1170 config set index.decrypt true".
1172 Encrypted messages whose cleartext is indexed will typically also
1173 have their session keys stashed as properties associated with the
1174 message. Stashed session keys permit rapid rendering of long
1175 encrypted threads, and disposal of expired encryption-capable keys.
1176 If for some reason you want cleartext indexing without stashed
1177 session keys, use --decrypt=nostash for your indexing commands (or
1178 run "notmuch config set index.decrypt nostash"). See `index.decrypt`
1179 in notmuch-config(1) for more details.
1181 Note that stashed session keys permit reconstruction of the
1182 cleartext of the encrypted message itself, and the contents of the
1183 index are roughly equivalent to the cleartext as well. DO NOT USE
1184 this feature without considering the security of your index.
1189 Guard against concurrent searches in notmuch-tree
1191 Use make-process when available
1193 This allows newer Emacs to separate stdout and stderr from the
1194 notmuch command without using temporary files.
1199 Indexing files with duplicate message-id
1201 Files with duplicate message-id's are now indexed, and searchable
1202 via terms and phrases. There are known issues related to
1203 presentation of results and regular-expression search, but in
1204 principle no mail file should be completely unsearchable now.
1206 New functions to count files
1208 Two new functions in the libnotmuch API:
1209 `notmuch_message_count_files`, and `notmuch_thread_get_total_files`.
1211 New function to remove properties
1213 A new function was added to the libnotmuch API to make it easier to
1214 drop all properties with a common pattern:
1215 `notmuch_message_remove_all_properties_with_prefix`
1217 Change of return value of `notmuch_thread_get_authors`
1219 In certain corner cases, `notmuch_thread_get_authors` previously
1220 returned NULL. This has been replaced by an empty string, since the
1221 possibility of NULL was not documented.
1223 Transition `notmuch_database_add_message` to `notmuch_database_index_file`
1225 When indexing an e-mail message, the new
1226 `notmuch_database_index_file` function is the preferred form, and
1227 the old `notmuch_database_add_message` is deprecated. The new form
1228 allows passing a set of options to the indexing engine, which the
1229 operator may decide to change from message to message.
1236 The test suite now works properly with out-of-tree builds, i.e. with
1237 separate source and build directories. The --root option to tests
1238 has been dropped. The same can now be achieved more reliably using
1244 Python bindings specific Debian packaging is removed
1246 The bindings have been build by the top level Debian packaging for a
1247 long time, and `bindings/python/debian` has bit-rotted.
1249 Open mail files in binary mode when using Python 3
1251 This avoids certain encoding related crashes under Python 3.
1253 Add python bindings for `notmuch_database_{get,set}_config*`
1255 Optional `decrypt_policy` flag is available for notmuch.database().index_file()
1260 nmbug's internal version increases to 0.3 in this notmuch release.
1261 User-facing changes with this notmuch release:
1263 * Accept failures to unset `core.worktree` in `clone`, which allows
1264 nmbug to be used with Git 2.11.0 and later.
1265 * Auto-checkout in `clone` if it wouldn't clobber existing content,
1266 which makes the initial clone more convenient.
1267 * Only error for invalid diff lines in `tags/`, which allows for
1268 `README`s and similar in nmbug repositories.
1273 New man page: notmuch-properties(7)
1275 This new page to the manual describes common conventions for how
1276 properties are used by libnotmuch, the CLI, and associated programs.
1277 External projects that use properties are encouraged to claim their
1278 properties and conventions here to avoid collisions.
1280 Notmuch 0.25.3 (2017-12-08)
1281 ===========================
1286 Extend mitigation (disabling handling x-display in text/enriched) for
1287 Emacs bug #28350 to Emacs versions before 24.4 (i.e. without
1290 Command Line Interface
1291 ----------------------
1293 Correctly report userid validity. Fix test suite failure for GMime >=
1294 3.0.3. This change raises the minimum supported version of GMime 3.x
1297 Notmuch 0.25.2 (2017-11-05)
1298 ===========================
1300 Command Line Interface
1301 ----------------------
1303 Fix segfault in notmuch-show crypto handling when compiled against
1304 GMime 2.6; this was a regression in 0.25.
1309 Support for GMime before 3.0 is now deprecated, and will be removed in
1312 Notmuch 0.25.1 (2017-09-11)
1313 ===========================
1318 Disable handling x-display in text/enriched messages. Mitigation for
1321 Notmuch 0.25 (2017-07-25)
1322 =========================
1327 Add regexp searching for mid, paths, and tags.
1329 Skip HTML tags when indexing
1331 In particular this avoids indexing large inline images.
1333 Command Line Interface
1334 ----------------------
1336 Bash completion is now installed to /usr/share by default.
1338 Allow space as separator for keyword arguments.
1343 Support for stashing message timestamp in show and tree views
1345 Invoking `notmuch-show-stash-date` with a prefix argument
1346 stashes the unix timestamp of the current message instead of
1349 Don't use 'function' as variable name, workaround emacs bug 26406.
1354 Add workaround for date parsing of bad input in older GMime
1356 In certain circumstances, older GMime libraries could return
1357 negative numbers when parsing syntactically invalid dates.
1359 Replace deprecated functions with status returning versions
1361 API of notmuch_query_{search,count}_{messages,threads} has
1362 changed. notmuch_query_add_tag_exclude now returns a status
1365 Add support for building against GMime 3.0.
1367 Rename libutil.a to libnotmuch_util.a.
1369 libnotmuch SONAME is incremented to libnotmuch.so.5.
1371 Notmuch 0.24.2 (2017-06-01)
1372 ===========================
1374 Command Line Interface
1375 ----------------------
1377 Fix output from `notmuch dump --include=properties` to not include tags.
1382 Fix filename stashing in tree view.
1384 Notmuch 0.24.1 (2017-04-01)
1385 ===========================
1390 Fix regressions in non-regexp search for `from:` and `subject:`
1392 The regexp search code in 0.24 introduced a regression in the
1393 handling of empty queries and wildcards. These are both corrected in
1396 Command Line Interface
1397 ----------------------
1399 Fix several memory leaks in `notmuch show`
1401 Update NEWS for 0.24 to mention schema changes
1403 Fix bug in dump header
1405 The previous version of the dump header failed to mention the
1406 inclusion of tags. This fix bumps the version number of the dump
1407 format to 3. There are no other changes to the format.
1412 Fix a read-after-free in the library.
1414 Notmuch 0.24 (2017-03-12)
1415 =========================
1420 Regular expression searches supported for `from:` and `subject:`
1422 This requires recent Xapian (1.4+) See notmuch-search-terms(7) for
1425 Command Line Interface
1426 ----------------------
1428 Run external `notmuch-` prefixed commands as subcommands
1430 You can now add your own `notmuch-` prefixed commands in PATH, and
1431 have notmuch run them as if they were notmuch commands. See the
1432 `notmuch(1)` man page for details
1434 New default output format to 3
1436 See devel/schemata for details. Users of the structured output
1437 format are reminded of the `--format-version` argument to `notmuch
1438 show` and `notmuch search` which can prevent breakage when the
1439 default format changes.
1444 Postpone and resume messages in `notmuch-message-mode` (composition)
1446 Notmuch now has built in support for postponing, saving and resuming
1447 messages. The default bindings are C-x C-s to save a draft, C-c C-p
1448 to postpone a draft (save and exit compose buffer), and "e" in show
1449 or tree view to resume.
1451 Draft messages are tagged with `notmuch-draft-tags` (draft by
1452 default) so you may wish to add that to the excluded tags list. When
1453 saving a previously saved draft message the earlier draft gets
1456 Note that attachments added before postponing will be included as
1457 they were when you postponed in the final message.
1461 It is now possible to save the list of address completions for
1462 notmuch's internal completion between runs of emacs. This makes the
1463 first calls to address completion much better and faster. For
1464 privacy reasons it is disabled by default, to enable set or
1465 customize `notmuch-address-save-filename`.
1469 It is now possible to configure tagging shortcuts (with an interface
1470 like notmuch jump). For example (by default) k u will remove the
1471 unread tag, and k s will add a tag "spam" and remove the inbox
1472 tag. Pressing k twice will do the reverse operation so, for example,
1473 k k s removes the spam tag and adds the inbox tag. See the customize
1474 variable `notmuch-tagging-keys` for more information.
1478 It is now possible to refresh all notmuch buffers to reflect the
1479 current state of the database with a single command, `M-=`.
1481 Stop display of `application/*` parts
1483 By default gnus displays all `application/*` parts such as
1484 application/zip in the message buffer. This has several undesirable
1485 effects for notmuch (security, triggering errors etc). Notmuch now
1486 overrides this and does not display them by default. If you have
1487 customized `mm-inline-override-types` then we assume you know what
1488 you want and do not interfere; if you do want to stop the display of
1489 `application/*` add `application/*` to your customization. If you want
1490 to allow `application/*` then set `mm-inline-override-types` to
1493 Small change in the api for notmuch-search-tag
1495 When `notmuch-search-tag` is called non-interactively and the region
1496 is set, then it only tags the threads in the region. (Previously it
1497 only tagged the current thread.)
1499 Bugfix for sending messages with very long headers
1501 Previously emacs didn't fold very long headers when sending which
1502 could cause the MTA to refuse to send the message. This makes sure
1503 it does fold any long headers so the message is RFC compliant.
1505 `notmuch emacs-mua` command installed with the Emacs interface
1507 We've carried a `notmuch-emacs-mua` script in the source tree for
1508 quite some time. It can be used to launch the Notmuch Emacs
1509 interface from the command line in many different ways. Starting
1510 with this release, it will be installed with the Emacs
1511 interface. With the new external subcommand support, the script
1512 transparently becomes a new notmuch command. See the
1513 `notmuch-emacs-mua(1)` man page for details.
1515 Notmuch Emacs desktop integration
1517 The desktop integration file will now be installed with the Notmuch
1518 Emacs interface, adding a Notmuch menu item and configuration to
1519 allow the user to set up Notmuch Emacs as the `mailto:` URL handler.
1524 `notmuch_query_count_messages` is now non-destructive
1526 Internally the implementation of excludes has changed to make this
1529 Improved handling of DatabaseModifiedError
1531 Previously uncaught exceptions reading message metadata are now
1534 Notmuch 0.23.7 (2017-02-28)
1535 ===========================
1540 Drop use of gpgconf --create-socketdir. Move $GNUPGHOME to /tmp.
1542 It turns out the hardcoded use of /run/user in gpg doesn't work out
1543 that well in some environments. The more low tech fix is to move all
1544 of $GNUPGHOME to somewhere where we can control the length of the
1547 Notmuch 0.23.6 (2017-02-27)
1548 ===========================
1550 Command Line Interface
1551 ----------------------
1553 Fix read-after-free bug in `notmuch new`.
1558 Use gpgconf --create-socketdir if available.
1560 GnuPG has a facility to use sockets in /run or /var/run to avoid
1561 problems with long socket paths, but this is not enabled by default
1562 for GNUPGHOME other than $HOME/.gnupg. Enable it, if possible.
1564 Notmuch 0.23.5 (2017-01-09)
1565 ===========================
1570 Fix quoting bug in configure. This had introduced a RUNPATH into the
1571 notmuch binary in cases where it was not not needed.
1573 Notmuch 0.23.4 (2016-12-24)
1574 ===========================
1576 Command Line Interface
1577 ----------------------
1579 Improve error handling in notmuch insert
1581 Database lock errors no longer prevent message file delivery to the
1582 filesystem. Certain errors during `notmuch insert` most likely to
1583 be temporary return EX_TEMPFAIL.
1588 Restore autoload cookie for notmuch-search.
1590 Notmuch 0.23.3 (2016-11-27)
1591 ===========================
1593 Command Line Interface
1594 ----------------------
1596 Treat disappearing files during notmuch new as non-fatal.
1601 Fix incompatibility (related to signature size) with gnupg 2.1.16.
1603 Notmuch 0.23.2 (2016-11-20)
1604 ===========================
1609 Fix notmuch-interesting-buffer and notmuch-cycle-notmuch-buffers.
1611 notmuch-tree-mode and notmuch-message-mode buffers are now
1612 considered interesting by `notmuch-interesting-buffer` and
1613 `notmuch-cycle-notmuch-buffers`.
1615 Restore compatibility with Emacs 23.
1617 Notmuch support for Emacs 23 is now deprecated.
1619 Notmuch 0.23.1 (2016-10-23)
1620 ===========================
1625 Require Xapian >= 1.2.6
1627 The ifdef branch for older Xapian (pre-compact API) had bit-rotted.
1632 Fix default colours for unread and flagged messages
1634 In 0.23 the default colours for unread and flagged messages in
1635 search view were accidentally swapped. This release returns them to
1636 the original colours.
1638 A related change in 0.23 broke the customize widget for
1639 notmuch-search-line-faces. This is now fixed.
1641 Fix test failure with Emacs 25.1
1643 A previously undiscovered jit-lock related bug was exposed by Emacs
1644 25, causing a notmuch-show mode test to fail. This release fixes the
1645 bug, and hence the test.
1647 Notmuch 0.23 (2016-10-03)
1648 =========================
1650 General (Xapian 1.4+)
1651 ---------------------
1653 Compiling against Xapian 1.4 enables several new features.
1655 Support for single argument date: queries
1657 `date:<expr>` is equivalent to `date:<expr>..<expr>`.
1659 Support for blocking opens
1661 When opening a database notmuch by default will wait for another
1662 process to release a write lock, rather than returning an error.
1664 Support for named queries
1666 Named queries (also known as 'saved searches') can be defined with a
1667 `query:name` format. The expansion of these queries is stored in the
1668 database and they can be used from any notmuch client.
1673 Message property API
1675 libnotmuch now supports the attachment of arbitrary key-value pairs
1676 to messages. These can be used by various tools to manage their
1677 private data without polluting the user tag space. They also support
1678 iteration of values with the same key or same key prefix.
1680 Bug fix for `notmuch_directory_set_mtime`
1682 Update cached mtime to match on-disk mtime.
1687 Support for compile time options
1689 A group of `built_with` keys is now supported for notmuch
1690 config. Initial keys in this group are `compact`, `field_processor`,
1693 Dump/Restore support for configuration information and properties
1695 Any configuration information stored in the database (initially just
1696 named queries) is dumped and restored. Similarly any properties
1697 attached to messages are also dumped and restored. Any new
1698 information in the dump format is prefixed by '#' to allow existing
1699 scripts to ignore it.
1704 Make notmuch-message-mode use insert for fcc
1706 Notmuch-message-mode now defaults to using notmuch insert for
1707 fcc. The old file based fcc behaviour can be restored by setting the
1708 defcustom `notmuch-maildir-use-notmuch-insert` to nil.
1710 When using notmuch insert, `notmuch-fcc-dirs` must be a subdirectory
1711 of the mailstore (absolute paths are not permitted) followed by any
1712 tag changes to be applied to the inserted message. The tag changes
1713 are applied after the default tagging for new messages. For example
1714 setting the header to "sentmail -inbox +sent" would insert the
1715 message in the subdirectory sentmail of the mailstore, add the tag
1716 "sent", and not add the (normally added) "inbox" tag.
1718 Finally, if the insert fails (e.g. if the database is locked) the
1719 user is presented with the option to retry, ignore, or edit the
1722 Make internal address completion customizable
1724 There is a new defcustom `notmuch-address-internal-completion` which
1725 controls how the internal completion works: it allows the user to
1726 choose whether to match on messages the user sent, or the user
1727 received, and to filter the messages used for the match, for example
1730 Allow internal address completion on an individual basis
1732 There is a new function `notmuch-address-toggle-internal-completion`
1733 (by default it has no keybinding) which allows users who normally
1734 use an external completion command to use the builtin internal
1735 completion for the current buffer.
1737 Alternatively, if the user has company-mode enabled, then the user
1738 can use company mode commands such as `company-complete` to
1739 activate the builtin completion for an individual completion.
1743 The function `notmuch-show-resend-message` (bound to `b` in show
1744 and tree modes) will (attempt to) send current message to new
1745 recipients. The headers of the message won't be altered (e.g. `To:`
1746 may point to yourself). New `Resent-To:`, `Resent-From:` and so on
1747 will be added instead.
1749 Face customization is easier
1751 New faces `notmuch-tag-unread`, `notmuch-tag-flagged`,
1752 `notmuch-tag-deleted`, `notmuch-tag-added`,
1753 `notmuch-search-flagged-face` and `notmuch-search-unread-face` are
1754 now used by default. Customize `notmuch-faces` to modify them.
1756 Omit User-Agent header by default when sending mail
1761 Add support for `notmuch_database_get_all_tags`
1766 Go bindings moved to contrib
1768 Add support for `notmuch_threads_t` and `notmuch_thread_t`
1770 Fixed constant values so they are not all zero anymore
1772 Previously, it was impossible to open writable database handles,
1773 because `DATABASE_MODE_READ_ONLY` and `DATABASE_MODE_READ_WRITE` were
1775 The same issue occurred with sort modes.
1777 Notmuch 0.22.2 (2016-09-08)
1778 ===========================
1785 Have gdb write to a log file instead of stdout, hiding some more
1786 (harmless) stderr chatter which causes test failures.
1788 Hardcode fingerprint in PGP/MIME tests
1790 Make the tests more robust against changing GnuPG output formats.
1792 Notmuch 0.22.1 (2016-07-19)
1793 ===========================
1798 Correct the definition of `LIBNOTMUCH_CHECK_VERSION`.
1800 Document the (lack of) operations permitted on a closed database.
1805 Fix race condition in dump / restore tests.
1810 Use `env` to locate perl.
1815 Tell `message-mode` mode that outgoing messages are mail
1817 This makes message-mode configuration behave more predictably.
1819 Respect charset of MIME parts when reading them
1821 Fix previous assumption that everyone uses UTF-8.
1823 Notmuch 0.22 (2016-04-26)
1824 =========================
1831 Notmuch should now build (and the test suite should pass) on recent
1832 releases of Xapian 1.3.x. It has been tested with Xapian 1.3.5.
1834 Limited support for S/MIME messages
1836 Signature verification is supported, but not decryption. S/MIME
1837 signature creation and S/MIME encryption are supported via built-in
1838 support in Emacs. S/MIME support is not extensively tested at this
1843 Fix for threading bug involving deleting and re-adding
1844 messages. Fix for case-sensitive content disposition headers. Fix
1845 handling of 1 character directory names at top level.
1847 Command Line Interface
1848 ----------------------
1850 `notmuch show` now supports verifying S/MIME signatures
1852 This support relies on an appropriately configured `gpgsm`.
1857 Drop dependency on "pkg-config emacs".
1862 Notmuch replies now include all parts shown in the show view
1864 There are two main user visible changes. The first is that rfc822
1865 parts are now included in replies.
1867 The second change is that part headers are now included in the reply
1868 buffer to provide visible separation of the parts. The choice of
1869 which part headers to show is customizable via the variable
1870 `notmuch-mua-reply-insert-header-p-function`.
1872 Filtering or Limiting messages is now bound to `l` in the search view
1874 This binding now matches the analogous binding in show view.
1876 `F` forwards all open messages in a thread
1878 When viewing a thread of messages, the new binding `F` can be used
1879 to generate a new outgoing message which forwards all of the open
1880 messages in the thread. This is analogous to the `f` binding, which
1881 forwards only the current message.
1883 Preferred content type can be determined from the message content
1885 More flexibility in choosing which sub-part of a
1886 multipart/alternative part is initially shown is available by
1887 setting `notmuch-multipart/alternative-discouraged` to a function
1888 that returns a list of discouraged types. The function so specified
1889 is passed the message as an argument and can examine the message
1890 content to determine which content types should be discouraged. This
1891 is in addition to the current capabilities (i.e. setting
1892 `notmuch-multipart/alternative-discouraged` to a list of discouraged
1895 When viewing a thread ("show" mode), queries that match no messages no
1896 longer generate empty buffers
1898 Should an attempt be made to view the thread corresponding to a
1899 query that matches no messages, a warning message is now displayed
1900 and the terminal bell rung rather than displaying an empty buffer
1901 (or, in some cases, displaying an empty buffer and throwing an
1902 error). This also affects re-display of the current thread.
1904 Handle S/MIME signatures in emacs
1906 The emacs interface is now capable making and verifying S/MIME
1909 `notmuch-message-address-insinuate` is now a no-op
1911 This reduces the amount of interference with non-notmuch uses of
1914 Address completion improvements
1916 An external script is no longer needed for address completion; if
1917 you previously configured one, customize the variable
1918 `notmuch-address-command` to try the internal completion. If
1919 `company-mode` is available, notmuch uses it by default for
1920 interactive address completion.
1922 Test and experiment with the emacs MUA available in source tree
1924 `./devel/try-emacs-mua` runs emacs and fills the window with
1925 information how to try the MUA safely. Emacs is configured to use
1926 the notmuch (lisp) files located in `./emacs` directory.
1931 New `notmuch-report(1)` and `notmuch-report.json(5)` man pages
1932 describe `notmuch-report` and its JSON configuration file. You can
1933 build these files by running `make` in the `devel/nmbug/doc`
1939 Renamed from `nmbug-status`. This script generates reports based on
1940 notmuch queries, and doesn't really have anything to do with nmbug,
1941 except for sharing the `NMBGIT` environment variable. The new name
1942 focuses on the script's action, instead of its historical association
1943 with the nmbug workflow. This should make it more discoverable for
1944 users looking for generic notmuch reporting tools.
1946 The default configuration file name (extracted from the `config`
1947 branch of `NBMGIT` has changed from `status-config.json` to
1948 `notmuch-report.json` so it is more obviously associated with the
1949 report-generating script. The configuration file also has a new
1950 `meta.message-url` setting, which is documented in
1951 `notmuch-report.json(5)`.
1953 `notmuch-report` now wraps query phrases in parentheses when and-ing
1954 them together, to avoid confusion about clause grouping.
1956 Notmuch 0.21 (2015-10-29)
1957 =========================
1962 Notmuch now requires gmime >= 2.6.7. The gmime 2.4 series is no longer
1965 Database revision tracking: `lastmod:` queries
1967 Each message now has a metadata revision number that increases with
1968 every tagging operation. See the discussion of `lastmod:` in
1969 `notmuch-search-terms(7)` for more information.
1971 Date queries now support `date:<expr>..!` shorthand for
1972 `date:<expr>..<expr>`
1974 You can use, for example, `date:yesterday..!` to match from the
1975 beginning of yesterday to the end of yesterday. For further details,
1976 please refer to the `notmuch-search-terms` manual page.
1978 Notmuch database upgrade to support `lastmod:` queries
1980 The above mentioned `lastmod:` prefix. This will be done
1981 automatically, without prompting on the next time `notmuch new` is
1982 run after the upgrade. The upgrade is not reversible, and the
1983 upgraded database will not be readable by older versions of
1984 Notmuch. As a safeguard, a database dump will be created in the
1985 `.notmuch` directory before upgrading.
1990 The ruby bindings are now built as part of the main notmuch build
1991 process. This can be disabled with the `--without-ruby` option to
1994 Building the documentation can be disabled with the `--without-docs`
1995 option to configure.
1997 Skipped individual tests are no longer considered as failures.
1999 Command Line Interface
2000 ----------------------
2002 Database revision tracking
2004 Two new options were added to support revision tracking. A global
2005 option "--uuid" (`notmuch(1)`) was added for to detect counter
2006 rollover and reinitialization, and `notmuch-count(1)` gained a
2007 `--lastmod` option to query database revision tracking data.
2009 The `notmuch address` command supports new deduplication schemes
2011 `notmuch address` has gained a new `--deduplicate` option to specify
2012 how the results should be deduplicated, if at all. The alternatives
2013 are `no` (do not deduplicate, useful for processing the results with
2014 external tools), `mailbox` (deduplicate based on the full, case
2015 sensitive name and email address), and `address` (deduplicate based
2016 on the case insensitive address part). See the `notmuch-address`
2017 manual page for further information.
2022 `notmuch-emacs-version` is used in `User-Agent` header
2024 The value of recently introduced variable `notmuch-emacs-version` is
2025 now used as a part of `User-Agent` header when sending emails.
2027 Removed `notmuch-version` function by renaming it to `notmuch-cli-version`
2029 With existing variable `notmuch-emacs-version` the accompanied
2030 function which retrieves the version of `notmuch-command` is
2031 better named as `notmuch-cli-version`.
2033 Query input now supports completion for "is:<tag>"
2035 New message composition mode: `notmuch-compose-mode`
2037 This is mainly to fix fcc handling, but may be useful for user
2038 customization as well.
2040 Allow filtering of search results in `notmuch-show`
2042 Add function to rerun current tree-view search in search mode
2044 Bug fix for replying to encrypted messages in `notmuch-tree` mode
2046 Allow saved searched to specify tree view rather than search view
2048 Applies to saved searches run from `notmuch-hello`, or by a keyboard
2049 shortcut (`notmuch-jump`). Can be set in the customize interface, or
2050 by adding :search-type tree to the appropriate saved search plist in
2051 `notmuch-saved-searches`.
2053 Increase maximum size of rendered text parts
2055 The variable `notmuch-show-max-text-part-size` controls the maximum
2056 size (in bytes) which is automatically rendered. This may make
2057 rendering large threads slower. To get the previous behaviour set
2058 this variable to 10000.
2063 The use of absolute paths is now enforced when calling
2064 `notmuch_database_{open, create}`
2066 New function `notmuch_directory_delete` to delete directory documents
2068 Previously there was no way to delete directory documents from the
2069 database, leading to confusing results when the "ghost" directory
2070 document of a renamed or deleted filesystem directory was
2071 encountered every time the parent directory was being scanned by
2072 `notmuch new`. The mtime of the old directory document was also used
2073 if a directory by the same name was added again in the filesystem,
2074 potentially bypassing the scan for the directory. The issues are
2075 fixed by providing a library call to delete directory documents, and
2076 deleting the old documents in `notmuch new` on filesystem directory
2079 Database revision tracking
2081 Revision tracking is supported via a new prefix "lastmod:" in the
2082 query parser and the new function
2083 `notmuch_database_get_revision`. For the latter, see `notmuch(3)`.
2085 New status code returning API for n_query_count_{messages,threads}
2087 Deprecated functions
2089 `notmuch_query_search_threads`, `notmuch_query_search_messages`,
2090 `notmuch_query_count_messages`, and `notmuch_query_count_threads`
2091 are all deprecated as of this release. Clients are encouraged to
2092 transition to the `_st` variants supporting better error reporting.
2097 `nmbug-status` now supports specifying the sort order for each view.
2099 Notmuch 0.20.2 (2015-06-27)
2100 ===========================
2105 Bug fix for marking messages read in `notmuch-tree` mode.
2107 Notmuch 0.20.1 (2015-06-01)
2108 ===========================
2113 Work around apparent gdb bug on arm64.
2115 Notmuch 0.20 (2015-05-31)
2116 =========================
2118 Command-Line Interface
2119 ----------------------
2121 There is a new `mimetype:` search prefix
2123 The new `mimetype:` search prefix allows searching for the
2124 content-type of attachments, which is now indexed. See the
2125 `notmuch-search-terms` manual page for details.
2127 Path to gpg is now configurable
2129 On systems with multiple versions of gpg, you can tell
2130 notmuch which one to use by setting `crypto.gpg_path`
2135 Avoid rendering large text attachments.
2137 Improved rendering of CID references in HTML.
2142 Vim client now respects excluded tags.
2147 Support messages without Message-IDs.
2152 Undeprecate single message mboxes
2154 It seems more trouble to remove this feature than expected, so
2155 `notmuch new` will no longer nag about mboxes with a single message.
2157 New error logging facility
2159 Clients should call `notmuch_database_status_string` to retrieve
2160 output formerly printed to stderr.
2162 Several bug fixes related to stale iterators
2164 New status code returning API for n_query_search_{messages,thread}
2166 Fix for library `install_name` on Mac OS X
2168 Fix for rounding of seconds
2173 Sphinx is now mandatory to build docs
2175 Support for using rst2man in place of sphinx to build the
2176 documentation has been removed.
2178 Improved notmuch-search-terms.7
2180 The man page `notmuch-search-terms(7)` has been extended, merging
2181 some material from the relicensed wiki.
2186 `notmuch-deliver` is removed. As far as we know, all functionality
2187 previously provided by `notmuch-deliver` should now be provided by
2188 `notmuch insert`, provided by the main notmuch binary.
2193 `nmbug-status` now only matches local branches when reading
2194 `status-config.json` from the `config` branch of the `NMBGIT`
2195 repository. To help new users running `nmbug-status`, `nmbug clone`
2196 now creates a local `config` branch tracking `origin/config`. Folks
2197 who use `nmbug-status` with an in-Git config (i.e. you don't use the
2198 `--config` option) who already have `NMBGIT` set up are encouraged to
2201 git checkout config origin/config
2203 in their `NMBGIT` repository (usually `~/.nmbug`).
2205 Notmuch 0.19 (2014-11-14)
2206 =========================
2211 This release improves the reliability of `notmuch dump` and the error
2212 handling for `notmuch insert`. The new `notmuch address` command is
2213 intended to make searching for email addresses more convenient. At the
2214 library level the revised handling of missing messages fixes at least
2215 one bug in threading. The release also includes several interface
2216 improvements to the emacs interface, most notably the ability to bind
2217 keyboard shortcuts to saved searches.
2219 Command-Line Interface
2220 ----------------------
2222 Stopped `notmuch dump` failing if someone writes to the database
2224 The dump command now takes the write lock when running. This
2225 prevents other processes from writing to the database during the
2226 dump which would cause the dump to fail. Note, if another notmuch
2227 process already has the write lock the dump will not start, so
2228 script callers should still check the return value.
2230 `notmuch insert` requires successful message indexing for success status
2232 Previously the `notmuch insert` subcommand indicated success even if
2233 the message indexing failed, as long as the message was delivered to
2234 file system. This could have lead to delivered messages missing
2235 tags, etc. `notmuch insert` is now more strict, also requiring
2236 successful indexing for success status. Use the new `--keep` option
2237 to revert to the old behaviour (keeping the delivered message file
2238 and returning success even if indexing fails).
2240 `notmuch insert` has gained support for `post-insert` hook
2242 The new `post-insert` hook is run after message delivery, similar to
2243 `post-new`. There's also a new option `notmuch insert --no-hooks` to
2244 skip the hook. See the notmuch-hooks(1) man page for details.
2246 `notmuch deliver` is deprecated
2248 With this release we believe that `notmuch insert` has reached
2249 parity with `notmuch deliver`. We recommend that all users of
2250 `notmuch deliver` switch to `notmuch insert` as the former is
2251 currently unmaintained.
2253 `notmuch search` now supports `--duplicate=N` option with `--output=messages`
2255 Complementing the `notmuch search --duplicate=N --output=files`
2256 options, the new `--duplicate=N --output=messages` combination
2257 limits output of message IDs to messages matching search terms that
2258 have at least `N` files associated with them.
2260 Added `notmuch address` subcommand
2262 This new subcommand searches for messages matching the given search
2263 terms, and prints the addresses from them. Duplicate addresses are
2264 filtered out. The `--output` option controls which of the following
2265 information is printed: sender addresses, recipient addresses and
2266 count of duplicate addresses.
2271 Use the `j` key to access saved searches from anywhere in notmuch
2273 `j` is now globally bound to `notmuch-jump`, which provides fast,
2274 interactive keyboard shortcuts to saved searches. For example,
2275 with the default saved searches `j i` from anywhere in notmuch will
2278 Improved handling of the unread tag
2280 Notmuch now marks an open message read (i.e., removes the unread
2281 tag) if point enters the message at any time in a show buffer
2282 regardless of how point got there (mouse click, cursor command, page
2283 up/down, notmuch commands such as n,N etc). This fixes various
2284 anomalies or bugs in the previous handling. Additionally it is
2285 possible to customize the mark read handling by setting
2286 `notmuch-show-mark-read-function` to a custom function.
2288 Expanded default saved search settings
2290 The default saved searches now include several more common searches,
2291 as well as shortcut keys for `notmuch-jump`.
2293 Improved `q` binding in notmuch buffers
2295 `q` will now bury rather than kill a notmuch search, show or tree
2296 buffer if there are multiple windows showing the buffer. If only a
2297 single window is showing the buffer, it is killed.
2299 `notmuch-show-stash-mlarchive-link-alist` now supports functions
2301 Some list archives may use a more complicated scheme for referring
2302 to messages than just concatenated URL and message ID. For example,
2303 patchwork requires a query to translate message ID to a patchwork
2304 patch ID. `notmuch-show-stash-mlarchive-link-alist` now supports
2305 functions to better cover such cases. See the help documentation for
2306 the variable for details.
2311 Introduced database version 3 with support for "database features."
2313 Features are independent aspects of the database schema.
2314 Representing these independently of the database version number will
2315 let us evolve the database format faster and more incrementally,
2316 while maintaining better forwards and backwards compatibility.
2318 Library users are no longer required to call `notmuch_database_upgrade`
2320 Previously, library users were required to call
2321 `notmuch_database_needs_upgrade` and `notmuch_database_upgrade`
2322 before using a writable database. Even the CLI didn't get this
2323 right, and it is no longer required. Now, individual APIs may
2324 return `NOTMUCH_STATUS_UPGRADE_REQUIRED` if the database format is
2325 too out of date for that API.
2327 Library users can now abort an atomic section by closing the database
2329 Previously there was no supported way to abort an atomic section.
2330 Callers can now simply close the database, and any outstanding
2331 atomic section will be aborted.
2333 Add return status to `notmuch_database_close` and
2334 `notmuch_database_destroy`
2336 Bug fixes and performance improvements for thread linking
2338 The database now represents missing-but-referenced messages ("ghost
2339 messages") similarly to how it represents regular messages. This
2340 enables an improved thread linking algorithm that performs better
2341 and fixes a bug that sometimes prevented notmuch from linking
2342 messages into the same thread.
2347 The Perl script has been translated to Python; you'll need Python 2.7
2348 or anything from the 3.x line. Most of the user-facing interface is
2349 the same, but `nmbug help` is now `nmbug --help`, and the following nmbug
2350 commands have slightly different interfaces: `archive`, `commit`,
2351 `fetch`, `log`, `pull`, `push`, and `status`. For details on the
2352 new interface for a given command, run `nmbug COMMAND --help`.
2357 `nmbug-status` can now optionally load header and footer templates
2358 from the config file. Use something like:
2362 "header": "<!DOCTYPE html>\n<html lang="en">\n...",
2363 "footer": "</body></html>",
2372 Add support for `notmuch_query_add_tag_exclude`
2377 The notmuch binaries and libraries are now build with debugging symbols
2378 by default. Users concerned with disk space should change the
2379 defaults when configuring or use the strip(1) command.
2381 Notmuch 0.18.2 (2014-10-25)
2382 ===========================
2387 Translate T380-atomicity to use gdb/python
2389 The new version is compatible with gdb 7.8
2391 Emacs 24.4 related bug fixes
2393 The Messages buffer became read-only, and the generated mime
2394 structure for signatures changed slightly.
2396 Simplify T360-symbol-hiding
2398 Replace the use of `objdump` on the object files with `nm` on the
2401 Notmuch 0.18.1 (2014-06-25)
2402 ===========================
2404 This is a bug fix and portability release.
2409 Add a workaround for systems without zlib.pc
2411 Make emacs install robust against the non-existence of emacs
2413 Put notmuch lib directory first in RPATH
2415 Fix handling of `html_static_path` in sphinx
2417 Both the python bindings and the main docs had spurious settings of
2423 Use --quick when starting emacs
2425 This avoids a hang in the T160-json tests.
2427 Allow pending break points in atomicity script
2429 This allows the atomicity tests to run on several more architectures/OSes.
2431 Command-Line Interface
2432 ----------------------
2434 To improve portability use fsync instead of fdatasync in
2435 `notmuch-dump`. There should be no functional difference.
2440 Resurrect support for single-message mbox files
2442 The removal introduced a bug with previously indexed single-message
2443 mboxes. This support remains deprecated.
2445 Fix for phrase indexing
2447 There were several bugs where words intermingled from different
2448 headers and MIME parts could match a single phrase query. This fix
2449 will affect only newly indexed messages.
2454 Make sure tagging on an empty query is harmless
2456 Previously tagging an empty query could lead to tags being
2457 unintentionally removed.
2459 Notmuch 0.18 (2014-05-06)
2460 =========================
2465 This new release includes some enhancements to searching for messages
2466 by filesystem location (`folder:` and `path:` prefixes under *General*
2467 below). Saved searches in *Emacs* have also been enhanced to allow
2468 distinct search orders for each one. Another enhancement to the
2469 *Emacs* interface is that replies to encrypted messages are now
2470 encrypted, reducing the risk of unintentional information disclosure.
2471 The default dump output format has changed to the more robust
2472 `batch-tag` format. The previously deprecated parsing of single
2473 message mboxes has been removed. For detailed release notes, see
2479 The `folder:` search prefix now requires an exact match
2481 The `folder:` prefix has been changed to search for email messages
2482 by the exact, case sensitive maildir or MH folder name. Wildcard
2483 matching (`folder:foo*`) is no longer supported. The new behaviour
2484 allows for more accurate mail folder based searches, makes it
2485 possible to search for messages in the top-level folder, and should
2486 lead to less surprising results than the old behaviour. Users are
2487 advised to see the `notmuch-search-terms` manual page for details,
2488 and review how the change affects their existing `folder:` searches.
2490 There is a new `path:` search prefix
2492 The new `path:` search prefix complements the `folder:` prefix. The
2493 `path:` prefix searches for email messages that are in particular
2494 directories within the mail store, optionally recursively using a
2495 special syntax. See the `notmuch-search-terms` manual page for
2498 Notmuch database upgrade due to `folder:` and `path:` changes
2500 The above mentioned changes to the `folder:` prefix and the addition
2501 of `path:` prefix require a Notmuch database upgrade. This will be
2502 done automatically, without prompting on the next time `notmuch new`
2503 is run after the upgrade. The upgrade is not reversible, and the
2504 upgraded database will not be readable by older versions of
2505 Notmuch. As a safeguard, a database dump will be created in the
2506 `.notmuch` directory before upgrading.
2511 Notmuch database upgrade
2513 The libnotmuch consumers are reminded to handle database upgrades
2514 properly, either by relying on running `notmuch new`, or checking
2515 `notmuch_database_needs_upgrade()` and calling
2516 `notmuch_database_upgrade()` as necessary. This has always been the
2517 case, but in practise there have been no database upgrades in any
2518 released version of Notmuch before now.
2520 Support for indexing mbox files has been dropped
2522 There has never been proper support for mbox files containing
2523 multiple messages, and the support for single-message mbox files has
2524 been deprecated since Notmuch 0.15. The support has now been
2525 dropped, and all mbox files will be rejected during indexing.
2527 Message header parsing changes
2529 Notmuch previously had an internal parser for message headers. The
2530 parser has now been dropped in favour of letting GMime parse both
2531 the headers and the message MIME structure at the same pass. This is
2532 mostly an internal change, but the GMime parser is stricter in its
2533 interpretation of the headers. This may result in messages with
2534 slightly malformed message headers being now rejected.
2536 Command-Line Interface
2537 ----------------------
2539 `notmuch dump` now defaults to `batch-tag` format
2541 The old format is still available with `--format=sup`.
2543 `notmuch new` has a --quiet option
2545 This option suppresses the progress and summary reports.
2547 `notmuch insert` respects maildir.synchronize_flags config option
2549 Do not synchronize tags to maildir flags in `notmuch insert` if the
2550 user does not want it.
2552 The commands set consistent exit status codes on failures
2554 The cli commands now consistently set exit status of 1 on failures,
2555 except where explicitly otherwise noted. The notable exceptions are
2556 the status codes for format version mismatches for commands that
2557 support formatted output.
2559 Bug fix for checking configured new.tags for invalid tags
2561 `notmuch new` and `notmuch insert` now check the user configured
2562 new.tags for invalid tags, and refuse to apply them, similar to
2563 `notmuch tag`. Invalid tags are currently the empty string and tags
2571 If the file pointed by new variable `notmuch-init-file` (typically
2572 `~/.emacs.d/notmuch-config.el`) exists, it is loaded at the end of
2573 `notmuch.el`. Users can put their personal notmuch emacs lisp based
2574 configuration/customization items there instead of filling
2575 `~/.emacs` with these.
2577 Changed format for saved searches
2579 The format for `notmuch-saved-searches` has changed, but old style
2580 saved searches are still supported. The new style means that a saved
2581 search can store the desired sort order for the search, and it can
2582 store a separate query to use for generating the count notmuch
2585 The variable is fully customizable and any configuration done
2586 through customize should *just work*, with the additional options
2587 mentioned above. For manual customization see the documentation for
2588 `notmuch-saved-searches`.
2590 IMPORTANT: a new style notmuch-saved-searches variable will break
2591 previous versions of notmuch-emacs (even search will not work); to
2592 fix remove the customization for notmuch-saved-searches.
2594 If you have a custom saved search sort function (not unsorted or
2595 alphabetical) then the sort function will need to be
2596 modified. Replacing (car saved-search) by (notmuch-saved-search-get
2597 saved-search :name) and (cdr saved-search) by
2598 (notmuch-saved-search-get saved-search :query) should be sufficient.
2600 The keys of `notmuch-tag-formats` are now regexps
2602 Previously, the keys were literal strings. Customized settings of
2603 `notmuch-tag-formats` will continue to work as before unless tags
2604 contain regexp special characters like `.` or `*`.
2606 Changed tags are now shown in the buffer
2608 Previously tag changes made in a buffer were shown immediately. In
2609 some cases (particularly automatic tag changes like marking read)
2610 this made it hard to see what had happened (e.g., whether the
2611 message had been unread).
2613 The changes are now shown explicitly in the buffer: by default
2614 deleted tags are displayed with red strike-through and added tags
2615 are displayed underlined in green (inverse video is used for deleted
2616 tags if the terminal does not support strike-through).
2618 The variables `notmuch-tag-deleted-formats` and
2619 `notmuch-tag-added-formats`, which have the same syntax as
2620 `notmuch-tag-formats`, allow this to be customized.
2622 Setting `notmuch-tag-deleted-formats` to `'((".*" nil))` and
2623 `notmuch-tag-added-formats` to `'((".*" tag))` will give the old
2624 behavior of hiding deleted tags and showing added tags identically
2625 to tags already present.
2629 The new, build-time generated variable `notmuch-emacs-version` is used
2630 to distinguish between notmuch cli and notmuch emacs versions.
2631 The function `notmuch-hello-versions` (bound to 'v' in notmuch-hello
2632 window) prints both notmuch cli and notmuch emacs versions in case
2633 these differ from each other.
2634 This is especially useful when using notmuch remotely.
2636 Ido-completing-read initialization in Emacs 23
2638 `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless
2639 it is initialized. Defadvice-based *Ido* initialization is defined
2640 for these Emacs versions.
2642 Bug fix for saved searches with newlines in them
2644 Split lines confuse `notmuch count --batch`, so we remove embedded
2645 newlines before calling notmuch count.
2647 Bug fixes for sender identities
2649 Previously, Emacs would rewrite some sender identities in unexpected
2650 and undesirable ways. Now it will use identities exactly as
2651 configured in `notmuch-identities`.
2653 Replies to encrypted messages will be encrypted by default
2655 In the interest of maintaining confidentiality of communications,
2656 the Notmuch Emacs interface now automatically adds the mml tag to
2657 encrypt replies to encrypted messages. This should make it less
2658 likely to accidentally reply to encrypted messages in plain text.
2660 Reply pushes mark before signature
2662 We push mark and set point on reply so that the user can easily cut
2663 the quoted text. The mark is now pushed before the signature, if
2664 any, instead of end of buffer so the signature is preserved.
2666 Message piping uses the originating buffer's working directory
2668 `notmuch-show-pipe-message` now uses the originating buffer's
2669 current default directory instead of that of the `*notmuch-pipe*`
2675 nmbug adds a `clone` command for setting up the initial repository and
2676 uses `@{upstream}` instead of `FETCH_HEAD` to track upstream changes.
2678 The `@{upstream}` change reduces ambiguity when fetching multiple
2679 branches, but requires existing users update their `NMBGIT`
2680 repository (usually `~/.nmbug`) to distinguish between local and
2681 remote-tracking branches. The easiest way to do this is:
2683 1. If you have any purely local commits (i.e. they aren't in the
2684 nmbug repository on nmbug.tethera.net), push them to a remote
2685 repository. We'll restore them from the backup in step 4.
2686 2. Remove your `NMBGIT` repository (e.g. `mv .nmbug .nmbug.bak`).
2687 3. Use the new `clone` command to create a fresh clone:
2689 nmbug clone https://nmbug.notmuchmail.org/git/nmbug-tags.git
2691 4. If you had local commits in step 1, add a remote for that
2692 repository and fetch them into the new repository.
2694 Notmuch 0.17 (2013-12-30)
2695 =========================
2697 Incompatible change in SHA1 computation
2698 ---------------------------------------
2700 Previously on big endian architectures like sparc and powerpc the
2701 computation of SHA1 hashes was incorrect. This meant that messages
2702 with overlong or missing message-ids were given different computed
2703 message-ids than on more common little endian architectures like i386
2704 and amd64. If you use notmuch on a big endian architecture, you are
2705 strongly advised to make a backup of your tags using `notmuch dump`
2706 before this upgrade. You can locate the affected files using something
2710 awk '/^notmuch-sha1-[0-9a-f]{40} / \
2711 {system("notmuch search --exclude=false --output=files id:" $1)}'
2713 Command-Line Interface
2714 ----------------------
2716 New options to better support handling duplicate messages
2718 If more than one message file is associated with a message-id,
2719 `notmuch search --output=files` will print all of them. A new
2720 `--duplicate=N` option can be used to specify which duplicate to
2721 print for each message.
2723 `notmuch count` now supports `--output=files` option to output the
2724 number of files associated with matching messages. This may be
2725 bigger than the number of matching messages due to duplicates
2726 (i.e. multiple files having the same message-id).
2728 Improved `notmuch new` performance for unchanged folders
2730 `notmuch new` now skips over unchanged folders more efficiently,
2731 which can substantially improve the performance of checking for new
2732 mail in some situations (like NFS-mounted Maildirs).
2734 `notmuch reply --format=text` RFC 2047-encodes headers
2736 Previously, this used a mix of standard MIME encoding for the reply
2737 body and UTF-8 for the headers. Now, the text format reply template
2738 RFC 2047-encodes the headers, making the output a valid RFC 2822
2739 message. The JSON/sexp format is unchanged.
2741 `notmuch compact` command
2743 The new `compact` command exposes Xapian's compaction
2744 functionality through a more convenient interface than
2745 `xapian-compact`. `notmuch compact` will compact the database to a
2746 temporary location, optionally backup the original database, and
2747 move the compacted database into place.
2752 `notmuch-tree` (formerly `notmuch-pick`) has been added to mainline
2754 `notmuch-tree` is a threaded message view for the emacs
2755 interface. Each message is one line in the results and the thread
2756 structure is shown using UTF-8 box drawing characters (similar to
2757 Mutt's threaded view). It comes between search and show in terms of
2758 amount of output and can be useful for viewing both single threads
2759 and multiple threads.
2761 Using `notmuch-tree`
2763 The main key entries to notmuch tree are
2765 'z' enter a query to view using notmuch tree (works in hello,
2766 search, show and tree mode itself)
2768 'Z' view the current query in tree notmuch tree (works from search
2771 Once in tree mode, keybindings are mostly in line with the rest of
2772 notmuch and are all viewable with '?' as usual.
2774 Customising `notmuch-tree`
2776 `notmuch-tree` has several customisation variables. The most
2777 significant is the first notmuch-tree-show-out which determines the
2778 behaviour when selecting a message (with RET) in tree view. By
2779 default tree view uses a split window showing the single message in
2780 the bottom pane. However, if this option is set then it views the
2781 whole thread in the complete window jumping to the selected message
2782 in the thread. In either case command-prefix selects the other option.
2784 Tagging threads in search is now race-free
2786 Previously, adding or removing a tag from a thread in a search
2787 buffer would affect messages that had arrived after the search was
2788 performed, resulting in, for example, archiving messages that were
2789 never seen. Tagging now affects only the messages that were in the
2790 thread when the search was performed.
2792 `notmuch-hello` refreshes when switching to the buffer
2794 The hello buffer now refreshes whenever you switch to the buffer,
2795 regardless of how you get there. You can disable automatic
2796 refreshing by customizing `notmuch-hello-auto-refresh`.
2798 Specific mini-buffer prompts for tagging operations
2800 When entering tags to add or remove, the mini-buffer prompt now
2801 indicates what operation will be performed (e.g., "Tag thread", "Tag
2804 Built-in help improvements
2806 Documentation for many commands has been improved, as displayed by
2807 `notmuch-help` (usually bound to "?"). The bindings listed by
2808 `notmuch-help` also now include descriptions of prefixed commands.
2810 Quote replies as they are displayed in show view
2812 We now render the parts for reply quoting the same way they are
2813 rendered for show. At this time, the notable change is that replies
2814 to text/calendar are now pretty instead of raw vcalendar.
2816 Fixed inconsistent use of configured search order
2818 All ways of interactively invoking search now honor the value of
2819 `notmuch-search-oldest-first`.
2821 Common keymap for notmuch-wide bindings
2823 Several key bindings have been moved from mode-specific keymaps to
2824 the single `notmuch-common-keymap`, which is inherited by each
2825 notmuch mode. If you've customized your key bindings, you may want
2826 to move some of them to the common keymap.
2828 The `notmuch-tag` function now requires a list of tag changes
2830 For users who have scripted the Emacs interface: the `notmuch-tag`
2831 API has changed. Previously, it accepted either a list of tag
2832 changes or a space-separated string of tag changes. The latter is
2833 no longer supported and the function now returns nothing.
2835 Fixed `notmuch-reply` putting reply in primary selection
2837 On emacs 24 notmuch-reply used to put the cited text into the
2838 primary selection (which could lead to inadvertently pasting this
2839 cited text elsewhere). Now the primary-selection is not changed.
2841 Fixed `notmuch-show` invisible part handling
2843 In some obscure cases part buttons and invisibility had strange
2844 interactions: in particular, the default action for some parts gave
2845 the wrong action. This has been fixed.
2847 Fixed `notmuch-show` attachment viewers and stderr
2849 In emacs 24.3+ viewing an attachment could cause spurious text to
2850 appear in the show buffer (any stderr or stdout the viewer
2851 produced). By default this output is now discarded. For debugging,
2852 setting `notmuch-show-attachment-debug` causes notmuch to keep the
2853 viewer's stderr and stdout in a separate buffer.
2855 Fixed `notmuch-mua-reply` point placement when signature involved
2857 By restricting cursor movement to body section for cursor placement
2858 after signature is inserted, the cursor cannot "leak" to header
2859 section anymore. Now inserted citation content will definitely go to
2860 the body part of the message.
2865 It is now possible to compose new messages in the Vim interface, as
2866 opposed reply to existing messages. There is also support for
2867 going straight to a search (bypassing the folders view).
2869 Notmuch 0.16 (2013-08-03)
2870 =========================
2872 Command-Line Interface
2873 ----------------------
2875 Support for delivering messages to Maildir
2877 There is a new command `insert` that adds a message to a Maildir
2878 folder and notmuch index.
2880 `notmuch count --batch` option
2882 `notmuch count` now supports batch operations similar to `notmuch
2883 tag`. This is mostly an optimization for remote notmuch usage.
2885 `notmuch tag` option to remove all tags from matching messages
2887 `notmuch tag --remove-all` option has been added to remove all tags
2888 from matching messages. This can be combined with adding new tags,
2889 resulting in setting (rather than modifying) the tags of the
2892 Decrypting commands explicitly expect a gpg-agent
2894 Decryption in `notmuch show` and `notmuch reply` has only ever
2895 worked with a functioning gpg-agent. This is now made explicit in
2896 code and documentation. The functional change is that it's now
2897 possible to have gpg-agent running, but gpg "use-agent"
2898 configuration option disabled, not forcing the user to use the agent
2901 Configuration file saves follow symbolic links
2903 The notmuch commands that save the configuration file now follow
2904 symbolic links instead of overwrite them.
2906 Top level option to specify configuration file
2908 It's now possible to specify the configuration file to use on the
2909 command line using the `notmuch --config=FILE` option.
2911 Bash command-line completion
2913 The notmuch command-line completion support for the bash shell has
2914 been rewritten. Supported completions include all the notmuch
2915 commands, command-line arguments, values for keyword arguments,
2916 search prefixes (such as "subject:" or "from:") in all commands that
2917 use search terms, tags after + and - in `notmuch tag`, tags after
2918 "tag:" prefix, user's email addresses after "from:" and "to:"
2919 prefixes, and config options (and some config option values) in
2920 `notmuch config`. The new completion support depends on the
2921 bash-completion package.
2923 Deprecated commands "part" and "search-tags" are removed.
2928 New keymap to view/save parts; removed s/v/o/| part button bindings
2930 The commands to view, save, and open MIME parts are now prefixed
2931 with "." (". s" to save, ". v" to view, etc) and can be invoked with
2932 point anywhere in a part, unlike the old commands, which were
2933 restricted to part buttons. The old "s"/"v"/"o"/"|" commands on
2934 part buttons have been removed since they clashed with other
2935 bindings (notably "s" for search!) and could not be invoked when
2936 there was no part button. The new, prefixed bindings appear in
2937 show's help, so you no longer have to memorize them.
2939 Default part save directory is now `mm-default-directory`
2941 Previously, notmuch offered to save parts and attachments to a mix
2942 of `mm-default-directory`, `mailcap-download-directory`, and `~/`.
2943 This has been standardized on `mm-default-directory`.
2945 Key bindings for next/previous thread
2947 Show view has new key bindings M-n and M-p to move to the next and
2948 previous thread in the search results.
2950 Better handling of errors in search buffers
2952 Instead of interleaving errors in search result buffers, search mode
2953 now reports errors in the minibuffer.
2955 Faster search and show
2957 Communication between Emacs and the notmuch CLI is now more
2958 efficient because it uses the CLI's S-expression support. As a
2959 result, search mode should now fill search buffers faster and
2960 threads should show faster.
2964 The Emacs 22 support added late 2010 was sufficient only for a short
2965 period of time. After being incomplete for roughly 2 years the code
2966 in question was now removed from this release.
2971 The vim based front-end has been replaced with a new one that uses the Ruby
2972 bindings. The old font-end is available in the contrib subfolder.
2977 Fix loading of libnotmuch shared library on OS X (Darwin) systems.
2979 Notmuch 0.15.2 (2013-02-17)
2980 ===========================
2985 Update dependencies to avoid problems when building in parallel.
2987 Internal test framework changes
2988 -------------------------------
2990 Adjust Emacs test watchdog mechanism to cope with `process-attributes`
2991 being unimplemented.
2993 Notmuch 0.15.1 (2013-01-24)
2994 ===========================
2996 Internal test framework changes
2997 -------------------------------
2999 Set a default value for TERM when running tests. This fixes certain
3000 build failures in non-interactive environments.
3002 Notmuch 0.15 (2013-01-18)
3003 =========================
3008 Date range search support
3010 The `date:` prefix can now be used in queries to restrict the results
3011 to only messages within a particular time range (based on the Date:
3012 header) with a range syntax of `date:<since>..<until>`. Notmuch
3013 supports a wide variety of expressions in `<since>` and
3014 `<until>`. Please refer to the `notmuch-search-terms(7)` manual page
3017 Empty tag names and tags beginning with "-" are deprecated
3019 Such tags have been a frequent source of confusion and cause
3020 (sometimes unresolvable) conflicts with other syntax. notmuch tag
3021 no longer allows such tags to be added to messages. Removing such
3022 tags continues to be supported to allow cleanup of existing tags,
3023 but may be removed in a future release.
3025 Command-Line Interface
3026 ----------------------
3028 `notmuch new` no longer chokes on mboxes
3030 `notmuch new` now rejects mbox files containing more than one
3031 message, rather than treating the file as one giant message.
3033 Support for single message mboxes is deprecated
3035 For historical reasons, `notmuch new` will index mbox files
3036 containing a single message; however, this behavior is now
3037 officially deprecated.
3039 Fixed `notmuch new` to skip ignored broken symlinks
3041 `notmuch new` now correctly skips symlinks if they are in the
3042 ignored files list. Previously, it would abort when encountering
3043 broken symlink, even if it was ignored.
3045 New dump/restore format and tagging interface
3047 There is a new `batch-tag` format for dump and restore that is more
3048 robust, particularly with respect to tags and message-ids containing
3051 `notmuch tag` now supports the ability to read tag operations and
3052 queries from an input stream, in a format compatible with the new
3053 dump/restore format.
3055 Bcc and Reply-To headers are now available in notmuch show json output
3057 The `notmuch show --format=json` now includes "Bcc" and "Reply-To" headers.
3058 For example notmuch Emacs client can now have these headers visible
3059 when the headers are added to the `notmuch-message-headers` variable.
3061 CLI callers can now request a specific output format version
3063 `notmuch` subcommands that support structured output now support a
3064 `--format-version` argument for requesting a specific version of the
3065 structured output, enabling better compatibility and error handling.
3067 `notmuch search` has gained a null character separated text output format
3069 The new --format=text0 output format for `notmuch search` prints
3070 output separated by null characters rather than newline
3071 characters. This is similar to the find(1) -print0 option, and works
3072 together with the xargs(1) -0 option.
3077 Removal of the deprecated `notmuch-folders` variable
3079 `notmuch-folders` has been deprecated since the introduction of saved
3080 searches and the notmuch hello view in notmuch 0.3. `notmuch-folders`
3081 has now been removed. Any remaining users should migrate to
3082 `notmuch-saved-searches`.
3084 Visibility of MIME parts can be toggled
3086 Each part of a multi-part MIME email can now be shown or hidden
3087 using the button at the top of each part (by pressing RET on it or
3088 by clicking). For emails with multiple alternative formats (e.g.,
3089 plain text and HTML), only the preferred format is shown initially,
3090 but other formats can be shown using their part buttons. To control
3091 the behavior of this, see
3092 `notmuch-multipart/alternative-discouraged` and
3093 `notmuch-show-all-multipart/alternative-parts`.
3095 Note notmuch-show-print-message (bound to '#' by default) will print
3096 all parts of multipart/alternative message regardless of whether
3097 they are currently hidden or shown in the buffer.
3099 Emacs now buttonizes mid: links
3101 mid: links are a standardized way to link to messages by message ID
3102 (see RFC 2392). Emacs now hyperlinks mid: links to the appropriate
3105 Handle errors from bodypart insertions
3107 If displaying the text of a message in show mode causes an error (in
3108 the `notmuch-show-insert-part-*` functions), notmuch no longer cuts
3109 off thread display at the offending message. The error is now
3110 simply displayed in place of the message.
3112 Emacs now detects version mismatches with the notmuch CLI
3114 Emacs now detects and reports when the Emacs interface version and
3115 the notmuch CLI version are incompatible.
3117 Improved text/calendar content handling
3119 Carriage returns in embedded text/calendar content caused insertion
3120 of the calendar content fail. Now CRs are removed before calling icalendar
3121 to extract icalendar data. In case icalendar extraction fails an error
3122 is thrown for the bodypart insertion function to deal with.
3124 Disabled coding conversions when reading in `with-current-notmuch-show-message`
3126 Depending on the user's locale, saving attachments containing 8-bit
3127 data may have performed an unintentional encoding conversion,
3128 corrupting the saved attachment. This has been fixed by making
3129 `with-current-notmuch-show-message` disable coding conversion.
3131 Fixed errors with HTML email containing images in Emacs 24
3133 Emacs 24 ships with a new HTML renderer that produces better output,
3134 but is slightly buggy. We work around a bug that caused it to fail
3135 for HTML email containing images.
3137 Fixed handling of tags with unusual characters in them
3139 Emacs now handles tags containing spaces, quotes, and parenthesis.
3141 Fixed buttonization of id: links without quote characters
3143 Emacs now correctly buttonizes id: links where the message ID is not
3146 `notmuch-hello` refresh point placement improvements
3148 Refreshing the `notmuch-hello` buffer does a better job of keeping
3149 the point where it was.
3151 Automatic tag changes are now unified and customizable
3153 All the automatic tag changes that the Emacs interface makes when
3154 reading, archiving, or replying to messages, can now be
3155 customized. Any number of tag additions and removals is supported
3156 through the `notmuch-show-mark-read`, `notmuch-archive-tags`, and
3157 `notmuch-message-replied-tags` customization variables.
3159 Support for stashing the thread id in show view
3161 Invoking `notmuch-show-stash-message-id` with a prefix argument
3162 stashes the (local and database specific) thread id of the current
3163 thread instead of the message id.
3165 New add-on tool: notmuch-pick
3166 -----------------------------
3168 The new contrib/ tool `notmuch-pick` is an experimental threaded message
3169 view for the emacs interface. Each message is one line in the results
3170 and the thread structure is shown using UTF-8 box drawing characters
3171 (similar to Mutt's threaded view). It comes between search and show in
3172 terms of amount of output and can be useful for viewing both single
3173 threads and multiple threads. See the notmuch-pick README file for
3174 further details and installation.
3179 notmuch now builds on OpenBSD.
3181 Internal test framework changes
3182 -------------------------------
3184 The emacsclient binary is now user-configurable
3186 The test framework now accepts `TEST_EMACSCLIENT` in addition to
3187 `TEST_EMACS` for configuring the emacsclient to use. This is
3188 necessary to avoid using an old emacsclient with a new emacs, which
3189 can result in buggy behavior.
3191 Notmuch 0.14 (2012-08-20)
3192 =========================
3197 Maildir tag synchronization
3199 Maildir flag-to-tag synchronization now applies only to messages in
3200 maildir-like directory structures. Previously, it applied to any
3201 message that had a maildir "info" part, which meant it could
3202 incorrectly synchronize tags for non-maildir messages, while at the
3203 same time failing to synchronize tags for newly received maildir
3204 messages (typically causing new messages to not receive the "unread"
3207 Command-Line Interface
3208 ----------------------
3210 The deprecated positional output file argument to `notmuch dump` has
3211 been replaced with an `--output` option. The input file positional
3212 argument to `notmuch restore` has been replaced with an `--input`
3213 option for consistency with dump. These changes simplify the syntax
3214 of dump/restore options and make them more consistent with other
3220 Search results now get re-colored when tags are updated
3222 The formatting of tags in search results can now be customized
3224 Previously, attempting to change the format of tags in
3225 `notmuch-search-result-format` would usually break tagging from
3226 search-mode. We no longer make assumptions about the format.
3228 Experimental support for multi-line search result formats
3230 It is now possible to embed newlines in
3231 `notmuch-search-result-format` to make individual search results
3232 span multiple lines.
3234 Next/previous in search and show now move by boundaries
3236 All "next" and "previous" commands in the search and show modes now
3237 move to the next/previous result or message boundary. This doesn't
3238 change the behavior of "next", but "previous" commands will first
3239 move to the beginning of the current result or message if point is
3240 inside the result or message.
3242 Search now uses the JSON format internally
3244 This should address problems with unusual characters in authors and
3245 subject lines that could confuse the old text-based search parser.
3247 The date shown in search results is no longer padded before applying
3248 user-specified formatting
3250 Previously, the date in the search results was padded to fixed width
3251 before being formatted with `notmuch-search-result-format`. It is
3252 no longer padded. The default format has been updated, but if
3253 you've customized this variable, you may have to change your date
3254 format from `"%s "` to `"%12s "`.
3256 The thread-id for the `target-thread` argument for `notmuch-search` should
3257 now be supplied without the "thread:" prefix.
3259 Notmuch 0.13.2 (2012-06-02)
3260 ===========================
3265 Update `contrib/notmuch-deliver` for API changes in 0.13. This fixes a
3266 compilation error for this contrib package.
3268 Notmuch 0.13.1 (2012-05-29)
3269 ===========================
3274 Fix inserting of UTF-8 characters from *text/plain* parts in reply
3276 While notmuch gained ability to insert content from other than *text/plain*
3277 parts of email whenever *text/plain* parts are not available (notably
3278 HTML-only emails), replying to mails that do have *text/plain* the
3279 non-ASCII characters were incorrectly decoded. This is now fixed.
3281 `notmuch_database_get_directory` and
3282 `notmuch_database_find_message_by_filename` now work on read-only
3285 Previously, these functions attempted to create directory documents
3286 that didn't exist and would return an error or abort when given a
3287 read-only database. Now they no longer create directory documents
3288 and simply return a `NULL` object if the directory does not exist,
3291 Fix compilation of ruby bindings
3293 Revert to dynamic linking, since the statically linked bindings did
3296 Notmuch 0.13 (2012-05-15)
3297 =========================
3299 Command-Line Interface
3300 ----------------------
3304 `notmuch reply` can now produce JSON output that contains the headers
3305 for a reply message and full information about the original message
3306 begin replied to. This allows MUAs to create replies intelligently.
3307 For example, an MUA that can parse HTML might quote HTML parts.
3309 Calling notmuch reply with `--format=json` imposes the restriction that
3310 only a single message is returned by the search, as replying to
3311 multiple messages does not have a well-defined behavior. The default
3312 retains its current behavior for multiple message replies.
3316 Tags can be automatically excluded from search results by adding them
3317 to the new `search.exclude_tags` option in the Notmuch config file.
3319 This behaviour can be overridden by explicitly including an excluded
3320 tag in your query, for example:
3322 notmuch search $your_query and tag:$excluded_tag
3324 Existing users will probably want to run `notmuch setup` again to add
3325 the new well-commented [search] section to the configuration file.
3327 For new configurations, accepting the default setting will cause the
3328 tags "deleted" and "spam" to be excluded, equivalent to running:
3330 notmuch config set search.exclude_tags deleted spam
3332 Raw show format changes
3334 The output of show `--format=raw` has changed for multipart and
3335 message parts. Previously, the output was a mash of somewhat-parsed
3336 headers and transfer-decoded bodies. Now, such parts are reproduced
3337 faithfully from the original source. Message parts (which includes
3338 part 0) output the full message, including the message headers (but
3339 not the transfer headers). Multipart parts output the part as
3340 encoded in the original message, including the part's headers. Leaf
3341 parts, as before, output the part's transfer-decoded body.
3343 Listing configuration items
3345 The new `config list` command prints out all configuration items and
3351 Changes to tagging interface
3353 The user-facing tagging functions in the Emacs interface have been
3354 normalized across all notmuch modes. The tagging functions are now
3355 notmuch-search-tag in search-mode, and notmuch-show-tag in
3356 show-mode. They accept a string representing a single tag change,
3357 or a list of tag changes. See 'M-x describe-function notmuch-tag'
3358 for more information.
3360 NOTE: This breaks compatibility with old tagging functions, so user
3361 may need to update in custom configurations.
3363 Reply improvement using the JSON format
3365 Emacs now uses the JSON reply format to create replies. It obeys
3366 the customization variables message-citation-line-format and
3367 message-citation-line-function when creating the first line of the
3368 reply body, and it will quote HTML parts if no text/plain parts are
3371 New add-on tool: notmuch-mutt
3372 -----------------------------
3374 The new contrib/ tool `notmuch-mutt` provides Notmuch integration for
3375 the Mutt mail user agent. Using it, Mutt users can perform mail
3376 search, thread reconstruction, and mail tagging/untagging without
3377 leaving Mutt. notmuch-mutt, formerly distributed under the name
3378 `mutt-notmuch` by Stefano Zacchiroli, will be maintained as a notmuch
3379 contrib/ from now on.
3384 The API changes detailed below break binary and source compatibility,
3385 so libnotmuch has been bumped to version 3.0.0.
3387 The function `notmuch_database_close` has been split into
3388 `notmuch_database_close` and `notmuch_database_destroy`
3390 This makes it possible for long running programs to close the xapian
3391 database and thus release the lock associated with it without
3392 destroying the data structures obtained from it.
3394 `notmuch_database_open`, `notmuch_database_create`, and
3395 `notmuch_database_get_directory` now return errors
3397 The type signatures of these functions have changed so that the
3398 functions now return a `notmuch_status_t` and take an out-argument for
3399 returning the new database object or directory object.
3406 The go bindings and the `notmuch-addrlookup` utility are now
3407 compatible with go 1.
3409 Notmuch 0.12 (2012-03-20)
3410 =========================
3412 Command-Line Interface
3413 ----------------------
3417 `notmuch reply` has gained the ability to create a reply template
3418 for replying just to the sender of the message, in addition to reply
3419 to all. The feature is available through the new command line option
3420 `--reply-to=(all|sender)`.
3422 Mail store folder/file ignore
3424 A new configuration option, `new.ignore`, lets users specify a
3425 ;-separated list of file and directory names that will not be
3426 searched for messages by `notmuch new`.
3428 NOTE: *Every* file/directory that goes by one of those names will
3429 be ignored, independent of its depth/location in the mail store.
3431 Unified help and manual pages
3433 The notmuch help command now runs man for the appropriate page. If
3434 you install notmuch somewhere "unusual", you may need to update
3437 Manual page for notmuch configuration options
3439 The notmuch CLI configuration file options are now documented in the
3440 notmuch-config(1) manual page in addition to the configuration file
3448 The Emacs interface has, with the new CLI support, gained the
3449 ability to reply to sender in addition to reply to all. In both show
3450 and search modes, 'r' has been bound to reply to sender, replacing
3451 reply to all, which now has key binding 'R'.
3453 More flexible and consistent tagging operations
3455 All tagging operations ('+', '-', '*') now accept multiple tags with
3456 '+' or '-' prefix, like '*' operation in notmuch-search view before.
3458 '*' operation (`notmuch-show-tag-all`) is now available in
3461 `notmuch-show-{add,remove}-tag` functions no longer accept tag
3462 argument, `notmuch-show-tag-message` should be used instead. Custom
3463 bindings using these functions should be updated, e.g.:
3465 (notmuch-show-remove-tag "unread")
3467 should be changed to:
3469 (notmuch-show-tag-message "-unread")
3471 Refreshing the show view ('=' by default) no longer opens or closes messages
3473 To get the old behavior of putting messages back in their initial
3474 opened/closed state, use a prefix argument, e.g., 'C-u ='.
3476 Attachment buttons can be used to view or save attachments.
3478 When the cursor is on an attachment button the key 's' can be used
3479 to save the attachment, the key 'v' to view the attachment in the
3480 default mailcap application, and the key 'o' prompts the user for an
3481 application to use to open the attachment. By default Enter or mouse
3482 button 1 saves the attachment but this is customisable (option
3483 Notmuch Show Part Button Default Action).
3487 `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
3488 optionally visiting a URI to the current message at one of a number
3489 of Mailing List Archives.
3491 Fix MML tag quoting in replies
3493 The MML tag quoting fix of 0.11.1 unintentionally quoted tags
3494 inserted in `message-setup-hook`. Quoting is now limited to the
3497 Show view archiving key binding changes
3499 The show view archiving key bindings 'a' and 'x' now remove the
3500 "inbox" tag from the current message only (instead of thread), and
3501 move to the next message. At the last message, 'a' proceeds to the
3502 next thread in search results, and 'x' returns to search
3503 results. The thread archiving functions are now available in 'A' and
3506 Support text/calendar MIME type
3508 The text/calendar MIME type is now supported in addition to
3511 Generate inline patch fake attachment file names from message subject
3513 Use the message subject to generate file names for the inline patch
3514 fake attachments. The names are now similar to the ones generated by
3515 'git format-patch' instead of just "inline patch". See "Notmuch Show
3516 Insert Text/Plain Hook" in the notmuch customize interface.
3518 Enable `notmuch-search-line-faces` by default
3520 Make the `notmuch-search-line-faces` functionality more discoverable
3521 for new users by showing "unread" messages bold and "flagged"
3522 messages blue by default in the search view.
3526 notmuch-show mode now has simple printing support, bound to '#' by
3527 default. You can customize the variable notmuch-print-mechanism.
3534 `notmuch_query_add_tag_exclude` supports the new tag exclusion
3537 Python bindings changes
3538 -----------------------
3540 Python 3.2 compatibility
3542 The python bindings are now compatible with both python 2.5+ and 3.2.
3544 Added missing unicode conversions
3546 Python strings have to be encoded to and decoded from utf-8 when
3547 calling libnotmuch functions. Porting the bindings to python 3.2
3548 revealed a few function calls that were missing these conversions.
3553 Compatibility with GMime 2.6
3555 It is now possible to build notmuch against both GMime 2.4 and 2.6.
3556 However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
3557 report signatures where the signer key is unavailable (GNOME bug
3558 668085). For compatibility with GMime 2.4's tolerance of "From "
3559 headers we require GMime 2.6 >= 2.6.7.
3561 Notmuch 0.11.1 (2012-02-03)
3562 ===========================
3567 Fix error handling in python bindings
3569 The python bindings in 0.11 failed to detect NULL pointers being
3570 returned from libnotmuch functions and thus failed to raise
3571 exceptions to indicate the error condition. Any subsequent calls
3572 into libnotmuch caused segmentation faults.
3574 Quote MML tags in replies
3576 MML tags are text codes that Emacs uses to indicate attachments
3577 (among other things) in messages being composed. The Emacs
3578 interface did not quote MML tags in the quoted text of a reply.
3579 User could be tricked into replying to a maliciously formatted
3580 message and not editing out the MML tags from the quoted text. This
3581 could lead to files from the user's machine being attached to the
3582 outgoing message. The Emacs interface now quotes these tags in
3583 reply text, so that they do not effect outgoing messages.
3585 Notmuch 0.11 (2012-01-13)
3586 =========================
3588 Command-Line Interface
3589 ----------------------
3593 Hooks have been introduced to notmuch. Hooks are scripts that notmuch
3594 invokes before and after certain actions. Initially, `notmuch new`
3595 supports `pre-new` and `post-new` hooks that are run before and after
3596 importing new messages into the database.
3598 `notmuch reply --decrypt bugfix`
3600 The `notmuch reply` command with `--decrypt` argument had a rarely
3601 occurring bug that caused an encrypted message not to be decrypted
3602 sometimes. This is now fixed.
3607 Automatic tag query optimization
3609 `notmuch tag` now automatically optimizes the user's query to
3610 exclude messages whose tags won't change. In the past, we've
3611 suggested that people do this by hand; this is no longer necessary.
3613 Don't sort messages when creating a dump file
3615 This speeds up tag dumps considerably, without any loss of
3616 information. To replicate the old behavior of sorted output (for
3617 example to compare two dump files), one can use e.g. `sort(1)`.
3622 Reduction of memory leaks
3624 Two memory leaks when searching and showing messages were identified
3625 and fixed in this release.
3632 notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
3633 a bug that caused it to always jump to the next message, even if it
3634 should have scrolled down to show more of the current message instead.
3637 Support `notmuch new` as a notmuch-poll-script
3639 It's now possible to use `notmuch new` as a notmuch-poll-script
3640 directly. This is also the new default. This allows taking better
3641 advantage of the `notmuch new` hooks from emacs without intermediate
3644 Improvements in saved search management
3646 New saved searches are now appended to the list of saved searches,
3647 not inserted in front. It's also possible to define a sort function
3648 for displaying saved searches; alphabetical sort is provided.
3650 Hooks for notmuch-hello
3652 Two new hooks have been added: "notmuch-hello-mode-hook" (called after
3653 entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
3654 after updating a notmuch-hello buffer).
3656 New face for crypto parts headers
3658 Crypto parts used to be displayed with a hardcoded color. A new face
3659 has been introduced to fix this: notmuch-crypto-part-header. It
3660 defaults to the same value as before, but can be customized to match
3663 Use space as default thousands separator
3665 Large numbers in notmuch-hello are now displayed using a space as
3666 thousands separator (e.g. "123 456" instead of "123,456"). This can be
3667 changed by customizing "notmuch-hello-thousands-separator".
3669 Call notmuch-show instead of notmuch-search when clicking on
3670 buttonized id: links
3672 New function notmuch-show-advance
3674 This new function advances through just the current thread, and is
3675 less invasive than notmuch-show-advance-and-archive. It can easily
3676 be bound to SPC with:
3678 (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
3680 Various performance improvements
3685 The tool `contrib/notmuch-deliver` helps with initial delivery and
3686 tagging of mail (replacing running `notmuch new`).
3689 Notmuch 0.10.2 (2011-12-04)
3690 ===========================
3695 Fix crash in python bindings
3697 The python bindings did not call `g_type_init`, which caused crashes
3698 for some, but not all users.
3700 Notmuch 0.10.1 (2011-11-25)
3701 ===========================
3706 Fix `--help` argument
3708 Argument processing changes in 0.10 introduced a bug where
3709 `notmuch --help` crashed while `notmuch help` worked fine.
3710 This is fixed in 0.10.1.
3712 Notmuch 0.10 (2011-11-23)
3713 =========================
3715 New build and testing features
3716 ------------------------------
3718 Emacs tests are now done in `dtach`. This means that dtach is now
3719 needed to run the notmuch test suite, at least until the checking for
3720 prerequisites is improved.
3722 Full test coverage of the stashing feature in Emacs.
3724 New command-line features
3725 -------------------------
3727 Add `notmuch restore --accumulate` option
3729 The `--accumulate` switch causes the union of the existing and new tags to
3730 be applied, instead of replacing each message's tags as they are read in
3733 Add search terms to `notmuch dump`
3735 The dump command now takes an optional search term much like notmuch
3736 search/show/tag. The output file argument of dump is deprecated in
3737 favour of using stdout.
3739 Add `notmuch search` `--offset` and `--limit` options
3741 The search command now takes options `--offset=[-]N` and `--limit=N` to
3742 limit the number of results shown.
3744 Add `notmuch count --output` option
3746 The count command is now capable of counting threads in addition to
3747 messages. This is selected using the new `--output=(threads|messages)`
3750 New emacs UI features
3751 ---------------------
3753 Add tab-completion for `notmuch-search` and `notmuch-search-filter`
3755 These functions now support completion tags for query parts
3756 starting with "tag:".
3758 Turn "id:MSG-ID" links into buttons associated with notmuch searches
3760 Text of the form "id:MSG-ID" in mails is now a clickable button that
3761 opens a notmuch search for the given message id.
3763 Add keybinding ('c I') for stashing Message-ID's without an id: prefix
3765 Reduces manual labor when stashing them for use outside notmuch.
3767 Do not query on `notmuch-search` exit
3769 It is harmless to kill the external notmuch process, so the user
3770 is no longer interrogated when they interrupt a search.
3775 Emacs now constructs large search buffers more efficiently
3777 Search avoids opening and parsing message files
3779 We now store more information in the database so search no longer
3780 has to open every message file to get basic headers. This can
3781 improve search speed by as much as 10X, but taking advantage of this
3782 requires a database rebuild:
3784 notmuch dump > notmuch.dump
3785 # Backup, then remove notmuch database ($MAIL/.notmuch)
3787 notmuch restore notmuch.dump
3789 New collection of add-on tools
3790 ------------------------------
3792 The source directory "contrib" contains tools built on notmuch. These
3793 tools are not part of notmuch, and you should check their individual
3794 licenses. Feel free to report problems with them to the notmuch
3797 nmbug - share tags with a given prefix
3799 nmbug helps maintain a git repo containing all tags with a given
3800 prefix (by default "notmuch::"). Tags can be shared by committing
3801 them to git in one location and restoring in another.
3803 Notmuch 0.9 (2011-10-01)
3804 ========================
3806 New, general features
3807 ---------------------
3809 Correct handling of interruptions during `notmuch new`
3811 `notmuch new` now operates as a series of small, self-consistent
3812 transactions, so it can correctly resume after an interruption or
3813 crash. Previously, interruption could lose existing tags, fail to
3814 detect messages on resume, or leave the database in a state
3815 temporarily or permanently inconsistent with the mail store.
3822 `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
3823 allow multiple database operations to be performed atomically.
3825 `notmuch_database_find_message_by_filename` does exactly what it says.
3829 `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
3830 a status indicator and uses an output parameter for the
3831 message. This change required changing the SONAME of libnotmuch to
3834 Python bindings changes
3835 -----------------------
3837 - Re-encode python unicode objects to utf-8 before passing back to
3839 - Support `Database().begin_atomic()/end_atomic()`
3840 - Support `Database().find_message_by_filename()`
3841 NB! This needs a db opened in READ-WRITE mode currently, or it will crash
3842 the python process. The is a limitation (=bug) of the underlying libnotmuch.
3843 - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
3844 - Update for `n_d_find_message*` API changes (see above).
3846 Ruby bindings changes
3847 ---------------------
3849 - Wrap new library functions `notmuch_database_{begin,end}_atomic.`
3850 - Add new exception `Notmuch::UnbalancedAtomicError.`
3851 - Rename destroy to destroy! according to Ruby naming conventions.
3852 - Update for `n_d_find_message*` API changes (see above).
3857 * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
3859 * Add `notmuch-show-refresh-view` function (and corresponding binding)
3860 to refresh the view of a notmuch-show buffer.
3862 Reply formatting cleanup
3863 ------------------------
3865 `notmuch reply` no longer includes notification that non-leafnode
3866 MIME parts are being suppressed.
3868 Notmuch 0.8 (2011-09-10)
3869 ========================
3871 Improved handling of message/rfc822 parts
3873 Both in the CLI and the emacs interface. Output of rfc822 parts now
3874 includes the primary headers, as well as the body and all subparts.
3875 Output of the completely raw rfc822-formatted message, including all
3876 headers, is unfortunately not yet supported (but hopefully will be
3879 Improved Build system portability
3881 Certain parts of the shell script generating notmuch.sym were
3882 specific to the GNU versions of sed and nm. The new version should
3883 be more portable to e.g. OpenBSD.
3885 Documentation update for Ruby bindings
3887 Added documentation, typo fixes, and improved support for rdoc.
3889 Unicode, iterator, PEP8 changes for python bindings
3891 - PEP8 (code formatting) changes for python files.
3892 - Remove `Tags.__len__` ; see 0.6 release notes for motivation.
3893 - Decode headers as UTF8, encode (unicode) database paths as UTF8.
3895 Notmuch 0.7 (2011-08-01)
3896 ========================
3898 Vim interface improvements
3899 --------------------------
3901 Jason Woofenden provided a number of bug fixes for the Vim interface
3903 * fix citation/signature fold lengths
3904 * fix cig/cit parsing within multipart/*
3905 * fix on-screen instructions for show-signature
3906 * fix from list reformatting in search view
3907 * fix space key: now archives (did opposite)
3909 Uwe Kleine-König contributed
3911 * use full path for sendmail/doc fix
3912 * fix compose temp file name
3914 Python Bindings changes
3915 -----------------------
3917 Sebastian Spaeth contributed two changes related to unicode and UTF8:
3919 * message tags are now explicitly unicode
3920 * query string is encoded as a UTF8 byte string
3922 Build-System improvements
3923 -------------------------
3925 Generate notmuch.sym after the relevant object files
3927 This fixes a bug in parallel building. Thanks to Thomas Jost for the
3930 Notmuch 0.6.1 (2011-07-17)
3931 ==========================
3936 Re-export Xapian exception typeinfo symbols
3938 It turned out our aggressive symbol hiding caused problems for
3939 people running gcc 4.4.5.
3941 Notmuch 0.6 (2011-07-01)
3942 =======================
3944 New, general features
3945 ---------------------
3947 Folder-based searching
3949 Notmuch queries can now include a search term to match the
3950 directories in which mail files are stored (within the mail
3951 storage). The syntax is as follows:
3955 For example, one might use things such as:
3961 to match any path containing a directory "spam", "work/todo", or
3962 containing a directory starting with "2011-", respectively.
3964 This feature is particularly useful for users of delivery-agent
3965 software (such as procmail or maildrop) that is filtering mail and
3966 delivering it to particular folders, or users of systems such as
3967 Gmail that use filesystem directories to indicate message tags.
3969 NOTE: Only messages that are newly indexed with this version of
3970 notmuch will be searchable with folder: terms. In order to enable
3971 this feature for all mail, the entire notmuch index will need to be
3974 notmuch dump > notmuch.dump
3975 # Backup, then remove notmuch database ($MAIL/.notmuch)
3977 notmuch restore notmuch.dump
3979 Support for PGP/MIME
3981 Both the command-line interface and the emacs-interface have new
3982 support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
3983 and Jameson Graef Rollins for making this happen.
3985 New, automatic tags: "signed" and "encrypted"
3987 These tags will automatically be applied to messages containing
3988 multipart/signed and multipart/encrypted parts.
3990 NOTE: Only messages that are newly indexed with this version of
3991 notmuch will receive these tags.
3993 New command-line features
3994 -------------------------
3996 Add new "notmuch show --verify" option for signature verification
3998 This option instruct notmuch to verify the signature of
3999 PGP/MIME-signed parts.
4001 Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
4003 This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
4004 Note that this feature currently requires gpg-agent and a passphrase entry
4005 tool (e.g. pinentry-gtk or pinentry-curses).
4007 Proper nesting of multipart parts in "notmuch show" output
4009 MIME parts are now display with proper nesting to reflect original
4010 MIME hierarchy of a message. This allows clients to correctly
4011 analyze the MIME structure, (such as, for example, determining to
4012 which parts a signature part applies).
4014 Add new "notmuch show --part" option
4016 This is a replacement for the older "notmuch part" command, (which
4017 is now deprecated—it should still work as always, but is no longer
4018 documented). Putting part output under "notmuch show" allows for all
4019 of the "notmuch show" options to be applied when extracting a single
4020 part, (such as --format=json for extracting a message part with JSON
4023 Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
4025 The "notmuch search-tags" sub-command has been redundant since the
4026 addition of the --output=tags option to "notmuch search". We now
4027 make that more clear by deprecating "notmuch search-tags", (dropping
4028 it from the documentation). We do continue to support the old syntax
4029 by translating it internally to the new call.
4031 Performance improvements
4032 ------------------------
4034 Faster searches (by doing fewer searches to construct threads)
4036 Whenever a user asks for search results as threads, notmuch first
4037 performs a search for messages matching the query, then performs
4038 additional searches to find other messages in the resulting threads.
4040 Removing inefficiencies and redundancies in these secondary searches
4041 results in a measured speedups of 1.5x for a typical search.
4043 Faster searches (by doing fewer passes to gather message data)
4045 Optimizing Xapian data access patterns (using a single pass to get
4046 all message-document data rather than a pass for each data type)
4047 results in a measured speedup of 1.7x for a typical search.
4049 The benefits of this optimization combine with the preceding
4050 optimization. With both in place, Austin Clements measured a speedup
4051 of 2.5x for a search of all messages in his inbox (was 4.5s, now
4052 1.8s). Thanks, Austin!
4054 Faster initial indexing
4056 More efficient indexing of new messages results in a measured
4057 speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
4058 rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
4060 Make "notmuch new" faster for unchanged directories
4062 Optimizing to not do any further examinations of sub-directories
4063 when the filesystem indicates that a directory is unchanged from the
4064 last "notmuch new" results in measured speedups of 8.5 for the "No
4065 new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
4067 New emacs-interface features
4068 ----------------------------
4070 Support for PGP/MIME (GnuPG)
4072 Automatically indicate validity of signatures for multipart/signed
4073 messages. Automatically display decrypted content for
4074 multipart/encrypted messages. See the emacs variable
4075 notmuch-crypto-process-mime for more information. Note that this
4076 needs gpg-agent and a pinentry tool just as the command-line tools.
4077 Also note there is no support SMIME yet.
4079 Output of pipe command is now displayed if pipe command fails
4081 This is extremely useful in the common use case of piping a patch to
4082 "git am". If git fails to cleanly merge the patch the error messages
4083 from the failed merge are now clearly displayed to the user, (where
4084 previously they were silently hidden from the user).
4086 User-selectable From address
4088 A user can choose which configured email addresses should be used as
4089 the From address whenever composing a new message. To do so, simply
4090 press C-u before the command which will open a new message. Emacs
4091 will prompt for the from address to use.
4093 The user can customize the "Notmuch Identities" setting in the
4094 notmuch customize group in order to use addresses other than those in
4095 the notmuch configuration file if desired.
4097 The user can also choose to always be prompted for the from address
4098 when composing a new message (without having to use C-u) by setting
4099 the "Notmuch Always Prompt For Sender" option in the notmuch
4102 Hiding of repeated subjects in collapsed thread view
4104 In notmuch-show mode, if a collapsed message has the same subject as
4105 its parent, the subject is not shown.
4107 Automatic detection and hiding of original message in top-posted message
4109 When a message contains a line looking something like:
4111 ----- Original Message -----
4113 emacs hides this and all subsequent lines as an "original message",
4114 (allowing the user to click or press enter on the "original message"
4115 button to display it again). This makes the handling of top-posted
4116 citations work much like conventional citations.
4118 New hooks for running code when tags are modified
4120 Some users want to perform additional actions whenever a particular
4121 tag is added/removed from a message. This could be used to, for
4122 example, interface with some external spam-recognition training
4123 tool. To facilitate this, two new hooks are added which can be
4124 modified in the following settings of the notmuch customize group:
4126 Notmuch Before Tag Hook
4127 Notmuch After Tag Hook
4129 New optional support for hiding some multipart/alternative parts
4131 Many emails are sent with redundant content within a
4132 multipart/alternative group (such as a text/plain part as well as a
4133 text/html part). Users can configure the setting:
4135 Notmuch Show All Multipart/Alternative Parts
4137 to "off" in the notmuch customize group to have the interface
4138 automatically hide some part alternatives (such as text/html
4139 parts). This new part hiding is not configured by default yet
4140 because there's not yet a simple way to re-display such a hidden
4141 part if it is not actually redundant with a displayed part.
4143 Better rendering of text/x-vcalendar parts
4145 These parts are now displayed in a format suitable for use with the
4148 Avoid getting confused by Subject and Author fields with newline characters
4150 Replacing all characters with ASCII code less than 32 with a question mark.
4152 Cleaner display of From line in email messages
4154 Remove double quotes, and drop "name" if it's actually just a repeat of
4157 Vim interface improvements
4158 --------------------------
4160 Felipe Contreras provided a number of updates for the vim interface:
4162 * Using sendmail directly rather than mailx,
4163 * Implementing archive in show view
4164 * Add support to mark as read in show and search views
4165 * Add delete commands
4168 Bindings improvements
4169 ---------------------
4171 Ruby bindings are now much more complete
4173 Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
4174 `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
4176 Python bindings have been updated and extended
4178 (docs online at https://notmuch.readthedocs.io/)
4182 - `Message().get_filenames()`, `Message().tags_to_maildir_flags()`,
4183 `Message().maildir_flags_to_tags()`, `list(Threads())` and
4184 `list(Messages)` works now
4185 - `Message().__cmp__()` and `__hash__()`
4187 These allow, for example:
4189 if msg1 == msg2: ...
4191 As well as set arithmetic on `Messages()`:
4193 s1, s2 = set(msgs1), set(msgs2)
4199 - `len(Messages())` as it exhausted the iterator
4201 Use `len(list(Messages()))` or `Query.count_messages()`
4204 Added initial Go bindings in bindings/go
4206 New build-system features
4207 -------------------------
4209 Added support for building in a directory other than the source directory
4211 This can be used with the widely-supported idiom of simply running
4212 the configure script from some other directory:
4219 Fix to save configure options for future, implicit runs of configure
4221 When a user updates the source (such as with "git pull") calling
4222 "make" may cause an automatic re-run of the configure script. When
4223 this happens, the configure script will automatically be called with
4224 the same options the user originally passed in the most-recent
4225 manual invocation of configure.
4227 New test-suite feature
4228 ----------------------
4230 Binary for bash for running test suite now located via PATH
4232 The notmuch test suite requires a fairly recent version of bash (>=
4233 bash 4). As some systems supply an older version of bash at
4234 /bin/bash, the test suite is now updated to search $PATH to locate
4235 the bash binary. This allows users of systems with old /bin/bash to
4236 simply install bash >= 4 somewhere on $PATH before /bin and then use
4239 Support for testing output with a trailing newline
4241 Previously, some tests would fail to notice a difference in the
4242 presence/absence of a trailing newline in a program output, (which
4243 has led to bugs in the past). Now, carefully-written tests (using
4244 `test_expect_equal_file` rather than `test_expect_equal`) will detect
4245 any change in the presence/absence of a trailing newline. Many tests
4246 are updated to take advantage of this.
4248 Avoiding accessing user's $HOME while running test suite
4250 The test suite now carefully creates its own HOME directory. This
4251 allows the test suite to be run with no existing HOME directory, (as
4252 some build systems apparently do), and avoids test-suite differences
4253 due to configuration files in the users HOME directory.
4259 Output *all* files for "notmuch search --output=files"
4261 For the cases where multiple files have the same Message ID,
4262 previous versions of notmuch would output only one such file. This
4263 command is now fixed to correctly output all files.
4265 Fixed spurious search results from "overlapped" indexing of addresses
4267 This fixed a bug where a search for:
4269 to:user@elsewhere.com
4271 would incorrectly match a message sent:
4273 To: user@example,com, someone@elsewhere.com
4275 Fix --output=json when search has no results
4277 A bug present since notmuch 0.4 had caused searches with no results
4278 to produce an invalid json object. This is now fixed to cleanly
4279 return a valid json object representing an empty array "[]" as
4282 Fix the automatic detection of the From address for "notmuch reply"
4283 from the Received headers in some cases
4285 Fix core dump on DragonFlyBSD due to -1 return value from
4286 `sysconf(_SC_GETPW_R_SIZE_MAX)`
4288 Cleaned up several memory leaks
4290 Eliminated a few, rare segmentation faults and a double-free
4292 Fix libnotmuch library to only export notmuch API functions
4294 Previous release of the notmuch library also exported some Xapian
4295 C++ exception type symbols. These were never part of the library
4296 interface and were never intended to be exported.
4298 Emacs-interface bug fixes
4299 -------------------------
4301 Display any unexpected output or errors from "notmuch search" invocations
4303 Previously any misformatted output or trailing error messages were
4304 silently ignored. This output is now clearly displayed. This fix was
4305 very helpful in identifying and fixing the bug described below.
4307 Fix bug where some threads would be missing from large search results
4309 When a search returned a "large" number of results, the emacs
4310 interface was incorrectly dropping one thread every time the output
4311 of the "notmuch search" process spanned the emacs read-buffer. This
4314 Avoid re-compression of .gz files (and similar) when saving attachment
4316 Emacs was being too clever for its own good and trying to
4317 re-compress pre-compressed .gz files when saving such attachments
4318 (potentially corrupting the attachment). The emacs interface is
4319 fixed to avoid this bug.
4321 Fix hiding of a message when a previously-hidden citation is visible
4323 Previously the citation would remain visible in this case. This is
4324 fixed so that hiding a message hides all parts.
4326 Notmuch 0.5 (2010-11-11)
4327 ========================
4329 New, general features
4330 ---------------------
4332 Maildir-flag synchronization
4334 Notmuch now knows how to synchronize flags in maildir filenames with
4335 tags in the notmuch database. The following flag/tag mappings are
4344 'S' unread (added when 'S' flag is not present)
4346 The synchronization occurs in both directions, (for example, adding
4347 the 'S' flag to a file will cause the "unread" tag to be added, and
4348 adding the "replied" tag to a message will cause the file to be
4349 renamed with an 'R' flag).
4351 This synchronization is enabled by default for users of the
4352 command-line interface, (though only files in directories named
4353 "cur" or "new" will be renamed). It can be disabled by setting the
4354 new `maildir.synchronize_flags` option in the configuration file. For
4357 notmuch config set maildir.synchronize_flags false
4359 Users upgrading may also want to run "notmuch setup" once (just
4360 accept the existing configuration) to get a new, nicely-commented
4361 [maildir] section added to the configuration file.
4363 For users of the notmuch library, the new synchronization
4364 functionality is available with the following two new functions:
4366 notmuch_message_maildir_flags_to_tags
4367 notmuch_message_tags_to_maildir_flags
4369 It is anticipated that future improvements to this support will
4370 allow for safe synchronization of the 'T' flag with the "deleted"
4371 tag, as well as support for custom flag/tag mappings.
4373 New library features
4374 --------------------
4376 Support for querying multiple filenames for a single message
4378 It is common for the mailstore to contain multiple files with the
4379 same message ID. Previously, notmuch would always hide these
4380 duplicate files, (returning a single, arbitrary filename with
4381 `notmuch_message_get_filename`).
4383 With this release, library users can access all filenames for a
4384 message with the new function:
4386 notmuch_message_get_filenames
4388 Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
4389 and `notmuch_filenames_move_to_next` it is now possible to iterate
4390 over all available filenames for a given message.
4392 New command-line features
4393 -------------------------
4395 New "notmuch show --format=raw" for getting at original email contents
4397 This new feature allows for a fully-functional email client to be
4398 built on top of the notmuch command-line without needing any direct
4399 access to the mail store itself.
4401 For example, it's now possible to run "emacs -f notmuch" on a local
4402 machine with only ssh access to the mail store/notmuch database. To
4403 do this, simply set the notmuch-command variable in emacs to the
4404 name of a script containing:
4406 ssh user@host notmuch "$@"
4408 If the ssh client has enabled connection sharing (ControlMaster
4409 option in OpenSSH), the emacs interface can be quite responsive this
4415 Fix "notmuch search" to print nothing when nothing matches
4417 The 0.4 release had a bug in which:
4419 notmuch search <expression-with-no-matches>
4421 would produce a single blank line of output, (where previous
4422 versions would produce no output. This fix also causes a change in
4423 the --format=json output, (which would previously produce "[]" and
4424 now produces nothing).
4426 Emacs interface improvements
4427 ----------------------------
4429 Fix to allow pipe ('|') command to work when using notmuch over ssh
4431 Fix count of lines in hidden signatures
4433 Omit repeated subject lines in (collapsed) thread display
4435 Display current thread subject in a header line
4437 Provide a "c i" binding to copy a thread ID from the search view
4439 Allow for notmuch-fcc-dirs to have a value of nil
4441 Also, the more complex form of notmuch-fcc-dirs now has a slightly
4442 different format. It no longer has a special first-element, fallback
4443 string. Instead it's now a list of cons cells where the car of each
4444 cell is a regular expression to be matched against the sender
4445 address, and the cdr is the name of a folder to use for an FCC. So
4446 the old fallback behavior can be achieved by including a final cell
4447 of (".*" . "default-fcc-folder").
4449 Vim interface improvements
4450 --------------------------
4452 Felipe Contreras provided a number of updates for the vim interface
4454 These include optimizations, support for newer versions of vim, fixed
4455 support for sending mail on modern systems, new commands, and
4461 Added initial ruby bindings in bindings/ruby
4463 Notmuch 0.4 (2010-11-01)
4464 ========================
4466 New command-line features
4467 -------------------------
4469 `notmuch search --output=(summary|threads|messages|tags|files)`
4471 This new option allows for particular items to be returned from
4472 notmuch searches. The "summary" option is the default and behaves
4473 just as "notmuch search" has historically behaved.
4475 The new option values allow for thread IDs, message IDs, lists of
4476 tags, and lists of filenames to be returned from searches. It is
4477 expected that this new option will be very useful in shell
4478 scripts. For example:
4480 for file in $(notmuch search --output=files <search-terms>); do
4481 <operations-on> "$file"
4484 `notmuch show --format=mbox <search-specification>`
4486 This new option allows for the messages matching a search
4487 specification to be presented as an mbox. Specifically the "mboxrd"
4488 format is used which allows for reversible quoting of lines
4489 beginning with "From ". A reader should remove a single '>' from the
4490 beginning of all lines beginning with one or more '>' characters
4491 followed by the 5 characters "From ".
4493 `notmuch config [get|set] <section>.<item> [value ...]`
4495 The new top-level "config" command allows for any value in the
4496 notmuch configuration file to be queried or set to a new value. Both
4497 single-valued and multi-valued items are supported, as our any
4498 custom items stored in the configuration file.
4500 Avoid setting Bcc header in "notmuch reply"
4502 We decided that this was a bit heavy-handed as the actual mail
4503 user-agent should be responsible for setting any Bcc option. Also,
4504 see below for the notmuch/emacs user-agent now setting an Fcc by
4505 default rather than Bcc.
4507 New library features
4508 --------------------
4510 Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
4512 These are simply functions for querying properties of a
4513 `notmuch_query_t` object.
4518 Enable Fcc of all sent messages by default (to "sent" directory)
4520 All messages sent from the emacs interface will now be saved to the
4521 notmuch mail store where they will be incorporated to the database
4522 by the next "notmuch new". By default, messages are saved to the
4523 "sent" directory at the top-level of the mail store. This directory
4524 can be customized by means of the "Notmuch Fcc Dirs" option in the
4525 notmuch customize interface.
4527 Ability to all open messages in a thread to a pipe
4529 Historically, the '|' keybinding allows for piping a single message
4530 to an external command. Now, by prefixing this key with a prefix
4531 argument, (for example, by pressing "Control-U |"), all open
4532 messages in the current thread will be sent to the external command.
4534 Optional support for detecting inline patches
4536 This hook is disabled by default but can be enabled with a checkbox
4537 under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
4538 interface. It allows for inline patches to be detected and treated
4539 as if they were attachments, (with context-sensitive highlighting).
4541 Automatically tag messages as "replied" when sending a reply
4543 Messages replied to within the emacs interface will now be tagged as
4544 "replied". This feature can easily be customized to add or remove
4545 other tags as well. For example, a user might use a tag of
4546 "needs-reply" and can configure this feature to automatically remove
4547 that tag when replying. See "Notmuch Message Mark Replied" in the
4548 notmuch customize interface.
4550 Allow search-result color specifications to overlay each other
4552 For example, one tag can specify the background color of matching
4553 lines, while another can specify the foreground. With this change,
4554 both settings will now be visible simultaneously, (which was not the
4555 case in previous releases). See "Notmuch Search Line Faces" in the
4556 notmuch customize interface.
4558 Make hidden author names still available for incremental search
4560 When there is insufficient space to display all authors of a thread
4561 in search results, the names of hidden authors are now still made
4562 available to emacs' incremental search commands. As the user
4563 searches, matching lines will temporarily expand to show the hidden
4566 New binding of Control-TAB (works like TAB in reverse)
4568 Many notmuch nodes already use TAB to navigate forward through
4569 various items allowing actions, (message headers, email attachments,
4570 etc.). The new Control-TAB binding operates similarly but in the
4573 New build-system features
4574 -------------------------
4576 Various portability fixes have been applied
4578 These include fixes for build failures on at least Solaris, FreeBSD,
4579 and Fedora systems. We're hopeful that the notmuch code base is now
4580 more portable than ever before.
4582 Arrange for libnotmuch to be found automatically after make install
4584 The notmuch build system is now careful to help the user avoid
4585 errors of the form "libnotmuch.so could not be found" immediately
4586 after installing. This support takes two forms:
4588 1. If the library is installed to a system directory,
4589 (configured in /etc/ld.so.conf), then "make install" will
4590 automatically run ldconfig.
4592 2. If the library is installed to a non-system directory, the
4593 build system adds a `DR_RUNPATH` entry to the final binary
4594 pointing to the directory to which the library is installed.
4596 When this support works, the user should be able to run notmuch
4597 immediately after "make install", without any errors trying to find
4598 the notmuch library, and without having to manually set environment
4599 variables such as `LD_LIBRARY_PATH`.
4601 Check compiler/linker options before using them
4603 The configure script now carefully checks that any desired
4604 compilation options, (whether for enabling compiler warnings, or for
4605 embedding rpath, etc.), are supported. Only supported options are
4606 used in the resulting Makefile.
4608 New test-suite features
4609 -----------------------
4611 New modularization of test suite
4613 Thanks to a gracious relicensing of the test-suite infrastructure
4614 from the git project, notmuch now has a modular test suite. This
4615 provides the ability to run individual sections of the test suite
4616 rather than the whole things. It also provides better summary of
4617 test results, with support for tests that are expected to fail
4618 (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
4619 it easy to run the test suite within valgrind (pass --valgrind to
4620 notmuch-test or to any sub-script) which has been very useful.
4622 New testing of emacs interface
4624 The test suite has been augmented to allow automated testing of the
4625 emacs interfaces. So far, this includes basic searches, display of
4626 threads, and tag manipulation. This also includes a test that a new
4627 message can successfully be sent out through a (dummy) SMTP server
4628 and that said message is successfully integrated into the notmuch
4629 database via the FCC setting.
4634 Fix potential corruption of database when "notmuch new" is interrupted
4636 Previously, an interruption of "notmuch new" would (rarely) result
4637 in a corrupt database. The corruption would manifest itself by a
4638 persistent error of the form:
4640 document ID of 1234 has no thread ID
4642 The message-adding code has been carefully audited and reworked to
4643 avoid this sort of corruption regardless of when it is interrupted.
4645 Fix failure with extremely long message ID headers
4647 Previously, a message with an extremely long message ID, (say, more
4648 than 300 characters), would fail to be added to notmuch, (triggering
4649 Xapian exceptions). This has now been fixed.
4651 Fix for messages with "charset=unknown-8bit"
4653 Previously, messages with this charset would cause notmuch to emit a
4654 GMime warning, (which would then trip up emacs or other interfaces
4655 parsing the notmuch results).
4657 Fix `notmuch_query_search_threads` function to return NULL on any exception
4659 Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
4662 Previously, this command could confusingly report a Xapian
4663 exception, yet still return an error code of 0. It now correctly
4664 returns a failing error code of 1 in this case.
4669 Fix to handle a message with a subject containing, for example "[1234]"
4671 Previously, a message subject containing a sequence of digits within
4672 square brackets would cause the emacs interface to mis-parse the
4673 output of "notmuch search". This would result in the message being
4674 mis-displayed and prevent the user from manipulating the message in
4675 the emacs interface.
4677 Fix to correctly handle message IDs containing ".."
4679 The emacs interface now properly quotes message IDs to avoid a
4680 Xapian bug in which the ".." within a message ID would be
4681 misinterpreted as a numeric range specification.
4683 Python-binding fixes
4684 --------------------
4686 The python bindings for notmuch have been updated to work with python3.
4688 Debian-specific fixes
4689 ---------------------
4691 Fix emacs initialization so "M-x notmuch" works for users by default
4693 Now, a new Debian user can immediately run "emacs -f notmuch" after
4694 "apt-get install notmuch". Previously, the user would have had to
4695 edit the ~/.emacs file to add "(require 'notmuch)" before this would
4698 Notmuch 0.3.1 (2010-04-27)
4699 ==========================
4704 Fix an infinite loop in "notmuch reply"
4706 This bug could be triggered by replying to a message where the
4707 user's primary email address did not appear in the To: header and
4708 the user had not configured any secondary email addresses. The bug
4709 was a simple re-use of the same iterator variable in nested loops.
4711 Fix a potential SEGV in "notmuch search"
4713 This bug could be triggered by an author name ending in a ','.
4714 Admittedly - that's almost certainly a spam email, but we never
4715 want notmuch to crash.
4720 Fix calculations for line wrapping in the primary "notmuch" view
4722 Fix Fcc support to prompt to create a directory if the specified Fcc
4723 directory does not exist
4728 Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
4730 Without this, the C++ sources could not find strcasestr and the
4731 final linking of notmuch would fail.
4733 Notmuch 0.3 (2010-04-27)
4734 ========================
4736 New command-line features
4737 -------------------------
4739 User-configurable tags for new messages
4741 A new "new.tags" option is available in the configuration file to
4742 determine which tags are applied to new messages. Run "notmuch
4743 setup" to generate new documentation within ~/.notmuch-config on how
4744 to specify this value.
4746 Threads search results named based on subjects that match search
4748 This means that when new mails arrived to a thread you've previously
4749 read, and the new mails have a new subject, you will see that
4750 subject in the search results rather than the old subject.
4752 Faster operation of "notmuch tag" (avoid unneeded sorting)
4754 Since the user just wants to tag all matching messages, we can make
4755 things perform a bit faster by avoiding the sort.
4757 Even Better guessing of From: header for "notmuch reply"
4759 Notmuch now looks at a number of headers when trying to figure out
4760 the best From: header to use in a reply. This is helpful if you have
4761 several configured email addresses, and you also subscribe to various
4762 mailing lists with different addresses, (so that mails you are
4763 replying to won't always include your subscribed address in the To:
4766 Indication of author names that match a search
4768 When notmuch displays threads as the result of a search, it now
4769 lists the authors that match the search before listing the other
4770 authors in the thread. It inserts a pipe '|' symbol between the last
4771 matching and first non-matching author. This is especially useful in
4772 a search that includes tag:unread. Now the authors of the unread
4773 messages in the thread are listed first.
4775 New: Python bindings
4776 --------------------
4778 Sebastian Spaeth has contributed his python bindings for the notmuch
4779 library to the central repository. These bindings were previously
4780 known as "cnotmuch" within python but have now been renamed to be
4781 accessible with a simple, and more official-looking "import notmuch".
4783 The bindings have already proven very useful as people proficient in
4784 python have been able to easily develop programs to do notmuch-based
4785 searches for email-address completion, maildir-flag synchronization,
4788 These bindings are available within the bindings/python directory, but
4789 are not yet integrated into the top-level Makefiles, nor the top-level
4790 package-building scripts. Improvements are welcome.
4792 Emacs interface improvements
4793 ----------------------------
4795 An entirely new initial view for notmuch, (friendly yet powerful)
4797 Some of us call the new view "notmuch hello" but you can get at it
4798 by simply calling "emacs -f notmuch". The new view provides a search
4799 bar where new searches can be performed. It also displays a list of
4800 recent searches, along with a button to save any of these, giving it
4801 a new name as a "saved search". Many people find these "saved
4802 searches" one of the most convenient ways of organizing their mail,
4803 (providing all of the features of "folders" in other mail clients,
4804 but without any of the disadvantages).
4806 Finally, this view can also optionally display all of the tags that
4807 exist in the database, along with a count for each tag, and a custom
4808 search of messages with that tag that's simply a click (or keypress)
4811 NOTE: For users that liked the original mode of "emacs -f notmuch"
4812 immediately displaying a particular search result, we recommend
4813 instead running something like:
4815 emacs --eval '(notmuch search "tag:inbox" t)'
4817 The "t" means to sort the messages in an "oldest first" order,
4818 (as notmuch would do previously by default). You can also
4819 leave that off to have your search results in "newest first"
4822 Full-featured "customize" support for configuring notmuch
4824 Notmuch now plugs in well to the emacs "customize" mode to make it
4825 much simpler to find things about the notmuch interface that can be
4826 tweaked by the user.
4828 You can get to this mode by starting at the main "Customize" menu in
4829 emacs, then browsing through "Applications", "Mail", and
4830 "Notmuch". Or you can go straight to "M-x customize-group"
4833 Once you're at the customize screen, you'll see a list of documented
4834 options that can be manipulated along with checkboxes, drop-down
4835 selectors, and text-entry boxes for configuring the various
4838 Support for doing tab-completion of email addresses
4840 This support currently relies on an external program,
4841 (notmuch-addresses), that is not yet shipped with notmuch
4842 itself. But multiple, suitable implementations of this program have
4843 already been written that generate address completions by doing
4844 notmuch searches of your email collection. For example, providing
4845 first those addresses that you have composed messages to in the
4848 One such program (implemented in python with the python bindings to
4849 notmuch) is available via:
4851 git clone http://jkr.acm.jhu.edu/git/notmuch_addresses.git
4853 Install that program as notmuch-addresses on your PATH, and then
4854 hitting TAB on a partial email address or name within the To: or Cc:
4855 line of an email message will provide matching completions.
4857 Support for file-based (Fcc) delivery of sent messages to mail store
4859 This isn't yet enabled by default. To enable this, one will have to
4860 set the "Notmuch Fcc Dirs" setting within the notmuch customize
4861 screen, (see its documentation there for details). We anticipate
4862 making this automatic in a future release.
4864 New 'G' key binding to trigger mail refresh (G == "Get new mail")
4866 The 'G' key works wherever '=' works. Before refreshing the screen
4867 it calls an external program that can be used to poll email servers,
4868 run notmuch new and set up specific tags for the new emails. The
4869 script to be called should be configured with the "Notmuch Poll
4870 Script" setting in the customize interface. This script will
4871 typically invoke "notmuch new" and then perhaps several "notmuch
4874 Implement emacs message display with the JSON output from notmuch
4876 This is much more robust than the previous implementation, (where
4877 some HTML mails and mail quoting the notmuch code with the delimiter
4878 characters in it would cause the parser to fall over).
4880 Better handling of HTML messages and MIME attachments (inline images!)
4882 Allow for any MIME parts that emacs can display to be displayed
4883 inline. This includes inline viewing of image attachments, (provided
4884 the window is large enough to fit the image at its natural size).
4886 Much more robust handling of HTML messages. Currently both text/plain
4887 and text/html alternates will be rendered next to each other. In a
4888 future release, users will be able to decide to see only one or the
4889 other representation.
4891 Each attachment now has its own button so that attachments can be
4892 saved individually (the 'w' key is still available to save all
4895 Customizable support for tidying of text/plain message content
4897 Many new functions are available for tidying up message
4898 content. These include options such as wrapping long lines,
4899 compressing duplicate blank lines, etc.
4901 Most of these are disabled by default, but can easily be enabled by
4902 clicking the available check boxes under the "Notmuch Show Insert
4903 Text/Plain Hook" within the notmuch customize screen.
4905 New support for searchable citations (even when hidden)
4907 When portions of overly-long citations are hidden, the contents of
4908 these citations will still be available for emacs' standard
4909 "incremental search" functions. When the search matches any portion
4910 of a hidden citation, the citation will become visible temporarily
4911 to display the search result.
4913 More flexible handling of header visibility
4915 As an answer to complaints from many users, the To, Cc, and Date
4916 headers of messages are no longer hidden by default. For those users
4917 that liked that these were hidden, a new "Notmuch Messages Headers
4918 Visible" option in the customize interface can be set to nil. The
4919 visibility of headers can still be toggled on a per-message basis
4920 with the 'h' keybinding.
4922 For users that don't want to see some subset of those headers, the
4923 new "Notmuch Message Headers" variable can be customized to list
4924 only those headers that should be present in the display of a message.
4926 The Return key now toggles message visibility anywhere
4928 Previously this worked only on the first summary-line of a message.
4930 Customizable formatting of search results
4932 The user can easily customize the order, width, and formatting of
4933 the various fields in a "notmuch search" buffer. See the "Notmuch
4934 Search Result Format" section of the customize interface.
4936 Generate nicer names for search buffers when using a saved search
4938 Add a notmuch User-Agent header when sending mail from notmuch/emacs
4940 New keybinding (M-Ret) to open all collapsed messages in a thread
4945 Provide a new `NOTMUCH_SORT_UNSORTED` value for queries
4947 This can be somewhat faster when sorting simply isn't desired. For
4948 example when collecting a set of messages that will all be
4949 manipulated identically, (adding a tag, removing a tag, deleting the
4950 messages), then there's no advantage to sorting the messages by
4956 Fix to compile against GMime 2.6
4958 Previously notmuch insisted on being able to find GMime 2.4, (even
4959 though GMime 2.6 would have worked all along).
4961 Fix configure script to accept (and ignore) various standard options
4963 For example, those that the Gentoo build scripts expect configure to
4964 accept are now all accepted.
4969 A large number of new tests for the many new features
4971 Better display of output from failed tests
4973 Now shows failures with diff rather than forcing the user to gaze at
4974 complete actual and expected output looking for deviation.
4976 Notmuch 0.2 (2010-04-16)
4977 ========================
4979 This is the second release of the notmuch mail system, with actual
4980 detailed release notes this time!
4982 This release consists of a number of minor new features that make
4983 notmuch more pleasant to use, and a few fairly major bug fixes.
4985 We didn't quite hit our release target of "about a week" from the 0.1
4986 release, (0.2 is happening 11 days after 0.1), but we hope to do
4987 better for next week. Look forward to some major features coming to
4988 notmuch in subsequent releases.
4995 Better guessing of From: header
4997 Notmuch now tries harder to guess which configured address should be
4998 used as the From: line in a "notmuch reply". It will examine the
4999 Received: headers if it fails to find any configured address in To:
5000 or Cc:. This allows it to often choose the correct address even when
5001 replying to a message sent to a mailing list, and not directly to a
5004 Make "notmuch count" with no arguments count all messages
5006 Previously, it was hard to construct a search term that was
5007 guaranteed to match all messages.
5009 Provide a new special-case search term of "*" to match all messages
5011 This can be used in any command accepting a search term, such as
5012 "notmuch search '*'". Note that you'll want to take care that the
5013 shell doesn't expand * against the current files. And note that the
5014 support for "*" is a special case. It's only meaningful as a single
5015 search term and loses its special meaning when combined with any
5018 Automatically detect thread connections even when a parent message is
5021 Previously, if two or more message were received with a common
5022 parent, but that parent was not received, then these messages would
5023 not be recognized as belonging to the same thread. This is now fixed
5024 so that such messages are properly connected in a thread.
5029 Fix potential data loss in "notmuch new" with SIGINT
5031 One code path in "notmuch new" was not properly handling
5032 SIGINT. Previously, this could lead to messages being removed from
5033 the database (and their tags being lost) if the user pressed
5034 Control-C while "notmuch new" was working.
5036 Fix segfault when a message includes a MIME part that is empty
5038 Fix handling of non-ASCII characters with --format=json
5040 Previously, characters outside the range of 7-bit ASCII were
5041 silently dropped from the JSON output. This led to corrupted display
5042 of utf-8 content in the upcoming notmuch web-based frontends.
5044 Fix headers to be properly decoded in "notmuch reply"
5046 Previously, the user might see:
5048 Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
5052 Subject: Re: Rozlučka
5054 The former text is properly encoded to be RFC-compliant SMTP, will
5055 be sent correctly, and will be properly decoded by the
5056 recipient. But the user trying to edit the reply would likely be
5057 unable to read or edit that field in its encoded form.
5059 Emacs client features
5060 ---------------------
5062 Show the last few lines of citations as well as the first few lines
5064 It's often the case that the last sentence of a citation is what is
5065 being replied to directly, so the last few lines are often much more
5066 important. The number of lines shown at the beginning and end of any
5067 citation can be configured, (notmuch-show-citation-lines-prefix and
5068 notmuch-show-citation-lines-suffix).
5070 The '+' and '-' commands in the search view can now add and remove
5073 Selective bulk tagging is now possible by selecting a region of
5074 threads and then using either the '+' or '-' keybindings. Bulk
5075 tagging is still available for all threads matching the current
5076 search with the '*' binding.
5078 More meaningful buffer names for thread-view buffers
5080 Notmuch now uses the Subject of the thread as the buffer
5081 name. Previously it was using the thread ID, which is a meaningless
5084 Provide for customized colors of threads in search view based on tags
5086 See the documentation of notmuch-search-line-faces, (or us "M-x
5087 customize" and browse to the "notmuch" group within "Applications"
5088 and "Mail"), for details on how to configure this colorization.
5090 Build-system features
5091 ---------------------
5093 Add support to properly build libnotmuch on Darwin systems (OS X)
5095 Add support to configure for many standard options
5097 We include actual support for:
5099 --includedir --mandir --sysconfdir
5101 And accept and silently ignore several more:
5103 --build --infodir --libexecdir --localstatedir
5104 --disable-maintainer-mode --disable-dependency-tracking
5106 Install emacs client in "make install" rather than requiring a
5107 separate "make install-emacs"
5109 Automatically compute versions numbers between releases
5111 This support uses the git-describe notation, so a version such as
5112 0.1-144-g43cbbfc indicates a version that is 144 commits since the
5113 0.1 release and is available as git commit "43cbbfc".
5115 Add a new "make test" target to run the test suite and actually
5118 Notmuch 0.1 (2010-04-05)
5119 ========================
5121 This is the first release of the notmuch mail system.
5123 It includes the libnotmuch library, the notmuch command-line
5124 interface, and an emacs-based interface to notmuch.
5126 Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
5127 1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
5128 a performance bug that made notmuch very slow when modifying
5129 tags. This would cause distracting pauses when reading mail while
5130 notmuch would wait for Xapian when removing the "inbox" and "unread"
5131 tags from messages in a thread.
5138 indent-tabs-mode: nil