]> git.cworth.org Git - notmuch-wiki/blob - news/release-0.4.mdwn
news markup tunes
[notmuch-wiki] / news / release-0.4.mdwn
1 [[!meta date="2010-11-01"]]
2
3 Notmuch 0.4 (2010-11-01)
4 ========================
5
6 New command-line features
7 -------------------------
8
9 * **_`notmuch search --output=(summary|threads|messages|tags|files)`_**
10
11   This new option allows for particular items to be returned from
12   notmuch searches. The "summary" option is the default and behaves
13   just as "notmuch search" has historically behaved.
14
15   The new option values allow for thread IDs, message IDs, lists of
16   tags, and lists of filenames to be returned from searches. It is
17   expected that this new option will be very useful in shell
18   scripts. For example:
19
20             for file in $(notmuch search --output=files <search-terms>); do
21                     <operations-on> "$file"
22             done
23
24 * **_`notmuch show --format=mbox <search-specification>`_**
25
26   This new option allows for the messages matching a search
27   specification to be presented as an mbox. Specifically the "mboxrd"
28   format is used which allows for reversible quoting of lines
29   beginning with "From ". A reader should remove a single '>' from the
30   beginning of all lines beginning with one or more '>' characters
31   followed by the 5 characters "From ".
32
33 * **_`notmuch config [get|set] <section>.<item> [value ...]`_**
34
35   The new top-level "config" command allows for any value in the
36   notmuch configuration file to be queried or set to a new value. Both
37   single-valued and multi-valued items are supported, as our any
38   custom items stored in the configuration file.
39
40 * **_Avoid setting Bcc header in "notmuch reply"_**
41
42   We decided that this was a bit heavy-handed as the actual mail
43   user-agent should be responsible for setting any Bcc option. Also,
44   see below for the notmuch/emacs user-agent now setting an Fcc by
45   default rather than Bcc.
46
47 New library features
48 --------------------
49
50 * **_Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`_**
51
52   These are simply functions for querying properties of a
53   `notmuch_query_t` object.
54
55 New emacs features
56 ------------------
57
58 * **_Enable Fcc of all sent messages by default (to "sent" directory)_**
59
60   All messages sent from the emacs interface will now be saved to the
61   notmuch mail store where they will be incorporated to the database
62   by the next "notmuch new". By default, messages are saved to the
63   "sent" directory at the top-level of the mail store. This directory
64   can be customized by means of the "Notmuch Fcc Dirs" option in the
65   notmuch customize interface.
66
67 * **_Ability to all open messages in a thread to a pipe_**
68
69   Historically, the '|' keybinding allows for piping a single message
70   to an external command. Now, by prefixing this key with a prefix
71   argument, (for example, by pressing "Control-U |"), all open
72   messages in the current thread will be sent to the external command.
73
74 * **_Optional support for detecting inline patches_**
75
76   This hook is disabled by default but can be enabled with a checkbox
77   under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
78   interface. It allows for inline patches to be detected and treated
79   as if they were attachments, (with context-sensitive highlighting).
80
81 * **_Automatically tag messages as "replied" when sending a reply_**
82
83   Messages replied to within the emacs interface will now be tagged as
84   "replied". This feature can easily be customized to add or remove
85   other tags as well. For example, a user might use a tag of
86   "needs-reply" and can configure this feature to automatically remove
87   that tag when replying. See "Notmuch Message Mark Replied" in the
88   notmuch customize interface.
89
90 * **_Allow search-result color specifications to overlay each other_**
91
92   For example, one tag can specify the background color of matching
93   lines, while another can specify the foreground. With this change,
94   both settings will now be visible simultaneously, (which was not the
95   case in previous releases). See "Notmuch Search Line Faces" in the
96   notmuch customize interface.
97
98 * **_Make hidden author names still available for incremental search_**
99
100   When there is insufficient space to display all authors of a thread
101   in search results, the names of hidden authors are now still made
102   available to emacs' incremental search commands. As the user
103   searches, matching lines will temporarily expand to show the hidden
104   names.
105
106 * **_New binding of Control-TAB (works like TAB in reverse)_**
107
108   Many notmuch nodes already use TAB to navigate forward through
109   various items allowing actions, (message headers, email attachments,
110   etc.). The new Control-TAB binding operates similarly but in the
111   opposite direction.
112
113 New build-system features
114 -------------------------
115
116 * **_Various portability fixes have been applied_**
117
118   These include fixes for build failures on at least Solaris, FreeBSD,
119   and Fedora systems. We're hopeful that the notmuch code base is now
120   more portable than ever before.
121
122 * **_Arrange for libnotmuch to be found automatically after make install_**
123
124   The notmuch build system is now careful to help the user avoid
125   errors of the form "libnotmuch.so could not be found" immediately
126   after installing. This support takes two forms:
127
128             1. If the library is installed to a system directory,
129                (configured in /etc/ld.so.conf), then "make install" will
130                automatically run ldconfig.
131
132             2. If the library is installed to a non-system directory, the
133                build system adds a DR_RUNPATH entry to the final binary
134                pointing to the directory to which the library is installed.
135
136   When this support works, the user should be able to run notmuch
137   immediately after "make install", without any errors trying to find
138   the notmuch library, and without having to manually set environment
139   variables such as `LD_LIBRARY_PATH`.
140
141 * **_Check compiler/linker options before using them_**
142
143   The configure script now carefully checks that any desired
144   compilation options, (whether for enabling compiler warnings, or for
145   embedding rpath, etc.), are supported. Only supported options are
146   used in the resulting Makefile.
147
148 New test-suite features
149 -----------------------
150
151 * **_New modularization of test suite_**
152
153   Thanks to a gracious relicensing of the test-suite infrastructure
154   from the git project, notmuch now has a modular test suite. This
155   provides the ability to run individual sections of the test suite
156   rather than the whole things. It also provides better summary of
157   test results, with support for tests that are expected to fail
158   (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
159   it easy to run the test suite within valgrind (pass --valgrind to
160   notmuch-test or to any sub-script) which has been very useful.
161
162 * **_New testing of emacs interface_**
163
164   The test suite has been augmented to allow automated testing of the
165   emacs interfaces. So far, this includes basic searches, display of
166   threads, and tag manipulation. This also includes a test that a new
167   message can successfully be sent out through a (dummy) SMTP server
168   and that said message is successfully integrated into the notmuch
169   database via the FCC setting.
170
171 General bug fixes
172 -----------------
173
174 * **_Fix potential corruption of database when "notmuch new " is interrupted_**
175
176   Previously, an interruption of "notmuch new" would (rarely) result
177   in a corrupt database. The corruption would manifest itself by a
178   persistent error of the form:
179
180             document ID of 1234 has no thread ID
181
182   The message-adding code has been carefully audited and reworked to
183   avoid this sort of corruption regardless of when it is interrupted.
184
185 * **_Fix failure with extremely long message ID headers_**
186
187   Previously, a message with an extremely long message ID, (say, more
188   than 300 characters), would fail to be added to notmuch, (triggering
189   Xapian exceptions). This has now been fixed.
190
191 * **_Fix for messages with "charset=unknown-8bit"_**
192
193   Previously, messages with this charset would cause notmuch to emit a
194   GMime warning, (which would then trip up emacs or other interfaces
195   parsing the notmuch results).
196
197 * **_Fix `notmuch_query_search_threads` function to return NULL on any exception_**
198
199 * **_Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
200   fails_**
201
202   Previously, this command could confusingly report a Xapian
203   exception, yet still return an error code of 0. It now correctly
204   returns a failing error code of 1 in this case.
205
206 Emacs bug fixes
207 ---------------
208
209 * **_Fix to handle a message with a subject containing, for example "[1234]"_**
210
211   Previously, a message subject containing a sequence of digits within
212   square brackets would cause the emacs interface to mis-parse the
213   output of "notmuch search". This would result in the message being
214   mis-displayed and prevent the user from manipulating the message in
215   the emacs interface.
216
217 * **_Fix to correctly handle message IDs containing ".."_**
218
219   The emacs interface now properly quotes message IDs to avoid a
220   Xapian bug in which the ".." within a message ID would be
221   misinterpreted as a numeric range specification.
222
223 Python-binding fixes
224 --------------------
225
226 The python bindings for notmuch have been updated to work with python3.
227
228 Debian-specific fixes
229 ---------------------
230
231 * **_Fix emacs initialization so "M-x notmuch" works for users by default_**
232
233   Now, a new Debian user can immediately run "emacs -f notmuch" after
234   "apt-get install notmuch". Previously, the user would have had to
235   edit the ~/.emacs file to add "(require 'notmuch)" before this would
236   work.