]> git.cworth.org Git - notmuch-wiki/blob - news/release-0.6.mdwn
add news entry for 0.6 release
[notmuch-wiki] / news / release-0.6.mdwn
1 Notmuch 0.6 (2011-07-01)
2 =======================
3 New, general features
4 ---------------------
5 Folder-based searching
6
7   Notmuch queries can now include a search term to match the
8   directories in which mail files are stored (within the mail
9   storage). The syntax is as follows:
10
11         folder:<path>
12
13   For example, one might use things such as:
14
15         folder:spam
16         folder:2011-*
17         folder:work/todo
18
19   to match any path containing a directory "spam", "work/todo", or
20   containing a directory starting with "2011-", respectively.
21
22   This feature is particularly useful for users of delivery-agent
23   software (such as procmail or maildrop) that is filtering mail and
24   delivering it to particular folders, or users of systems such as
25   Gmail that use filesystem directories to indicate message tags.
26
27   NOTE: Only messages that are newly indexed with this version of
28   notmuch will be searchable with folder: terms. In order to enable
29   this feature for all mail, the entire notmuch index will need to be
30   rebuilt as follows:
31
32         notmuch dump > notmuch.dump
33         # Backup, then remove notmuch database ($MAIL/.notmuch)
34         notmuch new
35         notmuch restore notmuch.dump
36
37 Support for PGP/MIME
38
39   Both the command line interface and the emacs-interface have new
40   support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
41   and Jameson Graef Rollins for making this happen.
42
43 New, automatic tags: "signed" and "encrypted"
44
45   These tags will automatically be applied to messages containing
46   multipart/signed and multipart/encrypted parts.
47
48   NOTE: Only messages that are newly indexed with this version of
49   notmuch will receive these tags.
50
51 New command-line features
52 -------------------------
53 Add new "notmuch show --verify" option for signature verification
54
55   This option instruct notmuch to verify the signature of
56   PGP/MIME-signed parts.
57
58 Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
59
60   This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
61   Note that this feature currently requires gpg-agent and a passphrase entry
62   tool (e.g. pinentry-gtk or pinentry-curses).
63
64 Proper nesting of multipart parts in "notmuch show" output
65
66   MIME parts are now display with proper nesting to reflect original
67   MIME hierarchy of a message. This allows clients to correctly
68   analyze the MIME structure, (such as, for example, determining to
69   which parts a signature part applies).
70
71 Add new "notmuch show --part" option
72
73   This is a replacement for the older "notmuch part" command, (which
74   is now deprecated—it should still work as always, but is no longer
75   documented). Putting part output under "notmuch show" allows for all
76   of the "notmuch show" options to be applied when extracting a single
77   part, (such as --format=json for extracting a message part with JSON
78   formatting).
79
80 Deprecate "notmuch search-tags", (in favor of "notmuch search --output=tags *")
81
82   The "notmuch search-tags" sub-command has been redundant since the
83   addition of the --output=tags option to "notmuch search". We now
84   make that more clear by deprecating "notmuch search-tags", (dropping
85   it from the documentation). We do continue to support the old syntax
86   by translating it internally to the new call.
87
88 Performance improvements
89 ------------------------
90 Faster searches (by doing fewer searches to construct threads)
91
92   Whenever a user asks for search results as threads, notmuch first
93   performs a search for messages matching the query, then performs
94   additional searches to find other messages in the resulting threads.
95
96   Removing inefficiencies and redundancies in these secondary searches
97   results in a measured speedups of 1.5x for a typical search.
98
99 Faster searches (by doing fewer passes to gather message data)
100
101   Optimizing Xapian data access patterns (using a single pass to get
102   all message-document data rather than a pass for each data type)
103   results in a measured speedup of 1.7x for a typical search.
104
105   The benefits of this optimization combine with the preceding
106   optimization. With both in place, Austin Clements measured a speedup
107   of 2.5x for a search of all messages in his inbox (was 4.5s, now
108   1.8s). Thanks, Austin!
109
110 Faster initial indexing
111
112   More efficient indexing of new messages results in a measured
113   speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
114   rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
115
116 Make "notmuch new" faster for unchanged directories
117
118   Optimizing to not do any further examinations of sub-directories
119   when the filesystem indicates that a directory is unchanged from the
120   last "notmuch new" results in measured speedups of 8.5 for the "No
121   new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
122
123 New emacs-interface features
124 ----------------------------
125
126 Support for PGP/MIME (GnuPG)
127
128   Automatically indicate validity of signatures for multipart/signed
129   messages.  Automatically display decrypted content for
130   multipart/encrypted messages.  See the emacs variable
131   notmuch-crypto-process-mime for more information. Note that this
132   needs gpg-agent and a pinentry tool just as the command line tools.
133   Also note there is no support SMIME yet.
134
135 Output of pipe command is now displayed if pipe command fails
136
137   This is extremely useful in the common use case of piping a patch to
138   "git am". If git fails to cleanly merge the patch the error messages
139   from the failed merge are now clearly displayed to the user, (where
140   previously they were silently hidden from the user).
141
142 User-selectable From address
143
144   A user can choose which configured email addresses should be used as
145   the From address whenever composing a new message. To do so, simply
146   press C-u before the command which will open a new message. Emacs
147   will prompt for the from address to use.
148
149   The user can customize the "Notmuch Identities" setting in the
150   notmuch customize group in order to use addresses other than those in
151   the notmuch configuration file if desired.
152
153   The user can also choose to always be prompted for the from address
154   when composing a new message (without having to use C-u) by setting
155   the "Notmuch Always Prompt For Sender" option in the notmuch
156   customize group.
157
158 Hiding of repeated subjects in collapsed thread view
159
160   In notmuch-show mode, if a collapsed message has the same subject as
161   its parent, the subject is not shown.
162   
163 Automatic detection and hiding of original message in top-posted message
164
165   When a message contains a line looking something like:
166
167         ----- Original Message -----
168
169   emacs hides this and all subsequent lines as an "original message",
170   (allowing the user to click or press enter on the "original message"
171   button to display it again). This makes the handling of top-posted
172   citations work much like conventional citations.
173
174 New hooks for running code when tags are modified
175
176   Some users want to perform additional actions whenever a particular
177   tag is added/removed from a message. This could be used to, for
178   example, interface with some external spam-recognition training
179   tool. To facilitate this, two new hooks are added which can be
180   modified in the following settings of the notmuch customize group:
181
182         Notmuch Before Tag Hook
183         Notmuch After Tag Hook
184
185 New optional support for hiding some multipart/alternative parts
186
187   Many emails are sent with redundant content within a
188   multipart/alternative group (such as a text/plain part as well as a
189   text/html part). Users can configure the setting:
190
191         Notmuch Show All Multipart/Alternative Parts
192
193   to "off" in the notmuch customize group to have the interface
194   automatically hide some part alternatives (such as text/html
195   parts). This new part hiding is not configured by default yet
196   because there's not yet a simple way to re-display such a hidden
197   part if it is not actually redundant with a displayed part.
198
199 Better rendering of text/x-vcalendar parts
200
201   These parts are now displayed in a format suitable for use with the
202   emacs diary.
203
204 Avoid getting confused by Subject and Author fields with newline characters
205
206   Replacing all characters with ASCII code less than 32 with a question mark.
207
208 Cleaner display of From line in email messages (remove double quotes,
209 and drop "name" if it's actually just a repeat of the email address).
210
211 Vim interface improvements
212 --------------------------
213 Felipe Contreras provided a number of updates for the vim interface:
214
215   * Using sendmail directly rather than mailx,
216   * Implementing archive in show view
217   * Add support to mark as read in show and search views
218   * Add delete commands
219   * Various cleanups.
220
221 Bindings improvements
222 ---------------------
223 Ruby bindings are now much more complete
224
225   Including QUERY.sort, QUERY.to_s, MESSAGE.maildir_flags_to_tags,
226   MESSAGE.tags_to_maildir_flags, and MESSAGE.get_filenames
227
228 * Python bindings have been upodated and extended
229   (docs online at http://packages.python.org/notmuch/)
230
231   New bindings:
232   - Message().get_filenames(),
233   - Message().tags_to_maildir_flags(),Message().maildir_flags_to_tags()
234   - list(Threads()) and list(Messages) works now
235
236   - Message().__cmp__() and __hash__()
237   These allow, for example:
238         if msg1 == msg2: ...
239
240   As well as set arithmetic on Messages():
241
242         s1, s2= set(msgs1), set(msgs2)
243         s1.union(s2)
244         s2 -= s1
245
246    Removed:
247      - len(Messages()) as it exausted the iterator.
248        Use len(list(Messages())) or
249        Query.count_messages() to get the length.
250
251 Added initial Go bindings in bindings/go
252
253 New build-system features
254 -------------------------
255 Added support for building in a directory other than the source directory
256
257   This can be used with the widely-supported idiom of simply running
258   the configure script from some other directory:
259
260         mkdir build
261         cd build
262         ../configure
263         make
264
265 Fix to save configure options for future, implicit runs of configure
266
267   When a user updates the source (such as with "git pull") calling
268   "make" may cause an automatic re-run of the configure script. When
269   this happens, the configure script will automatically be called with
270   the same options the user originally passed in the most-recent
271   manual invocation of configure.
272
273 New test-suite feature
274 ----------------------
275 Binary for bash for running test suite now located via PATH.
276
277   The notmuch test suite requires a fairly recent version of bash (>=
278   bash 4). As some systems supply an older version of bash at
279   /bin/bash, the test suite is now updated to search $PATH to locate
280   the bash binary. This allows users of systems with old /bin/bash to
281   simply install bash >= 4 somewhere on $PATH before /bin and then use
282   the test suite.
283
284 Support for testing output with a trailing newline.
285
286   Previously, some tests would fail to notice a difference in the
287   presence/absence of a trailing newline in a program output, (which
288   has led to bugs in the past). Now, carefully-written tests (using
289   test_expect_equal_file rather than test_expect_equal) will detect
290   any change in the presence/absence of a trailing newline. Many tests
291   are updated to take advantage of this.
292
293 Avoiding accessing user's $HOME while running test suite
294
295   The test suite now carefully creates its own HOME directory. This
296   allows the test suite to be run with no existing HOME directory, (as
297   some build systems apparently do), and avoids test-suite differences
298   due to configuration files in the users HOME directory.
299
300
301 General bug fixes
302 -----------------
303 Output *all* files for "notmuch search --output=files"
304
305   For the cases where multiple files have the same Message ID,
306   previous versions of notmuch would output only one such file. This
307   command is now fixed to correctly output all files.
308
309 Fixed spurious search results from "overlapped" indexing of addresses
310
311   This fixed a bug where a search for:
312
313         to:user@elsewhere.com
314
315   would incorrectly match a message sent:
316
317         To: user@example,com, someone@elsewhere.com
318
319 Fix --output=json when search has no results
320
321   A bug present since notmuch 0.4 had caused searches with no results
322   to produce an invalid json object. This is now fixed to cleanly
323   return a valid json object representing an empty array "[]" as
324   expected.
325
326 fix the automatic detection of the From address for "notmuch reply"
327 from the Received headers in some cases.
328
329 Fix core dump on DragonFlyBSD due to -1 return value from
330 sysconf(_SC_GETPW_R_SIZE_MAX).
331
332 Cleaned up several memory leaks
333
334 Eliminated a few, rare segmentation faults and a double-free.
335
336 Fix libnotmuch library to only export notmuch API functions
337
338   Previous release of the notmuch library also exported some Xapian
339   C++ exception type symbols. These were never part of the library
340   interface and were never intended to be exported.
341
342 Emacs-interface bug fixes
343 -------------------------
344 Display any unexpected output or errors from "notmuch search" invocations
345
346   Previously any misformatted output or trailing error messages were
347   silently ignored. This output is now clearly displayed. This fix was
348   very helpful in identifying and fixing the bug described below.
349
350 Fix bug where some threads would be missing from large search results
351
352   When a search returned a "large" number of results, the emacs
353   interface was incorrectly dropping one thread every time the output
354   of the "notmuch search" process spanned the emacs read-buffer. This
355   is now fixed.
356
357 Avoid re-compression of .gz files (and similar) when saving attachment
358
359   Emacs was being too clever for its own good and trying to
360   re-compress pre-compressed .gz files when saving such attachments
361   (potentially corrupting the attachment). The emacs interface is
362   fixed to avoid this bug.
363
364 Fix hiding of a message when a previously-hidden citation is visible
365
366   Previously the citation would remain visible in this case. This is
367   fixed so that hiding a message hides all parts.