]> git.notmuchmail.org Git - notmuch/blob - NEWS
NEWS: News for 0.15.2
[notmuch] / NEWS
1 Notmuch 0.15.2 (2013-02-17)
2 ===========================
3
4 Build fixes
5 -----------
6
7 Update dependencies to avoid problems when building in parallel.
8
9 Internal test framework changes
10 -------------------------------
11
12 Adjust Emacs test watchdog mechanism to cope with `process-attributes`
13 being unimplimented.
14
15 Notmuch 0.15.1 (2013-01-24)
16 =========================
17
18 Internal test framework changes
19 -------------------------------
20
21 Set a default value for TERM when running tests. This fixes certain
22 build failures in non-interactive environments.
23
24 Notmuch 0.15 (2013-01-18)
25 =========================
26
27 General
28 -------
29
30 Date range search support
31
32   The `date:` prefix can now be used in queries to restrict the results
33   to only messages within a particular time range (based on the Date:
34   header) with a range syntax of `date:<since>..<until>`. Notmuch
35   supports a wide variety of expressions in `<since>` and
36   `<until>`. Please refer to the `notmuch-search-terms(7)` manual page
37   for details.
38
39 Empty tag names and tags beginning with "-" are deprecated
40
41   Such tags have been a frequent source of confusion and cause
42   (sometimes unresolvable) conflicts with other syntax.  notmuch tag
43   no longer allows such tags to be added to messages.  Removing such
44   tags continues to be supported to allow cleanup of existing tags,
45   but may be removed in a future release.
46
47 Command-Line Interface
48 ----------------------
49
50 `notmuch new` no longer chokes on mboxes
51
52   `notmuch new` now rejects mbox files containing more than one
53   message, rather than treating the file as one giant message.
54
55 Support for single message mboxes is deprecated
56
57   For historical reasons, `notmuch new` will index mbox files
58   containing a single message; however, this behavior is now
59   officially deprecated.
60
61 Fixed `notmuch new` to skip ignored broken symlinks
62
63   `notmuch new` now correctly skips symlinks if they are in the
64   ignored files list.  Previously, it would abort when encountering
65   broken symlink, even if it was ignored.
66
67 New dump/restore format and tagging interface
68
69   There is a new `batch-tag` format for dump and restore that is more
70   robust, particularly with respect to tags and message-ids containing
71   whitespace.
72
73   `notmuch tag` now supports the ability to read tag operations and
74   queries from an input stream, in a format compatible with the new
75   dump/restore format.
76
77 Bcc and Reply-To headers are now available in notmuch show json output
78
79   The `notmuch show --format=json` now includes "Bcc" and "Reply-To" headers.
80   For example notmuch Emacs client can now have these headers visible
81   when the headers are added to the `notmuch-message-headers` variable.
82
83 CLI callers can now request a specific output format version
84
85   `notmuch` subcommands that support structured output now support a
86   `--format-version` argument for requesting a specific version of the
87   structured output, enabling better compatibility and error handling.
88
89 `notmuch search` has gained a null character separated text output format
90
91   The new --format=text0 output format for `notmuch search` prints
92   output separated by null characters rather than newline
93   characters. This is similar to the find(1) -print0 option, and works
94   together with the xargs(1) -0 option.
95
96 Emacs Interface
97 ---------------
98
99 Removal of the deprecated `notmuch-folders` variable
100
101   `notmuch-folders` has been deprecated since the introduction of saved
102   searches and the notmuch hello view in notmuch 0.3. `notmuch-folders`
103   has now been removed. Any remaining users should migrate to
104   `notmuch-saved-searches`.
105
106 Visibility of MIME parts can be toggled
107
108   Each part of a multi-part MIME email can now be shown or hidden
109   using the button at the top of each part (by pressing RET on it or
110   by clicking).  For emails with multiple alternative formats (e.g.,
111   plain text and HTML), only the preferred format is shown initially,
112   but other formats can be shown using their part buttons.  To control
113   the behavior of this, see
114   `notmuch-multipart/alternative-discouraged` and
115   `notmuch-show-all-multipart/alternative-parts`.
116
117   Note notmuch-show-print-message (bound to '#' by default) will print
118   all parts of multipart/alternative message regardless of whether
119   they are currently hidden or shown in the buffer.
120
121 Emacs now buttonizes mid: links
122
123   mid: links are a standardized way to link to messages by message ID
124   (see RFC 2392).  Emacs now hyperlinks mid: links to the appropriate
125   notmuch search.
126
127 Handle errors from bodypart insertions
128
129   If displaying the text of a message in show mode causes an error (in
130   the `notmuch-show-insert-part-*` functions), notmuch no longer cuts
131   off thread display at the offending message.  The error is now
132   simply displayed in place of the message.
133
134 Emacs now detects version mismatches with the notmuch CLI
135
136   Emacs now detects and reports when the Emacs interface version and
137   the notmuch CLI version are incompatible.
138
139 Improved text/calendar content handling
140
141   Carriage returns in embedded text/calendar content caused insertion
142   of the calendar content fail. Now CRs are removed before calling icalendar
143   to extract icalendar data. In case icalendar extraction fails an error
144   is thrown for the bodypart insertion function to deal with.
145
146 Disabled coding conversions when reading in `with-current-notmuch-show-message`
147
148   Depending on the user's locale, saving attachments containing 8-bit
149   data may have performed an unintentional encoding conversion,
150   corrupting the saved attachment.  This has been fixed by making
151   `with-current-notmuch-show-message` disable coding conversion.
152
153 Fixed errors with HTML email containing images in Emacs 24
154
155   Emacs 24 ships with a new HTML renderer that produces better output,
156   but is slightly buggy.  We work around a bug that caused it to fail
157   for HTML email containing images.
158
159 Fixed handling of tags with unusual characters in them
160
161   Emacs now handles tags containing spaces, quotes, and parenthesis.
162
163 Fixed buttonization of id: links without quote characters
164
165   Emacs now correctly buttonizes id: links where the message ID is not
166   quoted.
167
168 `notmuch-hello` refresh point placement improvements
169
170   Refreshing the `notmuch-hello` buffer does a better job of keeping
171   the point where it was.
172
173 Automatic tag changes are now unified and customizable
174
175   All the automatic tag changes that the Emacs interface makes when
176   reading, archiving, or replying to messages, can now be
177   customized. Any number of tag additions and removals is supported
178   through the `notmuch-show-mark-read`, `notmuch-archive-tags`, and
179   `notmuch-message-replied-tags` customization variables.
180
181 Support for stashing the thread id in show view
182
183   Invoking `notmuch-show-stash-message-id` with a prefix argument
184   stashes the (local and database specific) thread id of the current
185   thread instead of the message id.
186
187 New add-on tool: notmuch-pick
188 -----------------------------
189
190 The new contrib/ tool `notmuch-pick` is an experimental threaded message
191 view for the emacs interface. Each message is one line in the results
192 and the thread structure is shown using UTF-8 box drawing characters
193 (similar to Mutt's threaded view). It comes between search and show in
194 terms of amount of output and can be useful for viewing both single
195 threads and multiple threads. See the notmuch-pick README file for
196 further details and installation.
197
198 Portability
199 -----------
200
201 notmuch now builds on OpenBSD.
202
203 Internal test framework changes
204 -------------------------------
205
206 The emacsclient binary is now user-configurable
207
208   The test framework now accepts TEST_EMACSCLIENT in addition to
209   TEST_EMACS for configuring the emacsclient to use.  This is
210   necessary to avoid using an old emacsclient with a new emacs, which
211   can result in buggy behavior.
212
213 Notmuch 0.14 (2012-08-20)
214 =========================
215
216 General bug fixes
217 -----------------
218
219 Maildir tag synchronization
220
221   Maildir flag-to-tag synchronization now applies only to messages in
222   maildir-like directory structures.  Previously, it applied to any
223   message that had a maildir "info" part, which meant it could
224   incorrectly synchronize tags for non-maildir messages, while at the
225   same time failing to synchronize tags for newly received maildir
226   messages (typically causing new messages to not receive the "unread"
227   tag).
228
229 Command-Line Interface
230 ----------------------
231
232   The deprecated positional output file argument to `notmuch dump` has
233   been replaced with an `--output` option. The input file positional
234   argument to `notmuch restore` has been replaced with an `--input`
235   option for consistency with dump.  These changes simplify the syntax
236   of dump/restore options and make them more consistent with other
237   notmuch commands.
238
239 Emacs Interface
240 ---------------
241
242 Search results now get re-colored when tags are updated
243
244 The formatting of tags in search results can now be customized
245
246   Previously, attempting to change the format of tags in
247   `notmuch-search-result-format` would usually break tagging from
248   search-mode.  We no longer make assumptions about the format.
249
250 Experimental support for multi-line search result formats
251
252   It is now possible to embed newlines in
253   `notmuch-search-result-format` to make individual search results
254   span multiple lines.
255
256 Next/previous in search and show now move by boundaries
257
258   All "next" and "previous" commands in the search and show modes now
259   move to the next/previous result or message boundary.  This doesn't
260   change the behavior of "next", but "previous" commands will first
261   move to the beginning of the current result or message if point is
262   inside the result or message.
263
264 Search now uses the JSON format internally
265
266   This should address problems with unusual characters in authors and
267   subject lines that could confuse the old text-based search parser.
268
269 The date shown in search results is no longer padded before applying
270 user-specified formatting
271
272   Previously, the date in the search results was padded to fixed width
273   before being formatted with `notmuch-search-result-format`.  It is
274   no longer padded.  The default format has been updated, but if
275   you've customized this variable, you may have to change your date
276   format from `"%s "` to `"%12s "`.
277
278 The thread-id for the `target-thread` argument for `notmuch-search` should
279 now be supplied without the "thread:" prefix.
280
281 Notmuch 0.13.2 (2012-06-02)
282 ===========================
283
284 Bug-fix release
285 ---------------
286
287 Update `contrib/notmuch-deliver` for API changes in 0.13. This fixes a
288 compilation error for this contrib package.
289
290 Notmuch 0.13.1 (2012-05-29)
291 ===========================
292
293 Bug-fix release
294 ---------------
295
296 Fix inserting of UTF-8 characters from *text/plain* parts in reply
297
298   While notmuch gained ability to insert content from other than *text/plain*
299   parts of email whenever *text/plain* parts are not available (notably
300   HTML-only emails), replying to mails that do have *text/plain* the
301   non-ASCII characters were incorrectly decoded. This is now fixed.
302
303 `notmuch_database_get_directory` and
304 `notmuch_database_find_message_by_filename` now work on read-only
305 databases
306
307   Previously, these functions attempted to create directory documents
308   that didn't exist and would return an error or abort when given a
309   read-only database.  Now they no longer create directory documents
310   and simply return a `NULL` object if the directory does not exist,
311   as documented.
312
313 Fix compilation of ruby bindings
314
315   Revert to dynamic linking, since the statically linked bindings did
316   not work well.
317
318 Notmuch 0.13 (2012-05-15)
319 =========================
320
321 Command-Line Interface
322 ----------------------
323
324 JSON reply format
325
326   `notmuch reply` can now produce JSON output that contains the headers
327   for a reply message and full information about the original message
328   begin replied to. This allows MUAs to create replies intelligently.
329   For example, an MUA that can parse HTML might quote HTML parts.
330
331   Calling notmuch reply with `--format=json` imposes the restriction that
332   only a single message is returned by the search, as replying to
333   multiple messages does not have a well-defined behavior. The default
334   retains its current behavior for multiple message replies.
335
336 Tag exclusion
337
338   Tags can be automatically excluded from search results by adding them
339   to the new `search.exclude_tags` option in the Notmuch config file.
340
341   This behaviour can be overridden by explicitly including an excluded
342   tag in your query, for example:
343
344         notmuch search $your_query and tag:$excluded_tag
345
346   Existing users will probably want to run `notmuch setup` again to add
347   the new well-commented [search] section to the configuration file.
348
349   For new configurations, accepting the default setting will cause the
350   tags "deleted" and "spam" to be excluded, equivalent to running:
351
352         notmuch config set search.exclude_tags deleted spam
353
354 Raw show format changes
355
356   The output of show `--format=raw` has changed for multipart and
357   message parts.  Previously, the output was a mash of somewhat-parsed
358   headers and transfer-decoded bodies.  Now, such parts are reproduced
359   faithfully from the original source.  Message parts (which includes
360   part 0) output the full message, including the message headers (but
361   not the transfer headers).  Multipart parts output the part as
362   encoded in the original message, including the part's headers.  Leaf
363   parts, as before, output the part's transfer-decoded body.
364
365 Listing configuration items
366
367   The new `config list` command prints out all configuration items and
368   their values.
369
370 Emacs Interface
371 ---------------
372
373 Changes to tagging interface
374
375   The user-facing tagging functions in the Emacs interface have been
376   normalized across all notmuch modes.  The tagging functions are now
377   notmuch-search-tag in search-mode, and notmuch-show-tag in
378   show-mode.  They accept a string representing a single tag change,
379   or a list of tag changes.  See 'M-x describe-function notmuch-tag'
380   for more information.
381
382   NOTE: This breaks compatibility with old tagging functions, so user
383   may need to update in custom configurations.
384
385 Reply improvement using the JSON format
386
387   Emacs now uses the JSON reply format to create replies. It obeys
388   the customization variables message-citation-line-format and
389   message-citation-line-function when creating the first line of the
390   reply body, and it will quote HTML parts if no text/plain parts are
391   available.
392
393 New add-on tool: notmuch-mutt
394 -----------------------------
395
396 The new contrib/ tool `notmuch-mutt` provides Notmuch integration for
397 the Mutt mail user agent. Using it, Mutt users can perform mail
398 search, thread reconstruction, and mail tagging/untagging without
399 leaving Mutt.  notmuch-mutt, formerly distributed under the name
400 `mutt-notmuch` by Stefano Zacchiroli, will be maintained as a notmuch
401 contrib/ from now on.
402
403 Library changes
404 ---------------
405
406 The API changes detailed below break binary and source compatibility,
407 so libnotmuch has been bumped to version 3.0.0.
408
409 The function `notmuch_database_close` has been split into
410 `notmuch_database_close` and `notmuch_database_destroy`
411
412   This makes it possible for long running programs to close the xapian
413   database and thus release the lock associated with it without
414   destroying the data structures obtained from it.
415
416 `notmuch_database_open`, `notmuch_database_create`, and
417 `notmuch_database_get_directory` now return errors
418
419   The type signatures of these functions have changed so that the
420   functions now return a `notmuch_status_t` and take an out-argument for
421   returning the new database object or directory object.
422
423 Go bindings changes
424 -------------------
425
426 Go 1 compatibility
427
428   The go bindings and the `notmuch-addrlookup` utility are now
429   compatible with go 1.
430
431 Notmuch 0.12 (2012-03-20)
432 =========================
433
434 Command-Line Interface
435 ----------------------
436
437 Reply to sender
438
439   `notmuch reply` has gained the ability to create a reply template
440   for replying just to the sender of the message, in addition to reply
441   to all. The feature is available through the new command line option
442   `--reply-to=(all|sender)`.
443
444 Mail store folder/file ignore
445
446   A new configuration option, `new.ignore`, lets users specify a
447   ;-separated list of file and directory names that will not be
448   searched for messages by `notmuch new`.
449
450   NOTE: *Every* file/directory that goes by one of those names will
451   be ignored, independent of its depth/location in the mail store.
452
453 Unified help and manual pages
454
455   The notmuch help command now runs man for the appropriate page.  If
456   you install notmuch somewhere "unusual", you may need to update
457   MANPATH.
458
459 Manual page for notmuch configuration options
460
461   The notmuch CLI configuration file options are now documented in the
462   notmuch-config(1) manual page in addition to the configuration file
463   itself.
464
465 Emacs Interface
466 ---------------
467
468 Reply to sender
469
470   The Emacs interface has, with the new CLI support, gained the
471   ability to reply to sender in addition to reply to all. In both show
472   and search modes, 'r' has been bound to reply to sender, replacing
473   reply to all, which now has key binding 'R'.
474
475 More flexible and consistent tagging operations
476
477   All tagging operations ('+', '-', '*') now accept multiple tags with
478   '+' or '-' prefix, like '*' operation in notmuch-search view before.
479
480   '*' operation (`notmuch-show-tag-all`) is now available in
481   notmuch-show view.
482
483   `notmuch-show-{add,remove}-tag` functions no longer accept tag
484   argument, `notmuch-show-tag-message` should be used instead.  Custom
485   bindings using these functions should be updated, e.g.:
486
487         (notmuch-show-remove-tag "unread")
488
489   should be changed to:
490
491         (notmuch-show-tag-message "-unread")
492
493 Refreshing the show view ('=' by default) no longer opens or closes messages
494
495   To get the old behavior of putting messages back in their initial
496   opened/closed state, use a prefix argument, e.g., 'C-u ='.
497
498 Attachment buttons can be used to view or save attachments.
499
500   When the cursor is on an attachment button the key 's' can be used
501   to save the attachment, the key 'v' to view the attachment in the
502   default mailcap application, and the key 'o' prompts the user for an
503   application to use to open the attachment. By default Enter or mouse
504   button 1 saves the attachment but this is customisable (option
505   Notmuch Show Part Button Default Action).
506
507 New functions
508
509   `notmuch-show-stash-mlarchive-link{,-and-go}` allow stashing and
510   optionally visiting a URI to the current message at one of a number
511   of Mailing List Archives.
512
513 Fix MML tag quoting in replies
514
515   The MML tag quoting fix of 0.11.1 unintentionally quoted tags
516   inserted in `message-setup-hook`. Quoting is now limited to the
517   cited message.
518
519 Show view archiving key binding changes
520
521   The show view archiving key bindings 'a' and 'x' now remove the
522   "inbox" tag from the current message only (instead of thread), and
523   move to the next message. At the last message, 'a' proceeds to the
524   next thread in search results, and 'x' returns to search
525   results. The thread archiving functions are now available in 'A' and
526   'X'.
527
528 Support text/calendar MIME type
529
530   The text/calendar MIME type is now supported in addition to
531   text/x-vcalendar.
532
533 Generate inline patch fake attachment file names from message subject
534
535   Use the message subject to generate file names for the inline patch
536   fake attachments. The names are now similar to the ones generated by
537   'git format-patch' instead of just "inline patch". See "Notmuch Show
538   Insert Text/Plain Hook" in the notmuch customize interface.
539
540 Enable `notmuch-search-line-faces` by default
541
542   Make the `notmuch-search-line-faces` functionality more discoverable
543   for new users by showing "unread" messages bold and "flagged"
544   messages blue by default in the search view.
545
546 Printing Support
547
548   notmuch-show mode now has simple printing support, bound to '#' by
549   default. You can customize the variable notmuch-print-mechanism.
550
551 Library changes
552 ---------------
553
554 New functions
555
556   `notmuch_query_add_tag_exclude` supports the new tag exclusion
557   feature.
558
559 Python bindings changes
560 -----------------------
561
562 Python 3.2 compatibility
563
564   The python bindings are now compatible with both python 2.5+ and 3.2.
565
566 Added missing unicode conversions
567
568   Python strings have to be encoded to and decoded from utf-8 when
569   calling libnotmuch functions. Porting the bindings to python 3.2
570   revealed a few function calls that were missing these conversions.
571
572 Build fixes
573 -----------
574
575 Compatibility with GMime 2.6
576
577   It is now possible to build notmuch against both GMime 2.4 and 2.6.
578   However, a bug in GMime 2.6 before 2.6.5 causes notmuch not to
579   report signatures where the signer key is unavailable (GNOME bug
580   668085).  For compatibility with GMime 2.4's tolerance of "From "
581   headers we require GMime 2.6 >= 2.6.7.
582
583 Notmuch 0.11.1 (2012-02-03)
584 ===========================
585
586 Bug-fix release
587 ---------------
588
589 Fix error handling in python bindings
590
591   The python bindings in 0.11 failed to detect NULL pointers being
592   returned from libnotmuch functions and thus failed to raise
593   exceptions to indicate the error condition. Any subsequent calls
594   into libnotmuch caused segmentation faults.
595
596 Quote MML tags in replies
597
598   MML tags are text codes that Emacs uses to indicate attachments
599   (among other things) in messages being composed.  The Emacs
600   interface did not quote MML tags in the quoted text of a reply.
601   User could be tricked into replying to a maliciously formatted
602   message and not editing out the MML tags from the quoted text.  This
603   could lead to files from the user's machine being attached to the
604   outgoing message.  The Emacs interface now quotes these tags in
605   reply text, so that they do not effect outgoing messages.
606
607 Notmuch 0.11 (2012-01-13)
608 =========================
609
610 Command-Line Interface
611 ----------------------
612
613 Hooks
614
615   Hooks have been introduced to notmuch. Hooks are scripts that notmuch
616   invokes before and after certain actions. Initially, `notmuch new`
617   supports `pre-new` and `post-new` hooks that are run before and after
618   importing new messages into the database.
619
620 `notmuch reply --decrypt bugfix`
621
622   The `notmuch reply` command with `--decrypt` argument had a rarely
623   occurring bug that caused an encrypted message not to be decrypted
624   sometimes. This is now fixed.
625
626 Performance
627 -----------
628
629 Automatic tag query optimization
630
631   `notmuch tag` now automatically optimizes the user's query to
632   exclude messages whose tags won't change.  In the past, we've
633   suggested that people do this by hand; this is no longer necessary.
634
635 Don't sort messages when creating a dump file
636
637   This speeds up tag dumps considerably, without any loss of
638   information. To replicate the old behavior of sorted output (for
639   example to compare two dump files), one can use e.g. `sort(1)`.
640
641 Memory Management
642 -----------------
643
644 Reduction of memory leaks
645
646   Two memory leaks when searching and showing messages were identified
647   and fixed in this release.
648
649 Emacs Interface
650 ---------------
651
652 Bug fixes
653
654   notmuch-show-advance (bound to the spacebar in notmuch-show-mode) had
655   a bug that caused it to always jump to the next message, even if it
656   should have scrolled down to show more of the current message instead.
657   This is now fixed.
658
659 Support `notmuch new` as a notmuch-poll-script
660
661   It's now possible to use `notmuch new` as a notmuch-poll-script
662   directly. This is also the new default. This allows taking better
663   advantage of the `notmuch new` hooks from emacs without intermediate
664   scripts.
665
666 Improvements in saved search management
667
668   New saved searches are now appended to the list of saved searches,
669   not inserted in front. It's also possible to define a sort function
670   for displaying saved searches; alphabetical sort is provided.
671
672 Hooks for notmuch-hello
673
674   Two new hooks have been added: "notmuch-hello-mode-hook" (called after
675   entering notmuch-hello-mode) and "notmuch-hello-refresh-hook" (called
676   after updating a notmuch-hello buffer).
677
678 New face for crypto parts headers
679
680   Crypto parts used to be displayed with a hardcoded color. A new face
681   has been introduced to fix this: notmuch-crypto-part-header. It
682   defaults to the same value as before, but can be customized to match
683   other color themes.
684
685 Use space as default thousands separator
686
687   Large numbers in notmuch-hello are now displayed using a space as
688   thousands separator (e.g. "123 456" instead of "123,456"). This can be
689   changed by customizing "notmuch-hello-thousands-separator".
690
691 Call notmuch-show instead of notmuch-search when clicking on
692 buttonized id: links
693
694 New function notmuch-show-advance
695
696   This new function advances through just the current thread, and is
697   less invasive than notmuch-show-advance-and-archive.  It can easily
698   be bound to SPC with:
699
700         (define-key notmuch-show-mode-map " " 'notmuch-show-advance)
701
702 Various performance improvements
703
704 New add-on tool
705 ---------------
706
707 The tool `contrib/notmuch-deliver` helps with initial delivery and
708 tagging of mail (replacing running `notmuch new`).
709
710
711 Notmuch 0.10.2 (2011-12-04)
712 ===========================
713
714 Bug-fix release
715 ---------------
716
717 Fix crash in python bindings
718
719   The python bindings did not call `g_type_init`, which caused crashes
720   for some, but not all users.
721
722 Notmuch 0.10.1 (2011-11-25)
723 ===========================
724
725 Bug-fix release
726 ---------------
727
728 Fix `--help` argument
729
730   Argument processing changes in 0.10 introduced a bug where
731   `notmuch --help` crashed while `notmuch help` worked fine.
732   This is fixed in 0.10.1.
733
734 Notmuch 0.10 (2011-11-23)
735 =========================
736
737 New build and testing features
738 ------------------------------
739
740 Emacs tests are now done in `dtach`. This means that dtach is now
741 needed to run the notmuch test suite, at least until the checking for
742 prerequisites is improved.
743
744 Full test coverage of the stashing feature in Emacs.
745
746 New command-line features
747 -------------------------
748
749 Add `notmuch restore --accumulate` option
750
751   The `--accumulate` switch causes the union of the existing and new tags to
752   be applied, instead of replacing each message's tags as they are read in
753   from the dump file.
754
755 Add search terms to `notmuch dump`
756
757   The dump command now takes an optional search term much like notmuch
758   search/show/tag. The output file argument of dump is deprecated in
759   favour of using stdout.
760
761 Add `notmuch search` `--offset` and `--limit` options
762
763   The search command now takes options `--offset=[-]N` and `--limit=N` to
764   limit the number of results shown.
765
766 Add `notmuch count --output` option
767
768   The count command is now capable of counting threads in addition to
769   messages. This is selected using the new `--output=(threads|messages)`
770   option.
771
772 New emacs UI features
773 ---------------------
774
775 Add tab-completion for `notmuch-search` and `notmuch-search-filter`
776
777   These functions now support completion tags for query parts
778   starting with "tag:".
779
780 Turn "id:MSG-ID" links into buttons associated with notmuch searches
781
782   Text of the form "id:MSG-ID" in mails is now a clickable button that
783   opens a notmuch search for the given message id.
784
785 Add keybinding ('c I') for stashing Message-ID's without an id: prefix
786
787   Reduces manual labour when stashing them for use outside notmuch.
788
789 Do not query on `notmuch-search` exit
790
791   It is harmless to kill the external notmuch process, so the user
792   is no longer interrogated when they interrupt a search.
793
794 Performance
795 -----------
796
797 Emacs now constructs large search buffers more efficiently
798
799 Search avoids opening and parsing message files
800
801   We now store more information in the database so search no longer
802   has to open every message file to get basic headers.  This can
803   improve search speed by as much as 10X, but taking advantage of this
804   requires a database rebuild:
805
806         notmuch dump > notmuch.dump
807         # Backup, then remove notmuch database ($MAIL/.notmuch)
808         notmuch new
809         notmuch restore notmuch.dump
810
811 New collection of add-on tools
812 ------------------------------
813
814 The source directory "contrib" contains tools built on notmuch.  These
815 tools are not part of notmuch, and you should check their individual
816 licenses.  Feel free to report problems with them to the notmuch
817 mailing list.
818
819 nmbug - share tags with a given prefix
820
821   nmbug helps maintain a git repo containing all tags with a given
822   prefix (by default "notmuch::"). Tags can be shared by commiting
823   them to git in one location and restoring in another.
824
825 Notmuch 0.9 (2011-10-01)
826 ========================
827
828 New, general features
829 ---------------------
830
831 Correct handling of interruptions during `notmuch new`
832
833   `notmuch new` now operates as a series of small, self-consistent
834   transactions, so it can correctly resume after an interruption or
835   crash.  Previously, interruption could lose existing tags, fail to
836   detect messages on resume, or leave the database in a state
837   temporarily or permanently inconsistent with the mail store.
838
839 Library changes
840 ---------------
841
842 New functions
843
844   `notmuch_database_begin_atomic` and `notmuch_database_end_atomic`
845   allow multiple database operations to be performed atomically.
846
847   `notmuch_database_find_message_by_filename` does exactly what it says.
848
849 API changes
850
851   `notmuch_database_find_message` (and `n_d_f_m_by_filename`) now return
852   a status indicator and uses an output parameter for the
853   message. This change required changing the SONAME of libnotmuch to
854   libnotmuch.so.2
855
856 Python bindings changes
857 -----------------------
858
859   - Re-encode python unicode objects to utf-8 before passing back to
860     libnotmuch.
861   - Support `Database().begin_atomic()/end_atomic()`
862   - Support `Database().find_message_by_filename()`
863     NB! This needs a db opened in READ-WRITE mode currently, or it will crash
864     the python process. The is a limitation (=bug) of the underlying libnotmuch.
865   - Fixes where we would not throw NotmuchErrors when we should (Justus Winter)
866   - Update for `n_d_find_message*` API changes (see above).
867
868 Ruby bindings changes
869 ---------------------
870
871   - Wrap new library functions `notmuch_database_{begin,end}_atomic.`
872   - Add new exception `Notmuch::UnbalancedAtomicError.`
873   - Rename destroy to destroy! according to Ruby naming conventions.
874   - Update for `n_d_find_message*` API changes (see above).
875
876 Emacs improvements
877 ------------------
878
879   * Add gpg callback to crypto sigstatus buttons to retrieve/refresh
880     signing key.
881   * Add `notmuch-show-refresh-view` function (and corresponding binding)
882     to refresh the view of a notmuch-show buffer.
883
884 Reply formatting cleanup
885 ------------------------
886
887   `notmuch reply` no longer includes notification that non-leafnode
888   MIME parts are being suppressed.
889
890 Notmuch 0.8 (2011-09-10)
891 ========================
892
893 Improved handling of message/rfc822 parts
894
895   Both in the CLI and the emacs interface.  Output of rfc822 parts now
896   includes the primary headers, as well as the body and all subparts.
897   Output of the completely raw rfc822-formatted message, including all
898   headers, is unfortunately not yet supported (but hopefully will be
899   soon).
900
901 Improved Build system portability
902
903   Certain parts of the shell script generating notmuch.sym were
904   specific to the GNU versions of sed and nm. The new version should
905   be more portable to e.g. OpenBSD.
906
907 Documentation update for Ruby bindings
908
909   Added documentation, typo fixes, and improved support for rdoc.
910
911 Unicode, iterator, PEP8 changes for python bindings
912
913   - PEP8 (code formatting) changes for python files.
914   - Remove `Tags.__len__` ; see 0.6 release notes for motivation.
915   - Decode headers as UTF8, encode (unicode) database paths as UTF8.
916
917 Notmuch 0.7 (2011-08-01)
918 ========================
919
920 Vim interface improvements
921 --------------------------
922
923 Jason Woofenden provided a number of bug fixes for the Vim interface
924
925   * fix citation/signature fold lengths
926   * fix cig/cit parsing within multipart/*
927   * fix on-screen instructions for show-signature
928   * fix from list reformatting in search view
929   * fix space key: now archives (did opposite)
930
931 Uwe Kleine-König contributed
932
933   * use full path for sendmail/doc fix
934   * fix compose temp file name
935
936 Python Bindings changes
937 -----------------------
938
939 Sebastian Spaeth contributed two changes related to unicode and UTF8:
940
941   * message tags are now explicitly unicode
942   * query string is encoded as a UTF8 byte string
943
944 Build-System improvements
945 -------------------------
946
947 Generate notmuch.sym after the relevant object files
948
949   This fixes a bug in parallel building. Thanks to Thomas Jost for the
950   patch.
951
952 Notmuch 0.6.1 (2011-07-17)
953 ==========================
954
955 Bug-fix release
956 ---------------
957
958 Re-export Xapian exception typeinfo symbols
959
960   It turned out our aggressive symbol hiding caused problems for
961   people running gcc 4.4.5.
962
963 Notmuch 0.6 (2011-07-01)
964 =======================
965
966 New, general features
967 ---------------------
968
969 Folder-based searching
970
971   Notmuch queries can now include a search term to match the
972   directories in which mail files are stored (within the mail
973   storage). The syntax is as follows:
974
975         folder:<path>
976
977   For example, one might use things such as:
978
979         folder:spam
980         folder:2011-*
981         folder:work/todo
982
983   to match any path containing a directory "spam", "work/todo", or
984   containing a directory starting with "2011-", respectively.
985
986   This feature is particularly useful for users of delivery-agent
987   software (such as procmail or maildrop) that is filtering mail and
988   delivering it to particular folders, or users of systems such as
989   Gmail that use filesystem directories to indicate message tags.
990
991   NOTE: Only messages that are newly indexed with this version of
992   notmuch will be searchable with folder: terms. In order to enable
993   this feature for all mail, the entire notmuch index will need to be
994   rebuilt as follows:
995
996         notmuch dump > notmuch.dump
997         # Backup, then remove notmuch database ($MAIL/.notmuch)
998         notmuch new
999         notmuch restore notmuch.dump
1000
1001 Support for PGP/MIME
1002
1003   Both the command-line interface and the emacs-interface have new
1004   support for PGP/MIME, detailed below. Thanks to Daniel Kahn Gillmor
1005   and Jameson Graef Rollins for making this happen.
1006
1007 New, automatic tags: "signed" and "encrypted"
1008
1009   These tags will automatically be applied to messages containing
1010   multipart/signed and multipart/encrypted parts.
1011
1012   NOTE: Only messages that are newly indexed with this version of
1013   notmuch will receive these tags.
1014
1015 New command-line features
1016 -------------------------
1017
1018 Add new "notmuch show --verify" option for signature verification
1019
1020   This option instruct notmuch to verify the signature of
1021   PGP/MIME-signed parts.
1022
1023 Add new "notmuch show --decrypt" and "notmuch reply --decrypt" options
1024
1025   This option instructs notmuch to decrypt PGP/MIME-encrypted parts.
1026   Note that this feature currently requires gpg-agent and a passphrase entry
1027   tool (e.g. pinentry-gtk or pinentry-curses).
1028
1029 Proper nesting of multipart parts in "notmuch show" output
1030
1031   MIME parts are now display with proper nesting to reflect original
1032   MIME hierarchy of a message. This allows clients to correctly
1033   analyze the MIME structure, (such as, for example, determining to
1034   which parts a signature part applies).
1035
1036 Add new "notmuch show --part" option
1037
1038   This is a replacement for the older "notmuch part" command, (which
1039   is now deprecated—it should still work as always, but is no longer
1040   documented). Putting part output under "notmuch show" allows for all
1041   of the "notmuch show" options to be applied when extracting a single
1042   part, (such as --format=json for extracting a message part with JSON
1043   formatting).
1044
1045 Deprecate "notmuch search-tags" (in favor of "notmuch search --output=tags *")
1046
1047   The "notmuch search-tags" sub-command has been redundant since the
1048   addition of the --output=tags option to "notmuch search". We now
1049   make that more clear by deprecating "notmuch search-tags", (dropping
1050   it from the documentation). We do continue to support the old syntax
1051   by translating it internally to the new call.
1052
1053 Performance improvements
1054 ------------------------
1055
1056 Faster searches (by doing fewer searches to construct threads)
1057
1058   Whenever a user asks for search results as threads, notmuch first
1059   performs a search for messages matching the query, then performs
1060   additional searches to find other messages in the resulting threads.
1061
1062   Removing inefficiencies and redundancies in these secondary searches
1063   results in a measured speedups of 1.5x for a typical search.
1064
1065 Faster searches (by doing fewer passes to gather message data)
1066
1067   Optimizing Xapian data access patterns (using a single pass to get
1068   all message-document data rather than a pass for each data type)
1069   results in a measured speedup of 1.7x for a typical search.
1070
1071   The benefits of this optimization combine with the preceding
1072   optimization. With both in place, Austin Clements measured a speedup
1073   of 2.5x for a search of all messages in his inbox (was 4.5s, now
1074   1.8s). Thanks, Austin!
1075
1076 Faster initial indexing
1077
1078   More efficient indexing of new messages results in a measured
1079   speedup of 1.4x for the initial indexing of 3 GB of mail (1h 14m
1080   rather than 1h 46m). Thanks to Austin Clements and Michal Sojka.
1081
1082 Make "notmuch new" faster for unchanged directories
1083
1084   Optimizing to not do any further examinations of sub-directories
1085   when the filesystem indicates that a directory is unchanged from the
1086   last "notmuch new" results in measured speedups of 8.5 for the "No
1087   new mail" case, (was 0.77s, now 0.09s). Thanks to Karel Zak.
1088
1089 New emacs-interface features
1090 ----------------------------
1091
1092 Support for PGP/MIME (GnuPG)
1093
1094   Automatically indicate validity of signatures for multipart/signed
1095   messages.  Automatically display decrypted content for
1096   multipart/encrypted messages.  See the emacs variable
1097   notmuch-crypto-process-mime for more information. Note that this
1098   needs gpg-agent and a pinentry tool just as the command-line tools.
1099   Also note there is no support SMIME yet.
1100
1101 Output of pipe command is now displayed if pipe command fails
1102
1103   This is extremely useful in the common use case of piping a patch to
1104   "git am". If git fails to cleanly merge the patch the error messages
1105   from the failed merge are now clearly displayed to the user, (where
1106   previously they were silently hidden from the user).
1107
1108 User-selectable From address
1109
1110   A user can choose which configured email addresses should be used as
1111   the From address whenever composing a new message. To do so, simply
1112   press C-u before the command which will open a new message. Emacs
1113   will prompt for the from address to use.
1114
1115   The user can customize the "Notmuch Identities" setting in the
1116   notmuch customize group in order to use addresses other than those in
1117   the notmuch configuration file if desired.
1118
1119   The user can also choose to always be prompted for the from address
1120   when composing a new message (without having to use C-u) by setting
1121   the "Notmuch Always Prompt For Sender" option in the notmuch
1122   customize group.
1123
1124 Hiding of repeated subjects in collapsed thread view
1125
1126   In notmuch-show mode, if a collapsed message has the same subject as
1127   its parent, the subject is not shown.
1128
1129 Automatic detection and hiding of original message in top-posted message
1130
1131   When a message contains a line looking something like:
1132
1133         ----- Original Message -----
1134
1135   emacs hides this and all subsequent lines as an "original message",
1136   (allowing the user to click or press enter on the "original message"
1137   button to display it again). This makes the handling of top-posted
1138   citations work much like conventional citations.
1139
1140 New hooks for running code when tags are modified
1141
1142   Some users want to perform additional actions whenever a particular
1143   tag is added/removed from a message. This could be used to, for
1144   example, interface with some external spam-recognition training
1145   tool. To facilitate this, two new hooks are added which can be
1146   modified in the following settings of the notmuch customize group:
1147
1148         Notmuch Before Tag Hook
1149         Notmuch After Tag Hook
1150
1151 New optional support for hiding some multipart/alternative parts
1152
1153   Many emails are sent with redundant content within a
1154   multipart/alternative group (such as a text/plain part as well as a
1155   text/html part). Users can configure the setting:
1156
1157         Notmuch Show All Multipart/Alternative Parts
1158
1159   to "off" in the notmuch customize group to have the interface
1160   automatically hide some part alternatives (such as text/html
1161   parts). This new part hiding is not configured by default yet
1162   because there's not yet a simple way to re-display such a hidden
1163   part if it is not actually redundant with a displayed part.
1164
1165 Better rendering of text/x-vcalendar parts
1166
1167   These parts are now displayed in a format suitable for use with the
1168   emacs diary.
1169
1170 Avoid getting confused by Subject and Author fields with newline characters
1171
1172   Replacing all characters with ASCII code less than 32 with a question mark.
1173
1174 Cleaner display of From line in email messages
1175
1176   Remove double quotes, and drop "name" if it's actually just a repeat of
1177   the email address.
1178
1179 Vim interface improvements
1180 --------------------------
1181
1182 Felipe Contreras provided a number of updates for the vim interface:
1183
1184   * Using sendmail directly rather than mailx,
1185   * Implementing archive in show view
1186   * Add support to mark as read in show and search views
1187   * Add delete commands
1188   * Various cleanups.
1189
1190 Bindings improvements
1191 ---------------------
1192
1193 Ruby bindings are now much more complete
1194
1195   Including `QUERY.sort`, `QUERY.to_s`, `MESSAGE.maildir_flags_to_tags`,
1196   `MESSAGE.tags_to_maildir_flags`, and `MESSAGE.get_filenames`
1197
1198 Python bindings have been updated and extended
1199
1200   (docs online at http://packages.python.org/notmuch/)
1201
1202   New bindings:
1203
1204   - `Message().get_filenames()`, `Message().tags_to_maildir_flags()`,
1205     `Message().maildir_flags_to_tags()`, `list(Threads())` and
1206     `list(Messages)` works now
1207   - `Message().__cmp__()` and `__hash__()`
1208
1209   These allow, for example:
1210
1211         if msg1 == msg2: ...
1212
1213   As well as set arithmetic on `Messages()`:
1214
1215         s1, s2 = set(msgs1), set(msgs2)
1216         s1.union(s2)
1217         s2 -= s1
1218
1219   Removed:
1220
1221   - `len(Messages())` as it exhausted the iterator
1222
1223   Use `len(list(Messages()))` or `Query.count_messages()`
1224   to get the length.
1225
1226 Added initial Go bindings in bindings/go
1227
1228 New build-system features
1229 -------------------------
1230
1231 Added support for building in a directory other than the source directory
1232
1233   This can be used with the widely-supported idiom of simply running
1234   the configure script from some other directory:
1235
1236         mkdir build
1237         cd build
1238         ../configure
1239         make
1240
1241 Fix to save configure options for future, implicit runs of configure
1242
1243   When a user updates the source (such as with "git pull") calling
1244   "make" may cause an automatic re-run of the configure script. When
1245   this happens, the configure script will automatically be called with
1246   the same options the user originally passed in the most-recent
1247   manual invocation of configure.
1248
1249 New test-suite feature
1250 ----------------------
1251
1252 Binary for bash for running test suite now located via PATH
1253
1254   The notmuch test suite requires a fairly recent version of bash (>=
1255   bash 4). As some systems supply an older version of bash at
1256   /bin/bash, the test suite is now updated to search $PATH to locate
1257   the bash binary. This allows users of systems with old /bin/bash to
1258   simply install bash >= 4 somewhere on $PATH before /bin and then use
1259   the test suite.
1260
1261 Support for testing output with a trailing newline
1262
1263   Previously, some tests would fail to notice a difference in the
1264   presence/absence of a trailing newline in a program output, (which
1265   has led to bugs in the past). Now, carefully-written tests (using
1266   `test_expect_equal_file` rather than `test_expect_equal`) will detect
1267   any change in the presence/absence of a trailing newline. Many tests
1268   are updated to take advantage of this.
1269
1270 Avoiding accessing user's $HOME while running test suite
1271
1272   The test suite now carefully creates its own HOME directory. This
1273   allows the test suite to be run with no existing HOME directory, (as
1274   some build systems apparently do), and avoids test-suite differences
1275   due to configuration files in the users HOME directory.
1276
1277
1278 General bug fixes
1279 -----------------
1280
1281 Output *all* files for "notmuch search --output=files"
1282
1283   For the cases where multiple files have the same Message ID,
1284   previous versions of notmuch would output only one such file. This
1285   command is now fixed to correctly output all files.
1286
1287 Fixed spurious search results from "overlapped" indexing of addresses
1288
1289   This fixed a bug where a search for:
1290
1291         to:user@elsewhere.com
1292
1293   would incorrectly match a message sent:
1294
1295         To: user@example,com, someone@elsewhere.com
1296
1297 Fix --output=json when search has no results
1298
1299   A bug present since notmuch 0.4 had caused searches with no results
1300   to produce an invalid json object. This is now fixed to cleanly
1301   return a valid json object representing an empty array "[]" as
1302   expected.
1303
1304 Fix the automatic detection of the From address for "notmuch reply"
1305 from the Received headers in some cases
1306
1307 Fix core dump on DragonFlyBSD due to -1 return value from
1308 `sysconf(_SC_GETPW_R_SIZE_MAX)`
1309
1310 Cleaned up several memory leaks
1311
1312 Eliminated a few, rare segmentation faults and a double-free
1313
1314 Fix libnotmuch library to only export notmuch API functions
1315
1316   Previous release of the notmuch library also exported some Xapian
1317   C++ exception type symbols. These were never part of the library
1318   interface and were never intended to be exported.
1319
1320 Emacs-interface bug fixes
1321 -------------------------
1322
1323 Display any unexpected output or errors from "notmuch search" invocations
1324
1325   Previously any misformatted output or trailing error messages were
1326   silently ignored. This output is now clearly displayed. This fix was
1327   very helpful in identifying and fixing the bug described below.
1328
1329 Fix bug where some threads would be missing from large search results
1330
1331   When a search returned a "large" number of results, the emacs
1332   interface was incorrectly dropping one thread every time the output
1333   of the "notmuch search" process spanned the emacs read-buffer. This
1334   is now fixed.
1335
1336 Avoid re-compression of .gz files (and similar) when saving attachment
1337
1338   Emacs was being too clever for its own good and trying to
1339   re-compress pre-compressed .gz files when saving such attachments
1340   (potentially corrupting the attachment). The emacs interface is
1341   fixed to avoid this bug.
1342
1343 Fix hiding of a message when a previously-hidden citation is visible
1344
1345   Previously the citation would remain visible in this case. This is
1346   fixed so that hiding a message hides all parts.
1347
1348 Notmuch 0.5 (2010-11-11)
1349 ========================
1350
1351 New, general features
1352 ---------------------
1353
1354 Maildir-flag synchronization
1355
1356   Notmuch now knows how to synchronize flags in maildir filenames with
1357   tags in the notmuch database. The following flag/tag mappings are
1358   supported:
1359
1360         Flag <-> Tag
1361         ----     -----
1362         'D'      draft
1363         'F'      flagged
1364         'P'      passed
1365         'R'      replied
1366         'S'      unread (added when 'S' flag is not present)
1367
1368   The synchronization occurs in both directions, (for example, adding
1369   the 'S' flag to a file will cause the "unread" tag to be added, and
1370   adding the "replied" tag to a message will cause the file to be
1371   renamed with an 'R' flag).
1372
1373   This synchronization is enabled by default for users of the
1374   command-line interface, (though only files in directories named
1375   "cur" or "new" will be renamed). It can be disabled by setting the
1376   new `maildir.synchronize_flags` option in the configuration file. For
1377   example:
1378
1379         notmuch config set maildir.synchronize_flags false
1380
1381   Users upgrading may also want to run "notmuch setup" once (just
1382   accept the existing configuration) to get a new, nicely-commented
1383   [maildir] section added to the configuration file.
1384
1385   For users of the notmuch library, the new synchronization
1386   functionality is available with the following two new functions:
1387
1388         notmuch_message_maildir_flags_to_tags
1389         notmuch_message_tags_to_maildir_flags
1390
1391   It is anticipated that future improvements to this support will
1392   allow for safe synchronization of the 'T' flag with the "deleted"
1393   tag, as well as support for custom flag/tag mappings.
1394
1395 New library features
1396 --------------------
1397
1398 Support for querying multiple filenames for a single message
1399
1400   It is common for the mailstore to contain multiple files with the
1401   same message ID. Previously, notmuch would always hide these
1402   duplicate files, (returning a single, arbitrary filename with
1403   `notmuch_message_get_filename`).
1404
1405   With this release, library users can access all filenames for a
1406   message with the new function:
1407
1408         notmuch_message_get_filenames
1409
1410   Together with `notmuch_filenames_valid`, `notmuch_filenames_get`,
1411   and `notmuch_filenames_move_to_next` it is now possible to iterate
1412   over all available filenames for a given message.
1413
1414 New command-line features
1415 -------------------------
1416
1417 New "notmuch show --format=raw" for getting at original email contents
1418
1419   This new feature allows for a fully-functional email client to be
1420   built on top of the notmuch command-line without needing any direct
1421   access to the mail store itself.
1422
1423   For example, it's now possible to run "emacs -f notmuch" on a local
1424   machine with only ssh access to the mail store/notmuch database. To
1425   do this, simply set the notmuch-command variable in emacs to the
1426   name of a script containing:
1427
1428         ssh user@host notmuch "$@"
1429
1430   If the ssh client has enabled connection sharing (ControlMaster
1431   option in OpenSSH), the emacs interface can be quite responsive this
1432   way.
1433
1434 General bug fixes
1435 -----------------
1436
1437 Fix "notmuch search" to print nothing when nothing matches
1438
1439   The 0.4 release had a bug in which:
1440
1441         notmuch search <expression-with-no-matches>
1442
1443   would produce a single blank line of output, (where previous
1444   versions would produce no output. This fix also causes a change in
1445   the --format=json output, (which would previously produce "[]" and
1446   now produces nothing).
1447
1448 Emacs interface improvements
1449 ----------------------------
1450
1451 Fix to allow pipe ('|') command to work when using notmuch over ssh
1452
1453 Fix count of lines in hidden signatures
1454
1455 Omit repeated subject lines in (collapsed) thread display
1456
1457 Display current thread subject in a header line
1458
1459 Provide a "c i" binding to copy a thread ID from the search view
1460
1461 Allow for notmuch-fcc-dirs to have a value of nil
1462
1463   Also, the more complex form of notmuch-fcc-dirs now has a slightly
1464   different format. It no longer has a special first-element, fallback
1465   string. Instead it's now a list of cons cells where the car of each
1466   cell is a regular expression to be matched against the sender
1467   address, and the cdr is the name of a folder to use for an FCC. So
1468   the old fallback behavior can be achieved by including a final cell
1469   of (".*" . "default-fcc-folder").
1470
1471 Vim interface improvements
1472 --------------------------
1473
1474 Felipe Contreras provided a number of updates for the vim interface
1475
1476   These include optimizations, support for newer versions of vim, fixed
1477   support for sending mail on modern systems, new commands, and
1478   various cleanups.
1479
1480 New bindings
1481 ------------
1482
1483 Added initial ruby bindings in bindings/ruby
1484
1485 Notmuch 0.4 (2010-11-01)
1486 ========================
1487
1488 New command-line features
1489 -------------------------
1490
1491 `notmuch search --output=(summary|threads|messages|tags|files)`
1492
1493   This new option allows for particular items to be returned from
1494   notmuch searches. The "summary" option is the default and behaves
1495   just as "notmuch search" has historically behaved.
1496
1497   The new option values allow for thread IDs, message IDs, lists of
1498   tags, and lists of filenames to be returned from searches. It is
1499   expected that this new option will be very useful in shell
1500   scripts. For example:
1501
1502         for file in $(notmuch search --output=files <search-terms>); do
1503                 <operations-on> "$file"
1504         done
1505
1506 `notmuch show --format=mbox <search-specification>`
1507
1508   This new option allows for the messages matching a search
1509   specification to be presented as an mbox. Specifically the "mboxrd"
1510   format is used which allows for reversible quoting of lines
1511   beginning with "From ". A reader should remove a single '>' from the
1512   beginning of all lines beginning with one or more '>' characters
1513   followed by the 5 characters "From ".
1514
1515 `notmuch config [get|set] <section>.<item> [value ...]`
1516
1517   The new top-level "config" command allows for any value in the
1518   notmuch configuration file to be queried or set to a new value. Both
1519   single-valued and multi-valued items are supported, as our any
1520   custom items stored in the configuration file.
1521
1522 Avoid setting Bcc header in "notmuch reply"
1523
1524   We decided that this was a bit heavy-handed as the actual mail
1525   user-agent should be responsible for setting any Bcc option. Also,
1526   see below for the notmuch/emacs user-agent now setting an Fcc by
1527   default rather than Bcc.
1528
1529 New library features
1530 --------------------
1531
1532 Add `notmuch_query_get_query_string` and `notmuch_query_get_sort`
1533
1534   These are simply functions for querying properties of a
1535   `notmuch_query_t` object.
1536
1537 New emacs features
1538 ------------------
1539
1540 Enable Fcc of all sent messages by default (to "sent" directory)
1541
1542   All messages sent from the emacs interface will now be saved to the
1543   notmuch mail store where they will be incorporated to the database
1544   by the next "notmuch new". By default, messages are saved to the
1545   "sent" directory at the top-level of the mail store. This directory
1546   can be customized by means of the "Notmuch Fcc Dirs" option in the
1547   notmuch customize interface.
1548
1549 Ability to all open messages in a thread to a pipe
1550
1551   Historically, the '|' keybinding allows for piping a single message
1552   to an external command. Now, by prefixing this key with a prefix
1553   argument, (for example, by pressing "Control-U |"), all open
1554   messages in the current thread will be sent to the external command.
1555
1556 Optional support for detecting inline patches
1557
1558   This hook is disabled by default but can be enabled with a checkbox
1559   under "Notmuch Show Insert Text/Plain Hook" in the notmuch customize
1560   interface. It allows for inline patches to be detected and treated
1561   as if they were attachments, (with context-sensitive highlighting).
1562
1563 Automatically tag messages as "replied" when sending a reply
1564
1565   Messages replied to within the emacs interface will now be tagged as
1566   "replied". This feature can easily be customized to add or remove
1567   other tags as well. For example, a user might use a tag of
1568   "needs-reply" and can configure this feature to automatically remove
1569   that tag when replying. See "Notmuch Message Mark Replied" in the
1570   notmuch customize interface.
1571
1572 Allow search-result color specifications to overlay each other
1573
1574   For example, one tag can specify the background color of matching
1575   lines, while another can specify the foreground. With this change,
1576   both settings will now be visible simultaneously, (which was not the
1577   case in previous releases). See "Notmuch Search Line Faces" in the
1578   notmuch customize interface.
1579
1580 Make hidden author names still available for incremental search
1581
1582   When there is insufficient space to display all authors of a thread
1583   in search results, the names of hidden authors are now still made
1584   available to emacs' incremental search commands. As the user
1585   searches, matching lines will temporarily expand to show the hidden
1586   names.
1587
1588 New binding of Control-TAB (works like TAB in reverse)
1589
1590   Many notmuch nodes already use TAB to navigate forward through
1591   various items allowing actions, (message headers, email attachments,
1592   etc.). The new Control-TAB binding operates similarly but in the
1593   opposite direction.
1594
1595 New build-system features
1596 -------------------------
1597
1598 Various portability fixes have been applied
1599
1600   These include fixes for build failures on at least Solaris, FreeBSD,
1601   and Fedora systems. We're hopeful that the notmuch code base is now
1602   more portable than ever before.
1603
1604 Arrange for libnotmuch to be found automatically after make install
1605
1606   The notmuch build system is now careful to help the user avoid
1607   errors of the form "libnotmuch.so could not be found" immediately
1608   after installing. This support takes two forms:
1609
1610   1. If the library is installed to a system directory,
1611      (configured in /etc/ld.so.conf), then "make install" will
1612      automatically run ldconfig.
1613
1614   2. If the library is installed to a non-system directory, the
1615      build system adds a `DR_RUNPATH` entry to the final binary
1616      pointing to the directory to which the library is installed.
1617
1618   When this support works, the user should be able to run notmuch
1619   immediately after "make install", without any errors trying to find
1620   the notmuch library, and without having to manually set environment
1621   variables such as `LD_LIBRARY_PATH`.
1622
1623 Check compiler/linker options before using them
1624
1625   The configure script now carefully checks that any desired
1626   compilation options, (whether for enabling compiler warnings, or for
1627   embedding rpath, etc.), are supported. Only supported options are
1628   used in the resulting Makefile.
1629
1630 New test-suite features
1631 -----------------------
1632
1633 New modularization of test suite
1634
1635   Thanks to a gracious relicensing of the test-suite infrastructure
1636   from the git project, notmuch now has a modular test suite. This
1637   provides the ability to run individual sections of the test suite
1638   rather than the whole things. It also provides better summary of
1639   test results, with support for tests that are expected to fail
1640   (BROKEN and FIXED) in addition to PASS and FAIL. Finally, it makes
1641   it easy to run the test suite within valgrind (pass --valgrind to
1642   notmuch-test or to any sub-script) which has been very useful.
1643
1644 New testing of emacs interface
1645
1646   The test suite has been augmented to allow automated testing of the
1647   emacs interfaces. So far, this includes basic searches, display of
1648   threads, and tag manipulation. This also includes a test that a new
1649   message can successfully be sent out through a (dummy) SMTP server
1650   and that said message is successfully integrated into the notmuch
1651   database via the FCC setting.
1652
1653 General bug fixes
1654 -----------------
1655
1656 Fix potential corruption of database when "notmuch new" is interrupted
1657
1658   Previously, an interruption of "notmuch new" would (rarely) result
1659   in a corrupt database. The corruption would manifest itself by a
1660   persistent error of the form:
1661
1662         document ID of 1234 has no thread ID
1663
1664   The message-adding code has been carefully audited and reworked to
1665   avoid this sort of corruption regardless of when it is interrupted.
1666
1667 Fix failure with extremely long message ID headers
1668
1669   Previously, a message with an extremely long message ID, (say, more
1670   than 300 characters), would fail to be added to notmuch, (triggering
1671   Xapian exceptions). This has now been fixed.
1672
1673 Fix for messages with "charset=unknown-8bit"
1674
1675   Previously, messages with this charset would cause notmuch to emit a
1676   GMime warning, (which would then trip up emacs or other interfaces
1677   parsing the notmuch results).
1678
1679 Fix `notmuch_query_search_threads` function to return NULL on any exception
1680
1681 Fix "notmuch search" to return non-zero if `notmuch_query_search_threads`
1682 fails
1683
1684   Previously, this command could confusingly report a Xapian
1685   exception, yet still return an error code of 0. It now correctly
1686   returns a failing error code of 1 in this case.
1687
1688 Emacs bug fixes
1689 ---------------
1690
1691 Fix to handle a message with a subject containing, for example "[1234]"
1692
1693   Previously, a message subject containing a sequence of digits within
1694   square brackets would cause the emacs interface to mis-parse the
1695   output of "notmuch search". This would result in the message being
1696   mis-displayed and prevent the user from manipulating the message in
1697   the emacs interface.
1698
1699 Fix to correctly handle message IDs containing ".."
1700
1701   The emacs interface now properly quotes message IDs to avoid a
1702   Xapian bug in which the ".." within a message ID would be
1703   misinterpreted as a numeric range specification.
1704
1705 Python-binding fixes
1706 --------------------
1707
1708 The python bindings for notmuch have been updated to work with python3.
1709
1710 Debian-specific fixes
1711 ---------------------
1712
1713 Fix emacs initialization so "M-x notmuch" works for users by default
1714
1715   Now, a new Debian user can immediately run "emacs -f notmuch" after
1716   "apt-get install notmuch". Previously, the user would have had to
1717   edit the ~/.emacs file to add "(require 'notmuch)" before this would
1718   work.
1719
1720 Notmuch 0.3.1 (2010-04-27)
1721 ==========================
1722
1723 General bug fixes
1724 -----------------
1725
1726 Fix an infinite loop in "notmuch reply"
1727
1728   This bug could be triggered by replying to a message where the
1729   user's primary email address did not appear in the To: header and
1730   the user had not configured any secondary email addresses. The bug
1731   was a simple re-use of the same iterator variable in nested loops.
1732
1733 Fix a potential SEGV in "notmuch search"
1734
1735   This bug could be triggered by an author name ending in a ','.
1736   Admittedly - that's almost certainly a spam email, but we never
1737   want notmuch to crash.
1738
1739 Emacs bug fixes
1740 ---------------
1741
1742 Fix calculations for line wrapping in the primary "notmuch" view
1743
1744 Fix Fcc support to prompt to create a directory if the specified Fcc
1745 directory does not exist
1746
1747 Build fix
1748 ---------
1749
1750 Fix build on OpenSolaris (at least) due to missing 'extern "C"' block
1751
1752   Without this, the C++ sources could not find strcasestr and the
1753   final linking of notmuch would fail.
1754
1755 Notmuch 0.3 (2010-04-27)
1756 ========================
1757
1758 New command-line features
1759 -------------------------
1760
1761 User-configurable tags for new messages
1762
1763   A new "new.tags" option is available in the configuration file to
1764   determine which tags are applied to new messages. Run "notmuch
1765   setup" to generate new documentation within ~/.notmuch-config on how
1766   to specify this value.
1767
1768 Threads search results named based on subjects that match search
1769
1770   This means that when new mails arrived to a thread you've previously
1771   read, and the new mails have a new subject, you will see that
1772   subject in the search results rather than the old subject.
1773
1774 Faster operation of "notmuch tag" (avoid unneeded sorting)
1775
1776   Since the user just wants to tag all matching messages, we can make
1777   things perform a bit faster by avoiding the sort.
1778
1779 Even Better guessing of From: header for "notmuch reply"
1780
1781   Notmuch now looks at a number of headers when trying to figure out
1782   the best From: header to use in a reply. This is helpful if you have
1783   several configured email addresses, and you also subscribe to various
1784   mailing lists with different addresses, (so that mails you are
1785   replying to won't always include your subscribed address in the To:
1786   header).
1787
1788 Indication of author names that match a search
1789
1790   When notmuch displays threads as the result of a search, it now
1791   lists the authors that match the search before listing the other
1792   authors in the thread. It inserts a pipe '|' symbol between the last
1793   matching and first non-matching author. This is especially useful in
1794   a search that includes tag:unread. Now the authors of the unread
1795   messages in the thread are listed first.
1796
1797 New: Python bindings
1798 --------------------
1799
1800 Sebastian Spaeth has contributed his python bindings for the notmuch
1801 library to the central repository. These bindings were previously
1802 known as "cnotmuch" within python but have now been renamed to be
1803 accessible with a simple, and more official-looking "import notmuch".
1804
1805 The bindings have already proven very useful as people proficient in
1806 python have been able to easily develop programs to do notmuch-based
1807 searches for email-address completion, maildir-flag synchronization,
1808 and other tasks.
1809
1810 These bindings are available within the bindings/python directory, but
1811 are not yet integrated into the top-level Makefiles, nor the top-level
1812 package-building scripts. Improvements are welcome.
1813
1814 Emacs interface improvements
1815 ----------------------------
1816
1817 An entirely new initial view for notmuch, (friendly yet powerful)
1818
1819   Some of us call the new view "notmuch hello" but you can get at it
1820   by simply calling "emacs -f notmuch". The new view provides a search
1821   bar where new searches can be performed. It also displays a list of
1822   recent searches, along with a button to save any of these, giving it
1823   a new name as a "saved search". Many people find these "saved
1824   searches" one of the most convenient ways of organizing their mail,
1825   (providing all of the features of "folders" in other mail clients,
1826   but without any of the disadvantages).
1827
1828   Finally, this view can also optionally display all of the tags that
1829   exist in the database, along with a count for each tag, and a custom
1830   search of messages with that tag that's simply a click (or keypress)
1831   away.
1832
1833   NOTE: For users that liked the original mode of "emacs -f notmuch"
1834   immediately displaying a particular search result, we recommend
1835   instead running something like:
1836
1837         emacs --eval '(notmuch search "tag:inbox" t)'
1838
1839   The "t" means to sort the messages in an "oldest first" order,
1840   (as notmuch would do previously by default). You can also
1841   leave that off to have your search results in "newest first"
1842   order.
1843
1844 Full-featured "customize" support for configuring notmuch
1845
1846   Notmuch now plugs in well to the emacs "customize" mode to make it
1847   much simpler to find things about the notmuch interface that can be
1848   tweaked by the user.
1849
1850   You can get to this mode by starting at the main "Customize" menu in
1851   emacs, then browsing through "Applications", "Mail", and
1852   "Notmuch". Or you can go straight to "M-x customize-group"
1853   "notmuch".
1854
1855   Once you're at the customize screen, you'll see a list of documented
1856   options that can be manipulated along with checkboxes, drop-down
1857   selectors, and text-entry boxes for configuring the various
1858   settings.
1859
1860 Support for doing tab-completion of email addresses
1861
1862   This support currently relies on an external program,
1863   (notmuch-addresses), that is not yet shipped with notmuch
1864   itself. But multiple, suitable implementations of this program have
1865   already been written that generate address completions by doing
1866   notmuch searches of your email collection. For example, providing
1867   first those addresses that you have composed messages to in the
1868   past, etc.
1869
1870   One such program (implemented in python with the python bindings to
1871   notmuch) is available via:
1872
1873         git clone  http://jkr.acm.jhu.edu/git/notmuch_addresses.git
1874
1875   Install that program as notmuch-addresses on your PATH, and then
1876   hitting TAB on a partial email address or name within the To: or Cc:
1877   line of an email message will provide matching completions.
1878
1879 Support for file-based (Fcc) delivery of sent messages to mail store
1880
1881   This isn't yet enabled by default. To enable this, one will have to
1882   set the "Notmuch Fcc Dirs" setting within the notmuch customize
1883   screen, (see its documentation there for details). We anticipate
1884   making this automatic in a future release.
1885
1886 New 'G' key binding to trigger mail refresh (G == "Get new mail")
1887
1888   The 'G' key works wherever '=' works. Before refreshing the screen
1889   it calls an external program that can be used to poll email servers,
1890   run notmuch new and setup specific tags for the new emails. The
1891   script to be called should be configured with the "Notmuch Poll
1892   Script" setting in the customize interface. This script will
1893   typically invoke "notmuch new" and then perhaps several "notmuch
1894   tag" commands.
1895
1896 Implement emacs message display with the JSON output from notmuch
1897
1898   This is much more robust than the previous implementation, (where
1899   some HTML mails and mail quoting the notmuch code with the delimiter
1900   characters in it would cause the parser to fall over).
1901
1902 Better handling of HTML messages and MIME attachments (inline images!)
1903
1904   Allow for any MIME parts that emacs can display to be displayed
1905   inline. This includes inline viewing of image attachments, (provided
1906   the window is large enough to fit the image at its natural size).
1907
1908   Much more robust handling of HTML messages. Currently both text/plain
1909   and text/html alternates will be rendered next to each other. In a
1910   future release, users will be able to decide to see only one or the
1911   other representation.
1912
1913   Each attachment now has its own button so that attachments can be
1914   saved individually (the 'w' key is still available to save all
1915   attachments).
1916
1917 Customizable support for tidying of text/plain message content
1918
1919   Many new functions are available for tidying up message
1920   content. These include options such as wrapping long lines,
1921   compressing duplicate blank lines, etc.
1922
1923   Most of these are disabled by default, but can easily be enabled by
1924   clicking the available check boxes under the "Notmuch Show Insert
1925   Text/Plain Hook" within the notmuch customize screen.
1926
1927 New support for searchable citations (even when hidden)
1928
1929   When portions of overly-long citations are hidden, the contents of
1930   these citations will still be available for emacs' standard
1931   "incremental search" functions. When the search matches any portion
1932   of a hidden citation, the citation will become visible temporarily
1933   to display the search result.
1934
1935 More flexible handling of header visibility
1936
1937   As an answer to complaints from many users, the To, Cc, and Date
1938   headers of messages are no longer hidden by default. For those users
1939   that liked that these were hidden, a new "Notmuch Messages Headers
1940   Visible" option in the customize interface can be set to nil. The
1941   visibility of headers can still be toggled on a per-message basis
1942   with the 'h' keybinding.
1943
1944   For users that don't want to see some subset of those headers, the
1945   new "Notmuch Message Headers" variable can be customized to list
1946   only those headers that should be present in the display of a message.
1947
1948 The Return key now toggles message visibility anywhere
1949
1950   Previously this worked only on the first summary-line of a message.
1951
1952 Customizable formatting of search results
1953
1954   The user can easily customize the order, width, and formatting of
1955   the various fields in a "notmuch search" buffer. See the "Notmuch
1956   Search Result Format" section of the customize interface.
1957
1958 Generate nicer names for search buffers when using a saved search
1959
1960 Add a notmuch User-Agent header when sending mail from notmuch/emacs
1961
1962 New keybinding (M-Ret) to open all collapsed messages in a thread
1963
1964 New library feature
1965 -------------------
1966
1967 Provide a new `NOTMUCH_SORT_UNSORTED` value for queries
1968
1969   This can be somewhat faster when sorting simply isn't desired. For
1970   example when collecting a set of messages that will all be
1971   manipulated identically, (adding a tag, removing a tag, deleting the
1972   messages), then there's no advantage to sorting the messages by
1973   date.
1974
1975 Build fixes
1976 -----------
1977
1978 Fix to compile against GMime 2.6
1979
1980   Previously notmuch insisted on being able to find GMime 2.4, (even
1981   though GMime 2.6 would have worked all along).
1982
1983 Fix configure script to accept (and ignore) various standard options
1984
1985   For example, those that the Gentoo build scripts expect configure to
1986   accept are now all accepted.
1987
1988 Test suite
1989 ----------
1990
1991 A large number of new tests for the many new features
1992
1993 Better display of output from failed tests
1994
1995   Now shows failures with diff rather than forcing the user to gaze at
1996   complete actual and expected output looking for deviation.
1997
1998 Notmuch 0.2 (2010-04-16)
1999 ========================
2000
2001 This is the second release of the notmuch mail system, with actual
2002 detailed release notes this time!
2003
2004 This release consists of a number of minor new features that make
2005 notmuch more pleasant to use, and a few fairly major bug fixes.
2006
2007 We didn't quite hit our release target of "about a week" from the 0.1
2008 release, (0.2 is happening 11 days after 0.1), but we hope to do
2009 better for next week. Look forward to some major features coming to
2010 notmuch in subsequent releases.
2011
2012 -Carl
2013
2014 General features
2015 ----------------
2016
2017 Better guessing of From: header
2018
2019   Notmuch now tries harder to guess which configured address should be
2020   used as the From: line in a "notmuch reply". It will examine the
2021   Received: headers if it fails to find any configured address in To:
2022   or Cc:. This allows it to often choose the correct address even when
2023   replying to a message sent to a mailing list, and not directly to a
2024   configured address.
2025
2026 Make "notmuch count" with no arguments count all messages
2027
2028   Previously, it was hard to construct a search term that was
2029   guaranteed to match all messages.
2030
2031 Provide a new special-case search term of "*" to match all messages
2032
2033   This can be used in any command accepting a search term, such as
2034   "notmuch search '*'". Note that you'll want to take care that the
2035   shell doesn't expand * against the current files. And note that the
2036   support for "*" is a special case. It's only meaningful as a single
2037   search term and loses its special meaning when combined with any
2038   other search terms.
2039
2040 Automatically detect thread connections even when a parent message is
2041 missing
2042
2043   Previously, if two or more message were received with a common
2044   parent, but that parent was not received, then these messages would
2045   not be recognized as belonging to the same thread. This is now fixed
2046   so that such messages are properly connected in a thread.
2047
2048 General bug fixes
2049 -----------------
2050
2051 Fix potential data loss in "notmuch new" with SIGINT
2052
2053   One code path in "notmuch new" was not properly handling
2054   SIGINT. Previously, this could lead to messages being removed from
2055   the database (and their tags being lost) if the user pressed
2056   Control-C while "notmuch new" was working.
2057
2058 Fix segfault when a message includes a MIME part that is empty
2059
2060 Fix handling of non-ASCII characters with --format=json
2061
2062   Previously, characters outside the range of 7-bit ASCII were
2063   silently dropped from the JSON output. This led to corrupted display
2064   of utf-8 content in the upcoming notmuch web-based frontends.
2065
2066 Fix headers to be properly decoded in "notmuch reply"
2067
2068   Previously, the user might see:
2069
2070         Subject: Re: =?iso-8859-2?q?Rozlu=E8ka?=
2071
2072   rather than:
2073
2074         Subject: Re: Rozlučka
2075
2076   The former text is properly encoded to be RFC-compliant SMTP, will
2077   be sent correctly, and will be properly decoded by the
2078   recipient. But the user trying to edit the reply would likely be
2079   unable to read or edit that field in its encoded form.
2080
2081 Emacs client features
2082 ---------------------
2083
2084 Show the last few lines of citations as well as the first few lines
2085
2086   It's often the case that the last sentence of a citation is what is
2087   being replied to directly, so the last few lines are often much more
2088   important. The number of lines shown at the beginning and end of any
2089   citation can be configured, (notmuch-show-citation-lines-prefix and
2090   notmuch-show-citation-lines-suffix).
2091
2092 The '+' and '-' commands in the search view can now add and remove
2093 tags by region
2094
2095   Selective bulk tagging is now possible by selecting a region of
2096   threads and then using either the '+' or '-' keybindings. Bulk
2097   tagging is still available for all threads matching the current
2098   search with the '*' binding.
2099
2100 More meaningful buffer names for thread-view buffers
2101
2102   Notmuch now uses the Subject of the thread as the buffer
2103   name. Previously it was using the thread ID, which is a meaningless
2104   number to the user.
2105
2106 Provide for customized colors of threads in search view based on tags
2107
2108   See the documentation of notmuch-search-line-faces, (or us "M-x
2109   customize" and browse to the "notmuch" group within "Applications"
2110   and "Mail"), for details on how to configure this colorization.
2111
2112 Build-system features
2113 ---------------------
2114
2115 Add support to properly build libnotmuch on Darwin systems (OS X)
2116
2117 Add support to configure for many standard options
2118
2119   We include actual support for:
2120
2121         --includedir --mandir --sysconfdir
2122
2123   And accept and silently ignore several more:
2124
2125         --build --infodir --libexecdir --localstatedir
2126         --disable-maintainer-mode --disable-dependency-tracking
2127
2128 Install emacs client in "make install" rather than requiring a
2129 separate "make install-emacs"
2130
2131 Automatically compute versions numbers between releases
2132
2133   This support uses the git-describe notation, so a version such as
2134   0.1-144-g43cbbfc indicates a version that is 144 commits since the
2135   0.1 release and is available as git commit "43cbbfc".
2136
2137 Add a new "make test" target to run the test suite and actually
2138 verify its results
2139
2140 Notmuch 0.1 (2010-04-05)
2141 ========================
2142
2143 This is the first release of the notmuch mail system.
2144
2145 It includes the libnotmuch library, the notmuch command-line
2146 interface, and an emacs-based interface to notmuch.
2147
2148 Note: Notmuch will work best with Xapian 1.0.18 (or later) or Xapian
2149 1.1.4 (or later). Previous versions of Xapian (whether 1.0 or 1.1) had
2150 a performance bug that made notmuch very slow when modifying
2151 tags. This would cause distracting pauses when reading mail while
2152 notmuch would wait for Xapian when removing the "inbox" and "unread"
2153 tags from messages in a thread.
2154
2155
2156 <!--
2157  Local variables:
2158  mode: text
2159  tab-width: 8
2160  indent-tabs-mode: nil
2161  End:
2162  vi: sw=8 ts=8 et
2163 -->