diff --git a/docs/protocol/diagrams/group.mmd b/docs/protocol/diagrams/group.mmd index c331b46100..18d392caa5 100644 --- a/docs/protocol/diagrams/group.mmd +++ b/docs/protocol/diagrams/group.mmd @@ -3,24 +3,31 @@ sequenceDiagram participant A as Alice participant B as Bob participant C as Existing
contact - + note over A, B: 1. send and accept group invitation A ->> B: x.grp.inv
invite Bob to group
(via contact connection) - B ->> A: x.grp.acpt
accept invitation
(via member connection) - B ->> A: establish group member connection + B ->> A: x.grp.acpt
accept invitation
(via member connection)
establish group member connection note over M, B: 2. introduce new member Bob to all existing members A ->> M: x.grp.mem.new
"announce" Bob
to existing members
(via member connections) - A ->> B: x.grp.mem.intro * N
"introduce" members
(via member connection) - B ->> A: x.grp.mem.inv * N
"invitations" to connect
for all members
(via member connection) - A ->> M: x.grp.mem.fwd
forward "invitations"
to all members
(via member connections) + loop batched + A ->> B: x.grp.mem.intro * N
"introduce" members and
their chat protocol versions
(via member connection) + note over B: prepare group member connections + opt chat protocol compatible version < 2 + note over B: prepare direct connections + end + B ->> A: x.grp.mem.inv * N
"invitations" to connect
for all members
(via member connection) + end + A ->> M: x.grp.mem.fwd
forward "invitations" and
Bob's chat protocol version
to all members
(via member connections) note over M, B: 3. establish direct and group member connections M ->> B: establish group member connection - M ->> B: establish direct connection - note over M, C: 4. deduplicate new contact - B ->> M: x.info.probe
"probe" is sent to all new members - B ->> C: x.info.probe.check
"probe" hash,
in case contact and
member profiles match - C ->> B: x.info.probe.ok
original "probe",
in case contact and member
are the same user - note over B: merge existing and new contacts if received and sent probe hashes match + opt chat protocol compatible version < 2 + M ->> B: establish direct connection + note over M, C: 4. deduplicate new contact + B ->> M: x.info.probe
"probe" is sent to all new members + B ->> C: x.info.probe.check
"probe" hash,
in case contact and
member profiles match + C ->> B: x.info.probe.ok
original "probe",
in case contact and member
are the same user + note over B: merge existing and new contacts if received and sent probe hashes match + end diff --git a/docs/protocol/diagrams/group.svg b/docs/protocol/diagrams/group.svg index d66b560b21..8c1b65dee2 100644 --- a/docs/protocol/diagrams/group.svg +++ b/docs/protocol/diagrams/group.svg @@ -1 +1 @@ -N existingmembersAliceBobExistingcontact1. send and accept group invitation2. introduce new member Bob to all existing members3. establish direct and group member connections4. deduplicate new contactmerge existing and new contacts if received and sent probe hashes matchx.grp.invinvite Bob to group(via contact connection)x.grp.acptestablish group member connectionx.grp.mem.new"announce" Bobto existing members(via member connections)x.grp.mem.intro * N"introduce" members(via member connection)x.grp.mem.inv * N"invitations" to connectfor all members(via member connection)x.grp.mem.fwdforward "invitations"to all members(via member connections)establish group member connectionestablish direct connectionx.info.probe"probe" is sent to all new membersx.info.probe.check"probe" hash,in case contact andmember profiles matchx.info.probe.ok original "probe", in case contact and memberare the same userN existingmembersAliceBobExistingcontact \ No newline at end of file +ExistingcontactBobAliceN existingmembersExistingcontactBobAliceN existingmembers1. send and accept group invitation2. introduce new member Bob to all existing membersprepare group member connectionsprepare direct connectionsopt[chat protocolcompatible version< 2]loop[batched]3. establish direct and group member connections4. deduplicate new contactmerge existing and new contacts if received and sent probe hashes matchopt[chat protocol compatible version < 2]x.grp.invinvite Bob to group(via contact connection)x.grp.acptaccept invitation(via member connection)establish group member connectionx.grp.mem.new"announce" Bobto existing members(via member connections)x.grp.mem.intro * N"introduce" members andtheir chat protocol versions(via member connection)x.grp.mem.inv * N"invitations" to connectfor all members(via member connection)x.grp.mem.fwdforward "invitations" andBob's chat protocol versionto all members(via member connections)establish group member connectionestablish direct connectionx.info.probe"probe" is sent to all new membersx.info.probe.check"probe" hash,in case contact andmember profiles matchx.info.probe.ok original "probe", in case contact and memberare the same user \ No newline at end of file diff --git a/feed.atom b/feed.atom index c41db448a6..df7187af8e 100644 --- a/feed.atom +++ b/feed.atom @@ -1,11 +1,11 @@ - + SimpleX Chat Blog It allows you to stay up to date with the latest Blogs from SimpleX Chat. - + 2023-07-22T00:00:00Z - https://simplex.chat/, + https://simplex.chat/ SimpleX Chat chat@simplex.chat diff --git a/feed.rss b/feed.rss index c02d91d1fa..b6e1edbceb 100644 --- a/feed.rss +++ b/feed.rss @@ -1,8 +1,8 @@ - + SimpleX Chat Blog - https://simplex.chat/, + https://simplex.chat/ It allows you to stay up to date with the latest Blogs from SimpleX Chat. en