]> git.cworth.org Git - notmuch-wiki/blob - news/release-0.18.mdwn
News for release 0.38.3
[notmuch-wiki] / news / release-0.18.mdwn
1 [[!meta date="2014-05-06"]]
2
3 Notmuch 0.18 (2014-05-06)
4 =========================
5
6 Overview
7 --------
8
9 This new release includes some enhancements to searching for messages
10 by filesystem location (`folder:` and `path:` prefixes under *General*
11 below).  Saved searches in *Emacs* have also been enhanced to allow
12 distinct search orders for each one.  Another enhancement to the
13 *Emacs* interface is that replies to encrypted messages are now
14 encrypted, reducing the risk of unintentional information disclosure.
15 The default dump output format has changed to the more robust
16 `batch-tag` format. The previously deprecated parsing of single
17 message mboxes has been removed. For detailed release notes, see
18 below.
19
20 General
21 -------
22
23 ### The `folder:` search prefix now requires an exact match
24
25 The `folder:` prefix has been changed to search for email messages
26 by the exact, case sensitive maildir or MH folder name. Wildcard
27 matching (`folder:foo*`) is no longer supported. The new behaviour
28 allows for more accurate mail folder based searches, makes it
29 possible to search for messages in the top-level folder, and should
30 lead to less surprising results than the old behaviour. Users are
31 advised to see the `notmuch-search-terms` manual page for details,
32 and review how the change affects their existing `folder:` searches.
33
34 ### There is a new `path:` search prefix
35
36 The new `path:` search prefix complements the `folder:` prefix. The
37 `path:` prefix searches for email messages that are in particular
38 directories within the mail store, optionally recursively using a
39 special syntax. See the `notmuch-search-terms` manual page for
40 details.
41
42 ### Notmuch database upgrade due to `folder:` and `path:` changes
43
44 The above mentioned changes to the `folder:` prefix and the addition
45 of `path:` prefix require a Notmuch database upgrade. This will be
46 done automatically, without prompting on the next time `notmuch new`
47 is run after the upgrade. The upgrade is not reversible, and the
48 upgraded database will not be readable by older versions of
49 Notmuch. As a safeguard, a database dump will be created in the
50 `.notmuch` directory before upgrading.
51
52 Library changes
53 ---------------
54
55 ### Notmuch database upgrade
56
57 The libnotmuch consumers are reminded to handle database upgrades
58 properly, either by relying on running `notmuch new`, or checking
59 `notmuch_database_needs_upgrade()` and calling
60 `notmuch_database_upgrade()` as necessary. This has always been the
61 case, but in practise there have been no database upgrades in any
62 released version of Notmuch before now.
63
64 ### Support for indexing mbox files has been dropped
65
66 There has never been proper support for mbox files containing
67 multiple messages, and the support for single-message mbox files has
68 been deprecated since Notmuch 0.15. The support has now been
69 dropped, and all mbox files will be rejected during indexing.
70
71 ### Message header parsing changes
72
73 Notmuch previously had an internal parser for message headers. The
74 parser has now been dropped in favour of letting GMime parse both
75 the headers and the message MIME structure at the same pass. This is
76 mostly an internal change, but the GMime parser is stricter in its
77 interpretation of the headers. This may result in messages with
78 slightly malformed message headers being now rejected.
79
80 Command-Line Interface
81 ----------------------
82
83 ### `notmuch dump` now defaults to `batch-tag` format
84
85 The old format is still available with `--format=sup`.
86
87 ### `notmuch new` has a --quiet option
88
89 This option suppresses the progress and summary reports.
90
91 ### `notmuch insert` respects maildir.synchronize_flags config option
92
93 Do not synchronize tags to maildir flags in `notmuch insert` if the
94 user does not want it.
95
96 ### The commands set consistent exit status codes on failures
97
98 The cli commands now consistently set exit status of 1 on failures,
99 except where explicitly otherwise noted. The notable exceptions are
100 the status codes for format version mismatches for commands that
101 support formatted output.
102
103 ### Bug fix for checking configured new.tags for invalid tags
104
105 `notmuch new` and `notmuch insert` now check the user configured
106 new.tags for invalid tags, and refuse to apply them, similar to
107 `notmuch tag`. Invalid tags are currently the empty string and tags
108 starting with `-`.
109
110 Emacs Interface
111 ---------------
112
113 ### Init file
114
115 If the file pointed by new variable `notmuch-init-file` (typically
116 `~/.emacs.d/notmuch-config.el`) exists, it is loaded at the end of
117 `notmuch.el`. Users can put their personal notmuch emacs lisp based
118 configuration/customization items there instead of filling
119 `~/.emacs` with these.
120
121 ### Changed format for saved searches
122
123 The format for `notmuch-saved-searches` has changed, but old style
124 saved searches are still supported. The new style means that a saved
125 search can store the desired sort order for the search, and it can
126 store a separate query to use for generating the count notmuch
127 shows.
128
129 The variable is fully customizable and any configuration done
130 through customize should *just work*, with the additional options
131 mentioned above. For manual customization see the documentation for
132 `notmuch-saved-searches`.
133
134 IMPORTANT: a new style notmuch-saved-searches variable will break
135 previous versions of notmuch-emacs (even search will not work); to
136 fix remove the customization for notmuch-saved-searches.
137
138 If you have a custom saved search sort function (not unsorted or
139 alphabetical) then the sort function will need to be
140 modified. Replacing (car saved-search) by (notmuch-saved-search-get
141 saved-search :name) and (cdr saved-search) by
142 (notmuch-saved-search-get saved-search :query) should be sufficient.
143
144 ### The keys of `notmuch-tag-formats` are now regexps
145
146 Previously, the keys were literal strings.  Customized settings of
147 `notmuch-tag-formats` will continue to work as before unless tags
148 contain regexp special characters like `.` or `*`.
149
150 ### Changed tags are now shown in the buffer
151
152 Previously tag changes made in a buffer were shown immediately. In
153 some cases (particularly automatic tag changes like marking read)
154 this made it hard to see what had happened (e.g., whether the
155 message had been unread).
156
157 The changes are now shown explicitly in the buffer: by default
158 deleted tags are displayed with red strike-through and added tags
159 are displayed underlined in green (inverse video is used for deleted
160 tags if the terminal does not support strike-through).
161
162 The variables `notmuch-tag-deleted-formats` and
163 `notmuch-tag-added-formats`, which have the same syntax as
164 `notmuch-tag-formats`, allow this to be customized.
165
166 Setting `notmuch-tag-deleted-formats` to `'((".*" nil))` and
167 `notmuch-tag-added-formats` to `'((".*" tag))` will give the old
168 behavior of hiding deleted tags and showing added tags identically
169 to tags already present.
170
171 ### Version variable
172
173 The new, build-time generated variable `notmuch-emacs-version` is used
174 to distinguish between notmuch cli and notmuch emacs versions.
175 The function `notmuch-hello-versions` (bound to 'v' in notmuch-hello
176 window) prints both notmuch cli and notmuch emacs versions in case
177 these differ from each other.
178 This is especially useful when using notmuch remotely.
179
180 ### Ido-completing-read initialization in Emacs 23
181
182 `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless
183 it is initialized. Defadvice-based *Ido* initialization is defined
184 for these Emacs versions.
185
186 ### Bug fix for saved searches with newlines in them
187
188 Split lines confuse `notmuch count --batch`, so we remove embedded
189 newlines before calling notmuch count.
190
191 ### Bug fixes for sender identities
192
193 Previously, Emacs would rewrite some sender identities in unexpected
194 and undesirable ways.  Now it will use identities exactly as
195 configured in `notmuch-identities`.
196
197 ### Replies to encrypted messages will be encrypted by default
198
199 In the interest of maintaining confidentiality of communications,
200 the Notmuch Emacs interface now automatically adds the mml tag to
201 encrypt replies to encrypted messages. This should make it less
202 likely to accidentally reply to encrypted messages in plain text.
203
204 ### Reply pushes mark before signature
205
206 We push mark and set point on reply so that the user can easily cut
207 the quoted text. The mark is now pushed before the signature, if
208 any, instead of end of buffer so the signature is preserved.
209
210 ### Message piping uses the originating buffer's working directory
211
212 `notmuch-show-pipe-message` now uses the originating buffer's
213 current default directory instead of that of the `*notmuch-pipe*`
214 buffer's.
215
216 nmbug
217 -----
218
219 nmbug adds a `clone` command for setting up the initial repository and
220 uses `@{upstream}` instead of `FETCH_HEAD` to track upstream changes.
221
222 The `@{upstream}` change reduces ambiguity when fetching multiple
223 branches, but requires existing users update their `NMBGIT`
224 repository (usually `~/.nmbug`) to distinguish between local and
225 remote-tracking branches.  The easiest way to do this is:
226
227   1. If you have any purely local commits (i.e. they aren't in the
228      nmbug repository on nmbug.tethera.net), push them to a remote
229      repository.  We'll restore them from the backup in step 4.
230   2. Remove your `NMBGIT` repository (e.g. `mv .nmbug .nmbug.bak`).
231   3. Use the new `clone` command to create a fresh clone:
232
233         nmbug clone https://nmbug.notmuchmail.org/git/nmbug-tags.git
234
235   4. If you had local commits in step 1, add a remote for that
236      repository and fetch them into the new repository.