]> git.notmuchmail.org Git - notmuch/blobdiff - TODO
TODO: Add "notmuch tag" and thoughts on avoiding races in archiving threads.
[notmuch] / TODO
diff --git a/TODO b/TODO
index 8f9a1a98c5ae13e925c30bcc90777d64525abec0..c5c748f65f92f6180c8ebb9ef26bf05652a17b02 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,12 +1,25 @@
+Write a "notmuch tag" command to add/remove tags from messages
+matching a search query.
+
 Write a "notmuch show" that displays a single thread.
 
 Fix to use the *last* Message-ID header if multiple such headers are
 encountered, (I noticed this is one thing that kept me from seeing the
 same message-ID values as sup).
 
-Fix "notmuch restore" to delete the old tags from a message/thread
-before adding new ones. This will require someway to temporarily
-'disconnect' a notmuch_message_t from the database, (that it, disable
-automatic sync for add_tag, etc.), and then reconnect it. That is, the
-removal and subsequent addition of tags to the message/thread needs to
-be transactional.
+Think about this race condition:
+
+       A client executes "notmuch search"
+       Then executes "notmuch show" on a thread
+       While user is reading, new mail is added to database for the thread
+       Client asks for the thread to be archived.
+
+   The bug here is that email that was never read will be
+   archived. That's bad. With the command set above, the user can
+   avoid the problem by just not running "notmuch new" while reading
+   mail, but the same problems exists with the API. One possible
+   solution would be to store an additional timestamp with each mail
+   document for the time it was added to the database. Then searches
+   could return a timestamp, and the client could pass that same
+   timestamp back to the archive command to not modify any messages
+   with a timestamp newer than what's passed.