Changeset 76290bf in Klonkt for src/config/database.js


Ignore:
Timestamp:
08/26/2026 04:49:33 AM (2 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
0d6d266
Parents:
78b8e58
git-author:
Robin <roboburr@…> (08/26/2026 04:49:17 AM)
git-committer:
Robin <roboburr@…> (08/26/2026 04:49:33 AM)
Message:

Inbox: een binnengekomen antwoord houdt zijn inReplyTo

Robins melding, 26-8: de C2S-lezing serveerde antwoorden zonder ouder.

De oorzaak lag een laag dieper dan de serialisatie: ap_mentions had geen
kolom voor inReplyTo, dus de ouder viel al bij het OPSLAAN op de grond en
messageItem had niets te serveren. Een client kan een gesprek alleen
teruglopen langs inReplyTo, dus elk antwoord kwam aan als het begin van
een gesprek -- de ketenlezing in de app kon nooit verder dan een.

Vier plekken, want het is de hele weg: de kolom (met ensureColumn voor
bestaande databases), het schrijven in de inbox, MESSAGE_COLUMNS -- de
ene leesplek die zowel de inbox-lijst als de gesprekken voedt -- en
messageItem.

De ouder gaat door dezelfde poort als de note-url: alleen http(s), en zowel de
string- als de objectvorm die AS2 toestaat. Alleen de string erkennen
zou hetzelfde gat laten voor wie de objectvorm stuurt.

Nagegaan wat WEL goed ging, zodat de reparatie niet breder wordt dan de
kwaal: replyItem droeg hem al uit ap_interactions.parent_uri, sentItem
via buildNote uit ap_outbox.in_reply_to, en de tijdlijn kan hem per
definitie niet missen -- belongsInTimeline weigert alles met inReplyTo.
Deze leg was de enige.

Bestaande rijen blijven leeg: die ouder is niet meer te achterhalen
zonder hem opnieuw op te halen, en een verzonnen ouder is erger dan
geen. Twee toetsen over de hele keten, tegenbewijs gedraaid: allebei
vallen ze tegen de code van hiervoor. Volle suite 1231 groen.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/config/database.js

    r78b8e58 r76290bf  
    834834      content TEXT,                 -- sanitized HTML snippet of the mentioning note
    835835      published TEXT,
     836      in_reply_to TEXT,             -- de note waarop dit een antwoord is (AS2 inReplyTo)
    836837      created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    837838      UNIQUE(slug, object_uri)
     
    987988  ensureColumn('ap_mentions', 'quote_json', 'TEXT');        // FEP-044f quoted post
    988989  ensureColumn('ap_mentions', 'embed_json', 'TEXT');        // external link preview
     990  // AS2 inReplyTo op een vermelding/bericht. Bestond hier niet, en daarmee ging
     991  // de ouder bij het opslaan verloren: elk ANTWOORD in een gesprek kwam bij de
     992  // client aan alsof het een gesprek begon (Robins melding, 26-8). Bestaande
     993  // rijen blijven leeg -- die ouder is niet meer te achterhalen zonder hem
     994  // opnieuw op te halen, en een verzonnen ouder is erger dan geen.
     995  ensureColumn('ap_mentions', 'in_reply_to', 'TEXT');
    989996  ensureColumn('ap_interactions', 'media_json', 'TEXT');
    990997  ensureColumn('ap_interactions', 'quote_json', 'TEXT');
Note: See TracChangeset for help on using the changeset viewer.