libera/#shirakumo - IRC Chatlog
Search
9:27:37
Colleen
<SAL9000__> shinmera: shouldn't that have sbcl in makedepends? also, quicklisp dist updates will break the b2sum
9:27:57
Colleen
<shinmera> oh, right. forgot to add that back in because I had to remove it for my build
9:29:37
Colleen
<SAL9000__> btw there is an actual package for quicklisp https://archlinux.org/packages/extra/any/quicklisp/
9:31:23
Colleen
<SAL9000__> also pushed some more weelichat fixes, channel-info was subtly broken among other things
9:48:47
Colleen
<shinmera> since a lot of backends have very different capabilities and requirements for the markup
9:50:01
Colleen
<SAL9000__> how did lichat handle PMs? if I recall correctly, "everything is a channel", right?
9:50:13
Colleen
<SAL9000__> weechat hotlist expects different values for "message in channel" vs "message in PM"
9:50:58
Colleen
<shinmera> I was also thinking about how to improve the UX of that recently, by introducing a "title" attribute for channels
9:51:13
Colleen
<shinmera> so that the server can create a more human-readable title than the randomly generated channel id
9:51:32
Colleen
<SAL9000__> hmmm... so do we treat "any anonymous channel" as PM, or only "anonymous channel with 2 participants"?
9:52:48
Colleen
<SAL9000__> most people consider "I got a DM" more important than "someone said something in #big-channel"
9:52:54
Colleen
<shinmera> the bug of when you /close a buffer it being reopened immediately to show the quit message is still there, too, btw
9:53:26
Colleen
<SAL9000__> ye, question is whether group DMs map as "big DM" or "small channel", conceptually
9:55:07
Colleen
<SAL9000__> ok, so all @channels get "private" hotlist rather than "message" hotlist
9:55:23
Colleen
<shinmera> Also, I just want to say, because this is a very unusual feeling for me, but I'm still really happy with the lichat protocol design.
9:55:32
Colleen
<SAL9000__> as for @channel titles - if it's a DM, the clients should probably render the other person's name rather than the internal title
9:56:23
Colleen
<shinmera> though that's something the client has to do, too, since the server doesn't know about it
9:57:00
Colleen
<SAL9000__> user A opens DM with user B, user A receives title=B, user B receives title=A
9:57:23
Colleen
<SAL9000__> title should be unset, then clients show the counterparty's name in the 2-party case
9:57:40
Colleen
<SAL9000__> >2 people + title unset gets a bit silly though, maybe server could autogenerate a 'human' name?
10:00:05
Colleen
<SAL9000__> I'm thinking of those "show your private key as a sequence of words" things, but that shouldn't be in the spec :)
10:01:14
Colleen
<SAL9000__> that feels a bit weird, what happens if a "deleted" message is edited back to non-empty text? error?
10:05:08
Colleen
<shinmera> jeez, looking through the spec, when did I have time for all this garbage
10:10:52
Colleen
<SAL9000__> I assume anon channels get automatically cleaned up when all participants leave/disconnect?
10:33:16
Colleen
<SAL9000__> and "@foo" was not auto cleaned up either ("this channel name is taken")
10:39:38
Colleen
<shinmera> Pushed fixes for both to the server (though they are not live yet as I still have not figured out how to hot-upgrade)
10:40:40
Colleen
<shinmera> also you may want to check whether the /grant and /deny commands in weelichat work
10:51:07
Colleen
<SAL9000__> shinmera: I think I've fixed at least the self-inflicted /close recreating buffers :-)
10:52:21
Colleen
<SAL9000__> the key point is that close_cb seems to be run *after* the buffer is already closed
10:52:41
Colleen
<SAL9000__> so approaches based around deferring the actual close don't work, we have to swallow or redirect updates
10:53:15
Colleen
<SAL9000__> currently I only swallow responses to the leave update -- so other updates coming in could still recreate the buffer, which may or may not be a good thing
10:53:38
Colleen
<SAL9000__> tbh with all the backfill stuff involved too this needs real state machines lol
10:54:05
Colleen
<SAL9000__> also, my testing with anon channels quickly ran into update throttling. we either need to raise that threshold or make the client a bit more polite
10:54:40
Colleen
<SAL9000__> half the pain of backfill is from weechat not permitting retroactive insertion
10:54:55
Colleen
<shinmera> yeah the throttling is a bit... I think I need to distinguish between different types of updates on the server?
10:55:10
Colleen
<shinmera> like, have more lenient limits for queries, and stricter for updates/posts
10:55:51
Colleen
<SAL9000__> if it's not visible it doesn't create spam problems, if it's cheap to process it doesn't create denial of service
10:56:14
Colleen
<SAL9000__> e.g. uploading emoji is "expensive" because the input can be large, even though it's not visible to other users directly
10:56:56
Colleen
<shinmera> I think it's fine to just distinguish between updates that just return info (backfill, channel-info, etc.) and updates that change state (create, destroy, pull, message, etc)
10:58:28
Colleen
<shinmera> but back to the other point, having a general state flow diagram for a client's lifetime would be useful in general
11:17:23
Colleen
<SAL9000__> shinmera: any particular reason for using " " (two spaces) as autojoin delimiter?
11:20:55
Colleen
<shinmera> https://github.com/Shirakumo/lichat-protocol/blob/master/spec/lichat.mess#L91
11:22:12
Colleen
<shinmera> like, I just navigated away from this channel and it then had 17 messages in the hotbar for me
11:22:48
Colleen
<SAL9000__> I think there's a Fun Interaction between us setting 'notify' property & the weechat settings
11:24:35
Colleen
<SAL9000__> ...oh right, we used to use hardcoded values 2/1 where we should have used constants, constants happen to be 1/0 respectively
11:25:09
Colleen
<SAL9000__> so all our hotlist entries were 1 tick "hotter" than they should have been, so we dialed down the notify-level to "compensate"
11:30:31
Colleen
<SAL9000__> shinmera: pushed. when you update, make sure to reset the notify values in config so they go back to defaults again
11:31:20
Colleen
<SAL9000__> nb: might be some edge cases where messages aren't high enough priority since I'm treating everything kind != "text" as a network-message
11:38:35
Colleen
<shinmera> would it be worth it to allow the server to send URLs instead of base64 payloads?
11:39:38
Colleen
<shinmera> and for at least weelichat it would let us present an URL instead of just a blob that the user has no context for
12:00:18
Colleen
<SAL9000__> aaaaa of course it's not enough to set notify_private and hotlist, you ALSO have to set buffer local var 'type' to private
12:00:34
Colleen
<SAL9000__> and I bet that breaks other stuff that assumes private == 2 participants
12:37:44
Colleen
<SAL9000__> shinmera: any ideas for how to disambiguate "dm with 'user'" vs "channel called 'user'" in the weechat buffer names?
12:47:25
Colleen
<SAL9000__> I've got all the bits for that cooperating, I think. The catch is that buffer name -- which affects logging, among other things -- is still @Stuff...
12:47:56
Colleen
<SAL9000__> if we DM each other in two separate sessions they end up in two logfiles, which is "surprising"
12:50:30
Colleen
<SAL9000__> ...oh ugh. logger defaults set case folding on -- all log file names are lowercase
12:51:26
Colleen
<SAL9000__> feels a bit weird that the autogenerated channel names have a mix of cases, then
12:53:56
Colleen
<SAL9000__> yeah not seeing a nice way to redirect @foo logs based on interlocutor name :\
13:07:18
Colleen
<SAL9000__> shinmera: same disambiguation problem comes up in regards to buffer name (= log file name)
13:08:03
Colleen
<shinmera> As always when you can't namespace, name collisions are an inevitable security issue
13:09:32
Colleen
<SAL9000__> if we're OK with a breaking change to buffer names, can do c.channel and u.user or something
13:10:44
Colleen
<SAL9000__> currently, buffer name is lichat.tynet.shirakumo and lichat.tynet.shinmera for channels/dms respectively
13:11:00
Colleen
<SAL9000__> suggestion is something like lichat.tynet.c.shirakumo and lichat.tynet.u.shinmera respectively
13:11:46
Colleen
<SAL9000__> logs involving lots of transitions across that boundary might get... interesting...
13:12:41
Colleen
<SAL9000__> client can't tell that it has (re)joined a dm that was multiparty and it should use channel mode
13:13:35
Colleen
<shinmera> my issue especially with merging back is that if you have a dm channel with someone already, then that'll merge badly
13:13:53
Colleen
<shinmera> the only issue is that the client that made the channel must ensure this
13:13:57
Colleen
<SAL9000__> ...oh god you're right, nothing preventing multiple /q with the same person, just makes two anon channels
13:14:34
Colleen
<shinmera> and then they leave safe for the dude you have a dm channel with already
13:15:26
Colleen
<shinmera> yyyyes because if you're the one being pulled in, then weelichat needs to know
13:16:04
Colleen
<SAL9000__> tbh even if we ignore multiparty we have a simpler failure case - two anon channels with the same pair of people
13:17:32
Colleen
<shinmera> this kinda stuff is why I initially suggested only cosmetic alternations
13:21:02
Colleen
<SAL9000__> the best part is that I can easily see an actual use case for multiple dms so locking it out would be bad
13:21:59
Colleen
<SAL9000__> just confirmed - weelichat in its current incarnation (minus name munging) deals with it just fine
13:24:41
Colleen
<shinmera> it's just a recommendation for servers to allow the title key by default
13:25:52
Colleen
<SAL9000__> I think currently it just lands as a "channel" topic, admittedly there's a race condition between that and update_multiplicity
13:35:13
Colleen
<shinmera> again, wish I could find literally anything that explained how to do hot upgrades
13:35:27
Colleen
<shinmera> every time I've tried I've only found "lol read erlang docs" as if that fucking explained anything
13:35:58
Colleen
<shinmera> but then whenever you read about erlang/elixir in other contexts, hot reload gets touted as a hot cool feature
13:49:23
Colleen
<SAL9000__> shinmera: regarding base64 & urls - could have the server optionally send urls alongside the base64? then the clients get to choose how to render
13:50:16
Colleen
<shinmera> especially because we're now not saving on the bandwidth of transmitting it
14:02:09
Colleen
<SAL9000__> well the less dirty thing is e.g. weelichat runs a localhost httpd and transforms the base64 into a (shortened) url
14:03:22
Colleen
<shinmera> No, I want to keep b64 around to support setups where there's no http server at all
14:03:39
Colleen
<shinmera> but I *also* want to support setups that can take advantage of the better delivery http can give
14:04:55
Colleen
<shinmera> I *guess* these days forcing a http client onto a client is really not that egregious
14:05:12
Colleen
<shinmera> and for simpler clients being able to throw an URL at the user is probably better than just dropping a b64 blob on the floor
14:05:16
Colleen
<SAL9000__> there is a slightly cursed thing we could also do - https://chat.tymoon.eu/b64#blargh renders to a js page which decodes the suffix as b64 png
14:05:41
Colleen
<SAL9000__> advertise this to clients in some way, then they can replace the b64 blob with a link
14:07:31
Colleen
<shinmera> I think what I'm going to do is change the icon extension to allow sending either an http/s url or a base64:<payload>
14:09:00
Colleen
<shinmera> we can keep it compatible (sorta) if the value field stays the same, but an extra field is added to denote whether the value is b64 or url.
14:09:34
Colleen
<shinmera> could then add a client extension cap that the server can track for whether it should send b64 or urls, too.
14:10:34
Colleen
<SAL9000__> remind me, was there a reason weelichat bothers to request emoji? some trick with glowing-bear?
14:11:13
Colleen
<SAL9000__> not sure if we can hook it up to do inline emotes but it does work for /react
14:13:20
Colleen
<shinmera> could also add a buffer that renders all available emotes with something that isn't sixels :p
14:16:50
Colleen
<SAL9000__> shinmera: just did some grepping in #weechat, found this https://toxicfrog.github.io/osc-wrapper/