jdev - 2026-01-13


  1. vpzom

    What's the deal with Message Fastening? It seems useful but the XEPs that used to reference it don't anymore

  2. moparisthebest

    So it's been unfastened?

  3. singpolyma

    Two? Summits ago we decided it wasn't worth it and every xep can just specify the parent id anyway

  4. vpzom

    I'm asking specifically because of something like XEP-0427, I want to be able to fetch the latest "real" message

  5. vpzom

    which seems to require either a generic solution like fastening, or that the server understands every relevant extension

  6. dwd

    Yeah, that's why some of us wanted fastening.

  7. singpolyma

    IIRC the argument was that we XEPs u would need to know about already "shipped" without fastening. Like corrections. It was awhile ago now I may be forgetting parts of the discussion

  8. MattJ

    I think there were also arguments that the logic required for each one is subtly different

  9. lovetox

    I think it's hard to tack something like that on now

  10. lovetox

    I would imagine for this to work good , a server would need to be designed with that in mind

  11. lovetox

    Or rather the db layout

  12. lovetox

    seems we go a bug regport in Gajim, where a server sends a roster item with a attribute "ask=unsubscribe"

  13. lovetox

    i dont see this as valid according to the rfc, in my reading the attribute allows only "subscribe" as value

  14. lovetox

    is there anything im missing?

  15. MattJ

    You're not missing anything. The schema in both RFC3921 and RFC6121 permits only the value 'subscribe'

  16. moparisthebest

    what server

  17. lovetox

    yeah i would also like to know that, but sadly our reporting goes not that far

  18. lovetox

    thanks MattJ

  19. lovetox

    i just discovered that we have suprisingly little validation for roster item processing

  20. rako

    I've been thinking about xep-0490 and why it doesn't seem to work between conversations and gajim even though they both should work and I think I understand why

  21. rako

    The xep says a client should check that node when it connects, but when it connects it hasn't received all messages yet so it will just ignore an id it hasn't seen yet

  22. rako

    Maybe the check should happen a bit after, when it has received the backlog

  23. rako

    I'll need to dive in the code to check/test that

  24. lovetox

    Yes that's the problem in Gajim

  25. lovetox

    You need to find a logic that does not depend on the time when messages or the pubsub request is received

  26. rako

    I just tested and I have the same issue in Conversations

  27. rako

    I'm thinking of something: when an id from mds is received, instead of discarding if it is not found, store it until that message is received at which point we know it must be marked as read. There will be at most one id per chat to remember so it shouldn't explode state

  28. lovetox

    Yes

  29. lovetox

    But it's not just mark that message as read, because mds has only the last read message

  30. lovetox

    You need to set all before that to read

    👍 1
  31. theTedd

    So you should hope to receive it soon enough, otherwise it's too far back to matter anyway

  32. lovetox

    All IDs in mds matter, they are the last message the account read. They cannot be to far back

  33. theTedd

    Either you receive the has-been-read message which carries that id soon enough, or that message was from too long ago and it's no longer in MAM

  34. rako

    Shouldn't I receive the message anyway as part of the initial connection ?

  35. lovetox

    No, messages are requested with a variety of logic

  36. lovetox

    There are certainly cases where You will not receive all messages

  37. rako

    worst case the last-read id is kept forever

  38. lovetox

    Though that's mostly for groupchat

  39. lovetox

    In single, you usually will receive all messages

  40. lovetox

    rako: not forever, because you are going to Read the chat and the overwrite the last read id

  41. rako

    oh, yeah

  42. lovetox

    at least for Gajim the problem was not to find that logic, its more storage and gui related, because we dont keep properly track of which message we have read

  43. lovetox

    this needs probably a bigger refactor and thinking it through

  44. rako

    Lovely

  45. lovetox

    but yeah thinking about it, to make the efficient we would need to start with storing the last read message somewhere for each chat, so we can make a diff once the pubsub query comes in

  46. lovetox

    so we can filter out the chats where we need to do something

  47. lovetox

    because MDS as designed grows infinite, i dont want to start searching in 100 chats when this comes in

  48. lovetox

    or maybe has already implemented this and steps forward to tell us how they did it :)

  49. lovetox

    or maybe someone has already implemented this and steps forward to tell us how they did it :)

  50. theTedd

    You could potentially remove 'old' chats if the last message was marked, and there are no new messages for $period (if new messages come later, you can start marking them again)

  51. rako

    crazy idea: ask the server "I have those 2 stanza-id, which one is the latest"

  52. lovetox

    some servers have sortable stanza ids :)

  53. lovetox

    a feature to announce that would be nice

  54. vpzom

    not really a solution since even if my server supports that, the MUCs I join might not

  55. vpzom

    thought I guess it works as an optimization if there's another way