concertoit has a `.gajim-msg-correcting text` selector
concerto```
.gajim-msg-correcting text {
background: rgb(131, 148, 150)
}
```
concertoSo...why isn't that color applied o_O
lovetoxmaybe it overwritten in the theming window concerto?
concertolovetox: theming window?
concertoif you mean Preferences -> Style there's no customization there
lovetoxthen weird, have to check if i can reproduce the problem
lovetoxbut you can set a background there and check if that is working
concertolovetox: there's only one theme in Style, by the way - "default". Is that as it should be?
lovetoxyes, add a new one
lovetoxand add your background setting
concerto!
concertoThat did it o_O
lovetoxso just the default value seems not to work
lovetoxi have to check that at home
concertoalrighty :)
guybrush88asterix, I'm currently improving Gajim's Italian translations (from the app itself to the website) through the online version
debacleAny idea, how to improve my MAM UX? I'm joining a room, that I didn't visit since some time, and now I'm getting messages from the last 180 days. This, of course, takes long. Can I stop Gajim downloading all this history? Can I make Gajim ask me, before downloading a history of more than n days or m messages?
lovetoxmany ideas but no time
lovetoxi can make it so it doesnt download more than X days, but then people come and start complaining that they miss the message from X +1 day
lovetoxi dont know what is worse 🙂
tadebacle, exactly my situation. On working days i only use my office machine with gajim, on weekend only my private notebook. Pretty busy channels make the machines pretty sluggish, loading 2 or 5 days from MAM.
debaclelovetox, maybe download MA from latest to earliest and do that deliberately slow?
debaclealso, if I would use Gajim with mobile internet, I would not like it to make any expensive downloads
takeep loading in backgroud to sync with local history would be appreciated, i think.
debaclethere should be a global switch to disable MA download altogether
debacleif I'm on train Wifi and I want to send an urgent message, and Gajim is busy with downloading 180 days off-topic jokes :~)
lovetoxyou dont need to tell me that the current behavior is not optimal
lovetoxthere is only one optimal behavior, dynamic loading of history if the user requests it specifically, otherwise dont load history at all
lovetoxbut this is hard to implement
debaclelovetox, no pressure, I know that you are improving Gajim every day!
lovetoxand all other solutions have drawbacks
HolgerIt's okay if you do it tomorrow, lovetox.
lovetox😃
debacleHolger, you are too liberal! It should be today! Otherwise I will not pay for Gajim anymore! Oh...
mdoschlovetox:
> there is only one optimal behavior, dynamic loading of history if the user requests it specifically, otherwise dont load history at all
> but this is hard to implement
Hmm, that also has a drawback. What if I don't request it as I don't need it now and request it later when the important message was already removed from my servers mam? I'd prefer a setting 'fetch all', 'fetch dynamically' or 'fetch never'.
debacleThere are always more features wanted than can be implemented. IMHO, volunteer free software programmers should work on the features that are most fun for them, not necessarily what other people (like me) ask for.
lovetoxmdosch, for single chat always all is synced
lovetoxthe problem is only with MUC
lovetoxbecause there could be 1000 of messages in a short time
mdoschYeah, but the important message could have been in a muc.
botMarco d'Itri created an issue in _gajim_ < https://dev.gajim.org/gajim/gajim/issues/9339 >:
#9339: < Traceback and missed notifications >
lovetoxmdosch so you want a full sync of a MUC?
lovetoxthat could mean endless messages
lovetoxdepending on the MUC, if its a IRC channel for example, very bad
lovetoxbut yeah i see the value of a switch to regulate that
nicoI literally had this problem like 5 mons ago joining the conversation muc. 125 days of backlog took me 20 minutes to use Gajim again 😂
mdoschlovetox: What is IRC? 😂
Hmm, maybe per muc setting in the bookmark?
lovetoxi will implement a limit of max days first
lovetoxto avoid some hard cases like > 100 days
asterixguybrush88: great!
guybrush88asterix, mostly I've been reducing the critical errors
guybrush88asterix, also, I have a doubt: there's an English string containing "translator-credits", and as a translation there's already a list of actual contributors to the translations, but this is marked as a critical error. How can I fix it?
asterixJust click the ignore button for this string
guybrush88asterix, OK, thanks, also, I found another problem: there's a string containing the proper translation, but it's still marked as critical error. Its position is gajim/conversation_textview.py:1249
asterixguybrush88: you see the ignore button? A red prohibited sign
guybrush88asterix, I'm searching for it :P
asterixguybrush88: yes, you can ignore this one too. The website don't handle plural form like that correctly
asterixguybrush88: now do you see it? I gave you more rights
concertoOh, was it history loading that was being discussed?
concertoI was just gonna say that history seems to take an age to load for this IRC channel I'm accessing through Biboumi.
guybrush88asterix, yes, now I see it
concertoIs it because it's a very busy one, or is it because of Biboumi?
guybrush88asterix, thanks for your reply and for the permissions \m/
asterixguybrush88: you can now also review suggestions
asterixguybrush88: accept or refuse them
guybrush88cool, thanks
guybrush88now critical errors are less than ten \m/
marmistrz> i can make it so it doesnt download more than X days, but then people come and start complaining that they miss the message from X +1 day
> i dont know what is worse 🙂
'ovetox, configurable threshold?
lovetoxhm if we have that setting per muc, this could be nice
lovetoxlike a sync all or X days switch
lovetoxso for private mucs you can activate, sync all because probably not many messages
lovetoxand for big mucs you can make it 2 days or something
nicothat sounds reasonable
marmistrzAnother thing that may be useful is some setup wizard on first run. There are things that we can achieve no consensus about: yesterday's discussion on trust, XEP-0393 or current markup - it could be a good idea to let the user choose during the first run which behavior they prefer
mdoschlovetox:
> that sounds reasonable
I agree
concertobut but but what about those who want full history for everything load times be damned? o.o
marmistrzmaybe then loading on demand, when the possibly missing history is tried to be accessed?
nicothey can use all even for public mucs right?
concertoloading on demand is good, but I do hope it's stored on-disk when it's loaded
marmistrzI *think* it's what Conversations does
lovetoxyes i didnt mean private in the sense that gajim checks if it is private
concertoRiot (Matrix client) loads on-demand and caches it for a very short time. Which is awful because it takes ages for it to load history.
nicoI would prefer default eg 2 days and as a setting locally that everything is pulled
lovetoxyeah and we could apply sensible defaults depending on if the muc is private or not
marmistrza, it got collapsed into a paste - I'm wondering what the other people think about the issues with trust we've discussed yesterday, see the paste for more details
marmistrza, it got collapsed into a paste - I'm wondering what other people think about the issues with trust we've discussed yesterday, see the paste for more details
marmistrzIt looks like gajim doesn't reconnect after suspend anymore. Do you have any ideas why?
lovetoxhm maybe network monitor is faulty
lovetoxi can add debug output to it
botPhilipp Hörist pushed 1 commit to branch _refs/heads/master_ of _gajim_ < https://dev.gajim.org/gajim/gajim >:
*0fba2b8a* < https://dev.gajim.org/gajim/gajim/commit/0fba2b8a58fe47d406a2b4f58fbfa6abd93454ee >
Add debug output for NetworkMonitor
lovetoxthere, log with gajim.interface=DEBUG
lovetoxmarmistrz,
lovetoxi again thought about this a bit more
lovetoxdo we really need to show the trust for historic messages
lovetoxit seems really not useful, because all messages in the end become untrusted
marmistrzlovetox, let's list the situations when you would untrust a fingerprint
marmistrzFor me:
marmistrz1. unauthorized access to the remote party's device
marmistrz2. tentative trust so that we temporarily have encrypted communication, but we'll verify the identity later
marmistrz3. fingerprint trusted by mistake
marmistrzanything else?
lovetoxyes, contact just doesnt use the fingerprint anymore
marmistrzthis is not a reason to untrust the fingerprint
marmistrzbut well, we could possibly add a feature which could warn about messages from fprs that are believed to be unused
marmistrzthat makes sense
lovetoxyou never see such messages
lovetoxmaybe i should state here, that messages from untrusted fingerprints are droped
marmistrzwait, what, why
marmistrzwait, what, why????
marmistrzI may not want to trust a fingerprint because I'm not sure if the remote party is who I believe it is, but I may want to know what they're writing to me
marmistrzit's bad to silently drop messages. I know users, who will deliberately mistrust a fingerprint until they verify it via a different, secure channel
lovetoxbut why what do you gain from explicitly not trusting?
marmistrzdoesn't Gajim prompt if there are unknown-trust fprs (I don't remember)
marmistrz> you never see such messages
what if someone just stealthly copies your $HOME?
marmistrzyes, that's unlikely, but possible
lovetoxwhat has copying your home, to do with dropping messages?
marmistrz> warn about messages from fprs that are believed to be unused
marmistrz> what if someone just stealthly copies your $HOME?
marmistrzthis is one
marmistrzdropping messages is a different thing, but a client should definitely NOT do that
lovetoxi dont get why you bring some stuff into this like someone breaks into your computer and copies stuff, Gajim is not there to secure your computer or messages against break in
marmistrzand you may set trust to "no" because you think you need to set some trust
marmistrzlovetox, I know it's not
marmistrzI'm just saying that the only use for mistrusting an unused-but-otherwise-trusted fpr could catch such situations
marmistrzwhich is not exteremly useful
Zashå§98
marmistrzLet's focus on the important issue: why the heck should Gajim drop untrusted messages???
lovetoxfor one because it does not have a way to tell you that it is from a untrusted fingerprint
marmistrzlovetox, let's assume that it's fixed (#233)
marmistrzlovetox, let's for a time assume that it's fixed (#233)
lovetoxi see no reason to drop it then
marmistrzok
marmistrznow why would you untrust a fpr because it's not used anymore?
lovetoxthe second problem that i see is, that in the end everything gets marked as untrusted, because you rely for trust calculation on third party plugins and data stores
lovetoxbut i guess one could say the user should take care to backup his data
marmistrzyes, and you won't get the old messages MAM-ed anyway for the new key
marmistrzand it'll be an issue with whatever we decide to do with old messages
lovetoxwith omemo, but there is also pgp, which you can decrypt forever
lovetoxbut i guess yeah if someone loses his keyring with all the fingerprints, its his fault
marmistrzyep
lovetoxin this case gajim would show all messages as untrusted
marmistrzfor PGP I think we should use the PGP trust
lovetoxi find this very unsafe
lovetoxdoes anyone actually use this for critical stuff
marmistrzidk anything about PGP in XMPP, so maybe I'm wrong here :)
lovetoxpgp has the web of trust approach
lovetoxbut i think this fails for high security
lovetoxyou maybe should take a look at the new openpgp plugin, maybe you like it more than omemo :)
marmistrzI can, but I think that forward secrecy in IMs is a nice thing
marmistrzI can, but I think that forward secrecy in IMs is a nice thing :)
lovetoxeither way, i think im conveinced by your approach
lovetoxbut with the current omemo plugin, i think we can only pass the "is encrypted" flag to gajim, its just too bad designed for the trust thing
lovetoxbecause right now you have to do a db lookup per fingerprint
lovetoxwhich means if you load 20 messages on start, you have 20 db querys on top just to get the trust information
lovetoxvery inefficient
lovetoxbut i work on a new omemo plugin that makes everything better, and also adds blind trust option
lovetoxand also uses a new lib
lovetoxi think for now we should do the "is encrypted" thing, this we can finish in the next days
marmistrzlovetox, we could load the whole fpr db to memory if it's not very big (and usually it won't be), or cache the queries (usually there won't be very many fprs involved)
marmistrzso it's one query per chat line, which is the current complexity
marmistrzbut yeah, we can wait for the new omemo lib
marmistrzbut yeah, we can wait for the new omemo plugin
marmistrzand focus on the encrypted/unencrypted thing for the time being
lovetoxyeah i want to do this in the new plugin, have it in memory
lovetoxso its fast
lovetoxi already have this for openpgp
marmistrzgreat :)
lovetoxbut omemo plugin i wrote 2 years ago, with some other people, and i didnt have a clue what i did, i was just happy that it worked
marmistrza, and yesterday (or some other day) I forgot replying to a message about annotating types: I know that sometimes it's damn hard to figure out the types, so usually I do it that way
marmistrzf I can figure out the type in some small amount of time, then I annotate (say a minute or two)
marmistrzif I can't see what it is, then I leave it
marmistrzif I can't see what it is, then I leave it unannotated, there's no use spending too much time on it for old code
marmistrzBut sometimes you need to know the type anyway, and if you have already discovered that, then it's good to save the work you've done in code.
marmistrzthat's how I did it the last time I worked with a giant python code
lovetoxmarmistrz, my problem was not finding the type, of course i know the types my methods return
lovetoxits getting mypy to flag it as OK
lovetoxthere run this through mypy
lovetoxhttps://paste.gajim.org/view/6067d32a
lovetoxannoted
lovetoxfaily easy function, can take Union[str, bool] and return bool
lovetoxbut it needs more than declaring that to get through mypy
marmistrzwell, it may depend on your mypy opts. I ran mypy and I'm wondering: why does gajim/common/const.py work at all, when _ for gettext is not imported from anywhere?
marmistrzgajim/common/const.py:416: error: Name '_' is not defined
lovetoxthere is a method in the gettext module
lovetoxits called install()
lovetoxif you call this, it installs the _() method in a global namespace of your application
lovetoxso the way here is to tell mypy to ignore it, but also that option i did not find anywhere
lovetoxif i annote that function it always tells me
lovetoxmypytest.py:8: error: Incompatible return value type (got "Union[str, bool]", expected "bool")
lovetoxit thinks the return value of the function can be str or bool
lovetoxbut it can never be str
lovetoxbut it doesnt realises that
lovetoxbecause of that
lovetox if value in (True, False):
return value
lovetoxvalue is Union[str, bool]
lovetoxand it thinks because there is a line "return value" that this is a possibility
marmistrzlovetox, send me your example file (annotated) and I'll take a look
lovetoxit doesnt recognice that the condition "if value in (True, False)" makes it impossible that a str is returned
lovetoxhttps://paste.gajim.org/view/c17be988
lovetoxthere
marmistrzThx, I'll take a look tomorrow
lovetoxk, look that i finish the thing in the omemo plugin tomorrow
lovetoxthen we can test the MR
marmistrzkthx.:)
Link Mauvelovetox, is '' really allowed as a False value in (I guess) xs:boolean?
Link Mauvehttps://www.w3.org/TR/xmlschema-2/#boolean apparently not.
lovetoxyes i know, i added this because nbxmpp returns '' if the cdata is empty
lovetoxit doesnt hurt to convert this to false
Link MauveIt could, for instance it could hide a server bug.
Link MauveIn which case would you get an empty cdata or characters?
lovetoxyes, but gajim is not primarily a debug maschine for other clients and servers
lovetoxsomethimes you have to take a compromise
Link MauveIn which case is this compromise needed, is what I’m asking.
Link MauveBecause it sounds to me like this should instead be fixed in a server.
lovetoxif someone behaves wrong, and adds <asd/> instead of <asd>false</asd>
Link MauveThis sounds like a bug which should be fixed, instead of a workaround added in every client just for this one bug.
marmistrzand please raise a bug against mypy (you can mention me there), mypy shouldn't refuse your code anyway
lovetoxso it can evaluate conditions
lovetoxgood to know
marmistrzyou could also use a cast: https://mypy.readthedocs.io/en/latest/common_issues.html
marmistrzso it looks like a known limitation
lovetoxits so weird to add something like that into the code
lovetoxo = cast(int, o)
marmistrzindeed. but isinstance is obviously preferred in OO code
lovetoxactually that is then executed by python
lovetoxwhen its running
lovetoxbut thanks, i try to annoate my first module now :D
lovetoxand install mypy on the ci
marmistrzpleasure mine :)
marmistrzif you have some mypy problems, feel free to ask. :)
You can also ask on the mypy gitter (I'll be unavailable for a week starting next Sunday)
lovetoxwhat is a "gitter"?
concertolovetox: Yet Another IM Protocol™
Link MauveNah, a cast should always be avoided, it basically destroys mypy’s usefulness.
concertolovetox: created by GitHub, open-sourced last year
concertoIs there any work being done on read markers?
marmistrzwhat, gitter got open source?
concertoyeah, I just found out a couple days ago, too.
lovetoxno concerto, its not worth the effort with current textview