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