]> git.cworth.org Git - notmuch-wiki/blob - news/release-0.19.mdwn
supmua.org -> sup-heliotrope.github.io
[notmuch-wiki] / news / release-0.19.mdwn
1 [[!meta date="2014-11-14"]]
2
3 Notmuch 0.19 (2014-11-14)
4 =========================
5
6 Overview
7 --------
8
9 This release improves the reliability of `notmuch dump` and the error
10 handling for `notmuch insert`. The new `notmuch address` command is
11 intended to make searching for email addresses more convenient. At the
12 library level the revised handling of missing messages fixes at least
13 one bug in threading. The release also includes several interface
14 improvements to the emacs interface, most notably the ability to bind
15 keyboard shortcuts to saved searches.
16
17 Command-Line Interface
18 ----------------------
19
20 ### Stopped `notmuch dump` failing if someone writes to the database
21
22 The dump command now takes the write lock when running. This
23 prevents other processes from writing to the database during the
24 dump which would cause the dump to fail. Note, if another notmuch
25 process already has the write lock the dump will not start, so
26 script callers should still check the return value.
27
28 ### `notmuch insert` requires succesful message indexing for success status
29
30 Previously the `notmuch insert` subcommand indicated success even if
31 the message indexing failed, as long as the message was delivered to
32 file system. This could have lead to delivered messages missing
33 tags, etc. `notmuch insert` is now more strict, also requiring
34 succesful indexing for success status. Use the new `--keep` option
35 to revert to the old behaviour (keeping the delivered message file
36 and returning success even if indexing fails).
37
38 ### `notmuch insert` has gained support for `post-insert` hook
39
40 The new `post-insert` hook is run after message delivery, similar to
41 `post-new`. There's also a new option `notmuch insert --no-hooks` to
42 skip the hook. See the notmuch-hooks(1) man page for details.
43
44 ### `notmuch deliver` is deprecated
45
46 With this release we believe that `notmuch insert` has reached
47 parity with `notmuch deliver`. We recommend that all users of
48 `notmuch deliver` switch to `notmuch insert` as the former is
49 currently unmaintained.
50
51 ### `notmuch search` now supports `--duplicate=N` option with `--output=messages`
52
53 Complementing the `notmuch search --duplicate=N --output=files`
54 options, the new `--duplicate=N --output=messages` combination
55 limits output of message IDs to messages matching search terms that
56 have at least `N` files associated with them.
57
58 ### Added `notmuch address` subcommand
59
60 This new subcommand searches for messages matching the given search
61 terms, and prints the addresses from them. Duplicate addresses are
62 filtered out. The `--output` option controls which of the following
63 information is printed: sender addresses, recipient addresses and
64 count of duplicate addresses.
65
66 Emacs Interface
67 ---------------
68
69 ### Use the `j` key to access saved searches from anywhere in notmuch
70
71 `j` is now globally bound to `notmuch-jump`, which provides fast,
72 interactive keyboard shortcuts to saved searches.  For example,
73 with the default saved searches `j i` from anywhere in notmuch will
74 bring up the inbox.
75
76 ### Improved handling of the unread tag
77
78 Notmuch now marks an open message read (i.e., removes the unread
79 tag) if point enters the message at any time in a show buffer
80 regardless of how point got there (mouse click, cursor command, page
81 up/down, notmuch commands such as n,N etc). This fixes various
82 anomalies or bugs in the previous handling. Additionally it is
83 possible to customize the mark read handling by setting
84 `notmuch-show-mark-read-function` to a custom function.
85
86 ### Expanded default saved search settings
87
88 The default saved searches now include several more common searches,
89 as well as shortcut keys for `notmuch-jump`.
90
91 ### Improved `q` binding in notmuch buffers
92
93 `q` will now bury rather than kill a notmuch search, show or tree
94 buffer if there are multiple windows showing the buffer. If only a
95 single window is showing the buffer, it is killed.
96
97 ### `notmuch-show-stash-mlarchive-link-alist` now supports functions
98
99 Some list archives may use a more complicated scheme for referring
100 to messages than just concatenated URL and message ID. For example,
101 patchwork requires a query to translate message ID to a patchwork
102 patch ID. `notmuch-show-stash-mlarchive-link-alist` now supports
103 functions to better cover such cases. See the help documentation for
104 the variable for details.
105
106 Library changes
107 ---------------
108
109 ### Introduced database version 3 with support for "database features."
110
111 Features are independent aspects of the database schema.
112 Representing these independently of the database version number will
113 let us evolve the database format faster and more incrementally,
114 while maintaining better forwards and backwards compatibility.
115
116 ### Library users are no longer required to call `notmuch_database_upgrade`
117
118 Previously, library users were required to call
119 `notmuch_database_needs_upgrade` and `notmuch_database_upgrade`
120 before using a writable database.  Even the CLI didn't get this
121 right, and it is no longer required.  Now, individual APIs may
122 return `NOTMUCH_STATUS_UPGRADE_REQUIRED` if the database format is
123 too out of date for that API.
124
125 ### Library users can now abort an atomic section by closing the database
126
127 Previously there was no supported way to abort an atomic section.
128 Callers can now simply close the database, and any outstanding
129 atomic section will be aborted.
130
131 ### Add return status to `notmuch_database_close` and `notmuch_database_destroy`
132
133 ### Bug fixes and performance improvements for thread linking
134
135 The database now represents missing-but-referenced messages ("ghost
136 messages") similarly to how it represents regular messages.  This
137 enables an improved thread linking algorithm that performs better
138 and fixes a bug that sometimes prevented notmuch from linking
139 messages into the same thread.
140
141 nmbug
142 -----
143
144 The Perl script has been translated to Python; you'll need Python 2.7
145 or anything from the 3.x line.  Most of the user-facing interface is
146 the same, but `nmbug help` is now `nmbug --help`, and the following nmbug
147 commands have slightly different interfaces: `archive`, `commit`,
148 `fetch`, `log`, `pull`, `push`, and `status`.  For details on the
149 new interface for a given command, run `nmbug COMMAND --help`.
150
151 nmbug-status
152 ------------
153
154 `nmbug-status` can now optionally load header and footer templates
155 from the config file.  Use something like:
156
157     {
158       "meta": {
159         "header": "<!DOCTYPE html>\n<html lang="en">\n...",
160         "footer": "</body></html>",
161          ...
162       },
163       ...
164     },
165
166 Python Bindings
167 ---------------
168
169 ### Add support for `notmuch_query_add_tag_exclude`
170
171 Build System
172 ------------
173
174 The notmuch binaries and libraries are now build with debugging symbols
175 by default.  Users concerned with disk space should change the
176 defaults when configuring or use the strip(1) command.