-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow history playback of arbitrary events (channel join/part, quits, etc) #362
Conversation
I think there should be a point about clients being able to either handle or ignore verbs that they don't understand, because I'm quite sure a client author will forget about possible cases they missed otherwise. For example, someone could forget about AWAY or CHGHOST - or not interact with them at all - when writing clients. |
Suresure, makes sense edit: Resolved, thanks for the yell! |
…know how to handle/display
Sorry I'm a bit late to this: we're talking about making CHATHISTORY a cap for #306, so are there any downsides to folding this directly into the CHATHISTORY cap? |
I think it makes sense for event playback to be its own very explicit capability, yeah. Getting |
So, given that this is a new cap, shouldn't it be a standalone spec in its own file instead of changes to a batch type? |
It's a new cap that directly changes the batch type. We could have it as a separate spec but it would point towards the chathistory batch spec, and just the same the chathistory batch spec would point towards this spec as well. Feels like it could be more confusing to implementers. I'm open to it, but would like to hear other peeps thoughts before going through with it. |
FWIW the reason I called this batch |
I'll make this a separate batch type and capability. tl;dr if the client's negotiated the |
Alright, |
Suggestion: if you attach a msgid to a JOIN or PART, you should be able to attach the same msgid to the HEVENT that replays it. |
That’s probably covered already by the msgid spec
|
Yeah I'd consider that to be correct behaviour. I'll add a note to the spec stating it explicitly though (just as 'any tags on the original message SHOULD be supplied as-is on the |
:irc.host BATCH +sxtUfAeXBgNoD history #channel | ||
@batch=sxtUfAeXBgNoD;time=2015-06-26T19:40:31.230Z :foo!foo@example.com PRIVMSG #channel :I like turtles. | ||
@batch=sxtUfAeXBgNoD;time=2015-06-26T19:43:53.410Z :bar!bar@example.com NOTICE #channel :Tortoises are better. | ||
@batch=sxtUfAeXBgNoD;time=2015-06-26T19:44:23.423Z :bar!bar@example.com HEVENT PART #channel :Tortises for life! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This typo may be intentional but it is somewhat distracting ;-)
I just noticed that TAGMSG is specified as requiring a HEVENT instead of TAGMSG. What's the rationale for that? |
As discussed in #ircv3 yesterday, this whole HEVENT verb not only complicates parsing on the client side and is very odd, but is also redundant. Clients must opt-in to see this batch type so they will already know to only use them for display purposes. When it comes to parsing the batch, there is no difference vs parsing chathistory which means most logic will simply be |
I propose that the suggestion in the above comment should be adopted, and the |
yeah, it'd be best to handle it that way. totally agree that |
I believe this is fully absorbed into #393 at this point and can be closed. |
The diff is a bit screwy because of the rename, the changes can be seen here though.
Brought up and discussed fairly extensively in #293, there are some events that servers may wish to replay as part of the
chathistory
batch. I know that in Ora, we want to replay joins and parts as they can be useful for working out context.Right now, the
chathistory
batch only supportsPRIVMSG
andNOTICE
messages, which makes sense. This spec tries to extend the batch so that clients who support it can be sent any abritrary messages as part of the batch.At the same time, we want to make totally sure that clients aren't going to run into some use case and accidentally parse an old message as something new. Because of this, as recommended by @dequis in the linked issue, we replay these events as a new message called
CHEVENT
(chat history event). Doing it in this way simplifies client implementations because they can simply catch theCHEVENT
message and go on to displaying the contents, and it also means that clients have no way of accidentally parsing a replayed event as a real one no matter what strange edge cases they run into.Feedback would be much appreciated!