Re: Tagging messages sometimes causes them to be marked as old

2023-09-01 Thread Andreas Kusalananda Kähäri
On Fri, Sep 01, 2023 at 02:42:01PM +0200, Kusalananda Kähäri wrote:
> On Fri, Sep 01, 2023 at 12:16:58PM +, David Bremner wrote:
> > Andreas Kusalananda Kähäri  writes:
> > 
> > > What's so special about the new tags that I'm adding that makes the
> > > unread messages move from "new" to "cur"?  I can *see* them getting
> > > moved when I run the tagging.  Why is notmuch moving them?  The "unread"
> > > tag never changes.
> > >
> > >   $ ls "$notmuch_dbdir"/abc/INBOX/new
> > >   
> > > 1693487404_0.62384.harpo.local,U=352958,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> > >   
> > > 1693488604_2.29495.harpo.local,U=352962,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> > >   
> > > 1693488604_4.29495.harpo.local,U=352964,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> > >   
> > > 1693488604_5.29495.harpo.local,U=352965,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> > 
> > Apparently this is intended behaviour (from test/T340-maildir-sync.sh)
> > 
> > test_begin_subtest "Message in new with maildir info is moved to cur on 
> > any tag change"
> > add_message [filename]='message-with-info-to-be-moved-to-cur:2,' 
> > [dir]=new
> > notmuch tag +anytag id:$gen_msg_id
> > output=$(cd "$MAIL_DIR"; ls */message-with-info-to-be-moved-to-cur*)
> > test_expect_equal "$output" 
> > "cur/message-with-info-to-be-moved-to-cur:2,"
> > 
> > That behaviour is about 10 years old. It seems to be based on the idea
> > that files in new/ should not have maildir info. According to the
> > standard [1] (such as it is)
> > 
> > When you move a file from new to cur, you have to change its
> > name from uniq to uniq:info. Make sure to preserve the uniq
> > string, so that separate messages can't bump into each other.
> > 
> > So in a sense notmuch is "fixing" the maildir. Whether that intervention
> > is needed notmuch to work correctly, I'm not sure.
> > 
> > I'd be a bit nervous about changing such an established behaviour of
> > notmuch, but I guess can't completely rule it out without knowing what
> > would break.
> > 
> > Maybe you can convince whatever puts files in new/ not to add :2, ?
> > 
> > [1]: http://cr.yp.to/proto/maildir.html
> 
> Thanks for the explanation.  It's offlineimap that puts the files in
> "new" and it seems to add them with the ":2," suffix.
> 
> I don't think I can change this behaviour in offlineimap.
> 

Sorry, but I just found this: 

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=789625;msg=2

It appear someone else has already had this problem and that one might
possibly want to fix it in offlineimap.  Mutt is not at fault here, but
I still think notmuch is a bit pedantic when it moves the files.

I will contact the package maintainer of offlineimap on my system
(OpenBSD) and see if this is something that can be fixed there with the
simple patch includud in the abovementioned bug report.

Thanks!


-- 
Andreas (Kusalananda) Kähäri
SciLifeLab, NBIS, ICM
Uppsala University, Sweden

.
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: Tagging messages sometimes causes them to be marked as old

2023-09-01 Thread Andreas Kusalananda Kähäri
On Fri, Sep 01, 2023 at 12:16:58PM +, David Bremner wrote:
> Andreas Kusalananda Kähäri  writes:
> 
> > What's so special about the new tags that I'm adding that makes the
> > unread messages move from "new" to "cur"?  I can *see* them getting
> > moved when I run the tagging.  Why is notmuch moving them?  The "unread"
> > tag never changes.
> >
> > $ ls "$notmuch_dbdir"/abc/INBOX/new
> > 
> > 1693487404_0.62384.harpo.local,U=352958,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> > 
> > 1693488604_2.29495.harpo.local,U=352962,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> > 
> > 1693488604_4.29495.harpo.local,U=352964,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> > 
> > 1693488604_5.29495.harpo.local,U=352965,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
> 
> Apparently this is intended behaviour (from test/T340-maildir-sync.sh)
> 
> test_begin_subtest "Message in new with maildir info is moved to cur on 
> any tag change"
> add_message [filename]='message-with-info-to-be-moved-to-cur:2,' [dir]=new
> notmuch tag +anytag id:$gen_msg_id
> output=$(cd "$MAIL_DIR"; ls */message-with-info-to-be-moved-to-cur*)
> test_expect_equal "$output" "cur/message-with-info-to-be-moved-to-cur:2,"
> 
> That behaviour is about 10 years old. It seems to be based on the idea
> that files in new/ should not have maildir info. According to the
> standard [1] (such as it is)
> 
> When you move a file from new to cur, you have to change its
> name from uniq to uniq:info. Make sure to preserve the uniq
> string, so that separate messages can't bump into each other.
> 
> So in a sense notmuch is "fixing" the maildir. Whether that intervention
> is needed notmuch to work correctly, I'm not sure.
> 
> I'd be a bit nervous about changing such an established behaviour of
> notmuch, but I guess can't completely rule it out without knowing what
> would break.
> 
> Maybe you can convince whatever puts files in new/ not to add :2, ?
> 
> [1]: http://cr.yp.to/proto/maildir.html

