Bump protocol to v9 and carry talk-circle ids on the presence frame.
Names stay off the wire; a person not in a circle writes an empty member list and topic. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+13
-2
@@ -1,4 +1,4 @@
|
||||
# Wire protocol v8
|
||||
# Wire protocol v9
|
||||
|
||||
The client talks to the server two ways:
|
||||
|
||||
@@ -308,6 +308,9 @@ grid fetches `GET .../timetable?classId=` with it.
|
||||
|
||||
`activity` is the ActionDef name currently in progress, or `null` when idle. `activityLabel`
|
||||
is that def in the request locale. HTTP JSON is additive — no protocol version bump.
|
||||
`talkCircleMemberIds` is the live circle (including self, sorted) or `[]`; `talkTopicId` is the
|
||||
topic def id or `null` when not talking. Same ids as the presence frame; names are not repeated
|
||||
here either — the Now tab uses the directory and locale, like the location panel.
|
||||
|
||||
`skills` lists only keys the person has, not every `SkillDef` in the catalog. A first-year has
|
||||
no Chemistry; a related tongue from the name set may sit beside the native at a low value.
|
||||
@@ -347,6 +350,8 @@ The client does not compute thresholds. There is no school-wide opinions endpoin
|
||||
"needs": [{ "id": "Sleep", "label": "Сон", "value": 1 }],
|
||||
"activity": null,
|
||||
"activityLabel": null,
|
||||
"talkCircleMemberIds": [],
|
||||
"talkTopicId": null,
|
||||
"family": {
|
||||
"parents": [{ "id": "f0.p1", "fullName": "Иванова Ольга Михайловна", "female": true }],
|
||||
"children": [],
|
||||
@@ -972,6 +977,12 @@ Each person:
|
||||
| string | person id |
|
||||
| string | node id they occupy |
|
||||
| `u8` | `1` here, `2` walking |
|
||||
| `u8` | talk-circle member count, then that many person-id strings |
|
||||
| string | topic id (empty when not in a circle) |
|
||||
|
||||
Member ids are the live circle, including self, sorted by id. Count `0` and an empty topic mean
|
||||
the person is not talking — the same id/node/state as before the circle fields. Names are not
|
||||
on this frame; the client builds «говорит с Машей о футболе» from the HTTP directory and locale.
|
||||
|
||||
## Guarantees and limits
|
||||
|
||||
@@ -986,7 +997,7 @@ Each person:
|
||||
the oldest, because a stale clock is worthless once a newer one exists.
|
||||
- The map snapshot and presence use a separate reliable queue so ticks cannot crowd them out.
|
||||
|
||||
## Not in v8 yet
|
||||
## Not in v9 yet
|
||||
|
||||
Authentication, Sit orders, an event log, walk animation, and `OpenLocation` on the server —
|
||||
the tree and the location panel are filtered on the client from the snapshot plus presence.
|
||||
|
||||
Reference in New Issue
Block a user