News
Notmuch 0.38.3 (2024-03-09)
CLI
Fix a bug in configuration code that caused the notmuch command to erroneously report "Error: could not locate database" under some circumstances.
Notmuch 0.38.2 (2023-12-01)
Library
Make sorting of string maps lexicographic on (key,value) pairs. This avoids some test failures due to variation in message property output order.
Emacs
Avoid extra separators after the last address in notmuch-emacs-mua
.
Notmuch 0.38.1 (2023-10-26)
CLI
Report parse errors in config files.
Emacs
Fix image toggling for Emacs >= 29.1.
notmuch-mutt
Fix syntax error in script.
Notmuch 0.38 (2023-09-12)
General
Support relative lastmod queries (see notmuch-sexp-queries(7) and notmuch-search-terms(7) for details).
Support indexing of designated attachments as text (see notmuch-config(1) for details).
CLI
Add options --offset and --limit to notmuch-show(1).
Emacs
New commands notmuch-search-edit-search and notmuch-tree-edit-search.
Introduce notmuch-tree-outline-mode.
Some compatibility fixes for Emacs 29. At least one issue (hiding images) remains in 0.38.
Support completion when piping to external command.
Fix regression in updating tag display introduced by 0.37.
Library
Fix bug creating database when database.path is not set.
Incremental performance improvements for message deletion.
Catch Xapian exceptions when deleting messages.
Sync removed message properties to the database.
Replace use of thread-unsafe Query::MatchAll in the infix query parser.
Notmuch-Mutt
Be more careful when clearing the results directory.
Ruby
Use database_open_with_config
, and provide compatible path search
semantics.
Bugfix for query.get_sort
Test Suite
Support testing installed version of notmuch.
Adapt to some breaking changes in glib handling of init files.
Replace OpenPGP key used in test suite.
Performance Tests
Update signatures for performance test corpus.
Notmuch 0.37 (2022-08-21)
Library
Fix uninitialized field in message objects.
Improve exception handling and error propagation for message objects.
Sexp Queries
Add one sided lastmod ranges for sexp queries.
Expand macro parameters inside regex and wildcard modifiers.
Command Line Interface
notmuch help
now works for external commands.
NOTMUCH_CONFIG
is now passed to external commands and hooks.
Promote the development tool nmbug
to a user facing tool
notmuch-git
. See notmuch-git(1) for details.
Emacs
The function notmuch-mua-mail
now moves point depending on the
provided arguments.
Restrict what mime types are inlined in replies and on refresh.
The functions in notmuch-query.el are now obsolete and may be removed in a future version of Notmuch.
Add some controls for lazy display of message bodies (See "Dealing with large messages and threads" in the notmuch-emacs documentation).
Allow the user to select (with '%') a different duplicate message file to display.
Use message-dont-reply-to-names
in notmuch-message-mode
.
Support custom header-line format for notmuch-show mode.
Notmuch 0.36 (2022-04-25)
Library
Add the sexp
prefix to the infix (traditional) query parser. This
allows specific subqueries to be parsed by the sexp parser (with
appropriate quoting). See notmuch-search-terms(7)
for details.
Add another heuristic to regexp fields to prevent phrase parsing of bracketed sub-expressions.
Command Line Interface
Envelope from ("From ") headers are now escaped as X-Envelope-From: in
input to notmuch-insert
. This prevents creating mbox files when
calling notmuch-insert
from e.g. postfix
.
Python (CFFI) Bindings
Use the config_pairs
API in ConfigIterator. This returns all
matching key-value pairs, not just those that happen to be stored in
the database.
Documentation
Reorganize documentation for notmuch-config
. Add a few links from
other man pages.
Emacs
Bind the usual undo key sequences to new command "notmuch-tag-undo". This allows transparent undo of tagging operations.
Tests
Fix smime.4 with newer gmime. Unset XDG_DATA_HOME
and MAILDIR
for tests.
New add-on tool: notmuch-web
The new devel/ tool notmuch-web
is a very thin web client. It
supports a full search interface for one user: there is no facility
for multiple users provided today. See the notmuch-web README file
for more information.
Be careful about running it on a network-connected system: it will expose a web interface that requires no authentication but exposes your mail store.
Notmuch 0.35 (2022-02-06)
Library
Implement the date
and lastmod
fields in the S-expression parser.
Ignore trailing /
for pathnames in both query parsers.
Rename configuration option built_with.sexpr_query
to
built_with.sexp_queries
.
Do not assume a default mail root in split (e.g. XDG) configurations.
Fix some small memory leaks in notmuch_database_open_with_config
.
CLI
Improve handling of leading/trailing punctuation and space for configuration lists.
Only ignore .notmuch
at the top level in notmuch new
.
Optionally show extra headers in notmuch show
. See
show.extra_headers
in notmuch-config(1).
Emacs
Drop C-TAB
binding in hello mode, document backtab
.
Fix visual glitch in search mode by running notmuch-search-hook
lazily.
Don't add space to completion candidates, improves compatibility with third party completion frameworks.
Make citation formatting more robust against whitespace.
Use --excludes=false
when generating the 'All tags' section.
Use cached copy of message body for Fcc
, avoiding variant bodies for
signed and/or encrypted messages.
Add notmuch-logo.svg and use it in notmuch-hello view, replacing the .png version.
Make header line in show buffers optional.
Add customizable names for search buffers.
Build
Fix out-of-tree build for python-cffi
bindings.
Rearrange position of {C,CXX,CPP,LD}FLAGS, prevent some clashes with installed version of notmuch.
Ignore more configure options.
Test Suite
Replace some uses of gdb
in the test suite with LD_PRELOAD
based
shims.
Use --with-colons
for gpgsm, fix compatibility with newer gnupg.
Python bindings
Add matched
property to message objects.
Users are reminded that the old python bindings in bindings/python are deprecated; this will probably be the last major release that ships them.
Completion
Use database.mail_root
for path completion in bash/zsh.
Notmuch 0.34.3 (2022-01-09)
Library
Do not crash when presented with a .notmuch directory without a xapian/ subdirectory.
Python Bindings (notmuch2)
Database constructor now searches for configuration by default. Pass
config=Database.CONFIG.EMPTY
to disable.
The Message.replies()
method now returns OwnedMessage objects, to
prevent certain memory de-allocation errors.
Fix for importing notmuch2
module when building bindings
documentation.
Notmuch 0.34.2 (2021-12-09)
Library
Fix a bug that wrongly resolved conflict between the database_path
parameter to notmuch_database_open_with_config
and configuration
item database.path
in favour of the latter.
Python Bindings (notmuch2)
When building the documentation for the notmuch2
python module,
import from the built module, not a system wide installed one.
The notmuch2.Database constructor now uses the library function
notmuch_database_open_with_config
to support the same configuration
and database location options as the library does.
Fix some unprintable exception objects.
Notmuch 0.34.1 (2021-11-03)
Library
Fix for deallocation and nulling of output parameter for notmuch_database{open_with,create_with,load}config when errors occur. This change fixes a potential use-after-free bug that has been present since 0.32. This release also improves the documentation of status returns for the same 3 functions.
Notmuch 0.34 (2021-10-20)
General
An optional new s-expression based query parser is available if
notmuch is built with the sfsexp
library. See
notmuch-sexp-queries(7) for syntax, and use notmuch config get
built_with.sexpr_query
to check if notmuch is compiled with
s-expression query support.
CLI
Support multiple Delivered-To
headers in notmuch-reply(1).
Emacs
Functions are now allowed in notmuch-search-result-format
.
Improvements to unthreaded view on large threads.
Tolerate bad/missing working directory for most commands.
Allow customization of tree drawing symbols in notmuch-tree mode.
Notmuch 0.33.2 (2021-09-30)
Tests
Improve reliability of T355-smime by changing gpgsm initialization.
Notmuch 0.33.1 (2021-09-10)
General
Replace the fully-qualified-domain-name of the host with "localhost" in the default email address. This should fix two flaky subtests in T590-libconfig.
Notmuch 0.33 (2021-09-03)
Library
Correct documentation about transactions.
Add a configurable automatic commit of transactions. See
database.autocommit
in notmuch-config(1).
Document the algorithm used to find a database.
CLI
Define format version 5, which supports sorting the output of notmuch-show.
Emacs
notmuch
no longer sets mail-user-agent
on load. To restore the
previous behaviour of using notmuch to send mail by default, customize
mail-user-agent
to notmuch-user-agent
.
notmuch-company
now works in org-msg
.
Improve the display of messages from long threads in unthreaded mode.
Prefer email addresses over User ID when showing valid signatures.
Define a new face notmuch-jump-key
.
New commands in notmuch-tree view: notmuch-tree-filter
and notmuch-tree-filter-by-tag
.
Honour notmuch-show-text/html-blocked-images
when using w3m
to
render html.
Support toggling sort order in notmuch-tree mode.
Ruby
Memory management of allocated notmuch objects (database, messages, etc...) is now done via the Ruby GC. This removes all constraints on the order of object destruction. Database close and destroy are split, following an old library API change.
Vim
Respect excluded tags when showing a thread.
Documentation
Fix doc build for Sphinx 4.0.
Improve the markup and linking of the documentation.
Notmuch 0.32.3 (2021-08-17)
Library
Restore location of database via MAILDIR
environment variable, which
was broken in 0.32.
Bump libnotmuch minor version to match the documentation in
notmuch.h
.
Correct documentation for deprecated database opening functions to point out that they (still) do not load configuration information.
CLI
Restore "notmuch config get built_with.*", which was broken in 0.32.
Notmuch 0.32.2 (2021-06-27)
General
Fix a bug from 2017 that can add duplicate thread-id terms to message documents.
CLI
Fix small memory leak in notmuch new.
Emacs
Add (require 'seq)
for seq-some
.
Documentation
Fix man page build for Sphinx 4.x. Fix variable name in emacs docs.
Tests
Fix backup creation in perf-test/T00-new
. Check openssl
prerequisite in add_gpgsm_home
.
Notmuch 0.32.1 (2021-05-15)
General
Restore handling of relative values for database.path
that was
broken by 0.32. Extend this handling to database.mail_root
,
database.backup_dir
, and database.hook_dir
.
Reload certain metadata from Xapian database in notmuch_database_reopen. This fixes a bug when adding messages to the database in a pre-new hook.
Fix default of $HOME/mail
for database.path
. In release 0.32, this
default worked only in "notmuch config".
Emacs
Restore the dynamically bound variables tag-changes
and query
in
in notmuch-before-tag-hook
and notmuch-after-tag-hook
.
Add notmuch-jump-key
face to fontify keys in notmuch-jump
and
related functions. To ensure backward compatibility, the new face
inherits from minibuffer-prompt
.
Notmuch 0.32 (2021-05-02)
General
This release includes a significant overhaul of the configuration
management facilities for notmuch. The previous distinction between
configuration items that can be modified via plain text configuration
files and those that must be set in the database via the "notmuch
config" subcommand is gone, and all configuration items can be set in
both ways. The external configuration file overrides configuration
items in the database. The location of database, hooks, and
configuration files is now more flexible, with several new
configuration variables. In particular XDG locations are now supported
as fallbacks for database, configuration and hooks. For more
information see notmuch-config(1)
.
Library
To support the new configuration facilities, several functions and constants have been added to the notmuch API. Most notably:
notmuch_database_create_with_config
notmuch_database_open_with_config
notmuch_database_load_config
notmuch_config_get
A previously requested API change is that notmuch_database_reopen
is
now exposed (and generalized).
The previously severe slowdowns from large numbers calls to notmuch_database_remove_message or notmuch_message_delete in one session has been fixed.
As always, the canonical source of API documentation is lib/notmuch.h
,
or the doxygen formatted documentation in notmuch(3)
.
CLI
The notmuch config set
subcommand gained a --database
argument to
specify that the database should be updated, rather than a config file.
The speed of notmuch new
and notmuch reindex
in dealing with large
numbers of mail file deletions is significantly improved.
Emacs
Completion related updates include: de-duplicating tags offered for completion, use the actual initial input in address completion, allow users to opt out of notmuch address completion, and do not force Ido when prompting for senders.
Some keymaps used to contain bindings for unnamed commands. These lambda expressions have been replaced by named commands (symbols), to ease customization.
Lexical binding is now used in all notmuch-emacs libraries.
Fix bug in calling notmuch-mua-mail
with a non-nil RETURN-ACTION.
Removed, inlined or renamed functions and variables:
notmuch-address-locate-command,
notmuch-documentation-first-line, notmuch-folder,
notmuch-hello-trim, notmuch-hello-versions => notmuch-version,
notmuch-remove-if-not, notmuch-search-disjunctive-regexp,
notmuch-sexp-eof, notmuch-split-content-type, and
notmuch-tree-button-activate.
Keymaps are no longer fset, which means they need to be referred to in define-key directly (without quotes). If your Emacs configuration has a keybinding like:
(define-key 'notmuch-show-mode-map "7" 'foo)
you should change it to:
(define-key notmuch-show-mode-map "7" 'foo)
Notmuch 0.31.4 (2021-02-18)
Library
Fix include bug triggered by glib 2.67.
Test
Fix race condition in T568-lib-thread.
Notmuch 0.31.3 (2020-12-25)
Bindings
Fix for exclude tags in notmuch2 bindings.
Build
Portability update for T360-symbol-hiding.
Library
Fix for memory error in notmuch_database_get_config_list.
Notmuch 0.31.2 (2020-11-08)
Build
Catch one more occurrence of "version" in the build system, which caused the file to be regenerated in the release tarball.
Notmuch 0.31.1 (2020-11-08)
Library
Fix a memory initialization bug in notmuch_database_get_config_list.
Build
Rename file 'version' to 'version.txt'. The old file name conflicted with a C++ header for some compilers.
Replace use of coreutils realpath
in configure.
Notmuch 0.31 (2020-09-05)
Emacs
Notmuch now supports Emacs 27.1. You may need to set
mml-secure-openpgp-sign-with-sender
and/or
mml-secure-smime-sign-with-sender
to continue signing messages.
The minimum supported major version of GNU Emacs is now 25.1.
Add support for moving between threads after notmuch-tree-from-search-thread.
New notmuch-unthreaded
mode (added in Notmuch 0.30)
Unthreaded view is a mode where each matching message is shown on a separate line.
The main key entries to unthreaded view are
'u' enter a query to view in unthreaded mode (works in hello, search, show and tree mode)
'U' view the current query in unthreaded mode (works from search, show and tree)
Saved searches can also specify that they should open in unthreaded view.
Currently it is not possible to specify the sort order: it will always be newest first.
Notmuch-Mutt
The shell pipeline executed by notmuch-mutt, which symlinked matched files to a maildir for mutt to access is replaced with internal perl processing. This search operation is now more portable, and somewhat faster.
Library
Improve exception handling in the library. This should largely eliminate terminations inside the library due to uncaught exceptions or internal errors. No doubt there are a few uncovered code paths still; please report them as bugs.
Add notmuch_message_get_flag_st
and
notmuch_message_has_maildir_flag_st
, and deprecate the existing
non-status providing versions.
Move memory de-allocation from notmuch_database_close
to
notmuch_database_destroy
.
Handle relative filenames in notmuch_database_index_file
, as
promised in the documentation.
Python Bindings
Documentation for the python bindings is merged into the main
sphinx-doc documentation tree. The merged documentation can be built
with e.g. make sphinx-html
Dependencies
We now support building notmuch against Xapian 1.5 (the current development version).
Test Suite
Test suite fixes for compatibility with Emacs 27.1.
Build System
Man pages are now compressed reproducibly.
Notmuch 0.30 (2020-07-10)
S/MIME
Handle S/MIME (PKCS#7) messages -- one-part signed messages, encrypted messages, and multilayer messages. Treat them symmetrically to OpenPGP messages. This includes handling protected headers gracefully.
If you're using Notmuch with S/MIME, you currently need to configure gpgsm appropriately.
Mixed-up MIME Repair
Detect and automatically repair a common form of message mangling created by Microsoft Exchange (see index.repaired=mixedup in notmuch-properties(7)).
Protected Headers
Avoid indexing the legacy-display part of an encrypted message that has protected headers (see index.repaired=skip-protected-headers-legacy-display in notmuch-properties(7)).
Python
Drop support for python2, focus on python3.
Introduce new CFFI-based python bindings in the python module named "notmuch2". Officially deprecate (but still support) the older "notmuch" module.
Dependencies
Support for Xapian 1.2 is removed. The minimum supported version of Xapian is now 1.4.0.
Notmuch 0.29.3 (2019-11-27)
General
Fix for use-after-free in notmuch_config_list_{key,val}.
Fix for double close of file in notmuch-dump.
Debian
Drop python2 support from shipped debian packaging.
Notmuch 0.29.2 (2019-10-19)
General
Fix for file descriptor leak when opening gzipped mail files. Thanks to James Troup for the bug report and the fix.
Notmuch 0.29.1 (2019-06-11)
Build
Fix for installation failure with configure --without-emacs
.
Notmuch 0.29 (2019-06-07)
General
Add "body:" field to allow searching for terms that occur only in the message body. Users will need to reindex their mail to take advantage of this feature.
Add support for indexing user specified headers (e.g. List-Id). See notmuch-config(1) for details. This requires reindexing after changing the set of headers to be indexed.
Fix bug for searching in some headers for Xapian keywords in quoted strings.
Add support for gzip compressed mail messages (/not/ multi-message
mboxes); e.g. gzip -9 $MAIL/archive/giant-message && notmuch new
should work. Note that maildir flag syncing for gzipped messages is
currently untested.
Notmuch is now capable of indexing, searching and rendering cryptographically-protected Subject: headers of the form produced by Enigmail and K-9 mail in encrypted messages.
Command Line Interface
notmuch show
now supports --body=false
and --include-html
with
--format=text
.
Fix several performance problems with notmuch reindex
.
notmuch show
and notmuch reply
now emit per-message cryptographic
status in their json and sexp output formats. See devel/schemata for
more details about what is included there. This status includes
information about cryptographic protections for the Subject header.
Emacs
Optionally check for missing attachments in outgoing messages (see
function notmuch-mua-attachment-check
).
Bind B
to browse URLs in current message.
Bind g
to refresh the current notmuch buffer.
Editing a message as new now includes an FCC header.
Forwarded messages are now tagged as +forwarded (customizable).
Add references header to link forwarded message to thread of original message.
The minimum supported major version of Emacs is now 24.
Support for GNU Emacs older than 25.1 is deprecated with this release, and may be removed in a future release.
Notmuch-emacs documentation is somewhat expanded. More contributions are very welcome.
Build System
Notmuch release tarballs are now compressed with xz
.
We now provide conventional detached signatures of the release
tarballs in addition to the signed sha256sum
files.
Dependencies
Support for GMime 2.6 is removed. The minimum supported version of GMime is now 3.0.3. GMime also needs to have been compiled with cryptography support.
Test Suite
If either GNU parallel or moreutils parallel is installed, the tests in the test suite will now be run in parallel (one per available core). This can be disabled with NOTMUCH_TEST_SERIALIZE=1.
Notmuch 0.28.4 (2019-05-05)
Command line interface
Fix a spurious error when using notmuch show --raw
on messages whose
size is a multiple of the internal buffer size.
Notmuch 0.28.3 (2019-03-05)
Library
Fix a bug with the internal data structure _notmuch_string_map_t
used
by message properties.
Build System
Serialize calls to sphinx-build to avoid race condition.
Notmuch 0.28.2 (2019-02-17)
Emacs
Invoke gpg with --batch and --no-tty.
Python Bindings
Fix documentation build with Python 3.7. Note that Python >= 3.3 is now needed to build this documentation.
Notmuch 0.28.1 (2019-02-01)
Build System
configure
no longer uses the special variable BASH, as this causes
problems on systems where /bin/sh is bash.
Notmuch 0.28 (2018-10-12)
General
Improve threading
The threading algorithm has been updated to consider all references, not just the heuristically chosen parent (e.g. when that parent is not in the database). The heuristic for choosing a parent message has also been updated to again consider the In-Reply-To header, if it looks sensible. Re-indexing might be needed to take advantage of the latter change.
Handle mislabelled Windows-1252 parts
Messages that contain Windows-1252 are apparently frequently mislabelled as ISO 8859-1. Use GMime functionality to apply the correct encoding for such messages.
Command Line Interface
Support relative database paths
Database paths (i.e. parameters to notmuch config set
database.path
) without a leading /
are now interpreted relative
to $HOME of the invoking user.
Emacs
Improve stderr handling
Add a real sentinel process to clean up stderr buffer. This is needed on e.g. macOS.
Call notmuch-mua-send-hook
hooks when sending a message
This hook was documented, but not functional for a very long time.
Completion
The zsh completion has been updated to cover most of the notmuch CLI. Internally it uses regexp searching, so needs at least Notmuch 0.24.
Build System
The build system now installs notmuch-mutt and notmuch-emacs-mua with absolute shebangs, following the conventions of most Linux distributions.
Test Suite
Fix certain tests that were failing with GMime 2.6. Users are reminded that support for versions of GMime before 3.0.3 has been deprecated since Notmuch 0.25.
Notmuch 0.27 (2018-06-13)
General
Add support for thread:{} queries
Queries of the form thread:{foo} and thread:{bar}
match threads
containing (possibly distinct) messages matching foo and bar. See
notmuch-search-terms(7)
for details.
Command Line Interface
Add the --full-scan option to notmuch new
This option disables mtime based optimization of scanning for new mail.
Add new --decrypt=stash option for notmuch show
This facilitates a workflow for encrypted messages where message cleartext are indexed on first read, but the user's decryption key does not have to be available during message receipt.
Documentation
An initial manual for notmuch-emacs
is now installed by default (in
info
format).
Dependencies
As of this release, support for versions of Xapian before 1.4.0 is deprecated, and may disappear in a future release of notmuch.
Notmuch 0.26.2 (2018-04-28)
Library Changes
Work around Xapian bug with get_mset(0,0, x)
This causes aborts in _notmuch_query_count_documents
on
e.g. Fedora 28. The underlying bug is fixed in Xapian commit
f92e2a936c1592, and will be fixed in Xapian 1.4.6.
Make thread indexing more robust against reference loops
Choose a thread root by date in case of reference loops. Fix a
related abort in notmuch show
.
Notmuch 0.26.1 (2018-04-02)
Library Changes
Bump the library minor version. This should have happened in 0.26, but better late than never.
Notmuch 0.26 (2018-01-09)
Command Line Interface
Support for re-indexing existing messages
There is a new subcommand, notmuch reindex
, which re-indexes all
messages matching supplied search terms. This permits users to
change the way specific messages are indexed.
Note that for messages with multiple variants in the message archive, the recorded Subject: of may change upon reindexing, depending on the order in which the variants are indexed.
Improved error reporting in notmuch new
Give more details when reporting certain Xapian exceptions.
Support maildir synced tags in new.tags
Tags draft
, flagged
, passed
, and replied
are now supported
in new.tags
. The tag unread
is still special in the presence of
maildir syncing, and will be added for files in new/
regardless of
the setting of new.tags
.
Support /regex/ in new.ignore
Files and directories may be ignored based on regular expressions.
Allow notmuch insert --folder=""
This inserts into the top level folder.
Strip trailing '/' from folder path for notmuch insert
This prevents a potential problem with duplicated database records.
New option --output=address for notmuch address
Make notmuch show
more robust against deleting duplicate files
The option --decrypt now takes an explicit argument
The --decrypt option to notmuch show
and notmuch reply
now takes
an explicit argument. If you were used to invoking notmuch show
--decrypt
, you should switch to notmuch show --decrypt=true
.
Boolean and keyword arguments now take a --no-
prefix
Encrypted Mail
Indexing cleartext of encrypted e-mails
It's now possible to include the cleartext of encrypted e-mails in the notmuch index. This makes it possible to search your encrypted e-mails with the same ease as searching cleartext. This can be done on a per-message basis by passing --decrypt=true to indexing commands (new, insert, reindex), or by default by running "notmuch config set index.decrypt true".
Encrypted messages whose cleartext is indexed will typically also
have their session keys stashed as properties associated with the
message. Stashed session keys permit rapid rendering of long
encrypted threads, and disposal of expired encryption-capable keys.
If for some reason you want cleartext indexing without stashed
session keys, use --decrypt=nostash for your indexing commands (or
run "notmuch config set index.decrypt nostash"). See index.decrypt
in notmuch-config(1) for more details.
Note that stashed session keys permit reconstruction of the cleartext of the encrypted message itself, and the contents of the index are roughly equivalent to the cleartext as well. DO NOT USE this feature without considering the security of your index.
Emacs
Guard against concurrent searches in notmuch-tree
Use make-process when available
This allows newer Emacs to separate stdout and stderr from the notmuch command without using temporary files.
Library Changes
Indexing files with duplicate message-id
Files with duplicate message-id's are now indexed, and searchable via terms and phrases. There are known issues related to presentation of results and regular-expression search, but in principle no mail file should be completely unsearchable now.
New functions to count files
Two new functions in the libnotmuch API:
notmuch_message_count_files
, and notmuch_thread_get_total_files
.
New function to remove properties
A new function was added to the libnotmuch API to make it easier to
drop all properties with a common pattern:
notmuch_message_remove_all_properties_with_prefix
Change of return value of notmuch_thread_get_authors
In certain corner cases, notmuch_thread_get_authors
previously
returned NULL. This has been replaced by an empty string, since the
possibility of NULL was not documented.
Transition notmuch_database_add_message
to notmuch_database_index_file
When indexing an e-mail message, the new
notmuch_database_index_file
function is the preferred form, and
the old notmuch_database_add_message
is deprecated. The new form
allows passing a set of options to the indexing engine, which the
operator may decide to change from message to message.
Test Suite
Out-of-tree builds
The test suite now works properly with out-of-tree builds, i.e. with separate source and build directories. The --root option to tests has been dropped. The same can now be achieved more reliably using out-of-tree builds.
Python Bindings
Python bindings specific Debian packaging is removed
The bindings have been build by the top level Debian packaging for a
long time, and bindings/python/debian
has bit-rotted.
Open mail files in binary mode when using Python 3
This avoids certain encoding related crashes under Python 3.
Add python bindings for notmuch_database_{get,set}_config*
Optional decrypt_policy
flag is available for notmuch.database().index_file()
nmbug
nmbug's internal version increases to 0.3 in this notmuch release. User-facing changes with this notmuch release:
- Accept failures to unset
core.worktree
inclone
, which allows nmbug to be used with Git 2.11.0 and later. - Auto-checkout in
clone
if it wouldn't clobber existing content, which makes the initial clone more convenient. - Only error for invalid diff lines in
tags/
, which allows forREADME
s and similar in nmbug repositories.
Documentation
New man page: notmuch-properties(7)
This new page to the manual describes common conventions for how properties are used by libnotmuch, the CLI, and associated programs. External projects that use properties are encouraged to claim their properties and conventions here to avoid collisions.
Notmuch 0.25.3 (2017-12-08)
Emacs
Extend mitigation (disabling handling x-display in text/enriched) for
Emacs bug #28350 to Emacs versions before 24.4 (i.e. without
advice-add
).
Command Line Interface
Correctly report userid validity. Fix test suite failure for GMime >= 3.0.3. This change raises the minimum supported version of GMime 3.x to 3.0.3.
Notmuch 0.25.2 (2017-11-05)
Command Line Interface
Fix segfault in notmuch-show crypto handling when compiled against GMime 2.6; this was a regression in 0.25.
General
Support for GMime before 3.0 is now deprecated, and will be removed in a future release.
Notmuch 0.25.1 (2017-09-11)
Emacs
Disable handling x-display in text/enriched messages. Mitigation for Emacs bug #28350.
Notmuch 0.25 (2017-07-25)
General
Add regexp searching for mid, paths, and tags.
Skip HTML tags when indexing
In particular this avoids indexing large inline images.
Command Line Interface
Bash completion is now installed to /usr/share by default.
Allow space as separator for keyword arguments.
Emacs
Support for stashing message timestamp in show and tree views
Invoking notmuch-show-stash-date
with a prefix argument
stashes the unix timestamp of the current message instead of
the date string.
Don't use 'function' as variable name, workaround emacs bug 26406.
Library Changes
Add workaround for date parsing of bad input in older GMime
In certain circumstances, older GMime libraries could return negative numbers when parsing syntactically invalid dates.
Replace deprecated functions with status returning versions
API of notmuch_query{search,count}{messages,threads} has changed. notmuch_query_add_tag_exclude now returns a status value.
Add support for building against GMime 3.0.
Rename libutil.a to libnotmuch_util.a.
libnotmuch SONAME is incremented to libnotmuch.so.5.
Notmuch 0.24.2 (2017-06-01)
Command Line Interface
Fix output from notmuch dump --include=properties
to not include tags.
Emacs
Fix filename stashing in tree view.
Notmuch 0.24.1 (2017-04-01)
General
Fix regressions in non-regexp search for from:
and subject:
The regexp search code in 0.24 introduced a regression in the handling of empty queries and wildcards. These are both corrected in this release.
Command Line Interface
Fix several memory leaks in notmuch show
Update NEWS for 0.24 to mention schema changes
Fix bug in dump header
The previous version of the dump header failed to mention the inclusion of tags. This fix bumps the version number of the dump format to 3. There are no other changes to the format.
Library Changes
Fix a read-after-free in the library.
Notmuch 0.24 (2017-03-12)
General
Regular expression searches supported for from:
and subject:
This requires recent Xapian (1.4+) See notmuch-search-terms(7) for details.
Command Line Interface
Run external notmuch-
prefixed commands as subcommands
You can now add your own notmuch-
prefixed commands in PATH, and
have notmuch run them as if they were notmuch commands. See the
notmuch(1)
man page for details
New default output format to 3
See devel/schemata for details. Users of the structured output
format are reminded of the --format-version
argument to notmuch
show
and notmuch search
which can prevent breakage when the
default format changes.
Emacs
Postpone and resume messages in notmuch-message-mode
(composition)
Notmuch now has built in support for postponing, saving and resuming messages. The default bindings are C-x C-s to save a draft, C-c C-p to postpone a draft (save and exit compose buffer), and "e" in show or tree view to resume.
Draft messages are tagged with notmuch-draft-tags
(draft by
default) so you may wish to add that to the excluded tags list. When
saving a previously saved draft message the earlier draft gets
tagged deleted.
Note that attachments added before postponing will be included as they were when you postponed in the final message.
Address Completion
It is now possible to save the list of address completions for
notmuch's internal completion between runs of emacs. This makes the
first calls to address completion much better and faster. For
privacy reasons it is disabled by default, to enable set or
customize notmuch-address-save-filename
.
Tag jump menu
It is now possible to configure tagging shortcuts (with an interface
like notmuch jump). For example (by default) k u will remove the
unread tag, and k s will add a tag "spam" and remove the inbox
tag. Pressing k twice will do the reverse operation so, for example,
k k s removes the spam tag and adds the inbox tag. See the customize
variable notmuch-tagging-keys
for more information.
Refresh all buffers
It is now possible to refresh all notmuch buffers to reflect the
current state of the database with a single command, M-=
.
Stop display of application/*
parts
By default gnus displays all application/*
parts such as
application/zip in the message buffer. This has several undesirable
effects for notmuch (security, triggering errors etc). Notmuch now
overrides this and does not display them by default. If you have
customized mm-inline-override-types
then we assume you know what
you want and do not interfere; if you do want to stop the display of
application/*
add application/*
to your customization. If you want
to allow application/*
then set mm-inline-override-types
to
"non/existent".
Small change in the api for notmuch-search-tag
When notmuch-search-tag
is called non-interactively and the region
is set, then it only tags the threads in the region. (Previously it
only tagged the current thread.)
Bugfix for sending messages with very long headers
Previously emacs didn't fold very long headers when sending which could cause the MTA to refuse to send the message. This makes sure it does fold any long headers so the message is RFC compliant.
notmuch emacs-mua
command installed with the Emacs interface
We've carried a notmuch-emacs-mua
script in the source tree for
quite some time. It can be used to launch the Notmuch Emacs
interface from the command line in many different ways. Starting
with this release, it will be installed with the Emacs
interface. With the new external subcommand support, the script
transparently becomes a new notmuch command. See the
notmuch-emacs-mua(1)
man page for details.
Notmuch Emacs desktop integration
The desktop integration file will now be installed with the Notmuch
Emacs interface, adding a Notmuch menu item and configuration to
allow the user to set up Notmuch Emacs as the mailto:
URL handler.
Library changes
notmuch_query_count_messages
is now non-destructive
Internally the implementation of excludes has changed to make this possible.
Improved handling of DatabaseModifiedError
Previously uncaught exceptions reading message metadata are now handled.
Notmuch 0.23.7 (2017-02-28)
Test Suite
Drop use of gpgconf --create-socketdir. Move $GNUPGHOME to /tmp.
It turns out the hardcoded use of /run/user in gpg doesn't work out that well in some environments. The more low tech fix is to move all of $GNUPGHOME to somewhere where we can control the length of the paths.
Notmuch 0.23.6 (2017-02-27)
Command Line Interface
Fix read-after-free bug in notmuch new
.
Test Suite
Use gpgconf --create-socketdir if available.
GnuPG has a facility to use sockets in /run or /var/run to avoid problems with long socket paths, but this is not enabled by default for GNUPGHOME other than $HOME/.gnupg. Enable it, if possible.
Notmuch 0.23.5 (2017-01-09)
Build system
Fix quoting bug in configure. This had introduced a RUNPATH into the notmuch binary in cases where it was not not needed.
Notmuch 0.23.4 (2016-12-24)
Command Line Interface
Improve error handling in notmuch insert
Database lock errors no longer prevent message file delivery to the
filesystem. Certain errors during notmuch insert
most likely to
be temporary return EX_TEMPFAIL.
Emacs
Restore autoload cookie for notmuch-search.
Notmuch 0.23.3 (2016-11-27)
Command Line Interface
Treat disappearing files during notmuch new as non-fatal.
Test Suite
Fix incompatibility (related to signature size) with gnupg 2.1.16.
Notmuch 0.23.2 (2016-11-20)
Emacs
Fix notmuch-interesting-buffer and notmuch-cycle-notmuch-buffers.
notmuch-tree-mode and notmuch-message-mode buffers are now
considered interesting by notmuch-interesting-buffer
and
notmuch-cycle-notmuch-buffers
.
Restore compatibility with Emacs 23.
Notmuch support for Emacs 23 is now deprecated.