Thanks for the explanation.  It's offlineimap that puts the files in
"new" and it seems to add them with the ":2," suffix.

I don't think I can change this behaviour in offlineimap.

However, note that I have a "post-new" hook for notmuch which already
adds certain tags to messages.  I'll include it again (was part of my
initial message to the list):

#!/bin/sh

tr -s '\t' ' ' <<'TAG_BATCH' | notmuch tag --batch
+inbox  -- folder:/INBOX/
+sent   -- folder:/Sent/
+trash  -- folder:/Trash/
-archive-- not folder:/Archive/
-junk   -- not folder:/Junk/
-unsorted   -- not folder:/Unsorted/
TAG_BATCH

This hook does not cause any issues for me, and the newly delivered
mesages are still in "new" after it has run.  It does not matter if I
run the hook manually or if it is run automatically by notmuch.

Running "notmuch tag" as I showed in a previous message then moves the
mesages to the "cur" directory.

What I also noted in my initial mail was that if I add the extra tagging
*to the hook script*, the issue appears.  It is as if using a "path:" or
"folder:" query that matches a directory that is not a maildir causes
the messages to be moved from "new" to "cur".

I store mails in five account subdirectories under the "~Mail/inboxes"
top-level directory (the notmuch database.path directory).  An account
subdirectory may contain several maildirs, such as "INBOX".  The
offending tagging all tries to match directory names (account names)
directly under "~Mail/inboxes".



-- 
Andreas (Kusalananda) Kähäri
SciLifeLab, NBIS, ICM
Uppsala University, Sweden

.
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: Tagging messages sometimes causes them to be marked as old

2023-09-01 Thread David Bremner
Andreas Kusalananda Kähäri  writes:

> What's so special about the new tags that I'm adding that makes the
> unread messages move from "new" to "cur"?  I can *see* them getting
> moved when I run the tagging.  Why is notmuch moving them?  The "unread"
> tag never changes.
>
>   $ ls "$notmuch_dbdir"/abc/INBOX/new
>   
> 1693487404_0.62384.harpo.local,U=352958,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
>   
> 1693488604_2.29495.harpo.local,U=352962,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
>   
> 1693488604_4.29495.harpo.local,U=352964,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
>   
> 1693488604_5.29495.harpo.local,U=352965,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

Apparently this is intended behaviour (from test/T340-maildir-sync.sh)

test_begin_subtest "Message in new with maildir info is moved to cur on any 
tag change"
add_message [filename]='message-with-info-to-be-moved-to-cur:2,' [dir]=new
notmuch tag +anytag id:$gen_msg_id
output=$(cd "$MAIL_DIR"; ls */message-with-info-to-be-moved-to-cur*)
test_expect_equal "$output" "cur/message-with-info-to-be-moved-to-cur:2,"

That behaviour is about 10 years old. It seems to be based on the idea
that files in new/ should not have maildir info. According to the
standard [1] (such as it is)

When you move a file from new to cur, you have to change its
name from uniq to uniq:info. Make sure to preserve the uniq
string, so that separate messages can't bump into each other.

So in a sense notmuch is "fixing" the maildir. Whether that intervention
is needed notmuch to work correctly, I'm not sure.

I'd be a bit nervous about changing such an established behaviour of
notmuch, but I guess can't completely rule it out without knowing what
would break.

