1 Notmuch 0.33.2 (2021-09-30)
2 ===========================
7 Improve reliability of T355-smime by changing gpgsm initialization.
9 Notmuch 0.33.1 (2021-09-10)
10 ===========================
15 Replace the fully-qualified-domain-name of the host with "localhost"
16 in the default email address. This should fix two flaky subtests in
19 Notmuch 0.33 (2021-09-03)
20 =========================
25 Correct documentation about transactions.
27 Add a configurable automatic commit of transactions. See
28 `database.autocommit` in notmuch-config(1).
30 Document the algorithm used to find a database.
35 Define format version 5, which supports sorting the output of
41 `notmuch` no longer sets `mail-user-agent` on load. To restore the
42 previous behaviour of using notmuch to send mail by default, customize
43 `mail-user-agent` to `notmuch-user-agent`.
45 `notmuch-company` now works in `org-msg`.
47 Improve the display of messages from long threads in unthreaded mode.
49 Prefer email addresses over User ID when showing valid signatures.
51 Define a new face `notmuch-jump-key`.
53 New commands in notmuch-tree view: `notmuch-tree-filter` and `notmuch-tree-filter-by-tag`.
55 Honour `notmuch-show-text/html-blocked-images` when using `w3m` to
58 Support toggling sort order in notmuch-tree mode.
63 Memory management of allocated notmuch objects (database, messages,
64 etc...) is now done via the Ruby GC. This removes all constraints on
65 the order of object destruction. Database close and destroy are
66 split, following an old library API change.
71 Respect excluded tags when showing a thread.
76 Fix doc build for Sphinx 4.0.
78 Improve the markup and linking of the documentation.
80 Notmuch 0.32.3 (2021-08-17)
81 ===========================
86 Restore location of database via `MAILDIR` environment variable, which
89 Bump libnotmuch minor version to match the documentation in
92 Correct documentation for deprecated database opening functions to
93 point out that they (still) do not load configuration information.
98 Restore "notmuch config get built_with.*", which was broken in 0.32.
100 Notmuch 0.32.2 (2021-06-27)
101 ===========================
106 Fix a bug from 2017 that can add duplicate thread-id terms to message
112 Fix small memory leak in notmuch new.
117 Add `(require 'seq)` for `seq-some`.
122 Fix man page build for Sphinx 4.x. Fix variable name in emacs docs.
127 Fix backup creation in `perf-test/T00-new`. Check openssl
128 prerequisite in `add_gpgsm_home`.
130 Notmuch 0.32.1 (2021-05-15)
131 ===========================
136 Restore handling of relative values for `database.path` that was
137 broken by 0.32. Extend this handling to `database.mail_root`,
138 `database.backup_dir`, and `database.hook_dir`.
140 Reload certain metadata from Xapian database in
141 notmuch_database_reopen. This fixes a bug when adding messages to the
142 database in a pre-new hook.
144 Fix default of `$HOME/mail` for `database.path`. In release 0.32, this
145 default worked only in "notmuch config".
150 Restore the dynamically bound variables `tag-changes` and `query` in
151 in `notmuch-before-tag-hook` and `notmuch-after-tag-hook`.
153 Add `notmuch-jump-key` face to fontify keys in `notmuch-jump` and
154 related functions. To ensure backward compatibility, the new face
155 inherits from `minibuffer-prompt`.
157 Notmuch 0.32 (2021-05-02)
158 =========================
163 This release includes a significant overhaul of the configuration
164 management facilities for notmuch. The previous distinction between
165 configuration items that can be modified via plain text configuration
166 files and those that must be set in the database via the "notmuch
167 config" subcommand is gone, and all configuration items can be set in
168 both ways. The external configuration file overrides configuration
169 items in the database. The location of database, hooks, and
170 configuration files is now more flexible, with several new
171 configuration variables. In particular XDG locations are now supported
172 as fallbacks for database, configuration and hooks. For more
173 information see `notmuch-config(1)`.
178 To support the new configuration facilities, several functions and
179 constants have been added to the notmuch API. Most notably:
181 - `notmuch_database_create_with_config`
182 - `notmuch_database_open_with_config`
183 - `notmuch_database_load_config`
184 - `notmuch_config_get`
186 A previously requested API change is that `notmuch_database_reopen` is
187 now exposed (and generalized).
189 The previously severe slowdowns from large numbers calls to
190 notmuch_database_remove_message or notmuch_message_delete in one
191 session has been fixed.
193 As always, the canonical source of API documentation is
194 `lib/notmuch.h`, or the doxygen formatted documentation in `notmuch(3)`.
199 The `notmuch config set` subcommand gained a `--database` argument to
200 specify that the database should be updated, rather than a config file.
202 The speed of `notmuch new` and `notmuch reindex` in dealing with large
203 numbers of mail file deletions is significantly improved.
208 Completion related updates include: de-duplicating tags offered for
209 completion, use the actual initial input in address completion, allow
210 users to opt out of notmuch address completion, and do not force Ido
211 when prompting for senders.
213 Some keymaps used to contain bindings for unnamed commands. These
214 lambda expressions have been replaced by named commands (symbols), to
217 Lexical binding is now used in all notmuch-emacs libraries.
219 Fix bug in calling `notmuch-mua-mail` with a non-nil RETURN-ACTION.
221 Removed, inlined or renamed functions and variables:
222 `notmuch-address-locate-command`,
223 `notmuch-documentation-first-line`, `notmuch-folder`,
224 `notmuch-hello-trim', `notmuch-hello-versions` => `notmuch-version`,
225 `notmuch-remove-if-not`, `notmuch-search-disjunctive-regexp`,
226 `notmuch-sexp-eof`, `notmuch-split-content-type`, and
227 `notmuch-tree-button-activate`.
229 Keymaps are no longer fset, which means they need to be referred to in
230 define-key directly (without quotes). If your Emacs configuration has a
232 (define-key 'notmuch-show-mode-map "7" 'foo)
233 you should change it to:
234 (define-key notmuch-show-mode-map "7" 'foo)
236 Notmuch 0.31.4 (2021-02-18)
237 ===========================
242 Fix include bug triggered by glib 2.67.
247 Fix race condition in T568-lib-thread.
249 Notmuch 0.31.3 (2020-12-25)
250 ===========================
255 Fix for exclude tags in notmuch2 bindings.
260 Portability update for T360-symbol-hiding.
265 Fix for memory error in notmuch_database_get_config_list.
267 Notmuch 0.31.2 (2020-11-08)
268 ===========================
273 Catch one more occurence of "version" in the build system, which
274 caused the file to be regenerated in the release tarball.
276 Notmuch 0.31.1 (2020-11-08)
277 ===========================
282 Fix a memory initialization bug in notmuch_database_get_config_list.
287 Rename file 'version' to 'version.txt'. The old file name conflicted
288 with a C++ header for some compilers.
290 Replace use of coreutils `realpath` in configure.
292 Notmuch 0.31 (2020-09-05)
293 =========================
298 Notmuch now supports Emacs 27.1. You may need to set
299 `mml-secure-openpgp-sign-with-sender` and/or
300 `mml-secure-smime-sign-with-sender` to continue signing messages.
302 The minimum supported major version of GNU Emacs is now 25.1.
304 Add support for moving between threads after notmuch-tree-from-search-thread.
306 New `notmuch-unthreaded` mode (added in Notmuch 0.30)
308 Unthreaded view is a mode where each matching message is shown on a
311 The main key entries to unthreaded view are
313 'u' enter a query to view in unthreaded mode (works in hello,
314 search, show and tree mode)
316 'U' view the current query in unthreaded mode (works from search,
319 Saved searches can also specify that they should open in unthreaded
322 Currently it is not possible to specify the sort order: it will
323 always be newest first.
328 The shell pipeline executed by notmuch-mutt, which symlinked matched
329 files to a maildir for mutt to access is replaced with internal perl
330 processing. This search operation is now more portable, and somewhat
336 Improve exception handling in the library. This should
337 largely eliminate terminations inside the library due to uncaught
338 exceptions or internal errors. No doubt there are a few uncovered
339 code paths still; please report them as bugs.
341 Add `notmuch_message_get_flag_st` and
342 `notmuch_message_has_maildir_flag_st`, and deprecate the existing
343 non-status providing versions.
345 Move memory de-allocation from `notmuch_database_close` to
346 `notmuch_database_destroy`.
348 Handle relative filenames in `notmuch_database_index_file`, as
349 promised in the documentation.
354 Documentation for the python bindings is merged into the main
355 sphinx-doc documentation tree. The merged documentation can be built
356 with e.g. `make sphinx-html`
361 We now support building notmuch against Xapian 1.5 (the current
362 development version).
367 Test suite fixes for compatibility with Emacs 27.1.
372 Man pages are now compressed reproducibly.
374 Notmuch 0.30 (2020-07-10)
375 =========================
380 Handle S/MIME (PKCS#7) messages -- one-part signed messages, encrypted
381 messages, and multilayer messages. Treat them symmetrically to
382 OpenPGP messages. This includes handling protected headers
385 If you're using Notmuch with S/MIME, you currently need to configure
391 Detect and automatically repair a common form of message mangling
392 created by Microsoft Exchange (see index.repaired=mixedup in
393 notmuch-properties(7)).
398 Avoid indexing the legacy-display part of an encrypted message that
399 has protected headers (see
400 index.repaired=skip-protected-headers-legacy-display in
401 notmuch-properties(7)).
406 Drop support for python2, focus on python3.
408 Introduce new CFFI-based python bindings in the python module named
409 "notmuch2". Officially deprecate (but still support) the older
415 Support for Xapian 1.2 is removed. The minimum supported version of
418 Notmuch 0.29.3 (2019-11-27)
419 ===========================
424 Fix for use-after-free in notmuch_config_list_{key,val}.
426 Fix for double close of file in notmuch-dump.
431 Drop python2 support from shipped debian packaging.
433 Notmuch 0.29.2 (2019-10-19)
434 ===========================
439 Fix for file descriptor leak when opening gzipped mail files. Thanks
440 to James Troup for the bug report and the fix.
442 Notmuch 0.29.1 (2019-06-11)
443 ===========================
448 Fix for installation failure with `configure --without-emacs`.
450 Notmuch 0.29 (2019-06-07)
451 =========================
456 Add "body:" field to allow searching for terms that occur only in the
457 message body. Users will need to reindex their mail to take advantage
460 Add support for indexing user specified headers (e.g. List-Id). See
461 notmuch-config(1) for details. This requires reindexing after changing
462 the set of headers to be indexed.
464 Fix bug for searching in some headers for Xapian keywords in quoted
467 Add support for gzip compressed mail messages (/not/ multi-message
468 mboxes); e.g. `gzip -9 $MAIL/archive/giant-message && notmuch new`
469 should work. Note that maildir flag syncing for gzipped messages is
472 Notmuch is now capable of indexing, searching and rendering
473 cryptographically-protected Subject: headers of the form produced by
474 Enigmail and K-9 mail in encrypted messages.
476 Command Line Interface
477 ----------------------
479 `notmuch show` now supports --body=false and --include-html with
482 Fix several performance problems with `notmuch reindex`.
484 `notmuch show` and `notmuch reply` now emit per-message cryptographic
485 status in their json and sexp output formats. See devel/schemata for
486 more details about what is included there. This status includes
487 information about cryptographic protections for the Subject header.
492 Optionally check for missing attachments in outgoing messages (see
493 function `notmuch-mua-attachment-check`).
495 Bind `B` to browse URLs in current message.
497 Bind `g` to refresh the current notmuch buffer.
499 Editing a message as new now includes an FCC header.
501 Forwarded messages are now tagged as +forwarded (customizable).
503 Add references header to link forwarded message to thread of original
506 The minimum supported major version of Emacs is now 24.
508 Support for GNU Emacs older than 25.1 is deprecated with this release,
509 and may be removed in a future release.
511 Notmuch-emacs documentation is somewhat expanded. More contributions
517 Notmuch release tarballs are now compressed with `xz`.
519 We now provide conventional detached signatures of the release
520 tarballs in addition to the signed `sha256sum` files.
525 Support for GMime 2.6 is removed. The minimum supported version of
526 GMime is now 3.0.3. GMime also needs to have been compiled with
527 cryptography support.
532 If either GNU parallel or moreutils parallel is installed, the tests
533 in the test suite will now be run in parallel (one per available
534 core). This can be disabled with NOTMUCH_TEST_SERIALIZE=1.
536 Notmuch 0.28.4 (2019-05-05)
537 ===========================
539 Command line interface
540 ----------------------
542 Fix a spurious error when using `notmuch show --raw` on messages whose
543 size is a multiple of the internal buffer size.
545 Notmuch 0.28.3 (2019-03-05)
546 ===========================
551 Fix a bug with the internal data structure _notmuch_string_map_t used
552 by message properties.
557 Serialize calls to sphinx-build to avoid race condition.
559 Notmuch 0.28.2 (2019-02-17)
560 ===========================
565 Invoke gpg with --batch and --no-tty.
570 Fix documentation build with Python 3.7. Note that Python >= 3.3 is
571 now needed to build this documentation.
573 Notmuch 0.28.1 (2019-02-01)
574 ===========================
579 `configure` no longer uses the special variable BASH, as this causes
580 problems on systems where /bin/sh is bash.
582 Notmuch 0.28 (2018-10-12)
583 =========================
590 The threading algorithm has been updated to consider all references,
591 not just the heuristically chosen parent (e.g. when that parent is
592 not in the database). The heuristic for choosing a parent message
593 has also been updated to again consider the In-Reply-To header, if
594 it looks sensible. Re-indexing might be needed to take advantage of
597 Handle mislabelled Windows-1252 parts
599 Messages that contain Windows-1252 are apparently frequently
600 mislabelled as ISO 8859-1. Use GMime functionality to apply the
601 correct encoding for such messages.
603 Command Line Interface
604 ----------------------
606 Support relative database paths
608 Database paths (i.e. parameters to `notmuch config set
609 database.path`) without a leading `/` are now interpreted relative
610 to $HOME of the invoking user.
615 Improve stderr handling
617 Add a real sentinel process to clean up stderr buffer. This is
618 needed on e.g. macOS.
620 Call `notmuch-mua-send-hook` hooks when sending a message
622 This hook was documented, but not functional for a very long time.
627 The zsh completion has been updated to cover most of the notmuch
628 CLI. Internally it uses regexp searching, so needs at least Notmuch
634 The build system now installs notmuch-mutt and notmuch-emacs-mua with
635 absolute shebangs, following the conventions of most Linux
641 Fix certain tests that were failing with GMime 2.6. Users are reminded
642 that support for versions of GMime before 3.0.3 has been deprecated
645 Notmuch 0.27 (2018-06-13)
646 =========================
651 Add support for thread:{} queries
653 Queries of the form `thread:{foo} and thread:{bar}` match threads
654 containing (possibly distinct) messages matching foo and bar. See
655 `notmuch-search-terms(7)` for details.
657 Command Line Interface
658 ----------------------
660 Add the --full-scan option to `notmuch new`
662 This option disables mtime based optimization of scanning for new mail.
664 Add new --decrypt=stash option for `notmuch show`
666 This facilitates a workflow for encrypted messages where message
667 cleartext are indexed on first read, but the user's decryption key
668 does not have to be available during message receipt.
673 An initial manual for `notmuch-emacs` is now installed by default (in
679 As of this release, support for versions of Xapian before 1.4.0 is
680 deprecated, and may disappear in a future release of notmuch.
682 Notmuch 0.26.2 (2018-04-28)
683 ===========================
688 Work around Xapian bug with `get_mset(0,0, x)`
690 This causes aborts in `_notmuch_query_count_documents` on
691 e.g. Fedora 28. The underlying bug is fixed in Xapian commit
692 f92e2a936c1592, and will be fixed in Xapian 1.4.6.
694 Make thread indexing more robust against reference loops
696 Choose a thread root by date in case of reference loops. Fix a
697 related abort in `notmuch show`.
699 Notmuch 0.26.1 (2018-04-02)
700 ===========================
705 Bump the library minor version. This should have happened in 0.26, but
706 better late than never.
709 Notmuch 0.26 (2018-01-09)
710 =========================
712 Command Line Interface
713 ----------------------
715 Support for re-indexing existing messages
717 There is a new subcommand, `notmuch reindex`, which re-indexes all
718 messages matching supplied search terms. This permits users to
719 change the way specific messages are indexed.
721 Note that for messages with multiple variants in the message
722 archive, the recorded Subject: of may change upon reindexing,
723 depending on the order in which the variants are indexed.
725 Improved error reporting in notmuch new
727 Give more details when reporting certain Xapian exceptions.
729 Support maildir synced tags in `new.tags`
731 Tags `draft`, `flagged`, `passed`, and `replied` are now supported
732 in `new.tags`. The tag `unread` is still special in the presence of
733 maildir syncing, and will be added for files in `new/` regardless of
734 the setting of `new.tags`.
736 Support /regex/ in new.ignore
738 Files and directories may be ignored based on regular expressions.
740 Allow `notmuch insert --folder=""`
742 This inserts into the top level folder.
744 Strip trailing '/' from folder path for notmuch insert
746 This prevents a potential problem with duplicated database records.
748 New option --output=address for notmuch address
750 Make `notmuch show` more robust against deleting duplicate files
752 The option --decrypt now takes an explicit argument
754 The --decrypt option to `notmuch show` and `notmuch reply` now takes
755 an explicit argument. If you were used to invoking `notmuch show
756 --decrypt`, you should switch to `notmuch show --decrypt=true`.
758 Boolean and keyword arguments now take a `--no-` prefix
763 Indexing cleartext of encrypted e-mails
765 It's now possible to include the cleartext of encrypted e-mails in
766 the notmuch index. This makes it possible to search your encrypted
767 e-mails with the same ease as searching cleartext. This can be done
768 on a per-message basis by passing --decrypt=true to indexing
769 commands (new, insert, reindex), or by default by running "notmuch
770 config set index.decrypt true".
772 Encrypted messages whose cleartext is indexed will typically also
773 have their session keys stashed as properties associated with the
774 message. Stashed session keys permit rapid rendering of long
775 encrypted threads, and disposal of expired encryption-capable keys.
776 If for some reason you want cleartext indexing without stashed
777 session keys, use --decrypt=nostash for your indexing commands (or
778 run "notmuch config set index.decrypt nostash"). See `index.decrypt`
779 in notmuch-config(1) for more details.
781 Note that stashed session keys permit reconstruction of the
782 cleartext of the encrypted message itself, and the contents of the
783 index are roughly equivalent to the cleartext as well. DO NOT USE
784 this feature without considering the security of your index.
789 Guard against concurrent searches in notmuch-tree
791 Use make-process when available
793 This allows newer Emacs to separate stdout and stderr from the
794 notmuch command without using temporary files.
799 Indexing files with duplicate message-id
801 Files with duplicate message-id's are now indexed, and searchable
802 via terms and phrases. There are known issues related to
803 presentation of results and regular-expression search, but in
804 principle no mail file should be completely unsearchable now.
806 New functions to count files
808 Two new functions in the libnotmuch API:
809 `notmuch_message_count_files`, and `notmuch_thread_get_total_files`.
811 New function to remove properties
813 A new function was added to the libnotmuch API to make it easier to
814 drop all properties with a common pattern:
815 `notmuch_message_remove_all_properties_with_prefix`
817 Change of return value of `notmuch_thread_get_authors`
819 In certain corner cases, `notmuch_thread_get_authors` previously
820 returned NULL. This has been replaced by an empty string, since the
821 possibility of NULL was not documented.
823 Transition `notmuch_database_add_message` to `notmuch_database_index_file`
825 When indexing an e-mail message, the new
826 `notmuch_database_index_file` function is the preferred form, and
827 the old `notmuch_database_add_message` is deprecated. The new form
828 allows passing a set of options to the indexing engine, which the
829 operator may decide to change from message to message.
836 The test suite now works properly with out-of-tree builds, i.e. with
837 separate source and build directories. The --root option to tests
838 has been dropped. The same can now be achieved more reliably using
844 Python bindings specific Debian packaging is removed
846 The bindings have been build by the top level Debian packaging for a
847 long time, and `bindings/python/debian` has bit-rotted.
849 Open mail files in binary mode when using Python 3
851 This avoids certain encoding related crashes under Python 3.
853 Add python bindings for `notmuch_database_{get,set}_config*`
855 Optional `decrypt_policy` flag is available for notmuch.database().index_file()
860 nmbug's internal version increases to 0.3 in this notmuch release.
861 User-facing changes with this notmuch release:
863 * Accept failures to unset `core.worktree` in `clone`, which allows
864 nmbug to be used with Git 2.11.0 and later.
865 * Auto-checkout in `clone` if it wouldn't clobber existing content,
866 which makes the initial clone more convenient.
867 * Only error for invalid diff lines in `tags/`, which allows for
868 `README`s and similar in nmbug repositories.
873 New man page: notmuch-properties(7)
875 This new page to the manual describes common conventions for how
876 properties are used by libnotmuch, the CLI, and associated programs.
877 External projects that use properties are encouraged to claim their
878 properties and conventions here to avoid collisions.
880 Notmuch 0.25.3 (2017-12-08)
881 ===========================
886 Extend mitigation (disabling handling x-display in text/enriched) for
887 Emacs bug #28350 to Emacs versions before 24.4 (i.e. without
890 Command Line Interface
891 ----------------------
893 Correctly report userid validity. Fix test suite failure for GMime >=
894 3.0.3. This change raises the minimum supported version of GMime 3.x
897 Notmuch 0.25.2 (2017-11-05)
898 ===========================
900 Command Line Interface
901 ----------------------
903 Fix segfault in notmuch-show crypto handling when compiled against
904 GMime 2.6; this was a regression in 0.25.
909 Support for GMime before 3.0 is now deprecated, and will be removed in
912 Notmuch 0.25.1 (2017-09-11)
913 ===========================
918 Disable handling x-display in text/enriched messages. Mitigation for
921 Notmuch 0.25 (2017-07-25)
922 =========================
927 Add regexp searching for mid, paths, and tags.
929 Skip HTML tags when indexing
931 In particular this avoids indexing large inline images.
933 Command Line Interface
934 ----------------------
936 Bash completion is now installed to /usr/share by default.
938 Allow space as separator for keyword arguments.
943 Support for stashing message timestamp in show and tree views
945 Invoking `notmuch-show-stash-date` with a prefix argument
946 stashes the unix timestamp of the current message instead of
949 Don't use 'function' as variable name, workaround emacs bug 26406.
954 Add workaround for date parsing of bad input in older GMime
956 In certain circumstances, older GMime libraries could return
957 negative numbers when parsing syntactically invalid dates.
959 Replace deprecated functions with status returning versions
961 API of notmuch_query_{search,count}_{messages,threads} has
962 changed. notmuch_query_add_tag_exclude now returns a status
965 Add support for building against GMime 3.0.
967 Rename libutil.a to libnotmuch_util.a.
969 libnotmuch SONAME is incremented to libnotmuch.so.5.
971 Notmuch 0.24.2 (2017-06-01)
972 ===========================
974 Command Line Interface
975 ----------------------
977 Fix output from `notmuch dump --include=properties` to not include tags.
982 Fix filename stashing in tree view.
984 Notmuch 0.24.1 (2017-04-01)
985 ===========================
990 Fix regressions in non-regexp search for `from:` and `subject:`
992 The regexp search code in 0.24 introduced a regression in the
993 handling of empty queries and wildcards. These are both corrected in
996 Command Line Interface
997 ----------------------
999 Fix several memory leaks in `notmuch show`
1001 Update NEWS for 0.24 to mention schema changes
1003 Fix bug in dump header
1005 The previous version of the dump header failed to mention the
1006 inclusion of tags. This fix bumps the version number of the dump
1007 format to 3. There are no other changes to the format.
1012 Fix a read-after-free in the library.
1014 Notmuch 0.24 (2017-03-12)
1015 =========================
1020 Regular expression searches supported for `from:` and `subject:`
1022 This requires recent Xapian (1.4+) See notmuch-search-terms(7) for
1025 Command Line Interface
1026 ----------------------
1028 Run external `notmuch-` prefixed commands as subcommands
1030 You can now add your own `notmuch-` prefixed commands in PATH, and
1031 have notmuch run them as if they were notmuch commands. See the
1032 `notmuch(1)` man page for details
1034 New default output format to 3
1036 See devel/schemata for details. Users of the structured output
1037 format are reminded of the `--format-version` argument to `notmuch
1038 show` and `notmuch search` which can prevent breakage when the
1039 default format changes.
1044 Postpone and resume messages in `notmuch-message-mode` (composition)
1046 Notmuch now has built in support for postponing, saving and resuming
1047 messages. The default bindings are C-x C-s to save a draft, C-c C-p
1048 to postpone a draft (save and exit compose buffer), and "e" in show
1049 or tree view to resume.
1051 Draft messages are tagged with `notmuch-draft-tags` (draft by
1052 default) so you may wish to add that to the excluded tags list. When
1053 saving a previously saved draft message the earlier draft gets
1056 Note that attachments added before postponing will be included as
1057 they were when you postponed in the final message.
1061 It is now possible to save the list of address completions for
1062 notmuch's internal completion between runs of emacs. This makes the
1063 first calls to address completion much better and faster. For
1064 privacy reasons it is disabled by default, to enable set or
1065 customize `notmuch-address-save-filename`.
1069 It is now possible to configure tagging shortcuts (with an interface
1070 like notmuch jump). For example (by default) k u will remove the
1071 unread tag, and k s will add a tag "spam" and remove the inbox
1072 tag. Pressing k twice will do the reverse operation so, for example,
1073 k k s removes the spam tag and adds the inbox tag. See the customize
1074 variable `notmuch-tagging-keys` for more information.
1078 It is now possible to refresh all notmuch buffers to reflect the
1079 current state of the database with a single command, `M-=`.
1081 Stop display of `application/*` parts
1083 By default gnus displays all `application/*` parts such as
1084 application/zip in the message buffer. This has several undesirable
1085 effects for notmuch (security, triggering errors etc). Notmuch now
1086 overrides this and does not display them by default. If you have
1087 customized `mm-inline-override-types` then we assume you know what
1088 you want and do not interfere; if you do want to stop the display of
1089 `application/*` add `application/*` to your customization. If you want
1090 to allow `application/*` then set `mm-inline-override-types` to
1093 Small change in the api for notmuch-search-tag
1095 When `notmuch-search-tag` is called non-interactively and the region
1096 is set, then it only tags the threads in the region. (Previously it
1097 only tagged the current thread.)
1099 Bugfix for sending messages with very long headers
1101 Previously emacs didn't fold very long headers when sending which
1102 could cause the MTA to refuse to send the message. This makes sure
1103 it does fold any long headers so the message is RFC compliant.
1105 `notmuch emacs-mua` command installed with the Emacs interface
1107 We've carried a `notmuch-emacs-mua` script in the source tree for
1108 quite some time. It can be used to launch the Notmuch Emacs
1109 interface from the command line in many different ways. Starting
1110 with this release, it will be installed with the Emacs
1111 interface. With the new external subcommand support, the script
1112 transparently becomes a new notmuch command. See the
1113 `notmuch-emacs-mua(1)` man page for details.
1115 Notmuch Emacs desktop integration
1117 The desktop integration file will now be installed with the Notmuch
1118 Emacs interface, adding a Notmuch menu item and configuration to
1119 allow the user to set up Notmuch Emacs as the `mailto:` URL handler.
1124 `notmuch_query_count_messages` is now non-destructive
1126 Internally the implementation of excludes has changed to make this
1129 Improved handling of DatabaseModifiedError
1131 Previously uncaught exceptions reading message metadata are now
1134 Notmuch 0.23.7 (2017-02-28)
1135 ===========================
1140 Drop use of gpgconf --create-socketdir. Move $GNUPGHOME to /tmp.
1142 It turns out the hardcoded use of /run/user in gpg doesn't work out
1143 that well in some environments. The more low tech fix is to move all
1144 of $GNUPGHOME to somewhere where we can control the length of the
1147 Notmuch 0.23.6 (2017-02-27)
1148 ===========================
1150 Command Line Interface
1151 ----------------------
1153 Fix read-after-free bug in `notmuch new`.
1158 Use gpgconf --create-socketdir if available.
1160 GnuPG has a facility to use sockets in /run or /var/run to avoid
1161 problems with long socket paths, but this is not enabled by default
1162 for GNUPGHOME other than $HOME/.gnupg. Enable it, if possible.
1164 Notmuch 0.23.5 (2017-01-09)
1165 ===========================
1170 Fix quoting bug in configure. This had introduced a RUNPATH into the
1171 notmuch binary in cases where it was not not needed.
1173 Notmuch 0.23.4 (2016-12-24)
1174 ===========================
1176 Command Line Interface
1177 ----------------------
1179 Improve error handling in notmuch insert
1181 Database lock errors no longer prevent message file delivery to the
1182 filesystem. Certain errors during `notmuch insert` most likely to
1183 be temporary return EX_TEMPFAIL.
1188 Restore autoload cookie for notmuch-search.
1190 Notmuch 0.23.3 (2016-11-27)
1191 ===========================
1193 Command Line Interface
1194 ----------------------
1196 Treat disappearing files during notmuch new as non-fatal.
1201 Fix incompatibility (related to signature size) with gnupg 2.1.16.
1203 Notmuch 0.23.2 (2016-11-20)
1204 ===========================
1209 Fix notmuch-interesting-buffer and notmuch-cycle-notmuch-buffers.
1211 notmuch-tree-mode and notmuch-message-mode buffers are now
1212 considered interesting by `notmuch-interesting-buffer` and
1213 `notmuch-cycle-notmuch-buffers`.
1215 Restore compatibility with Emacs 23.
1217 Notmuch support for Emacs 23 is now deprecated.
1219 Notmuch 0.23.1 (2016-10-23)
1220 ===========================
1225 Require Xapian >= 1.2.6
1227 The ifdef branch for older Xapian (pre-compact API) had bit-rotted.
1232 Fix default colours for unread and flagged messages
1234 In 0.23 the default colours for unread and flagged messages in
1235 search view were accidentally swapped. This release returns them to
1236 the original colours.
1238 A related change in 0.23 broke the customize widget for
1239 notmuch-search-line-faces. This is now fixed.
1241 Fix test failure with Emacs 25.1
1243 A previously undiscovered jit-lock related bug was exposed by Emacs
1244 25, causing a notmuch-show mode test to fail. This release fixes the
1245 bug, and hence the test.
1247 Notmuch 0.23 (2016-10-03)
1248 =========================
1250 General (Xapian 1.4+)
1251 ---------------------
1253 Compiling against Xapian 1.4 enables several new features.
1255 Support for single argument date: queries
1257 `date:<expr>` is equivalent to `date:<expr>..<expr>`.
1259 Support for blocking opens
1261 When opening a database notmuch by default will wait for another
1262 process to release a write lock, rather than returning an error.
1264 Support for named queries
1266 Named queries (also known as 'saved searches') can be defined with a
1267 `query:name` format. The expansion of these queries is stored in the
1268 database and they can be used from any notmuch client.
1273 Message property API
1275 libnotmuch now supports the attachment of arbitrary key-value pairs
1276 to messages. These can be used by various tools to manage their
1277 private data without polluting the user tag space. They also support
1278 iteration of values with the same key or same key prefix.
1280 Bug fix for `notmuch_directory_set_mtime`
1282 Update cached mtime to match on-disk mtime.
1287 Support for compile time options
1289 A group of `built_with` keys is now supported for notmuch
1290 config. Initial keys in this group are `compact`, `field_processor`,
1293 Dump/Restore support for configuration information and properties
1295 Any configuration information stored in the database (initially just
1296 named queries) is dumped and restored. Similarly any properties
1297 attached to messages are also dumped and restored. Any new
1298 information in the dump format is prefixed by '#' to allow existing
1299 scripts to ignore it.
1304 Make notmuch-message-mode use insert for fcc
1306 Notmuch-message-mode now defaults to using notmuch insert for
1307 fcc. The old file based fcc behaviour can be restored by setting the
1308 defcustom `notmuch-maildir-use-notmuch-insert` to nil.
1310 When using notmuch insert, `notmuch-fcc-dirs` must be a subdirectory
1311 of the mailstore (absolute paths are not permitted) followed by any
1312 tag changes to be applied to the inserted message. The tag changes
1313 are applied after the default tagging for new messages. For example
1314 setting the header to "sentmail -inbox +sent" would insert the
1315 message in the subdirectory sentmail of the mailstore, add the tag
1316 "sent", and not add the (normally added) "inbox" tag.
1318 Finally, if the insert fails (e.g. if the database is locked) the
1319 user is presented with the option to retry, ignore, or edit the
1322 Make internal address completion customizable
1324 There is a new defcustom `notmuch-address-internal-completion` which
1325 controls how the internal completion works: it allows the user to
1326 choose whether to match on messages the user sent, or the user
1327 received, and to filter the messages used for the match, for example
1330 Allow internal address completion on an individual basis
1332 There is a new function `notmuch-address-toggle-internal-completion`
1333 (by default it has no keybinding) which allows users who normally
1334 use an external completion command to use the builtin internal
1335 completion for the current buffer.
1337 Alternatively, if the user has company-mode enabled, then the user
1338 can use company mode commands such as `company-complete` to
1339 activate the builtin completion for an individual completion.
1343 The function `notmuch-show-resend-message` (bound to `b` in show
1344 and tree modes) will (attempt to) send current message to new
1345 recipients. The headers of the message won't be altered (e.g. `To:`
1346 may point to yourself). New `Resent-To:`, `Resent-From:` and so on
1347 will be added instead.
1349 Face customization is easier
1351 New faces `notmuch-tag-unread`, `notmuch-tag-flagged`,
1352 `notmuch-tag-deleted`, `notmuch-tag-added`,
1353 `notmuch-search-flagged-face` and `notmuch-search-unread-face` are
1354 now used by default. Customize `notmuch-faces` to modify them.
1356 Omit User-Agent header by default when sending mail
1361 Add support for `notmuch_database_get_all_tags`
1366 Go bindings moved to contrib
1368 Add support for `notmuch_threads_t` and `notmuch_thread_t`
1370 Fixed constant values so they are not all zero anymore
1372 Previously, it was impossible to open writable database handles,
1373 because `DATABASE_MODE_READ_ONLY` and `DATABASE_MODE_READ_WRITE` were
1375 The same issue occurred with sort modes.
1377 Notmuch 0.22.2 (2016-09-08)
1378 ===========================
1385 Have gdb write to a log file instead of stdout, hiding some more
1386 (harmless) stderr chatter which causes test failures.
1388 Hardcode fingerprint in PGP/MIME tests
1390 Make the tests more robust against changing GnuPG output formats.
1392 Notmuch 0.22.1 (2016-07-19)
1393 ===========================
1398 Correct the definition of `LIBNOTMUCH_CHECK_VERSION`.
1400 Document the (lack of) operations permitted on a closed database.
1405 Fix race condition in dump / restore tests.
1410 Use `env` to locate perl.
1415 Tell `message-mode` mode that outgoing messages are mail
1417 This makes message-mode configuration behave more predictably.
1419 Respect charset of MIME parts when reading them
1421 Fix previous assumption that everyone uses UTF-8.
1423 Notmuch 0.22 (2016-04-26)
1424 =========================
1431 Notmuch should now build (and the test suite should pass) on recent
1432 releases of Xapian 1.3.x. It has been tested with Xapian 1.3.5.
1434 Limited support for S/MIME messages
1436 Signature verification is supported, but not decryption. S/MIME
1437 signature creation and S/MIME encryption are supported via built-in
1438 support in Emacs. S/MIME support is not extensively tested at this
1443 Fix for threading bug involving deleting and re-adding
1444 messages. Fix for case-sensitive content disposition headers. Fix
1445 handling of 1 character directory names at top level.
1447 Command Line Interface
1448 ----------------------
1450 `notmuch show` now supports verifying S/MIME signatures
1452 This support relies on an appropriately configured `gpgsm`.
1457 Drop dependency on "pkg-config emacs".
1462 Notmuch replies now include all parts shown in the show view
1464 There are two main user visible changes. The first is that rfc822
1465 parts are now included in replies.
1467 The second change is that part headers are now included in the reply
1468 buffer to provide visible separation of the parts. The choice of
1469 which part headers to show is customizable via the variable
1470 `notmuch-mua-reply-insert-header-p-function`.
1472 Filtering or Limiting messages is now bound to `l` in the search view
1474 This binding now matches the analogous binding in show view.
1476 `F` forwards all open messages in a thread
1478 When viewing a thread of messages, the new binding `F` can be used
1479 to generate a new outgoing message which forwards all of the open
1480 messages in the thread. This is analogous to the `f` binding, which
1481 forwards only the current message.
1483 Preferred content type can be determined from the message content
1485 More flexibility in choosing which sub-part of a
1486 multipart/alternative part is initially shown is available by
1487 setting `notmuch-multipart/alternative-discouraged` to a function
1488 that returns a list of discouraged types. The function so specified
1489 is passed the message as an argument and can examine the message
1490 content to determine which content types should be discouraged. This
1491 is in addition to the current capabilities (i.e. setting
1492 `notmuch-multipart/alternative-discouraged` to a list of discouraged
1495 When viewing a thread ("show" mode), queries that match no messages no
1496 longer generate empty buffers
1498 Should an attempt be made to view the thread corresponding to a
1499 query that matches no messages, a warning message is now displayed
1500 and the terminal bell rung rather than displaying an empty buffer
1501 (or, in some cases, displaying an empty buffer and throwing an
1502 error). This also affects re-display of the current thread.
1504 Handle S/MIME signatures in emacs
1506 The emacs interface is now capable making and verifying S/MIME
1509 `notmuch-message-address-insinuate` is now a no-op
1511 This reduces the amount of interference with non-notmuch uses of
1514 Address completion improvements
1516 An external script is no longer needed for address completion; if
1517 you previously configured one, customize the variable
1518 `notmuch-address-command` to try the internal completion. If
1519 `company-mode` is available, notmuch uses it by default for
1520 interactive address completion.
1522 Test and experiment with the emacs MUA available in source tree
1524 `./devel/try-emacs-mua` runs emacs and fills the window with
1525 information how to try the MUA safely. Emacs is configured to use
1526 the notmuch (lisp) files located in `./emacs` directory.
1531 New `notmuch-report(1)` and `notmuch-report.json(5)` man pages
1532 describe `notmuch-report` and its JSON configuration file. You can
1533 build these files by running `make` in the `devel/nmbug/doc`
1539 Renamed from `nmbug-status`. This script generates reports based on
1540 notmuch queries, and doesn't really have anything to do with nmbug,
1541 except for sharing the `NMBGIT` environment variable. The new name
1542 focuses on the script's action, instead of its historical association
1543 with the nmbug workflow. This should make it more discoverable for
1544 users looking for generic notmuch reporting tools.
1546 The default configuration file name (extracted from the `config`
1547 branch of `NBMGIT` has changed from `status-config.json` to
1548 `notmuch-report.json` so it is more obviously associated with the
1549 report-generating script. The configuration file also has a new
1550 `meta.message-url` setting, which is documented in
1551 `notmuch-report.json(5)`.
1553 `notmuch-report` now wraps query phrases in parentheses when and-ing
1554 them together, to avoid confusion about clause grouping.
1556 Notmuch 0.21 (2015-10-29)
1557 =========================
1562 Notmuch now requires gmime >= 2.6.7. The gmime 2.4 series is no longer
1565 Database revision tracking: `lastmod:` queries
1567 Each message now has a metadata revision number that increases with
1568 every tagging operation. See the discussion of `lastmod:` in
1569 `notmuch-search-terms(7)` for more information.
1571 Date queries now support `date:<expr>..!` shorthand for
1572 `date:<expr>..<expr>`
1574 You can use, for example, `date:yesterday..!` to match from the
1575 beginning of yesterday to the end of yesterday. For further details,
1576 please refer to the `notmuch-search-terms` manual page.
1578 Notmuch database upgrade to support `lastmod:` queries
1580 The above mentioned `lastmod:` prefix. This will be done
1581 automatically, without prompting on the next time `notmuch new` is
1582 run after the upgrade. The upgrade is not reversible, and the
1583 upgraded database will not be readable by older versions of
1584 Notmuch. As a safeguard, a database dump will be created in the
1585 `.notmuch` directory before upgrading.
1590 The ruby bindings are now built as part of the main notmuch build
1591 process. This can be disabled with the `--without-ruby` option to
1594 Building the documentation can be disabled with the `--without-docs`
1595 option to configure.
1597 Skipped individual tests are no longer considered as failures.
1599 Command Line Interface
1600 ----------------------
1602 Database revision tracking
1604 Two new options were added to support revision tracking. A global
1605 option "--uuid" (`notmuch(1)`) was added for to detect counter
1606 rollover and reinitialization, and `notmuch-count(1)` gained a
1607 `--lastmod` option to query database revision tracking data.
1609 The `notmuch address` command supports new deduplication schemes
1611 `notmuch address` has gained a new `--deduplicate` option to specify
1612 how the results should be deduplicated, if at all. The alternatives
1613 are `no` (do not deduplicate, useful for processing the results with
1614 external tools), `mailbox` (deduplicate based on the full, case
1615 sensitive name and email address), and `address` (deduplicate based
1616 on the case insensitive address part). See the `notmuch-address`
1617 manual page for further information.
1622 `notmuch-emacs-version` is used in `User-Agent` header
1624 The value of recently introduced variable `notmuch-emacs-version` is
1625 now used as a part of `User-Agent` header when sending emails.
1627 Removed `notmuch-version` function by renaming it to `notmuch-cli-version`
1629 With existing variable `notmuch-emacs-version` the accompanied
1630 function which retrieves the version of `notmuch-command` is
1631 better named as `notmuch-cli-version`.
1633 Query input now supports completion for "is:<tag>"
1635 New message composition mode: `notmuch-compose-mode`
1637 This is mainly to fix fcc handling, but may be useful for user
1638 customization as well.
1640 Allow filtering of search results in `notmuch-show`
1642 Add function to rerun current tree-view search in search mode
1644 Bug fix for replying to encrypted messages in `notmuch-tree` mode
1646 Allow saved searched to specify tree view rather than search view
1648 Applies to saved searches run from `notmuch-hello`, or by a keyboard
1649 shortcut (`notmuch-jump`). Can be set in the customize interface, or
1650 by adding :search-type tree to the appropriate saved search plist in
1651 `notmuch-saved-searches`.
1653 Increase maximum size of rendered text parts
1655 The variable `notmuch-show-max-text-part-size` controls the maximum
1656 size (in bytes) which is automatically rendered. This may make
1657 rendering large threads slower. To get the previous behaviour set
1658 this variable to 10000.
1663 The use of absolute paths is now enforced when calling
1664 `notmuch_database_{open, create}`
1666 New function `notmuch_directory_delete` to delete directory documents
1668 Previously there was no way to delete directory documents from the
1669 database, leading to confusing results when the "ghost" directory
1670 document of a renamed or deleted filesystem directory was
1671 encountered every time the parent directory was being scanned by
1672 `notmuch new`. The mtime of the old directory document was also used
1673 if a directory by the same name was added again in the filesystem,
1674 potentially bypassing the scan for the directory. The issues are
1675 fixed by providing a library call to delete directory documents, and
1676 deleting the old documents in `notmuch new` on filesystem directory
1679 Database revision tracking
1681 Revision tracking is supported via a new prefix "lastmod:" in the
1682 query parser and the new function
1683 `notmuch_database_get_revision`. For the latter, see `notmuch(3)`.
1685 New status code returning API for n_query_count_{messages,threads}
1687 Deprecated functions
1689 `notmuch_query_search_threads`, `notmuch_query_search_messages`,
1690 `notmuch_query_count_messages`, and `notmuch_query_count_threads`
1691 are all deprecated as of this release. Clients are encouraged to
1692 transition to the `_st` variants supporting better error reporting.
1697 `nmbug-status` now supports specifying the sort order for each view.
1699 Notmuch 0.20.2 (2015-06-27)
1700 ===========================
1705 Bug fix for marking messages read in `notmuch-tree` mode.
1707 Notmuch 0.20.1 (2015-06-01)
1708 ===========================
1713 Work around apparent gdb bug on arm64.
1715 Notmuch 0.20 (2015-05-31)
1716 =========================
1718 Command-Line Interface
1719 ----------------------
1721 There is a new `mimetype:` search prefix
1723 The new `mimetype:` search prefix allows searching for the
1724 content-type of attachments, which is now indexed. See the
1725 `notmuch-search-terms` manual page for details.
1727 Path to gpg is now configurable
1729 On systems with multiple versions of gpg, you can tell
1730 notmuch which one to use by setting `crypto.gpg_path`
1735 Avoid rendering large text attachments.
1737 Improved rendering of CID references in HTML.
1742 Vim client now respects excluded tags.
1747 Support messages without Message-IDs.
1752 Undeprecate single message mboxes
1754 It seems more trouble to remove this feature than expected, so
1755 `notmuch new` will no longer nag about mboxes with a single message.
1757 New error logging facility
1759 Clients should call `notmuch_database_status_string` to retrieve
1760 output formerly printed to stderr.
1762 Several bug fixes related to stale iterators
1764 New status code returning API for n_query_search_{messages,thread}
1766 Fix for library `install_name` on Mac OS X
1768 Fix for rounding of seconds
1773 Sphinx is now mandatory to build docs
1775 Support for using rst2man in place of sphinx to build the
1776 documentation has been removed.
1778 Improved notmuch-search-terms.7
1780 The man page `notmuch-search-terms(7)` has been extended, merging
1781 some material from the relicensed wiki.
1786 `notmuch-deliver` is removed. As far as we know, all functionality
1787 previously provided by `notmuch-deliver` should now be provided by
1788 `notmuch insert`, provided by the main notmuch binary.
1793 `nmbug-status` now only matches local branches when reading
1794 `status-config.json` from the `config` branch of the `NMBGIT`
1795 repository. To help new users running `nmbug-status`, `nmbug clone`
1796 now creates a local `config` branch tracking `origin/config`. Folks
1797 who use `nmbug-status` with an in-Git config (i.e. you don't use the
1798 `--config` option) who already have `NMBGIT` set up are encouraged to
1801 git checkout config origin/config
1803 in their `NMBGIT` repository (usually `~/.nmbug`).
1805 Notmuch 0.19 (2014-11-14)
1806 =========================
1811 This release improves the reliability of `notmuch dump` and the error
1812 handling for `notmuch insert`. The new `notmuch address` command is
1813 intended to make searching for email addresses more convenient. At the
1814 library level the revised handling of missing messages fixes at least
1815 one bug in threading. The release also includes several interface
1816 improvements to the emacs interface, most notably the ability to bind
1817 keyboard shortcuts to saved searches.
1819 Command-Line Interface
1820 ----------------------
1822 Stopped `notmuch dump` failing if someone writes to the database
1824 The dump command now takes the write lock when running. This
1825 prevents other processes from writing to the database during the
1826 dump which would cause the dump to fail. Note, if another notmuch
1827 process already has the write lock the dump will not start, so
1828 script callers should still check the return value.
1830 `notmuch insert` requires successful message indexing for success status
1832 Previously the `notmuch insert` subcommand indicated success even if
1833 the message indexing failed, as long as the message was delivered to
1834 file system. This could have lead to delivered messages missing
1835 tags, etc. `notmuch insert` is now more strict, also requiring
1836 successful indexing for success status. Use the new `--keep` option
1837 to revert to the old behaviour (keeping the delivered message file
1838 and returning success even if indexing fails).
1840 `notmuch insert` has gained support for `post-insert` hook
1842 The new `post-insert` hook is run after message delivery, similar to
1843 `post-new`. There's also a new option `notmuch insert --no-hooks` to
1844 skip the hook. See the notmuch-hooks(1) man page for details.
1846 `notmuch deliver` is deprecated
1848 With this release we believe that `notmuch insert` has reached
1849 parity with `notmuch deliver`. We recommend that all users of
1850 `notmuch deliver` switch to `notmuch insert` as the former is
1851 currently unmaintained.
1853 `notmuch search` now supports `--duplicate=N` option with `--output=messages`
1855 Complementing the `notmuch search --duplicate=N --output=files`
1856 options, the new `--duplicate=N --output=messages` combination
1857 limits output of message IDs to messages matching search terms that
1858 have at least `N` files associated with them.
1860 Added `notmuch address` subcommand
1862 This new subcommand searches for messages matching the given search
1863 terms, and prints the addresses from them. Duplicate addresses are
1864 filtered out. The `--output` option controls which of the following
1865 information is printed: sender addresses, recipient addresses and
1866 count of duplicate addresses.
1871 Use the `j` key to access saved searches from anywhere in notmuch
1873 `j` is now globally bound to `notmuch-jump`, which provides fast,
1874 interactive keyboard shortcuts to saved searches. For example,
1875 with the default saved searches `j i` from anywhere in notmuch will
1878 Improved handling of the unread tag
1880 Notmuch now marks an open message read (i.e., removes the unread
1881 tag) if point enters the message at any time in a show buffer
1882 regardless of how point got there (mouse click, cursor command, page
1883 up/down, notmuch commands such as n,N etc). This fixes various
1884 anomalies or bugs in the previous handling. Additionally it is
1885 possible to customize the mark read handling by setting
1886 `notmuch-show-mark-read-function` to a custom function.
1888 Expanded default saved search settings
1890 The default saved searches now include several more common searches,
1891 as well as shortcut keys for `notmuch-jump`.
1893 Improved `q` binding in notmuch buffers
1895 `q` will now bury rather than kill a notmuch search, show or tree
1896 buffer if there are multiple windows showing the buffer. If only a
1897 single window is showing the buffer, it is killed.
1899 `notmuch-show-stash-mlarchive-link-alist` now supports functions
1901 Some list archives may use a more complicated scheme for referring
1902 to messages than just concatenated URL and message ID. For example,
1903 patchwork requires a query to translate message ID to a patchwork
1904 patch ID. `notmuch-show-stash-mlarchive-link-alist` now supports
1905 functions to better cover such cases. See the help documentation for
1906 the variable for details.
1911 Introduced database version 3 with support for "database features."
1913 Features are independent aspects of the database schema.
1914 Representing these independently of the database version number will
1915 let us evolve the database format faster and more incrementally,
1916 while maintaining better forwards and backwards compatibility.
1918 Library users are no longer required to call `notmuch_database_upgrade`
1920 Previously, library users were required to call
1921 `notmuch_database_needs_upgrade` and `notmuch_database_upgrade`
1922 before using a writable database. Even the CLI didn't get this
1923 right, and it is no longer required. Now, individual APIs may
1924 return `NOTMUCH_STATUS_UPGRADE_REQUIRED` if the database format is
1925 too out of date for that API.
1927 Library users can now abort an atomic section by closing the database
1929 Previously there was no supported way to abort an atomic section.
1930 Callers can now simply close the database, and any outstanding
1931 atomic section will be aborted.
1933 Add return status to `notmuch_database_close` and
1934 `notmuch_database_destroy`
1936 Bug fixes and performance improvements for thread linking
1938 The database now represents missing-but-referenced messages ("ghost
1939 messages") similarly to how it represents regular messages. This
1940 enables an improved thread linking algorithm that performs better
1941 and fixes a bug that sometimes prevented notmuch from linking
1942 messages into the same thread.
1947 The Perl script has been translated to Python; you'll need Python 2.7
1948 or anything from the 3.x line. Most of the user-facing interface is
1949 the same, but `nmbug help` is now `nmbug --help`, and the following nmbug
1950 commands have slightly different interfaces: `archive`, `commit`,
1951 `fetch`, `log`, `pull`, `push`, and `status`. For details on the
1952 new interface for a given command, run `nmbug COMMAND --help`.
1957 `nmbug-status` can now optionally load header and footer templates
1958 from the config file. Use something like:
1962 "header": "<!DOCTYPE html>\n<html lang="en">\n...",
1963 "footer": "</body></html>",
1972 Add support for `notmuch_query_add_tag_exclude`
1977 The notmuch binaries and libraries are now build with debugging symbols
1978 by default. Users concerned with disk space should change the
1979 defaults when configuring or use the strip(1) command.
1981 Notmuch 0.18.2 (2014-10-25)
1982 ===========================
1987 Translate T380-atomicity to use gdb/python
1989 The new version is compatible with gdb 7.8
1991 Emacs 24.4 related bug fixes
1993 The Messages buffer became read-only, and the generated mime
1994 structure for signatures changed slightly.
1996 Simplify T360-symbol-hiding
1998 Replace the use of `objdump` on the object files with `nm` on the
2001 Notmuch 0.18.1 (2014-06-25)
2002 ===========================
2004 This is a bug fix and portability release.
2009 Add a workaround for systems without zlib.pc
2011 Make emacs install robust against the non-existence of emacs
2013 Put notmuch lib directory first in RPATH
2015 Fix handling of `html_static_path` in sphinx
2017 Both the python bindings and the main docs had spurious settings of
2023 Use --quick when starting emacs
2025 This avoids a hang in the T160-json tests.
2027 Allow pending break points in atomicity script
2029 This allows the atomicity tests to run on several more architectures/OSes.
2031 Command-Line Interface
2032 ----------------------
2034 To improve portability use fsync instead of fdatasync in
2035 `notmuch-dump`. There should be no functional difference.
2040 Resurrect support for single-message mbox files
2042 The removal introduced a bug with previously indexed single-message
2043 mboxes. This support remains deprecated.
2045 Fix for phrase indexing
2047 There were several bugs where words intermingled from different
2048 headers and MIME parts could match a single phrase query. This fix
2049 will affect only newly indexed messages.
2054 Make sure tagging on an empty query is harmless
2056 Previously tagging an empty query could lead to tags being
2057 unintentionally removed.
2059 Notmuch 0.18 (2014-05-06)
2060 =========================
2065 This new release includes some enhancements to searching for messages
2066 by filesystem location (`folder:` and `path:` prefixes under *General*
2067 below). Saved searches in *Emacs* have also been enhanced to allow
2068 distinct search orders for each one. Another enhancement to the
2069 *Emacs* interface is that replies to encrypted messages are now
2070 encrypted, reducing the risk of unintentional information disclosure.
2071 The default dump output format has changed to the more robust
2072 `batch-tag` format. The previously deprecated parsing of single
2073 message mboxes has been removed. For detailed release notes, see
2079 The `folder:` search prefix now requires an exact match
2081 The `folder:` prefix has been changed to search for email messages
2082 by the exact, case sensitive maildir or MH folder name. Wildcard
2083 matching (`folder:foo*`) is no longer supported. The new behaviour
2084 allows for more accurate mail folder based searches, makes it
2085 possible to search for messages in the top-level folder, and should
2086 lead to less surprising results than the old behaviour. Users are
2087 advised to see the `notmuch-search-terms` manual page for details,
2088 and review how the change affects their existing `folder:` searches.
2090 There is a new `path:` search prefix
2092 The new `path:` search prefix complements the `folder:` prefix. The
2093 `path:` prefix searches for email messages that are in particular
2094 directories within the mail store, optionally recursively using a
2095 special syntax. See the `notmuch-search-terms` manual page for
2098 Notmuch database upgrade due to `folder:` and `path:` changes
2100 The above mentioned changes to the `folder:` prefix and the addition
2101 of `path:` prefix require a Notmuch database upgrade. This will be
2102 done automatically, without prompting on the next time `notmuch new`
2103 is run after the upgrade. The upgrade is not reversible, and the
2104 upgraded database will not be readable by older versions of
2105 Notmuch. As a safeguard, a database dump will be created in the
2106 `.notmuch` directory before upgrading.
2111 Notmuch database upgrade
2113 The libnotmuch consumers are reminded to handle database upgrades
2114 properly, either by relying on running `notmuch new`, or checking
2115 `notmuch_database_needs_upgrade()` and calling
2116 `notmuch_database_upgrade()` as necessary. This has always been the
2117 case, but in practise there have been no database upgrades in any
2118 released version of Notmuch before now.
2120 Support for indexing mbox files has been dropped
2122 There has never been proper support for mbox files containing
2123 multiple messages, and the support for single-message mbox files has
2124 been deprecated since Notmuch 0.15. The support has now been
2125 dropped, and all mbox files will be rejected during indexing.
2127 Message header parsing changes
2129 Notmuch previously had an internal parser for message headers. The
2130 parser has now been dropped in favour of letting GMime parse both
2131 the headers and the message MIME structure at the same pass. This is
2132 mostly an internal change, but the GMime parser is stricter in its
2133 interpretation of the headers. This may result in messages with
2134 slightly malformed message headers being now rejected.
2136 Command-Line Interface
2137 ----------------------
2139 `notmuch dump` now defaults to `batch-tag` format
2141 The old format is still available with `--format=sup`.
2143 `notmuch new` has a --quiet option
2145 This option suppresses the progress and summary reports.
2147 `notmuch insert` respects maildir.synchronize_flags config option
2149 Do not synchronize tags to maildir flags in `notmuch insert` if the
2150 user does not want it.
2152 The commands set consistent exit status codes on failures
2154 The cli commands now consistently set exit status of 1 on failures,
2155 except where explicitly otherwise noted. The notable exceptions are
2156 the status codes for format version mismatches for commands that
2157 support formatted output.
2159 Bug fix for checking configured new.tags for invalid tags
2161 `notmuch new` and `notmuch insert` now check the user configured
2162 new.tags for invalid tags, and refuse to apply them, similar to
2163 `notmuch tag`. Invalid tags are currently the empty string and tags
2171 If the file pointed by new variable `notmuch-init-file` (typically
2172 `~/.emacs.d/notmuch-config.el`) exists, it is loaded at the end of
2173 `notmuch.el`. Users can put their personal notmuch emacs lisp based
2174 configuration/customization items there instead of filling
2175 `~/.emacs` with these.
2177 Changed format for saved searches
2179 The format for `notmuch-saved-searches` has changed, but old style
2180 saved searches are still supported. The new style means that a saved
2181 search can store the desired sort order for the search, and it can
2182 store a separate query to use for generating the count notmuch
2185 The variable is fully customizable and any configuration done
2186 through customize should *just work*, with the additional options
2187 mentioned above. For manual customization see the documentation for
2188 `notmuch-saved-searches`.
2190 IMPORTANT: a new style notmuch-saved-searches variable will break
2191 previous versions of notmuch-emacs (even search will not work); to
2192 fix remove the customization for notmuch-saved-searches.
2194 If you have a custom saved search sort function (not unsorted or
2195 alphabetical) then the sort function will need to be
2196 modified. Replacing (car saved-search) by (notmuch-saved-search-get
2197 saved-search :name) and (cdr saved-search) by
2198 (notmuch-saved-search-get saved-search :query) should be sufficient.
2200 The keys of `notmuch-tag-formats` are now regexps
2202 Previously, the keys were literal strings. Customized settings of
2203 `notmuch-tag-formats` will continue to work as before unless tags
2204 contain regexp special characters like `.` or `*`.
2206 Changed tags are now shown in the buffer
2208 Previously tag changes made in a buffer were shown immediately. In
2209 some cases (particularly automatic tag changes like marking read)
2210 this made it hard to see what had happened (e.g., whether the
2211 message had been unread).
2213 The changes are now shown explicitly in the buffer: by default
2214 deleted tags are displayed with red strike-through and added tags
2215 are displayed underlined in green (inverse video is used for deleted
2216 tags if the terminal does not support strike-through).
2218 The variables `notmuch-tag-deleted-formats` and
2219 `notmuch-tag-added-formats`, which have the same syntax as
2220 `notmuch-tag-formats`, allow this to be customized.
2222 Setting `notmuch-tag-deleted-formats` to `'((".*" nil))` and
2223 `notmuch-tag-added-formats` to `'((".*" tag))` will give the old
2224 behavior of hiding deleted tags and showing added tags identically
2225 to tags already present.
2229 The new, build-time generated variable `notmuch-emacs-version` is used
2230 to distinguish between notmuch cli and notmuch emacs versions.
2231 The function `notmuch-hello-versions` (bound to 'v' in notmuch-hello
2232 window) prints both notmuch cli and notmuch emacs versions in case
2233 these differ from each other.
2234 This is especially useful when using notmuch remotely.
2236 Ido-completing-read initialization in Emacs 23
2238 `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless
2239 it is initialized. Defadvice-based *Ido* initialization is defined
2240 for these Emacs versions.
2242 Bug fix for saved searches with newlines in them
2244 Split lines confuse `notmuch count --batch`, so we remove embedded
2245 newlines before calling notmuch count.
2247 Bug fixes for sender identities
2249 Previously, Emacs would rewrite some sender identities in unexpected
2250 and undesirable ways. Now it will use identities exactly as
2251 configured in `notmuch-identities`.
2253 Replies to encrypted messages will be encrypted by default
2255 In the interest of maintaining confidentiality of communications,
2256 the Notmuch Emacs interface now automatically adds the mml tag to
2257 encrypt replies to encrypted messages. This should make it less
2258 likely to accidentally reply to encrypted messages in plain text.
2260 Reply pushes mark before signature
2262 We push mark and set point on reply so that the user can easily cut
2263 the quoted text. The mark is now pushed before the signature, if
2264 any, instead of end of buffer so the signature is preserved.
2266 Message piping uses the originating buffer's working directory
2268 `notmuch-show-pipe-message` now uses the originating buffer's
2269 current default directory instead of that of the `*notmuch-pipe*`
2275 nmbug adds a `clone` command for setting up the initial repository and
2276 uses `@{upstream}` instead of `FETCH_HEAD` to track upstream changes.
2278 The `@{upstream}` change reduces ambiguity when fetching multiple
2279 branches, but requires existing users update their `NMBGIT`
2280 repository (usually `~/.nmbug`) to distinguish between local and
2281 remote-tracking branches. The easiest way to do this is:
2283 1. If you have any purely local commits (i.e. they aren't in the
2284 nmbug repository on nmbug.tethera.net), push them to a remote
2285 repository. We'll restore them from the backup in step 4.
2286 2. Remove your `NMBGIT` repository (e.g. `mv .nmbug .nmbug.bak`).
2287 3. Use the new `clone` command to create a fresh clone:
2289 nmbug clone https://nmbug.notmuchmail.org/git/nmbug-tags.git
2291 4. If you had local commits in step 1, add a remote for that
2292 repository and fetch them into the new repository.
2294 Notmuch 0.17 (2013-12-30)
2295 =========================
2297 Incompatible change in SHA1 computation
2298 ---------------------------------------
2300 Previously on big endian architectures like sparc and powerpc the
2301 computation of SHA1 hashes was incorrect. This meant that messages
2302 with overlong or missing message-ids were given different computed
2303 message-ids than on more common little endian architectures like i386
2304 and amd64. If you use notmuch on a big endian architecture, you are
2305 strongly advised to make a backup of your tags using `notmuch dump`
2306 before this upgrade. You can locate the affected files using something
2310 awk '/^notmuch-sha1-[0-9a-f]{40} / \
2311 {system("notmuch search --exclude=false --output=files id:" $1)}'
2313 Command-Line Interface
2314 ----------------------
2316 New options to better support handling duplicate messages
2318 If more than one message file is associated with a message-id,
2319 `notmuch search --output=files` will print all of them. A new
2320 `--duplicate=N` option can be used to specify which duplicate to
2321 print for each message.
2323 `notmuch count` now supports `--output=files` option to output the
2324 number of files associated with matching messages. This may be
2325 bigger than the number of matching messages due to duplicates
2326 (i.e. multiple files having the same message-id).
2328 Improved `notmuch new` performance for unchanged folders
2330 `notmuch new` now skips over unchanged folders more efficiently,
2331 which can substantially improve the performance of checking for new
2332 mail in some situations (like NFS-mounted Maildirs).
2334 `notmuch reply --format=text` RFC 2047-encodes headers
2336 Previously, this used a mix of standard MIME encoding for the reply
2337 body and UTF-8 for the headers. Now, the text format reply template
2338 RFC 2047-encodes the headers, making the output a valid RFC 2822
2339 message. The JSON/sexp format is unchanged.
2341 `notmuch compact` command
2343 The new `compact` command exposes Xapian's compaction
2344 functionality through a more convenient interface than
2345 `xapian-compact`. `notmuch compact` will compact the database to a
2346 temporary location, optionally backup the original database, and
2347 move the compacted database into place.
2352 `notmuch-tree` (formerly `notmuch-pick`) has been added to mainline
2354 `notmuch-tree` is a threaded message view for the emacs
2355 interface. Each message is one line in the results and the thread
2356 structure is shown using UTF-8 box drawing characters (similar to
2357 Mutt's threaded view). It comes between search and show in terms of
2358 amount of output and can be useful for viewing both single threads
2359 and multiple threads.
2361 Using `notmuch-tree`
2363 The main key entries to notmuch tree are
2365 'z' enter a query to view using notmuch tree (works in hello,
2366 search, show and tree mode itself)
2368 'Z' view the current query in tree notmuch tree (works from search
2371 Once in tree mode, keybindings are mostly in line with the rest of
2372 notmuch and are all viewable with '?' as usual.
2374 Customising `notmuch-tree`
2376 `notmuch-tree` has several customisation variables. The most
2377 significant is the first notmuch-tree-show-out which determines the
2378 behaviour when selecting a message (with RET) in tree view. By
2379 default tree view uses a split window showing the single message in
2380 the bottom pane. However, if this option is set then it views the
2381 whole thread in the complete window jumping to the selected message
2382 in the thread. In either case command-prefix selects the other option.
2384 Tagging threads in search is now race-free
2386 Previously, adding or removing a tag from a thread in a search
2387 buffer would affect messages that had arrived after the search was
2388 performed, resulting in, for example, archiving messages that were
2389 never seen. Tagging now affects only the messages that were in the
2390 thread when the search was performed.
2392 `notmuch-hello` refreshes when switching to the buffer
2394 The hello buffer now refreshes whenever you switch to the buffer,
2395 regardless of how you get there. You can disable automatic
2396 refreshing by customizing `notmuch-hello-auto-refresh`.
2398 Specific mini-buffer prompts for tagging operations
2400 When entering tags to add or remove, the mini-buffer prompt now
2401 indicates what operation will be performed (e.g., "Tag thread", "Tag
2404 Built-in help improvements
2406 Documentation for many commands has been improved, as displayed by
2407 `notmuch-help` (usually bound to "?"). The bindings listed by
2408 `notmuch-help` also now include descriptions of prefixed commands.
2410 Quote replies as they are displayed in show view
2412 We now render the parts for reply quoting the same way they are
2413 rendered for show. At this time, the notable change is that replies
2414 to text/calendar are now pretty instead of raw vcalendar.
2416 Fixed inconsistent use of configured search order
2418 All ways of interactively invoking search now honor the value of
2419 `notmuch-search-oldest-first`.
2421 Common keymap for notmuch-wide bindings
2423 Several key bindings have been moved from mode-specific keymaps to
2424 the single `notmuch-common-keymap`, which is inherited by each
2425 notmuch mode. If you've customized your key bindings, you may want
2426 to move some of them to the common keymap.
2428 The `notmuch-tag` function now requires a list of tag changes
2430 For users who have scripted the Emacs interface: the `notmuch-tag`
2431 API has changed. Previously, it accepted either a list of tag
2432 changes or a space-separated string of tag changes. The latter is
2433 no longer supported and the function now returns nothing.
2435 Fixed `notmuch-reply` putting reply in primary selection
2437 On emacs 24 notmuch-reply used to put the cited text into the
2438 primary selection (which could lead to inadvertently pasting this
2439 cited text elsewhere). Now the primary-selection is not changed.
2441 Fixed `notmuch-show` invisible part handling
2443 In some obscure cases part buttons and invisibility had strange
2444 interactions: in particular, the default action for some parts gave
2445 the wrong action. This has been fixed.
2447 Fixed `notmuch-show` attachment viewers and stderr
2449 In emacs 24.3+ viewing an attachment could cause spurious text to
2450 appear in the show buffer (any stderr or stdout the viewer
2451 produced). By default this output is now discarded. For debugging,
2452 setting `notmuch-show-attachment-debug` causes notmuch to keep the
2453 viewer's stderr and stdout in a separate buffer.
2455 Fixed `notmuch-mua-reply` point placement when signature involved
2457 By restricting cursor movement to body section for cursor placement
2458 after signature is inserted, the cursor cannot "leak" to header
2459 section anymore. Now inserted citation content will definitely go to
2460 the body part of the message.
2465 It is now possible to compose new messages in the Vim interface, as
2466 opposed reply to existing messages. There is also support for
2467 going straight to a search (bypassing the folders view).
2469 Notmuch 0.16 (2013-08-03)
2470 =========================
2472 Command-Line Interface
2473 ----------------------
2475 Support for delivering messages to Maildir
2477 There is a new command `insert` that adds a message to a Maildir
2478 folder and notmuch index.
2480 `notmuch count --batch` option
2482 `notmuch count` now supports batch operations similar to `notmuch
2483 tag`. This is mostly an optimization for remote notmuch usage.
2485 `notmuch tag` option to remove all tags from matching messages
2487 `notmuch tag --remove-all` option has been added to remove all tags
2488 from matching messages. This can be combined with adding new tags,
2489 resulting in setting (rather than modifying) the tags of the
2492 Decrypting commands explicitly expect a gpg-agent
2494 Decryption in `notmuch show` and `notmuch reply` has only ever
2495 worked with a functioning gpg-agent. This is now made explicit in
2496 code and documentation. The functional change is that it's now
2497 possible to have gpg-agent running, but gpg "use-agent"
2498 configuration option disabled, not forcing the user to use the agent
2501 Configuration file saves follow symbolic links
2503 The notmuch commands that save the configuration file now follow
2504 symbolic links instead of overwrite them.
2506 Top level option to specify configuration file
2508 It's now possible to specify the configuration file to use on the
2509 command line using the `notmuch --config=FILE` option.
2511 Bash command-line completion
2513 The notmuch command-line completion support for the bash shell has
2514 been rewritten. Supported completions include all the notmuch
2515 commands, command-line arguments, values for keyword arguments,
2516 search prefixes (such as "subject:" or "from:") in all commands that
2517 use search terms, tags after + and - in `notmuch tag`, tags after
2518 "tag:" prefix, user's email addresses after "from:" and "to:"
2519 prefixes, and config options (and some config option values) in
2520 `notmuch config`. The new completion support depends on the
2521 bash-completion package.
2523 Deprecated commands "part" and "search-tags" are removed.
2528 New keymap to view/save parts; removed s/v/o/| part button bindings
2530 The commands to view, save, and open MIME parts are now prefixed
2531 with "." (". s" to save, ". v" to view, etc) and can be invoked with
2532 point anywhere in a part, unlike the old commands, which were
2533 restricted to part buttons. The old "s"/"v"/"o"/"|" commands on
2534 part buttons have been removed since they clashed with other
2535 bindings (notably "s" for search!) and could not be invoked when
2536 there was no part button. The new, prefixed bindings appear in
2537 show's help, so you no longer have to memorize them.
2539 Default part save directory is now `mm-default-directory`
2541 Previously, notmuch offered to save parts and attachments to a mix
2542 of `mm-default-directory`, `mailcap-download-directory`, and `~/`.
2543 This has been standardized on `mm-default-directory`.
2545 Key bindings for next/previous thread
2547 Show view has new key bindings M-n and M-p to move to the next and
2548 previous thread in the search results.
2550 Better handling of errors in search buffers
2552 Instead of interleaving errors in search result buffers, search mode
2553 now reports errors in the minibuffer.
2555 Faster search and show
2557 Communication between Emacs and the notmuch CLI is now more
2558 efficient because it uses the CLI's S-expression support. As a
2559 result, search mode should now fill search buffers faster and
2560 threads should show faster.
2564 The Emacs 22 support added late 2010 was sufficient only for a short
2565 period of time. After being incomplete for roughly 2 years the code
2566 in question was now removed from this release.
2571 The vim based front-end has been replaced with a new one that uses the Ruby
2572 bindings. The old font-end is available in the contrib subfolder.
2577 Fix loading of libnotmuch shared library on OS X (Darwin) systems.
2579 Notmuch 0.15.2 (2013-02-17)
2580 ===========================
2585 Update dependencies to avoid problems when building in parallel.
2587 Internal test framework changes
2588 -------------------------------
2590 Adjust Emacs test watchdog mechanism to cope with `process-attributes`
2591 being unimplemented.
2593 Notmuch 0.15.1 (2013-01-24)
2594 ===========================
2596 Internal test framework changes
2597 -------------------------------
2599 Set a default value for TERM when running tests. This fixes certain
2600 build failures in non-interactive environments.
2602 Notmuch 0.15 (2013-01-18)
2603 =========================
2608 Date range search support
2610 The `date:` prefix can now be used in queries to restrict the results
2611 to only messages within a particular time range (based on the Date:
2612 header) with a range syntax of `date:<since>..<until>`. Notmuch
2613 supports a wide variety of expressions in `<since>` and
2614 `<until>`. Please refer to the `notmuch-search-terms(7)` manual page
2617 Empty tag names and tags beginning with "-" are deprecated
2619 Such tags have been a frequent source of confusion and cause
2620 (sometimes unresolvable) conflicts with other syntax. notmuch tag
2621 no longer allows such tags to be added to messages. Removing such
2622 tags continues to be supported to allow cleanup of existing tags,
2623 but may be removed in a future release.
2625 Command-Line Interface
2626 ----------------------
2628 `notmuch new` no longer chokes on mboxes
2630 `notmuch new` now rejects mbox files containing more than one
2631 message, rather than treating the file as one giant message.
2633 Support for single message mboxes is deprecated
2635 For historical reasons, `notmuch new` will index mbox files
2636 containing a single message; however, this behavior is now
2637 officially deprecated.
2639 Fixed `notmuch new` to skip ignored broken symlinks
2641 `notmuch new` now correctly skips symlinks if they are in the
2642 ignored files list. Previously, it would abort when encountering
2643 broken symlink, even if it was ignored.
2645 New dump/restore format and tagging interface
2647 There is a new `batch-tag` format for dump and restore that is more
2648 robust, particularly with respect to tags and message-ids containing
2651 `notmuch tag` now supports the ability to read tag operations and
2652 queries from an input stream, in a format compatible with the new
2653 dump/restore format.
2655 Bcc and Reply-To headers are now available in notmuch show json output
2657 The `notmuch show --format=json` now includes "Bcc" and "Reply-To" headers.
2658 For example notmuch Emacs client can now have these headers visible
2659 when the headers are added to the `notmuch-message-headers` variable.
2661 CLI callers can now request a specific output format version
2663 `notmuch` subcommands that support structured output now support a
2664 `--format-version` argument for requesting a specific version of the
2665 structured output, enabling better compatibility and error handling.
2667 `notmuch search` has gained a null character separated text output format
2669 The new --format=text0 output format for `notmuch search` prints
2670 output separated by null characters rather than newline
2671 characters. This is similar to the find(1) -print0 option, and works
2672 together with the xargs(1) -0 option.
2677 Removal of the deprecated `notmuch-folders` variable
2679 `notmuch-folders` has been deprecated since the introduction of saved
2680 searches and the notmuch hello view in notmuch 0.3. `notmuch-folders`
2681 has now been removed. Any remaining users should migrate to
2682 `notmuch-saved-searches`.
2684 Visibility of MIME parts can be toggled
2686 Each part of a multi-part MIME email can now be shown or hidden
2687 using the button at the top of each part (by pressing RET on it or
2688 by clicking). For emails with multiple alternative formats (e.g.,
2689 plain text and HTML), only the preferred format is shown initially,
2690 but other formats can be shown using their part buttons. To control
2691 the behavior of this, see
2692 `notmuch-multipart/alternative-discouraged` and
2693 `notmuch-show-all-multipart/alternative-parts`.
2695 Note notmuch-show-print-message (bound to '#' by default) will print
2696 all parts of multipart/alternative message regardless of whether
2697 they are currently hidden or shown in the buffer.
2699 Emacs now buttonizes mid: links
2701 mid: links are a standardized way to link to messages by message ID
2702 (see RFC 2392). Emacs now hyperlinks mid: links to the appropriate
2705 Handle errors from bodypart insertions
2707 If displaying the text of a message in show mode causes an error (in
2708 the `notmuch-show-insert-part-*` functions), notmuch no longer cuts
2709 off thread display at the offending message. The error is now
2710 simply displayed in place of the message.
2712 Emacs now detects version mismatches with the notmuch CLI
2714 Emacs now detects and reports when the Emacs interface version and
2715 the notmuch CLI version are incompatible.
2717 Improved text/calendar content handling
2719 Carriage returns in embedded text/calendar content caused insertion
2720 of the calendar content fail. Now CRs are removed before calling icalendar
2721 to extract icalendar data. In case icalendar extraction fails an error
2722 is thrown for the bodypart insertion function to deal with.
2724 Disabled coding conversions when reading in `with-current-notmuch-show-message`
2726 Depending on the user's locale, saving attachments containing 8-bit
2727 data may have performed an unintentional encoding conversion,
2728 corrupting the saved attachment. This has been fixed by making
2729 `with-current-notmuch-show-message` disable coding conversion.
2731 Fixed errors with HTML email containing images in Emacs 24
2733 Emacs 24 ships with a new HTML renderer that produces better output,
2734 but is slightly buggy. We work around a bug that caused it to fail
2735 for HTML email containing images.
2737 Fixed handling of tags with unusual characters in them
2739 Emacs now handles tags containing spaces, quotes, and parenthesis.
2741 Fixed buttonization of id: links without quote characters
2743 Emacs now correctly buttonizes id: links where the message ID is not
2746 `notmuch-hello` refresh point placement improvements
2748 Refreshing the `notmuch-hello` buffer does a better job of keeping
2749 the point where it was.
2751 Automatic tag changes are now unified and customizable
2753 All the automatic tag changes that the Emacs interface makes when
2754 reading, archiving, or replying to messages, can now be
2755 customized. Any number of tag additions and removals is supported
2756 through the `notmuch-show-mark-read`, `notmuch-archive-tags`, and
2757 `notmuch-message-replied-tags` customization variables.
2759 Support for stashing the thread id in show view
2761 Invoking `notmuch-show-stash-message-id` with a prefix argument
2762 stashes the (local and database specific) thread id of the current
2763 thread instead of the message id.
2765 New add-on tool: notmuch-pick
2766 -----------------------------
2768 The new contrib/ tool `notmuch-pick` is an experimental threaded message
2769 view for the emacs interface. Each message is one line in the results
2770 and the thread structure is shown using UTF-8 box drawing characters
2771 (similar to Mutt's threaded view). It comes between search and show in
2772 terms of amount of output and can be useful for viewing both single
2773 threads and multiple threads. See the notmuch-pick README file for
2774 further details and installation.
2779 notmuch now builds on OpenBSD.
2781 Internal test framework changes
2782 -------------------------------
2784 The emacsclient binary is now user-configurable
2786 The test framework now accepts `TEST_EMACSCLIENT` in addition to
2787 `TEST_EMACS` for configuring the emacsclient to use. This is
2788 necessary to avoid using an old emacsclient with a new emacs, which
2789 can result in buggy behavior.
2791 Notmuch 0.14 (2012-08-20)
2792 =========================
2797 Maildir tag synchronization
2799 Maildir flag-to-tag synchronization now applies only to messages in
2800 maildir-like directory structures. Previously, it applied to any
2801 message that had a maildir "info" part, which meant it could
2802 incorrectly synchronize tags for non-maildir messages, while at the
2803 same time failing to synchronize tags for newly received maildir
2804 messages (typically causing new messages to not receive the "unread"
2807 Command-Line Interface
2808 ----------------------
2810 The deprecated positional output file argument to `notmuch dump` has
2811 been replaced with an `--output` option. The input file positional
2812 argument to `notmuch restore` has been replaced with an `--input`
2813 option for consistency with dump. These changes simplify the syntax
2814 of dump/restore options and make them more consistent with other
2820 Search results now get re-colored when tags are updated
2822 The formatting of tags in search results can now be customized
2824 Previously, attempting to change the format of tags in
2825 `notmuch-search-result-format` would usually break tagging from
2826 search-mode. We no longer make assumptions about the format.
2828 Experimental support for multi-line search result formats
2830 It is now possible to embed newlines in
2831 `notmuch-search-result-format` to make individual search results
2832 span multiple lines.
2834 Next/previous in search and show now move by boundaries
2836 All "next" and "previous" commands in the search and show modes now
2837 move to the next/previous result or message boundary. This doesn't
2838 change the behavior of "next", but "previous" commands will first
2839 move to the beginning of the current result or message if point is
2840 inside the result or message.
2842 Search now uses the JSON format internally
2844 This should address problems with unusual characters in authors and
2845 subject lines that could confuse the old text-based search parser.
2847 The date shown in search results is no longer padded before applying
2848 user-specified formatting
2850 Previously, the date in the search results was padded to fixed width
2851 before being formatted with `notmuch-search-result-format`. It is
2852 no longer padded. The default format has been updated, but if
2853 you've customized this variable, you may have to change your date
2854 format from `"%s "` to `"%12s "`.
2856 The thread-id for the `target-thread` argument for `notmuch-search` should
2857 now be supplied without the "thread:" prefix.
2859 Notmuch 0.13.2 (2012-06-02)
2860 ===========================
2865 Update `contrib/notmuch-deliver` for API changes in 0.13. This fixes a
2866 compilation error for this contrib package.
2868 Notmuch 0.13.1 (2012-05-29)
2869 ===========================
2874 Fix inserting of UTF-8 characters from *text/plain* parts in reply
2876 While notmuch gained ability to insert content from other than *text/plain*
2877 parts of email whenever *text/plain* parts are not available (notably
2878 HTML-only emails), replying to mails that do have *text/plain* the
2879 non-ASCII characters were incorrectly decoded. This is now fixed.
2881 `notmuch_database_get_directory` and
2882 `notmuch_database_find_message_by_filename` now work on read-only
2885 Previously, these functions attempted to create directory documents
2886 that didn't exist and would return an error or abort when given a
2887 read-only database. Now they no longer create directory documents
2888 and simply return a `NULL` object if the directory does not exist,
2891 Fix compilation of ruby bindings
2893 Revert to dynamic linking, since the statically linked bindings did
2896 Notmuch 0.13 (2012-05-15)
2897 =========================
2899 Command-Line Interface
2900 ----------------------
2904 `notmuch reply` can now produce JSON output that contains the headers
2905 for a reply message and full information about the original message
2906 begin replied to. This allows MUAs to create replies intelligently.
2907 For example, an MUA that can parse HTML might quote HTML parts.
2909 Calling notmuch reply with `--format=json` imposes the restriction that
2910 only a single message is returned by the search, as replying to
2911 multiple messages does not have a well-defined behavior. The default
2912 retains its current behavior for multiple message replies.
2916 Tags can be automatically excluded from search results by adding them
2917 to the new `search.exclude_tags` option in the Notmuch config file.
2919 This behaviour can be overridden by explicitly including an excluded
2920 tag in your query, for example:
2922 notmuch search $your_query and tag:$excluded_tag
2924 Existing users will probably want to run `notmuch setup` again to add
2925 the new well-commented [search] section to the configuration file.
2927 For new configurations, accepting the default setting will cause the
2928 tags "deleted" and "spam" to be excluded, equivalent to running:
2930 notmuch config set search.exclude_tags deleted spam
2932 Raw show format changes
2934 The output of show `--format=raw` has changed for multipart and
2935 message parts. Previously, the output was a mash of somewhat-parsed
2936 headers and transfer-decoded bodies. Now, such parts are reproduced
2937 faithfully from the original source. Message parts (which includes
2938 part 0) output the full message, including the message headers (but
2939 not the transfer headers). Multipart parts output the part as
2940 encoded in the original message, including the part's headers. Leaf
2941 parts, as before, output the part's transfer-decoded body.
2943 Listing configuration items
2945 The new `config list` command prints out all configuration items and
2951 Changes to tagging interface
2953 The user-facing tagging functions in the Emacs interface have been
2954 normalized across all notmuch modes. The tagging functions are now
2955 notmuch-search-tag in search-mode, and notmuch-show-tag in
2956 show-mode. They accept a string representing a single tag change,
2957 or a list of tag changes. See 'M-x describe-function notmuch-tag'
2958 for more information.
2960 NOTE: This breaks compatibility with old tagging functions, so user
2961 may need to update in custom configurations.
2963 Reply improvement using the JSON format
2965 Emacs now uses the JSON reply format to create replies. It obeys
2966 the customization variables message-citation-line-format and
2967 message-citation-line-function when creating the first line of the
2968 reply body, and it will quote HTML parts if no text/plain parts are
2971 New add-on tool: notmuch-mutt
2972 -----------------------------
2974 The new contrib/ tool `notmuch-mutt` provides Notmuch integration for
2975 the Mutt mail user agent. Using it, Mutt users can perform mail
2976 search, thread reconstruction, and mail tagging/untagging without
2977 leaving Mutt. notmuch-mutt, formerly distributed under the name
2978 `mutt-notmuch` by Stefano Zacchiroli, will be maintained as a notmuch
2979 contrib/ from now on.
2984 The API changes detailed below break binary and source compatibility,
2985 so libnotmuch has been bumped to version 3.0.0.
2987 The function `notmuch_database_close` has been split into
2988 `notmuch_database_close` and `notmuch_database_destroy`
2990 This makes it possible for long running programs to close the xapian
2991 database and thus release the lock associated with it without
2992 destroying the data structures obtained from it.
2994 `notmuch_database_open`, `notmuch_database_create`, and
2995 `notmuch_database_get_directory` now return errors
2997 The type signatures of these functions have changed so that the
2998 functions now return a `notmuch_status_t` and take an out-argument for
2999 returning the new database object or directory object.
3006 The go bindings and the `notmuch-addrlookup` utility are now
3007 compatible with go 1.
3009 Notmuch 0.12 (2012-03-20)
3010 =========================
3012 Command-Line Interface
3013 ----------------------
3017 `notmuch reply` has gained the ability to create a reply template
3018 for replying just to the sender of the message, in addition to reply
3019 to all. The feature is available through the new command line option
3020 `--reply-to=(all|sender)`.
3022 Mail store folder/file ignore
3024 A new configuration option, `new.ignore`, lets users specify a
3025 ;-separated list of file and directory names that will not be
3026 searched for messages by `notmuch new`.
3028 NOTE: *Every* file/directory that goes by one of those names will
3029 be ignored, independent of its depth/location in the mail store.
3031 Unified help and manual pages
3033 The notmuch help command now runs man for the appropriate page. If
3034 you install notmuch somewhere "unusual", you may need to update
3037 Manual page for notmuch configuration options
3039 The notmuch CLI configuration file options are now documented in the
3040 notmuch-config(1) manual page in addition to the configuration file
3048 The Emacs interface has, with the new CLI support, gained the
3049 ability to reply to sender in addition to reply to all. In both show
3050 and search modes, 'r' has been bound to reply to sender, replacing
3051 reply to all, which now has key binding 'R'.
3053 More flexible and consistent tagging operations
3055 All tagging operations ('+', '-', '*') now accept multiple tags with
3056 '+' or '-' prefix, like '*' operation in notmuch-search view before.
3058 '*' operation (`notmuch-show-tag-all`) is now available in
3061 `notmuch-show-{add,remove}-tag` functions no longer accept tag
3062 argument, `notmuch-show-tag-message` should be used instead. Custom
3063 bindings using these functions should be updated, e.g.:
3065 (notmuch-show-remove-tag "unread")
3067 should be changed to:
3069 (notmuch-show-tag-message "-unread")
3071 Refreshing the show view ('=' by default) no longer opens or closes messages
3073 To get the old behavior of putting messages back in their initial
3074 opened/closed state, use a prefix argument, e.g., 'C-u ='.
3076 Attachment buttons can be used to view or save attachments.
3078 When the cursor is on an attachment button the key 's' can be used
3079 to save the attachment, the key 'v' to view the attachment in the
3080 default mailcap application, and the key 'o' prompts the user for an
3081 application to use to open the attachment. By default Enter or mouse
3082 button 1 saves the attachment but this is customisable (option
3083 Notmuch Show Part Button Default Action).
3087 `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
3088 optionally visiting a URI to the current message at one of a number
3089 of Mailing List Archives.
3091 Fix MML tag quoting in replies
3093 The MML tag quoting fix of 0.11.1 unintentionally quoted tags
3094 inserted in `message-setup-hook`. Quoting is now limited to the
3097 Show view archiving key binding changes
3099 The show view archiving key bindings 'a' and 'x' now remove the
3100 "inbox" tag from the current message only (instead of thread), and
3101 move to the next message. At the last message, 'a' proceeds to the
3102 next thread in search results, and 'x' returns to search
3103 results. The thread archiving functions are now available in 'A' and
3106 Support text/calendar MIME type
3108 The text/calendar MIME type is now supported in addition to
3111 Generate inline patch fake attachment file names from message subject
3113 Use the message subject to generate file names for the inline patch
3114 fake attachments. The names are now similar to the ones generated by
3115 'git format-patch' instead of just "inline patch". See "Notmuch Show
3116 Insert Text/Plain Hook" in the notmuch customize interface.
3118 Enable `notmuch-search-line-faces` by default
3120 Make the `notmuch-search-line-faces` functionality more discoverable
3121 for new users by showing "unread" messages bold and "flagged"
3122 messages blue by default in the search view.
3126 notmuch-show mode now has simple printing support, bound to '#' by
3127 default. You can customize the variable notmuch-print-mechanism.
3134 `notmuch_query_add_tag_exclude` supports the new tag exclusion
3137 Python bindings changes
3138 -----------------------
3140 Python 3.2 compatibility
3142 The python bindings are now compatible with both python 2.5+ and 3.2.
3144 Added missing unicode conversions
3146 Python strings have to be encoded to and decoded from utf-8 when
3147 calling libnotmuch functions. Porting the bindings to python 3.2
3148 revealed a few function calls that were missing these conversions.
3153 Compatibility with GMime 2.6
3155 It is now possible to build notmuch against both GMime 2.4 and 2.6.
3156 However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
3157 report signatures where the signer key is unavailable (GNOME bug
3158 668085). For compatibility with GMime 2.4's tolerance of "From "
3159 headers we require GMime 2.6 >= 2.6.7.
3161 Notmuch 0.11.1 (2012-02-03)
3162 ===========================
3167 Fix error handling in python bindings
3169 The python bindings in 0.11 failed to detect NULL pointers being
3170 returned from libnotmuch functions and thus failed to raise
3171 exceptions to indicate the error condition. Any subsequent calls
3172 into libnotmuch caused segmentation faults.
3174 Quote MML tags in replies
3176 MML tags are text codes that Emacs uses to indicate attachments
3177 (among other things) in messages being composed. The Emacs
3178 interface did not quote MML tags in the quoted text of a reply.
3179 User could be tricked into replying to a maliciously formatted
3180 message and not editing out the MML tags from the quoted text. This
3181 could lead to files from the user's machine being attached to the
3182 outgoing message. The Emacs interface now quotes these tags in
3183 reply text, so that they do not effect outgoing messages.
3185 Notmuch 0.11 (2012-01-13)
3186 =========================
3188 Command-Line Interface
3189 ----------------------
3193 Hooks have been introduced to notmuch. Hooks are scripts that notmuch
3194 invokes before and after certain actions. Initially, `notmuch new`
3195 supports `pre-new` and `post-new` hooks that are run before and after
3196 importing new messages into the database.
3198 `notmuch reply --decrypt bugfix`
3200 The `notmuch reply` command with `--decrypt` argument had a rarely
3201 occurring bug that caused an encrypted message not to be decrypted
3202 sometimes. This is now fixed.
3207 Automatic tag query optimization
3209 `notmuch tag` now automatically optimizes the user's query to
3210 exclude messages whose tags won't change. In the past, we've
3211 suggested that people do this by hand; this is no longer necessary.
3213 Don't sort messages when creating a dump file
3215 This speeds up tag dumps considerably, without any loss of
3216 information. To replicate the old behavior of sorted output (for
3217 example to compare two dump files), one can use e.g. `sort(1)`.
3222 Reduction of memory leaks
3224 Two memory leaks when searching and showing messages were identified
3225 and fixed in this release.
3232 notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
3233 a bug that caused it to always jump to the next message, even if it
3234 should have scrolled down to show more of the current message instead.
3237 Support `notmuch new` as a notmuch-poll-script
3239 It's now possible to use `notmuch new` as a notmuch-poll-script
3240 directly. This is also the new default. This allows taking better
3241 advantage of the `notmuch new` hooks from emacs without intermediate
3244 Improvements in saved search management
3246 New saved searches are now appended to the list of saved searches,
3247 not inserted in front. It's also possible to define a sort function
3248 for displaying saved searches; alphabetical sort is provided.
3250 Hooks for notmuch-hello
3252 Two new hooks have been added: "notmuch-hello-mode-hook" (called after
3253 entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
3254 after updating a notmuch-hello buffer).
3256 New face for crypto parts headers
3258 Crypto parts used to be displayed with a hardcoded color. A new face
3259 has been introduced to fix this: notmuch-crypto-part-header. It
3260 defaults to the same value as before, but can be customized to match
3263 Use space as default thousands separator
3265 Large numbers in notmuch-hello are now displayed using a space as
3266 thousands separator (e.g. "123 456" instead of "123,456"). This can be
3267 changed by customizing "notmuch-hello-thousands-separator".
3269 Call notmuch-show instead of notmuch-search when clicking on
3270 buttonized id: links
3272 New function notmuch-show-advance
3274 This new function advances through just the current thread, and is
3275 less invasive than notmuch-show-advance-and-archive. It can easily
3276 be bound to SPC with:
3278 (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
3280 Various performance improvements
3285 The tool `contrib/notmuch-deliver` helps with initial delivery and
3286 tagging of mail (replacing running `notmuch new`).
3289 Notmuch 0.10.2 (2011-12-04)
3290 ===========================
3295 Fix crash in python bindings
3297 The python bindings did not call `g_type_init`, which caused crashes
3298 for some, but not all users.
3300 Notmuch 0.10.1 (2011-11-25)
3301 ===========================
3306 Fix `--help` argument
3308 Argument processing changes in 0.10 introduced a bug where
3309 `notmuch --help` crashed while `notmuch help` worked fine.
3310 This is fixed in 0.10.1.
3312 Notmuch 0.10 (2011-11-23)
3313 =========================
3315 New build and testing features
3316 ------------------------------
3318 Emacs tests are now done in `dtach`. This means that dtach is now
3319 needed to run the notmuch test suite, at least until the checking for
3320 prerequisites is improved.
3322 Full test coverage of the stashing feature in Emacs.
3324 New command-line features
3325 -------------------------
3327 Add `notmuch restore --accumulate` option
3329 The `--accumulate` switch causes the union of the existing and new tags to
3330 be applied, instead of replacing each message's tags as they are read in
3333 Add search terms to `notmuch dump`
3335 The dump command now takes an optional search term much like notmuch
3336 search/show/tag. The output file argument of dump is deprecated in
3337 favour of using stdout.
3339 Add `notmuch search` `--offset` and `--limit` options
3341 The search command now takes options `--offset=[-]N` and `--limit=N` to
3342 limit the number of results shown.
3344 Add `notmuch count --output` option
3346 The count command is now capable of counting threads in addition to
3347 messages. This is selected using the new `--output=(threads|messages)`
3350 New emacs UI features
3351 ---------------------
3353 Add tab-completion for `notmuch-search` and `notmuch-search-filter`
3355 These functions now support completion tags for query parts
3356 starting with "tag:".
3358 Turn "id:MSG-ID" links into buttons associated with notmuch searches
3360 Text of the form "id:MSG-ID" in mails is now a clickable button that
3361 opens a notmuch search for the given message id.
3363 Add keybinding ('c I') for stashing Message-ID's without an id: prefix
3365 Reduces manual labor when stashing them for use outside notmuch.
3367 Do not query on `notmuch-search` exit
3369 It is harmless to kill the external notmuch process, so the user
3370 is no longer interrogated when they interrupt a search.
3375 Emacs now constructs large search buffers more efficiently
3377 Search avoids opening and parsing message files
3379 We now store more information in the database so search no longer
3380 has to open every message file to get basic headers. This can
3381 improve search speed by as much as 10X, but taking advantage of this
3382 requires a database rebuild:
3384 notmuch dump > notmuch.dump
3385 # Backup, then remove notmuch database ($MAIL/.notmuch)
3387 notmuch restore notmuch.dump
3389 New collection of add-on tools
3390 ------------------------------
3392 The source directory "contrib" contains tools built on notmuch. These
3393 tools are not part of notmuch, and you should check their individual
3394 licenses. Feel free to report problems with them to the notmuch
3397 nmbug - share tags with a given prefix
3399 nmbug helps maintain a git repo containing all tags with a given
3400 prefix (by default "notmuch::"). Tags can be shared by committing
3401 them to git in one location and restoring in another.
3403 Notmuch 0.9 (2011-10-01)
3404 ========================
3406 New, general features
3407 ---------------------
3409 Correct handling of interruptions during `notmuch new`
3411 `notmuch new` now operates as a series of small, self-consistent
3412 transactions, so it can correctly resume after an interruption or
3413 crash. Previously, interruption could lose existing tags, fail to
3414 detect messages on resume, or leave the database in a state
3415 temporarily or permanently inconsistent with the mail store.
3422 `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
3423 allow multiple database operations to be performed atomically.
3425 `notmuch_database_find_message_by_filename` does exactly what it says.
3429 `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
3430 a status indicator and uses an output parameter for the
3431 message. This change required changing the SONAME of libnotmuch to
3434 Python bindings changes
3435 -----------------------
3437 - Re-encode python unicode objects to utf-8 before passing back to
3439 - Support `Database().begin_atomic()/end_atomic()`
3440 - Support `Database().find_message_by_filename()`
3441 NB! This needs a db opened in READ-WRITE mode currently, or it will crash
3442 the python process. The is a limitation (=bug) of the underlying libnotmuch.
3443 - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
3444 - Update for `n_d_find_message*` API changes (see above).
3446 Ruby bindings changes
3447 ---------------------
3449 - Wrap new library functions `notmuch_database_{begin,end}_atomic.`
3450 - Add new exception `Notmuch::UnbalancedAtomicError.`
3451 - Rename destroy to destroy! according to Ruby naming conventions.
3452 - Update for `n_d_find_message*` API changes (see above).
3457 * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
3459 * Add `notmuch-show-refresh-view` function (and corresponding binding)
3460 to refresh the view of a notmuch-show buffer.
3462 Reply formatting cleanup
3463 ------------------------
3465 `notmuch reply` no longer includes notification that non-leafnode
3466 MIME parts are being suppressed.
3468 Notmuch 0.8 (2011-09-10)
3469 ========================
3471 Improved handling of message/rfc822 parts
3473 Both in the CLI and the emacs interface. Output of rfc822 parts now
3474 includes the primary headers, as well as the body and all subparts.
3475 Output of the completely raw rfc822-formatted message, including all
3476 headers, is unfortunately not yet supported (but hopefully will be
3479 Improved Build system portability
3481 Certain parts of the shell script generating notmuch.sym were
3482 specific to the GNU versions of sed and nm. The new version should
3483 be more portable to e.g. OpenBSD.
3485 Documentation update for Ruby bindings
3487 Added documentation, typo fixes, and improved support for rdoc.
3489 Unicode, iterator, PEP8 changes for python bindings
3491 - PEP8 (code formatting) changes for python files.
3492 - Remove `Tags.__len__` ; see 0.6 release notes for motivation.
3493 - Decode headers as UTF8, encode (unicode) database paths as UTF8.
3495 Notmuch 0.7 (2011-08-01)
3496 ========================
3498 Vim interface improvements
3499 --------------------------
3501 Jason Woofenden provided a number of bug fixes for the Vim interface
3503 * fix citation/signature fold lengths
3504 * fix cig/cit parsing within multipart/*
3505 * fix on-screen instructions for show-signature
3506 * fix from list reformatting in search view
3507 * fix space key: now archives (did opposite)
3509 Uwe Kleine-König contributed
3511 * use full path for sendmail/doc fix
3512 * fix compose temp file name
3514 Python Bindings changes
3515 -----------------------
3517 Sebastian Spaeth contributed two changes related to unicode and UTF8:
3519 * message tags are now explicitly unicode
3520 * query string is encoded as a UTF8 byte string
3522 Build-System improvements
3523 -------------------------
3525 Generate notmuch.sym after the relevant object files
3527 This fixes a bug in parallel building. Thanks to Thomas Jost for the
3530 Notmuch 0.6.1 (2011-07-17)
3531 ==========================
3536 Re-export Xapian exception typeinfo symbols
3538 It turned out our aggressive symbol hiding caused problems for
3539 people running gcc 4.4.5.
3541 Notmuch 0.6 (2011-07-01)
3542 =======================
3544 New, general features
3545 ---------------------
3547 Folder-based searching
3549 Notmuch queries can now include a search term to match the
3550 directories in which mail files are stored (within the mail
3551 storage). The syntax is as follows:
3555 For example, one might use things such as:
3561 to match any path containing a directory "spam", "work/todo", or
3562 containing a directory starting with "2011-", respectively.
3564 This feature is particularly useful for users of delivery-agent
3565 software (such as procmail or maildrop) that is filtering mail and
3566 delivering it to particular folders, or users of systems such as
3567 Gmail that use filesystem directories to indicate message tags.
3569 NOTE: Only messages that are newly indexed with this version of
3570 notmuch will be searchable with folder: terms. In order to enable
3571 this feature for all mail, the entire notmuch index will need to be
3574 notmuch dump > notmuch.dump
3575 # Backup, then remove notmuch database ($MAIL/.notmuch)
3577 notmuch restore notmuch.dump
3579 Support for PGP/MIME
3581 Both the command-line interface and the emacs-interface have new
3582 support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
3583 and Jameson Graef Rollins for making this happen.
3585 New, automatic tags: "signed" and "encrypted"
3587 These tags will automatically be applied to messages containing
3588 multipart/signed and multipart/encrypted parts.
3590 NOTE: Only messages that are newly indexed with this version of
3591 notmuch will receive these tags.
3593 New command-line features
3594 -------------------------
3596 Add new "notmuch show --verify" option for signature verification
3598 This option instruct notmuch to verify the signature of
3599 PGP/MIME-signed parts.
3601 Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
3603 This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
3604 Note that this feature currently requires gpg-agent and a passphrase entry
3605 tool (e.g. pinentry-gtk or pinentry-curses).
3607 Proper nesting of multipart parts in "notmuch show" output
3609 MIME parts are now display with proper nesting to reflect original
3610 MIME hierarchy of a message. This allows clients to correctly
3611 analyze the MIME structure, (such as, for example, determining to
3612 which parts a signature part applies).
3614 Add new "notmuch show --part" option
3616 This is a replacement for the older "notmuch part" command, (which
3617 is now deprecated—it should still work as always, but is no longer
3618 documented). Putting part output under "notmuch show" allows for all
3619 of the "notmuch show" options to be applied when extracting a single
3620 part, (such as --format=json for extracting a message part with JSON
3623 Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
3625 The "notmuch search-tags" sub-command has been redundant since the
3626 addition of the --output=tags option to "notmuch search". We now
3627 make that more clear by deprecating "notmuch search-tags", (dropping
3628 it from the documentation). We do continue to support the old syntax
3629 by translating it internally to the new call.
3631 Performance improvements
3632 ------------------------
3634 Faster searches (by doing fewer searches to construct threads)
3636 Whenever a user asks for search results as threads, notmuch first
3637 performs a search for messages matching the query, then performs
3638 additional searches to find other messages in the resulting threads.
3640 Removing inefficiencies and redundancies in these secondary searches
3641 results in a measured speedups of 1.5x for a typical search.
3643 Faster searches (by doing fewer passes to gather message data)
3645 Optimizing Xapian data access patterns (using a single pass to get
3646 all message-document data rather than a pass for each data type)
3647 results in a measured speedup of 1.7x for a typical search.
3649 The benefits of this optimization combine with the preceding
3650 optimization. With both in place, Austin Clements measured a speedup
3651 of 2.5x for a search of all messages in his inbox (was 4.5s, now
3652 1.8s). Thanks, Austin!
3654 Faster initial indexing
3656 More efficient indexing of new messages results in a measured
3657 speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
3658 rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
3660 Make "notmuch new" faster for unchanged directories
3662 Optimizing to not do any further examinations of sub-directories
3663 when the filesystem indicates that a directory is unchanged from the
3664 last "notmuch new" results in measured speedups of 8.5 for the "No
3665 new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
3667 New emacs-interface features
3668 ----------------------------
3670 Support for PGP/MIME (GnuPG)
3672 Automatically indicate validity of signatures for multipart/signed
3673 messages. Automatically display decrypted content for
3674 multipart/encrypted messages. See the emacs variable
3675 notmuch-crypto-process-mime for more information. Note that this
3676 needs gpg-agent and a pinentry tool just as the command-line tools.
3677 Also note there is no support SMIME yet.
3679 Output of pipe command is now displayed if pipe command fails
3681 This is extremely useful in the common use case of piping a patch to
3682 "git am". If git fails to cleanly merge the patch the error messages
3683 from the failed merge are now clearly displayed to the user, (where
3684 previously they were silently hidden from the user).
3686 User-selectable From address
3688 A user can choose which configured email addresses should be used as
3689 the From address whenever composing a new message. To do so, simply
3690 press C-u before the command which will open a new message. Emacs
3691 will prompt for the from address to use.
3693 The user can customize the "Notmuch Identities" setting in the
3694 notmuch customize group in order to use addresses other than those in
3695 the notmuch configuration file if desired.
3697 The user can also choose to always be prompted for the from address
3698 when composing a new message (without having to use C-u) by setting
3699 the "Notmuch Always Prompt For Sender" option in the notmuch
3702 Hiding of repeated subjects in collapsed thread view
3704 In notmuch-show mode, if a collapsed message has the same subject as
3705 its parent, the subject is not shown.
3707 Automatic detection and hiding of original message in top-posted message
3709 When a message contains a line looking something like:
3711 ----- Original Message -----
3713 emacs hides this and all subsequent lines as an "original message",
3714 (allowing the user to click or press enter on the "original message"
3715 button to display it again). This makes the handling of top-posted
3716 citations work much like conventional citations.
3718 New hooks for running code when tags are modified
3720 Some users want to perform additional actions whenever a particular
3721 tag is added/removed from a message. This could be used to, for
3722 example, interface with some external spam-recognition training
3723 tool. To facilitate this, two new hooks are added which can be
3724 modified in the following settings of the notmuch customize group:
3726 Notmuch Before Tag Hook
3727 Notmuch After Tag Hook
3729 New optional support for hiding some multipart/alternative parts
3731 Many emails are sent with redundant content within a
3732 multipart/alternative group (such as a text/plain part as well as a
3733 text/html part). Users can configure the setting:
3735 Notmuch Show All Multipart/Alternative Parts
3737 to "off" in the notmuch customize group to have the interface
3738 automatically hide some part alternatives (such as text/html
3739 parts). This new part hiding is not configured by default yet
3740 because there's not yet a simple way to re-display such a hidden
3741 part if it is not actually redundant with a displayed part.
3743 Better rendering of text/x-vcalendar parts
3745 These parts are now displayed in a format suitable for use with the
3748 Avoid getting confused by Subject and Author fields with newline characters
3750 Replacing all characters with ASCII code less than 32 with a question mark.
3752 Cleaner display of From line in email messages
3754 Remove double quotes, and drop "name" if it's actually just a repeat of
3757 Vim interface improvements
3758 --------------------------
3760 Felipe Contreras provided a number of updates for the vim interface:
3762 * Using sendmail directly rather than mailx,
3763 * Implementing archive in show view
3764 * Add support to mark as read in show and search views
3765 * Add delete commands
3768 Bindings improvements
3769 ---------------------
3771 Ruby bindings are now much more complete
3773 Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
3774 `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
3776 Python bindings have been updated and extended
3778 (docs online at https://notmuch.readthedocs.io/)
3782 - `Message().get_filenames()`, `Message().tags_to_maildir_flags()`,
3783 `Message().maildir_flags_to_tags()`, `list(Threads())` and
3784 `list(Messages)` works now
3785 - `Message().__cmp__()` and `__hash__()`
3787 These allow, for example:
3789 if msg1 == msg2: ...
3791 As well as set arithmetic on `Messages()`:
3793 s1, s2 = set(msgs1), set(msgs2)
3799 - `len(Messages())` as it exhausted the iterator
3801 Use `len(list(Messages()))` or `Query.count_messages()`
3804 Added initial Go bindings in bindings/go
3806 New build-system features
3807 -------------------------
3809 Added support for building in a directory other than the source directory
3811 This can be used with the widely-supported idiom of simply running
3812 the configure script from some other directory:
3819 Fix to save configure options for future, implicit runs of configure
3821 When a user updates the source (such as with "git pull") calling
3822 "make" may cause an automatic re-run of the configure script. When
3823 this happens, the configure script will automatically be called with
3824 the same options the user originally passed in the most-recent
3825 manual invocation of configure.
3827 New test-suite feature
3828 ----------------------
3830 Binary for bash for running test suite now located via PATH
3832 The notmuch test suite requires a fairly recent version of bash (>=
3833 bash 4). As some systems supply an older version of bash at
3834 /bin/bash, the test suite is now updated to search $PATH to locate
3835 the bash binary. This allows users of systems with old /bin/bash to
3836 simply install bash >= 4 somewhere on $PATH before /bin and then use
3839 Support for testing output with a trailing newline
3841 Previously, some tests would fail to notice a difference in the
3842 presence/absence of a trailing newline in a program output, (which
3843 has led to bugs in the past). Now, carefully-written tests (using
3844 `test_expect_equal_file` rather than `test_expect_equal`) will detect
3845 any change in the presence/absence of a trailing newline. Many tests
3846 are updated to take advantage of this.
3848 Avoiding accessing user's $HOME while running test suite
3850 The test suite now carefully creates its own HOME directory. This
3851 allows the test suite to be run with no existing HOME directory, (as
3852 some build systems apparently do), and avoids test-suite differences
3853 due to configuration files in the users HOME directory.
3859 Output *all* files for "notmuch search --output=files"
3861 For the cases where multiple files have the same Message ID,
3862 previous versions of notmuch would output only one such file. This
3863 command is now fixed to correctly output all files.
3865 Fixed spurious search results from "overlapped" indexing of addresses
3867 This fixed a bug where a search for:
3869 to:user@elsewhere.com
3871 would incorrectly match a message sent:
3873 To: user@example,com, someone@elsewhere.com
3875 Fix --output=json when search has no results
3877 A bug present since notmuch 0.4 had caused searches with no results
3878 to produce an invalid json object. This is now fixed to cleanly
3879 return a valid json object representing an empty array "[]" as
3882 Fix the automatic detection of the From address for "notmuch reply"
3883 from the Received headers in some cases
3885 Fix core dump on DragonFlyBSD due to -1 return value from
3886 `sysconf(_SC_GETPW_R_SIZE_MAX)`
3888 Cleaned up several memory leaks
3890 Eliminated a few, rare segmentation faults and a double-free
3892 Fix libnotmuch library to only export notmuch API functions
3894 Previous release of the notmuch library also exported some Xapian
3895 C++ exception type symbols. These were never part of the library
3896 interface and were never intended to be exported.
3898 Emacs-interface bug fixes
3899 -------------------------
3901 Display any unexpected output or errors from "notmuch search" invocations
3903 Previously any misformatted output or trailing error messages were
3904 silently ignored. This output is now clearly displayed. This fix was
3905 very helpful in identifying and fixing the bug described below.
3907 Fix bug where some threads would be missing from large search results
3909 When a search returned a "large" number of results, the emacs
3910 interface was incorrectly dropping one thread every time the output
3911 of the "notmuch search" process spanned the emacs read-buffer. This
3914 Avoid re-compression of .gz files (and similar) when saving attachment
3916 Emacs was being too clever for its own good and trying to
3917 re-compress pre-compressed .gz files when saving such attachments
3918 (potentially corrupting the attachment). The emacs interface is
3919 fixed to avoid this bug.
3921 Fix hiding of a message when a previously-hidden citation is visible
3923 Previously the citation would remain visible in this case. This is
3924 fixed so that hiding a message hides all parts.
3926 Notmuch 0.5 (2010-11-11)
3927 ========================
3929 New, general features
3930 ---------------------
3932 Maildir-flag synchronization
3934 Notmuch now knows how to synchronize flags in maildir filenames with
3935 tags in the notmuch database. The following flag/tag mappings are
3944 'S' unread (added when 'S' flag is not present)
3946 The synchronization occurs in both directions, (for example, adding
3947 the 'S' flag to a file will cause the "unread" tag to be added, and
3948 adding the "replied" tag to a message will cause the file to be
3949 renamed with an 'R' flag).
3951 This synchronization is enabled by default for users of the
3952 command-line interface, (though only files in directories named
3953 "cur" or "new" will be renamed). It can be disabled by setting the
3954 new `maildir.synchronize_flags` option in the configuration file. For
3957 notmuch config set maildir.synchronize_flags false
3959 Users upgrading may also want to run "notmuch setup" once (just
3960 accept the existing configuration) to get a new, nicely-commented
3961 [maildir] section added to the configuration file.
3963 For users of the notmuch library, the new synchronization
3964 functionality is available with the following two new functions:
3966 notmuch_message_maildir_flags_to_tags
3967 notmuch_message_tags_to_maildir_flags
3969 It is anticipated that future improvements to this support will
3970 allow for safe synchronization of the 'T' flag with the "deleted"
3971 tag, as well as support for custom flag/tag mappings.
3973 New library features
3974 --------------------
3976 Support for querying multiple filenames for a single message
3978 It is common for the mailstore to contain multiple files with the
3979 same message ID. Previously, notmuch would always hide these
3980 duplicate files, (returning a single, arbitrary filename with
3981 `notmuch_message_get_filename`).
3983 With this release, library users can access all filenames for a
3984 message with the new function:
3986 notmuch_message_get_filenames
3988 Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
3989 and `notmuch_filenames_move_to_next` it is now possible to iterate
3990 over all available filenames for a given message.
3992 New command-line features
3993 -------------------------
3995 New "notmuch show --format=raw" for getting at original email contents
3997 This new feature allows for a fully-functional email client to be
3998 built on top of the notmuch command-line without needing any direct
3999 access to the mail store itself.
4001 For example, it's now possible to run "emacs -f notmuch" on a local
4002 machine with only ssh access to the mail store/notmuch database. To
4003 do this, simply set the notmuch-command variable in emacs to the
4004 name of a script containing:
4006 ssh user@host notmuch "$@"
4008 If the ssh client has enabled connection sharing (ControlMaster
4009 option in OpenSSH), the emacs interface can be quite responsive this
4015 Fix "notmuch search" to print nothing when nothing matches
4017 The 0.4 release had a bug in which:
4019 notmuch search <expression-with-no-matches>
4021 would produce a single blank line of output, (where previous
4022 versions would produce no output. This fix also causes a change in
4023 the --format=json output, (which would previously produce "[]" and
4024 now produces nothing).
4026 Emacs interface improvements
4027 ----------------------------
4029 Fix to allow pipe ('|') command to work when using notmuch over ssh
4031 Fix count of lines in hidden signatures
4033 Omit repeated subject lines in (collapsed) thread display
4035 Display current thread subject in a header line
4037 Provide a "c i" binding to copy a thread ID from the search view
4039 Allow for notmuch-fcc-dirs to have a value of nil
4041 Also, the more complex form of notmuch-fcc-dirs now has a slightly
4042 different format. It no longer has a special first-element, fallback
4043 string. Instead it's now a list of cons cells where the car of each
4044 cell is a regular expression to be matched against the sender
4045 address, and the cdr is the name of a folder to use for an FCC. So
4046 the old fallback behavior can be achieved by including a final cell
4047 of (".*" . "default-fcc-folder").
4049 Vim interface improvements
4050 --------------------------
4052 Felipe Contreras provided a number of updates for the vim interface
4054 These include optimizations, support for newer versions of vim, fixed
4055 support for sending mail on modern systems, new commands, and
4061 Added initial ruby bindings in bindings/ruby
4063 Notmuch 0.4 (2010-11-01)
4064 ========================
4066 New command-line features
4067 -------------------------
4069 `notmuch search --output=(summary|threads|messages|tags|files)`
4071 This new option allows for particular items to be returned from
4072 notmuch searches. The "summary" option is the default and behaves
4073 just as "notmuch search" has historically behaved.
4075 The new option values allow for thread IDs, message IDs, lists of
4076 tags, and lists of filenames to be returned from searches. It is
4077 expected that this new option will be very useful in shell
4078 scripts. For example:
4080 for file in $(notmuch search --output=files <search-terms>); do
4081 <operations-on> "$file"
4084 `notmuch show --format=mbox <search-specification>`
4086 This new option allows for the messages matching a search
4087 specification to be presented as an mbox. Specifically the "mboxrd"
4088 format is used which allows for reversible quoting of lines
4089 beginning with "From ". A reader should remove a single '>' from the
4090 beginning of all lines beginning with one or more '>' characters
4091 followed by the 5 characters "From ".
4093 `notmuch config [get|set] <section>.<item> [value ...]`
4095 The new top-level "config" command allows for any value in the
4096 notmuch configuration file to be queried or set to a new value. Both
4097 single-valued and multi-valued items are supported, as our any
4098 custom items stored in the configuration file.
4100 Avoid setting Bcc header in "notmuch reply"
4102 We decided that this was a bit heavy-handed as the actual mail
4103 user-agent should be responsible for setting any Bcc option. Also,
4104 see below for the notmuch/emacs user-agent now setting an Fcc by
4105 default rather than Bcc.
4107 New library features
4108 --------------------
4110 Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
4112 These are simply functions for querying properties of a
4113 `notmuch_query_t` object.
4118 Enable Fcc of all sent messages by default (to "sent" directory)
4120 All messages sent from the emacs interface will now be saved to the
4121 notmuch mail store where they will be incorporated to the database
4122 by the next "notmuch new". By default, messages are saved to the
4123 "sent" directory at the top-level of the mail store. This directory
4124 can be customized by means of the "Notmuch Fcc Dirs" option in the
4125 notmuch customize interface.
4127 Ability to all open messages in a thread to a pipe
4129 Historically, the '|' keybinding allows for piping a single message
4130 to an external command. Now, by prefixing this key with a prefix
4131 argument, (for example, by pressing "Control-U |"), all open
4132 messages in the current thread will be sent to the external command.
4134 Optional support for detecting inline patches
4136 This hook is disabled by default but can be enabled with a checkbox
4137 under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
4138 interface. It allows for inline patches to be detected and treated
4139 as if they were attachments, (with context-sensitive highlighting).
4141 Automatically tag messages as "replied" when sending a reply
4143 Messages replied to within the emacs interface will now be tagged as
4144 "replied". This feature can easily be customized to add or remove
4145 other tags as well. For example, a user might use a tag of
4146 "needs-reply" and can configure this feature to automatically remove
4147 that tag when replying. See "Notmuch Message Mark Replied" in the
4148 notmuch customize interface.
4150 Allow search-result color specifications to overlay each other
4152 For example, one tag can specify the background color of matching
4153 lines, while another can specify the foreground. With this change,
4154 both settings will now be visible simultaneously, (which was not the
4155 case in previous releases). See "Notmuch Search Line Faces" in the
4156 notmuch customize interface.
4158 Make hidden author names still available for incremental search
4160 When there is insufficient space to display all authors of a thread
4161 in search results, the names of hidden authors are now still made
4162 available to emacs' incremental search commands. As the user
4163 searches, matching lines will temporarily expand to show the hidden
4166 New binding of Control-TAB (works like TAB in reverse)
4168 Many notmuch nodes already use TAB to navigate forward through
4169 various items allowing actions, (message headers, email attachments,
4170 etc.). The new Control-TAB binding operates similarly but in the
4173 New build-system features
4174 -------------------------
4176 Various portability fixes have been applied
4178 These include fixes for build failures on at least Solaris, FreeBSD,
4179 and Fedora systems. We're hopeful that the notmuch code base is now
4180 more portable than ever before.
4182 Arrange for libnotmuch to be found automatically after make install
4184 The notmuch build system is now careful to help the user avoid
4185 errors of the form "libnotmuch.so could not be found" immediately
4186 after installing. This support takes two forms:
4188 1. If the library is installed to a system directory,
4189 (configured in /etc/ld.so.conf), then "make install" will
4190 automatically run ldconfig.
4192 2. If the library is installed to a non-system directory, the
4193 build system adds a `DR_RUNPATH` entry to the final binary
4194 pointing to the directory to which the library is installed.
4196 When this support works, the user should be able to run notmuch
4197 immediately after "make install", without any errors trying to find
4198 the notmuch library, and without having to manually set environment
4199 variables such as `LD_LIBRARY_PATH`.
4201 Check compiler/linker options before using them
4203 The configure script now carefully checks that any desired
4204 compilation options, (whether for enabling compiler warnings, or for
4205 embedding rpath, etc.), are supported. Only supported options are
4206 used in the resulting Makefile.
4208 New test-suite features
4209 -----------------------
4211 New modularization of test suite
4213 Thanks to a gracious relicensing of the test-suite infrastructure
4214 from the git project, notmuch now has a modular test suite. This
4215 provides the ability to run individual sections of the test suite
4216 rather than the whole things. It also provides better summary of
4217 test results, with support for tests that are expected to fail
4218 (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
4219 it easy to run the test suite within valgrind (pass --valgrind to
4220 notmuch-test or to any sub-script) which has been very useful.
4222 New testing of emacs interface
4224 The test suite has been augmented to allow automated testing of the
4225 emacs interfaces. So far, this includes basic searches, display of
4226 threads, and tag manipulation. This also includes a test that a new
4227 message can successfully be sent out through a (dummy) SMTP server
4228 and that said message is successfully integrated into the notmuch
4229 database via the FCC setting.
4234 Fix potential corruption of database when "notmuch new" is interrupted
4236 Previously, an interruption of "notmuch new" would (rarely) result
4237 in a corrupt database. The corruption would manifest itself by a
4238 persistent error of the form:
4240 document ID of 1234 has no thread ID
4242 The message-adding code has been carefully audited and reworked to
4243 avoid this sort of corruption regardless of when it is interrupted.
4245 Fix failure with extremely long message ID headers
4247 Previously, a message with an extremely long message ID, (say, more
4248 than 300 characters), would fail to be added to notmuch, (triggering
4249 Xapian exceptions). This has now been fixed.
4251 Fix for messages with "charset=unknown-8bit"
4253 Previously, messages with this charset would cause notmuch to emit a
4254 GMime warning, (which would then trip up emacs or other interfaces
4255 parsing the notmuch results).
4257 Fix `notmuch_query_search_threads` function to return NULL on any exception
4259 Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
4262 Previously, this command could confusingly report a Xapian
4263 exception, yet still return an error code of 0. It now correctly
4264 returns a failing error code of 1 in this case.
4269 Fix to handle a message with a subject containing, for example "[1234]"
4271 Previously, a message subject containing a sequence of digits within
4272 square brackets would cause the emacs interface to mis-parse the
4273 output of "notmuch search". This would result in the message being
4274 mis-displayed and prevent the user from manipulating the message in
4275 the emacs interface.
4277 Fix to correctly handle message IDs containing ".."
4279 The emacs interface now properly quotes message IDs to avoid a
4280 Xapian bug in which the ".." within a message ID would be
4281 misinterpreted as a numeric range specification.
4283 Python-binding fixes
4284 --------------------
4286 The python bindings for notmuch have been updated to work with python3.
4288 Debian-specific fixes
4289 ---------------------
4291 Fix emacs initialization so "M-x notmuch" works for users by default
4293 Now, a new Debian user can immediately run "emacs -f notmuch" after
4294 "apt-get install notmuch". Previously, the user would have had to
4295 edit the ~/.emacs file to add "(require 'notmuch)" before this would
4298 Notmuch 0.3.1 (2010-04-27)
4299 ==========================
4304 Fix an infinite loop in "notmuch reply"
4306 This bug could be triggered by replying to a message where the
4307 user's primary email address did not appear in the To: header and
4308 the user had not configured any secondary email addresses. The bug
4309 was a simple re-use of the same iterator variable in nested loops.
4311 Fix a potential SEGV in "notmuch search"
4313 This bug could be triggered by an author name ending in a ','.
4314 Admittedly - that's almost certainly a spam email, but we never
4315 want notmuch to crash.
4320 Fix calculations for line wrapping in the primary "notmuch" view
4322 Fix Fcc support to prompt to create a directory if the specified Fcc
4323 directory does not exist
4328 Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
4330 Without this, the C++ sources could not find strcasestr and the
4331 final linking of notmuch would fail.
4333 Notmuch 0.3 (2010-04-27)
4334 ========================
4336 New command-line features
4337 -------------------------
4339 User-configurable tags for new messages
4341 A new "new.tags" option is available in the configuration file to
4342 determine which tags are applied to new messages. Run "notmuch
4343 setup" to generate new documentation within ~/.notmuch-config on how
4344 to specify this value.
4346 Threads search results named based on subjects that match search
4348 This means that when new mails arrived to a thread you've previously
4349 read, and the new mails have a new subject, you will see that
4350 subject in the search results rather than the old subject.
4352 Faster operation of "notmuch tag" (avoid unneeded sorting)
4354 Since the user just wants to tag all matching messages, we can make
4355 things perform a bit faster by avoiding the sort.
4357 Even Better guessing of From: header for "notmuch reply"
4359 Notmuch now looks at a number of headers when trying to figure out
4360 the best From: header to use in a reply. This is helpful if you have
4361 several configured email addresses, and you also subscribe to various
4362 mailing lists with different addresses, (so that mails you are
4363 replying to won't always include your subscribed address in the To:
4366 Indication of author names that match a search
4368 When notmuch displays threads as the result of a search, it now
4369 lists the authors that match the search before listing the other
4370 authors in the thread. It inserts a pipe '|' symbol between the last
4371 matching and first non-matching author. This is especially useful in
4372 a search that includes tag:unread. Now the authors of the unread
4373 messages in the thread are listed first.
4375 New: Python bindings
4376 --------------------
4378 Sebastian Spaeth has contributed his python bindings for the notmuch
4379 library to the central repository. These bindings were previously
4380 known as "cnotmuch" within python but have now been renamed to be
4381 accessible with a simple, and more official-looking "import notmuch".
4383 The bindings have already proven very useful as people proficient in
4384 python have been able to easily develop programs to do notmuch-based
4385 searches for email-address completion, maildir-flag synchronization,
4388 These bindings are available within the bindings/python directory, but
4389 are not yet integrated into the top-level Makefiles, nor the top-level
4390 package-building scripts. Improvements are welcome.
4392 Emacs interface improvements
4393 ----------------------------
4395 An entirely new initial view for notmuch, (friendly yet powerful)
4397 Some of us call the new view "notmuch hello" but you can get at it
4398 by simply calling "emacs -f notmuch". The new view provides a search
4399 bar where new searches can be performed. It also displays a list of
4400 recent searches, along with a button to save any of these, giving it
4401 a new name as a "saved search". Many people find these "saved
4402 searches" one of the most convenient ways of organizing their mail,
4403 (providing all of the features of "folders" in other mail clients,
4404 but without any of the disadvantages).
4406 Finally, this view can also optionally display all of the tags that
4407 exist in the database, along with a count for each tag, and a custom
4408 search of messages with that tag that's simply a click (or keypress)
4411 NOTE: For users that liked the original mode of "emacs -f notmuch"
4412 immediately displaying a particular search result, we recommend
4413 instead running something like:
4415 emacs --eval '(notmuch search "tag:inbox" t)'
4417 The "t" means to sort the messages in an "oldest first" order,
4418 (as notmuch would do previously by default). You can also
4419 leave that off to have your search results in "newest first"
4422 Full-featured "customize" support for configuring notmuch
4424 Notmuch now plugs in well to the emacs "customize" mode to make it
4425 much simpler to find things about the notmuch interface that can be
4426 tweaked by the user.
4428 You can get to this mode by starting at the main "Customize" menu in
4429 emacs, then browsing through "Applications", "Mail", and
4430 "Notmuch". Or you can go straight to "M-x customize-group"
4433 Once you're at the customize screen, you'll see a list of documented
4434 options that can be manipulated along with checkboxes, drop-down
4435 selectors, and text-entry boxes for configuring the various
4438 Support for doing tab-completion of email addresses
4440 This support currently relies on an external program,
4441 (notmuch-addresses), that is not yet shipped with notmuch
4442 itself. But multiple, suitable implementations of this program have
4443 already been written that generate address completions by doing
4444 notmuch searches of your email collection. For example, providing
4445 first those addresses that you have composed messages to in the
4448 One such program (implemented in python with the python bindings to
4449 notmuch) is available via:
4451 git clone http://jkr.acm.jhu.edu/git/notmuch_addresses.git
4453 Install that program as notmuch-addresses on your PATH, and then
4454 hitting TAB on a partial email address or name within the To: or Cc:
4455 line of an email message will provide matching completions.
4457 Support for file-based (Fcc) delivery of sent messages to mail store
4459 This isn't yet enabled by default. To enable this, one will have to
4460 set the "Notmuch Fcc Dirs" setting within the notmuch customize
4461 screen, (see its documentation there for details). We anticipate
4462 making this automatic in a future release.
4464 New 'G' key binding to trigger mail refresh (G == "Get new mail")
4466 The 'G' key works wherever '=' works. Before refreshing the screen
4467 it calls an external program that can be used to poll email servers,
4468 run notmuch new and set up specific tags for the new emails. The
4469 script to be called should be configured with the "Notmuch Poll
4470 Script" setting in the customize interface. This script will
4471 typically invoke "notmuch new" and then perhaps several "notmuch
4474 Implement emacs message display with the JSON output from notmuch
4476 This is much more robust than the previous implementation, (where
4477 some HTML mails and mail quoting the notmuch code with the delimiter
4478 characters in it would cause the parser to fall over).
4480 Better handling of HTML messages and MIME attachments (inline images!)
4482 Allow for any MIME parts that emacs can display to be displayed
4483 inline. This includes inline viewing of image attachments, (provided
4484 the window is large enough to fit the image at its natural size).
4486 Much more robust handling of HTML messages. Currently both text/plain
4487 and text/html alternates will be rendered next to each other. In a
4488 future release, users will be able to decide to see only one or the
4489 other representation.
4491 Each attachment now has its own button so that attachments can be
4492 saved individually (the 'w' key is still available to save all
4495 Customizable support for tidying of text/plain message content
4497 Many new functions are available for tidying up message
4498 content. These include options such as wrapping long lines,
4499 compressing duplicate blank lines, etc.
4501 Most of these are disabled by default, but can easily be enabled by
4502 clicking the available check boxes under the "Notmuch Show Insert
4503 Text/Plain Hook" within the notmuch customize screen.
4505 New support for searchable citations (even when hidden)
4507 When portions of overly-long citations are hidden, the contents of
4508 these citations will still be available for emacs' standard
4509 "incremental search" functions. When the search matches any portion
4510 of a hidden citation, the citation will become visible temporarily
4511 to display the search result.
4513 More flexible handling of header visibility
4515 As an answer to complaints from many users, the To, Cc, and Date
4516 headers of messages are no longer hidden by default. For those users
4517 that liked that these were hidden, a new "Notmuch Messages Headers
4518 Visible" option in the customize interface can be set to nil. The
4519 visibility of headers can still be toggled on a per-message basis
4520 with the 'h' keybinding.
4522 For users that don't want to see some subset of those headers, the
4523 new "Notmuch Message Headers" variable can be customized to list
4524 only those headers that should be present in the display of a message.
4526 The Return key now toggles message visibility anywhere
4528 Previously this worked only on the first summary-line of a message.
4530 Customizable formatting of search results
4532 The user can easily customize the order, width, and formatting of
4533 the various fields in a "notmuch search" buffer. See the "Notmuch
4534 Search Result Format" section of the customize interface.
4536 Generate nicer names for search buffers when using a saved search
4538 Add a notmuch User-Agent header when sending mail from notmuch/emacs
4540 New keybinding (M-Ret) to open all collapsed messages in a thread
4545 Provide a new `NOTMUCH_SORT_UNSORTED` value for queries
4547 This can be somewhat faster when sorting simply isn't desired. For
4548 example when collecting a set of messages that will all be
4549 manipulated identically, (adding a tag, removing a tag, deleting the
4550 messages), then there's no advantage to sorting the messages by
4556 Fix to compile against GMime 2.6
4558 Previously notmuch insisted on being able to find GMime 2.4, (even
4559 though GMime 2.6 would have worked all along).
4561 Fix configure script to accept (and ignore) various standard options
4563 For example, those that the Gentoo build scripts expect configure to
4564 accept are now all accepted.
4569 A large number of new tests for the many new features
4571 Better display of output from failed tests
4573 Now shows failures with diff rather than forcing the user to gaze at
4574 complete actual and expected output looking for deviation.
4576 Notmuch 0.2 (2010-04-16)
4577 ========================
4579 This is the second release of the notmuch mail system, with actual
4580 detailed release notes this time!
4582 This release consists of a number of minor new features that make
4583 notmuch more pleasant to use, and a few fairly major bug fixes.
4585 We didn't quite hit our release target of "about a week" from the 0.1
4586 release, (0.2 is happening 11 days after 0.1), but we hope to do
4587 better for next week. Look forward to some major features coming to
4588 notmuch in subsequent releases.
4595 Better guessing of From: header
4597 Notmuch now tries harder to guess which configured address should be
4598 used as the From: line in a "notmuch reply". It will examine the
4599 Received: headers if it fails to find any configured address in To:
4600 or Cc:. This allows it to often choose the correct address even when
4601 replying to a message sent to a mailing list, and not directly to a
4604 Make "notmuch count" with no arguments count all messages
4606 Previously, it was hard to construct a search term that was
4607 guaranteed to match all messages.
4609 Provide a new special-case search term of "*" to match all messages
4611 This can be used in any command accepting a search term, such as
4612 "notmuch search '*'". Note that you'll want to take care that the
4613 shell doesn't expand * against the current files. And note that the
4614 support for "*" is a special case. It's only meaningful as a single
4615 search term and loses its special meaning when combined with any
4618 Automatically detect thread connections even when a parent message is
4621 Previously, if two or more message were received with a common
4622 parent, but that parent was not received, then these messages would
4623 not be recognized as belonging to the same thread. This is now fixed
4624 so that such messages are properly connected in a thread.
4629 Fix potential data loss in "notmuch new" with SIGINT
4631 One code path in "notmuch new" was not properly handling
4632 SIGINT. Previously, this could lead to messages being removed from
4633 the database (and their tags being lost) if the user pressed
4634 Control-C while "notmuch new" was working.
4636 Fix segfault when a message includes a MIME part that is empty
4638 Fix handling of non-ASCII characters with --format=json
4640 Previously, characters outside the range of 7-bit ASCII were
4641 silently dropped from the JSON output. This led to corrupted display
4642 of utf-8 content in the upcoming notmuch web-based frontends.
4644 Fix headers to be properly decoded in "notmuch reply"
4646 Previously, the user might see:
4648 Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
4652 Subject: Re: Rozlučka
4654 The former text is properly encoded to be RFC-compliant SMTP, will
4655 be sent correctly, and will be properly decoded by the
4656 recipient. But the user trying to edit the reply would likely be
4657 unable to read or edit that field in its encoded form.
4659 Emacs client features
4660 ---------------------
4662 Show the last few lines of citations as well as the first few lines
4664 It's often the case that the last sentence of a citation is what is
4665 being replied to directly, so the last few lines are often much more
4666 important. The number of lines shown at the beginning and end of any
4667 citation can be configured, (notmuch-show-citation-lines-prefix and
4668 notmuch-show-citation-lines-suffix).
4670 The '+' and '-' commands in the search view can now add and remove
4673 Selective bulk tagging is now possible by selecting a region of
4674 threads and then using either the '+' or '-' keybindings. Bulk
4675 tagging is still available for all threads matching the current
4676 search with the '*' binding.
4678 More meaningful buffer names for thread-view buffers
4680 Notmuch now uses the Subject of the thread as the buffer
4681 name. Previously it was using the thread ID, which is a meaningless
4684 Provide for customized colors of threads in search view based on tags
4686 See the documentation of notmuch-search-line-faces, (or us "M-x
4687 customize" and browse to the "notmuch" group within "Applications"
4688 and "Mail"), for details on how to configure this colorization.
4690 Build-system features
4691 ---------------------
4693 Add support to properly build libnotmuch on Darwin systems (OS X)
4695 Add support to configure for many standard options
4697 We include actual support for:
4699 --includedir --mandir --sysconfdir
4701 And accept and silently ignore several more:
4703 --build --infodir --libexecdir --localstatedir
4704 --disable-maintainer-mode --disable-dependency-tracking
4706 Install emacs client in "make install" rather than requiring a
4707 separate "make install-emacs"
4709 Automatically compute versions numbers between releases
4711 This support uses the git-describe notation, so a version such as
4712 0.1-144-g43cbbfc indicates a version that is 144 commits since the
4713 0.1 release and is available as git commit "43cbbfc".
4715 Add a new "make test" target to run the test suite and actually
4718 Notmuch 0.1 (2010-04-05)
4719 ========================
4721 This is the first release of the notmuch mail system.
4723 It includes the libnotmuch library, the notmuch command-line
4724 interface, and an emacs-based interface to notmuch.
4726 Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
4727 1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
4728 a performance bug that made notmuch very slow when modifying
4729 tags. This would cause distracting pauses when reading mail while
4730 notmuch would wait for Xapian when removing the "inbox" and "unread"
4731 tags from messages in a thread.
4738 indent-tabs-mode: nil