|
De wachtende lezing antwoordt met het verschil, als je erom vraagt
shaer-pq4, tweede helft van stap 1. Samentrekken van de twee waiters bespaart
het RONDJE; dit bespaart de VRACHT. Beide paden eindigden tot nu toe in een
volledige inboxlezing -- vier legs van zestig met al hun media-, quote- en
embed-JSON -- voor een enkel nieuw bericht.
Het verschil lag al klaar en werd nooit uitgedeeld: ap_feed_state houdt per
object bij wat er wanneer veranderde, en feedChangesSince had geen enkele
aanroeper. Nu wel, achter ?changes=1.
OPT-IN, en dat is geen franje: een app in het veld stuurt since al mee en
vervangt haar hele feed door wat er terugkomt. Zou since opeens een verschil
betekenen, dan wist die app zichzelf leeg. Een toets bewaakt dat de oude lezing
zonder changes=1 exact hetzelfde blijft.
Het antwoord is een OrderedCollectionPage met partOf, want dat is wat het IS.
Een generieke lezer ziet dat verschil ook.
GRAFSTENEN GAAN MEE. Een verwijdering reisde tot nu toe als AFWEZIGHEID: de
volledige lezing bevatte hem simpelweg niet meer. Juist die volledigheid valt
hier weg, dus zonder Tombstone zou een weggehaalde post voor altijd in de app
blijven staan -- en dat faalt stil. Bart noemde de voorwaarde terecht niet
hard, maar de rijen lagen er al (kind='deleted') en AS2 heeft er een vorm voor.
Om de kaartvorm niet twee keer te beschrijven zijn ook de tijdlijn- en
antwoordvorm uit de handler gehesen (timelineItem/replyItem), net als eerder
messageItem/sentItem. Zelfde gedrag, 855/855 groen.
Co-Authored-By: Claude Opus 5 <noreply@…>
|