Comments (8)
Looks like a good start. Some thoughts:
- Maybe rename
CORRESPONDENTS
to something likeLISTCORRESPONDENTS
.CORRESPONDENTS
andCORRESPONDENT
can easily be mixed up. - Querying the last n correspondants is a little awkward:
<start>
should be set to a long time ago and<end>
to a time in the future (to account for time synchronization issues between the client and the server). It would be nice to be able to set<start>
and<end>
to*
just likeLATEST
, but then the server can't guess whether the other bound is a lower or upper bound. - It's unclear to me how pagination should work. If I want all correspondants between t1 and t2, I should first issue a command like
CHATHISTORY CORRESPONDENTS timestamp=t1 timestamp=t2 100
. If there are more than 100 results, what should the next command look like?
from ircv3-specifications.
However, the lack of such an API creates a problem: DMs from one user get "buried" behind another, so the client has to retrieve all missed DMs before it can surface new DMs of interest from previously unknown correspondents.
Also, the fact that "*" is an invalid chathistory batch name i guess? or was it resolved?
from ircv3-specifications.
That's being considered on #437. I thought this merited a separate discussion thread.
from ircv3-specifications.
First pass: CHATHISTORY CORRESPONDENTS timestamp=<start> timestamp=<end> <limit>
:
- Timestamps queried and referenced in selectors are the times of the latest message sent from or to the correspondent
- Same selector semantics as
BETWEEN
: starting from and excluding the first selector, ending on and excluding the second selector, either forwards or backwards in time - Same pagination semantics as
BETWEEN
- Returns messages like
CHATHISTORY CORRESPONDENT <nick> <timestamp>
. This introduces a newCHATHISTORY
command; continuation is handled byBATCH
as usual (this may require a new batch type?)
from ircv3-specifications.
If we can agree on an API here, discussion is trending in the direction of it replacing the *
target (not totally sure about that though).
from ircv3-specifications.
Thanks!
- Seems reasonable. Maybe I'll try and find a shorter word than "correspondent" for this...
- I'm open to adding the same subcommands as regular CHATHISTORY here (except for
AROUND
, which is not relevant). As in, the previous proposal was to allow only implicitBETWEEN
, but we could allow explicitBEFORE
,AFTER
,LATEST
, andBETWEEN
here. (Incidentally, the technique you described doesn't properly implementLATEST
:<start>
should be the present and<end>
should be the distant past, in order to ensure that pagination starts at the end and counts backwards.) - Pagination works the same way as with regular CHATHISTORY, so your second command would be
CHATHISTORY CORRESPONDENTS timestamp=t3 timestamp=t2 100
, wheret3
is the lowest timestamp in the first response. This has similar problems as paging through history using timestamps (if two messages or correspondents have the same millisecond-resolution timestamp, you have to choose between adjusting the interval by a millisecond and deduplicating, or potentially missing an item). So we could consider allowing msgids as well (they would be returned on theCHATHISTORY CORRESPONDENT
line and accepted as selectors toCHATHISTORY LISTCORRESPONDENTS
), but bouncer implementations of the spec are going to have to fall back to timestamps in some cases.
from ircv3-specifications.
I'm open to adding the same subcommands as regular CHATHISTORY here
Hrm, I'd rather keep it simple if possible…
Incidentally, the technique you described doesn't properly implement LATEST: should be the present and should be the distant past, in order to ensure that pagination starts at the end and counts backwards.)
Ah, right, this stuff is confusing.
Pagination works the same way as with regular CHATHISTORY, so your second command would be CHATHISTORY CORRESPONDENTS timestamp=t3 timestamp=t2 100, where t3 is the lowest timestamp in the first response
OK, makes sense.
So we could consider allowing msgids as well (they would be returned on the CHATHISTORY CORRESPONDENT line and accepted as selectors to CHATHISTORY LISTCORRESPONDENTS), but bouncer implementations of the spec are going to have to fall back to timestamps in some cases.
Yeah. Either way, it's good to leave the door open to other criteria by prefixing the timestamp with timestamp=
.
from ircv3-specifications.
Discussion continues at #450
from ircv3-specifications.
Related Issues (20)
- A capability for enabling receiving arbitrary standard replies HOT 3
- ISUPPORT UTF8ONLY is not backwards-compatible. HOT 10
- BOT flag lacks notification of change HOT 5
- sasl spec should clarify that AUTHENTICATE is a normal IRC message HOT 2
- CAP DEL undefined behavior
- oper tag HOT 1
- Unclear how servers should send cap updates HOT 2
- Standardize pre-welcome FAIL ACCOUNT_REQUIRED HOT 3
- Client-tag for specifying in which shared channel a private NOTICE should be displayed HOT 5
- CVE-2022-2663 defence-in-depth: Specify CTCP PING character limits HOT 4
- CHATHISTORY: Clarify a limit of 0 in messages HOT 7
- Multiline messages: Clarify what counts towards max-bytes and what doesn't
- sasl-3.1: Mention size limit of incoming SASL authentication messages HOT 1
- Chat history + Channel rename HOT 3
- irc Some privacy issues HOT 5
- sasl: spec recommendations breaks single roundtrip connection registration HOT 4
- Unresolved issues with message redaction HOT 6
- CHATHISTORY: clarify behaviour when messages have no consistent total ordering HOT 1
- draft/account-registration: should all responses use standard-replies? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ircv3-specifications.