Part of #17 — Message composer & feed parity gaps
GET /api/messages exposes an opaque cursor for keyset pagination, with the explicit
instruction to "pass back the nextCursor from the previous response verbatim — never construct,
parse, or modify it."
MessagesApi.getMessages uses limit/offset, which drifts and duplicates rows as new posts
arrive at the head of the feed — exactly the case a social feed hits constantly.
- Move the feed (and search, if it supports it) to
cursor/nextCursor, keeping the cursor
opaque.
:feature:directmessages already does this correctly — mirror that implementation.
Tests: repository paging test that a new head insert does not duplicate or skip rows.
Filed from the parity review of feature/parity-wip @ 14d7795 against interlinedlist.com (OpenAPI /api/openapi.json, 233 paths) and the public help centre.
Part of #17 — Message composer & feed parity gaps
GET /api/messagesexposes an opaquecursorfor keyset pagination, with the explicitinstruction to "pass back the
nextCursorfrom the previous response verbatim — never construct,parse, or modify it."
MessagesApi.getMessagesuseslimit/offset, which drifts and duplicates rows as new postsarrive at the head of the feed — exactly the case a social feed hits constantly.
cursor/nextCursor, keeping the cursoropaque.
:feature:directmessagesalready does this correctly — mirror that implementation.Tests: repository paging test that a new head insert does not duplicate or skip rows.
Filed from the parity review of
feature/parity-wip@14d7795against interlinedlist.com (OpenAPI/api/openapi.json, 233 paths) and the public help centre.