jdev - 2026-01-06


  1. nicoco

    jjj333_p (any pronouns), resource parts as a nickname is the single most annoying thing I've encountered when making bridges

    🔥 1
  2. jjj333_p (any pronouns)

    exciting!

  3. nicoco

    https://codeberg.org/slidge/slidge/src/branch/main/slidge/group/participant.py#L561 this is what I do in slidge, which looks weird but seems to work so I have not touched it in a while xD

  4. jjj333_p (any pronouns)

    for now ive settled for replacing non-ascii with `_` however that means i cant use the matrix library's native thing to append the mxid for duplicate usernames because it could converge

  5. jjj333_p (any pronouns)

    ill look at that

  6. nicoco

    basically, if slixmpp does not validate, I punycode the nick

  7. nicoco

    and include a <nick> element with the proper nick in the presences

  8. nicoco

    which is something cheogram supports <https://wiki.soprani.ca/CheogramApp/Nickname>

  9. nicoco

    and gajim may one day if I manage to finish that <https://dev.gajim.org/gajim/gajim/-/merge_requests/999>

  10. jjj333_p (any pronouns)

    alright good to know

  11. nicoco

    now I just had reports yesterday that whatsapp seems to allow newlines in nicknames, which crashes slidge-whatsapp, so I need to add at least one more thing in there xD

  12. jjj333_p (any pronouns)

    my hope was to essentially strip everything over unicode 3.2 and replace it with like the unicode escape sequence or something, however that seems to still not pass stringprep so im unsure

  13. jjj333_p (any pronouns)

    > now I just had reports yesterday that whatsapp seems to allow newlines in nicknames, which crashes slidge-whatsapp, so I need to add at least one more thing in there xD oh boy! im bridging matrix (room to muc bridge) which iirc allows practically freeform nicks which could very easily cause issues

  14. jjj333_p (any pronouns)

    it would suck for ux, but i almost wonder if maybe if the displayname doesnt pass stringprep i should just fallback to some hash or maybe display the mxid (since matrix has no semianon anyways)

  15. jjj333_p (any pronouns)

    some server implementations (synapse) let you have any chars in your localpart if you modify the validation, however other instances will reject it and the spec is unclear so i feel like it would be safe to just display an error in such cases (this was a cause of many state diverges back when i was a lot more in matrix)

  16. nicoco

    I think the cheogram approach is fine, punycoded nick in other clients look a bit weird but it's still readable.

  17. nicoco

    > my hope was to essentially strip everything over unicode 3.2 and replace it with like the unicode escape sequence or something, however that seems to still not pass stringprep so im unsure you can try this first, then revalidate, and if it does not pass maybe you fallback to the mxid?

  18. jjj333_p (any pronouns)

    > I think the cheogram approach is fine, punycoded nick in other clients look a bit weird but it's still readable. yesyes, but still need some unique resourcepart

  19. jjj333_p (any pronouns)

    my worry with punnycode is that it wouldnt be unique, but i dont really know what punny code is tbh 😅

  20. jjj333_p (any pronouns)

    i more worry about matrix displaynames can be any length such that it doesnt go over the event size limit iirc

  21. nicoco

    in slidge, after escaping, I check whether the escaped nick is available or not, if it isn't, I add the matrix ID (the nice looking one) in brackets after the nick

    👍 1
  22. jjj333_p (any pronouns)

    > in slidge, after escaping, I check whether the escaped nick is available or not, if it isn't, I add the matrix ID (the nice looking one) in brackets after the nick thats kinda what the matrix library im using rn does, however i still need to set up a matrix server and use a proper appservice library

  23. jjj333_p (any pronouns)

    i suppose i could do that manually

  24. nicoco

    then ultimate fallback is some uuid in brackets, but I don't think this is ever reached, I just let it because PTSD of making it work xD

  25. jjj333_p (any pronouns)

    which would work with the collisions after sanitization

  26. nicoco

    > thats kinda what the matrix library im using rn does, however i still need to set up a matrix server and use a proper appservice library I have not cleaned and pushed it but I managed to set up a containerised local only matrix server at some point for matridge

  27. jjj333_p (any pronouns)

    > I have not cleaned and pushed it but I managed to set up a containerised local only matrix server at some point for matridge i used to host dendrite, currently im testing in prod on a public room i have lol. im creating this bridge out of a need that i have so already what half functioning pre-alpha there is, is better than nothing

  28. nicoco

    then you know better than me :)

  29. jjj333_p (any pronouns)

    i do know two people who have offered to let me use their server, however idr if appservices like being run from not localhost (i.e. can it be set to use https for the internal back and forth?)

  30. nicoco

    no idea 🤷‍♀️

  31. jjj333_p (any pronouns)

    I also should re-evaluate what im doing for matrix -> xmpp media. Currently im acting as a blind proxy but thats proven to be buggy, laggy, and probably not a good long term or short term solution. I dont like the idea of storing media much either though perhaps it expires after a certain amount of time after the last request and then it can be redownloaded if needed?

  32. jjj333_p (any pronouns)

    (xmpp -> matrix was quite easy, i just blindly redirect the media federation request as per the matrix spec to the xmpp media url)

  33. jjj333_p (any pronouns)

    (xmpp -> matrix was quite easy, i just blindly redirect the media federation request as per the matrix spec to the xmpp media url which i store in the db)

  34. jjj333_p (any pronouns)

    > my worry with punnycode is that it wouldnt be unique, but i dont really know what punny code is tbh 😅 oh now that i looked it up, this concern is gone

  35. nicoco

    > I also should re-evaluate what im doing for matrix -> xmpp media. Currently im acting as a blind proxy but thats proven to be buggy, laggy, and probably not a good long term or short term solution. I dont like the idea of storing media much either though perhaps it expires after a certain amount of time after the last request and then it can be redownloaded if needed? in matridge, media is fetched and stored, unless a specific setting is set and the media is not encrypted (then slidge just attaches the original URL in <oob>)

  36. nicoco

    fetching on demand + caching + some expiration rules and limits would be nicer IMHO, I may implement it at some point, although it's not on high on my priority list since it's not an issue for me in practice, current behaviour is good enough

  37. nicoco

    it would be nice to have for huge attachments though, which exist in telegram because some people use that to sail the high seas

  38. nicoco

    🎥 🏴‍☠️

    ❤️ 1
  39. jjj333_p (any pronouns)

    my main priority is trying to store message ids alongside media urls/paths and bridging moderation actions so that way illicit media can be removed automatically

  40. jjj333_p (any pronouns)

    since both matrix and xmpp have issues with message removal not always working, and matrix has a pretty large csam issue currently

  41. nicoco

    🤢

  42. jjj333_p (any pronouns)

    part of why im so hesitant to store media at all

  43. jjj333_p (any pronouns)

    the more i can claim "blind proxy" the better, and then still shut down links quickly

  44. nicoco

    fortunately I have not received or seen such horrors through my matridge instance, I guess I would have stopped it until I make it possible for slidge to remove media, which it currently doesn't

  45. nicoco

    I have a cronjob to delete media > 3 days on my tiny tiny VPS though

  46. jjj333_p (any pronouns)

    I've also been hesitant to figure out bridging avatars as well for this reason

  47. nicoco

    I should not have read this channel this morning now I want to pass a CSAM detection thing on my slidge cached avatars 😬

    ❤ 1
  48. jjj333_p (any pronouns)

    fwiw csam in the avatar isnt super common, however general nsfw is

  49. jjj333_p (any pronouns)

    lol punnycode doesnt even fix the sample username im trying to bridge

  50. jjj333_p (any pronouns)

    https://downloadable.pain.agency/file_share/019b91fb-9058-7ec7-b58b-cca23c1fbc60/6bcc0d83-5c3a-4100-b170-baad0dac8dad.png

  51. nicoco

    doesn't look punycoded? I use `escaped = unescaped.encode("punycode").decode()`

  52. nicoco

    <https://codeberg.org/slidge/slidge/src/branch/main/slidge/group/participant.py#L569>

  53. jjj333_p (any pronouns)

    my bad i was using a different library

  54. jjj333_p (any pronouns)

    https://pypi.org/project/pyunycode/

  55. nicoco

    huh. I think stdlib got it covered

  56. jjj333_p (any pronouns)

    https://downloadable.pain.agency/file_share/019b91ff-4391-7d5b-91cc-08bd529110ac/d00571cc-c30a-4389-8e79-577f4c88e581.png

  57. jjj333_p (any pronouns)

    really strange encoding, but works well enough

  58. jjj333_p (any pronouns)

    mb, i always forget to look in stdlib first

  59. nicoco

    that's more like it. ugly, but allowed to stop losing hair on those resource parts and keep on working on other more fun stuff xD

    ❤ 1
  60. jjj333_p (any pronouns)

    https://downloadable.pain.agency/file_share/019b9200-684c-7938-ae75-a01d3354489b/041fbe20-9037-4458-8d87-e1f660fa6826.png

  61. jjj333_p (any pronouns)

    yep it works for the original displayname

  62. jjj333_p (any pronouns)

    my only remaining concern is with the mod_muc_limits i have set to limit resourceparts to 100 chars, but i suppose thats an edge case its fine to just have the bridge display an error

  63. jjj333_p (any pronouns)

    interesting, this displayname gets a - appended to the end of it ```json "content": { "avatar_url": "mxc://maunium.net/zsYtNqavupxLVmLwmjwuPBCW", "displayname": "XKCD", "membership": "join" } ```

  64. jjj333_p (any pronouns)

    oh all nicknames do 🤔

  65. nicoco

    punycode only if it does not pass validation in the first place

  66. jjj333_p (any pronouns)

    oh, thats a good point. i just did a .removesuffix

  67. jjj333_p (any pronouns)

    i'll just lift what youve done in slidge atp lol

  68. debacle

    Dears, it's easy to make a very naïve login page for a Converse.js chat (as normal fullscreen client for a small private XMPP server). Just a login form, and on summit pass jid and password to `initialize()`, done. But when I reload the page, I'm on the login form again. Does someone has a kind of "minimal example" for a custom login page? Thank you for any link!

  69. debacle

    Dears, it's easy to make a very naïve login page for a Converse.js chat (as normal fullscreen client for a small private XMPP server). Just a login form, and on submit pass jid and password to `initialize()`, done. But when I reload the page, I'm on the login form again. Does someone has a kind of "minimal example" for a custom login page? Thank you for any link!

  70. revonloch

    Hi, I’m Mehedi Hasan Palash. I’m interested in the Memberbot modernization GSoC idea (Secret ballot #14). is anyone here interested in mentoring this project, or could point me to the right person? I’d love to start contributing and discuss next steps.

  71. Guus

    Hi revonloch! Welcome. I guess that you found this task in the GitHub repository? https://github.com/xsf/memberbot/issues/14

  72. Guus

    I'm not sure if this was intended as a GSoC idea. What does make you think it is?

  73. Guus

    On first glance, I see two issues: a) I'm not sure who'd be an appropriate mentor, b) I'm not sure if the amount of work that's involved would be sufficient for an entire GSoC project.

  74. revonloch

    Hello Guus, Yes, this is the issue. I have found this here: https://wiki.xmpp.org/web/Google_Summer_of_Code_2026 actually.

  75. Guus

    On top of that: I'm not sure where this feature request comes from. I do not recognize the author of that issue, and I've not witnessed this being discussed. Although additional features that improve trust and auditability are typically desirable, they also add to the complexity and maintainability of the project.

  76. Guus

    Ah, that page is helpful, thanks. It appears that Benson Muite added that idea to the page. I would talk to them first to find out more about this!

  77. Guus

    You can find his contact information on https://wiki.xmpp.org/web/Benson_Muite_Application_2025

  78. revonloch

    Oww, thank you. I am checking out the info. Also can I add issue in this project to continue like a read me file or something like this?

  79. Guus

    I am not sure what you mean.

  80. revonloch

    I mean, can I improve the readme file to Memberbot repo as a starter task?

  81. revonloch

    I mean, can I improve the readme file of the Memberbot repo as a starter task?

  82. Guus

    It's an open source project that will gladly accept any improvement.

  83. revonloch

    Thank you.

  84. Guus

    Good luck!

  85. debacle

    Btw. I absolutely *love* the page design: https://kichakatokizito.solutions/

  86. Guus

    You're not supposed to have `<ul>` as a child of `<p>` I think?

  87. edhelas

    Only 18 lines of pure HTML and it's not valid, so sad :'(

  88. singpolyma

    there are no rules anymore in html5 ;)

  89. jonas’

    not true

  90. sunglocto

    Joke flew over your head and landed in JFK

  91. singpolyma

    well, rather there is an algorithm that says what to do in all cases making everything have a well defined result. which is not quite no rules but yeah

  92. Guus

    ATTICA ATTICA