Maybe you can convince whatever puts files in new/ not to add :2, ?

[1]: http://cr.yp.to/proto/maildir.html
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: Tagging messages sometimes causes them to be marked as old

2023-08-31 Thread David Bremner
Andreas Kusalananda Kähäri  writes:

> Mutt shows messages without the "S" flag in "cur" as "old", and messages
> without the "S" flag in "new" as "new".  Messages with the "S" flag are
> shown as read.  This is the default behaviour of mutt.  I don't really
> care if this is breaking conventions or not, as this conversation is not
> really about mutt at all.

I thought you were changing some tag synched to a maildir flags, but
apparently not. Notmuch makes some effort not to move files from new to
cur until they need to be, but I guess there could be a bug in that
code.


___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: Tagging messages sometimes causes them to be marked as old

2023-08-31 Thread Andreas Kusalananda Kähäri
On Thu, Aug 31, 2023 at 01:24:25PM +, David Bremner wrote:
> Andreas Kusalananda Kähäri  writes:
> 
> 
> > (and similarly for the other accounts; it does not matter if I do a
> > "path:" or modify it into a "folder:" search).  This works and tags the
> > messages correctly, however, for some reason, any unread mail are also
> > marked as "old" in mutt (the mail file is moved from the "new" to the
> > "cur" directory in the maildir).  This does not happen with the tagging
> > done by the original "post-new" hook shown above.  It *does* happen if I
> > add the tagging to the hook script.
> >
> 
> Short answer: the mutt concept of "old" conflicts with the maildir
> definition. If you want any maildir flags, your message cannot be in
> new/, which iirc is what mutt means by "not old". You could turn off
> maildir flag synching (but of course that has side effects).

Mutt shows messages without the "S" flag in "cur" as "old", and messages
without the "S" flag in "new" as "new".  Messages with the "S" flag are
shown as read.  This is the default behaviour of mutt.  I don't really
care if this is breaking conventions or not, as this conversation is not
really about mutt at all.

What's so special about the new tags that I'm adding that makes the
unread messages move from "new" to "cur"?  I can *see* them getting
moved when I run the tagging.  Why is notmuch moving them?  The "unread"
tag never changes.

$ ls "$notmuch_dbdir"/abc/INBOX/new

1693487404_0.62384.harpo.local,U=352958,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693488604_2.29495.harpo.local,U=352962,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693488604_4.29495.harpo.local,U=352964,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693488604_5.29495.harpo.local,U=352965,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693488604_6.29495.harpo.local,U=352966,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693488604_7.29495.harpo.local,U=352967,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693488604_8.29495.harpo.local,U=352968,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693489804_0.76572.harpo.local,U=352969,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693489804_1.76572.harpo.local,U=352970,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693489804_2.76572.harpo.local,U=352971,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693489804_3.76572.harpo.local,U=352972,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693489804_4.76572.harpo.local,U=352973,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,

1693489804_5.76572.harpo.local,U=352974,FMD5=7e33429f656f1e6e9d79b29c3f82c57e:2,
$ notmuch tag +test -- 'path:abc/INBOX/**'
$ ls "$notmuch_dbdir"/abc/INBOX/new
(no output)

With

notmuch search --output=files -- tag:unread and 'path:abc/INBOX/**'

I now see that they were moved into the neighbouring "cur" directory.


-- 
Andreas (Kusalananda) Kähäri
SciLifeLab, NBIS, ICM
Uppsala University, Sweden

.
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: Tagging messages sometimes causes them to be marked as old

2023-08-31 Thread David Bremner
Andreas Kusalananda Kähäri  writes:


> (and similarly for the other accounts; it does not matter if I do a
> "path:" or modify it into a "folder:" search).  This works and tags the
> messages correctly, however, for some reason, any unread mail are also
> marked as "old" in mutt (the mail file is moved from the "new" to the
> "cur" directory in the maildir).  This does not happen with the tagging
> done by the original "post-new" hook shown above.  It *does* happen if I
> add the tagging to the hook script.
>

Short answer: the mutt concept of "old" conflicts with the maildir
definition. If you want any maildir flags, your message cannot be in
new/, which iirc is what mutt means by "not old". You could turn off
maildir flag synching (but of course that has side effects).
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org