- Timestamp:
- 08/26/2026 04:49:33 AM (2 weeks ago)
- 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)
- Location:
- src
- Files:
-
- 4 edited
-
config/database.js (modified) (2 diffs)
-
routes/activitypub.js (modified) (1 diff)
-
services/ap-inbox.js (modified) (1 diff)
-
services/ap-timeline.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/config/database.js
r78b8e58 r76290bf 834 834 content TEXT, -- sanitized HTML snippet of the mentioning note 835 835 published TEXT, 836 in_reply_to TEXT, -- de note waarop dit een antwoord is (AS2 inReplyTo) 836 837 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, 837 838 UNIQUE(slug, object_uri) … … 987 988 ensureColumn('ap_mentions', 'quote_json', 'TEXT'); // FEP-044f quoted post 988 989 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'); 989 996 ensureColumn('ap_interactions', 'media_json', 'TEXT'); 990 997 ensureColumn('ap_interactions', 'quote_json', 'TEXT'); -
src/routes/activitypub.js
r78b8e58 r76290bf 543 543 content: AP.stripLeadingMentions(m.content), 544 544 url: m.note_url || undefined, 545 // Waar dit een antwoord op is (Robins melding, 26-8). Zonder dit veld 546 // kwam elk antwoord binnen als het begin van een gesprek: de client kan 547 // een keten alleen teruglopen langs inReplyTo. De andere twee legs 548 // (replyItem uit ap_interactions, sentItem via buildNote) droegen hem 549 // al -- deze was de enige die hem niet eens opsloeg. 550 inReplyTo: m.in_reply_to || undefined, 545 551 published: AP.isoStamp(m.published || m.created_at), 546 552 // Addressed to us and to nobody we know of: the other recipients of a -
src/services/ap-inbox.js
r78b8e58 r76290bf 691 691 for (const slug of slugs) { 692 692 try { 693 const r = db.prepare(`INSERT OR IGNORE INTO ap_mentions (slug, object_uri, note_url, actor_uri, actor_name, actor_handle, actor_icon, actor_url, content, published, help_request, wave, has_guardians, emoji_json, actor_emoji_json, media_json, created_at) 694 VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)`) 695 .run(slug, o.id, safeUrl(o.url) || null, actorUri, ai.name, ai.handle, ai.icon, ai.url, html, o.published || null, help ? 1 : 0, wave ? 1 : 0, hasG ? 1 : 0, 693 // De OUDER gaat mee (Robins melding, 26-8). Hij stond nergens in 694 // deze rij, dus een antwoord binnen een gesprek kwam bij de client 695 // aan alsof het een gesprek begon: de app kan een keten alleen 696 // teruglopen langs inReplyTo, en die was leeg. 697 // 698 // Alleen een http(s)-adres, langs dezelfde poort als `url`: een 699 // inReplyTo komt van een vreemde en mag geen ander schema 700 // binnensmokkelen. AS2 staat een string of een object toe, dus 701 // allebei uitpakken -- alleen de string erkennen zou hetzelfde gat 702 // laten voor iedereen die de objectvorm stuurt. 703 const ouder = safeUrl(typeof o.inReplyTo === 'string' ? o.inReplyTo : (o.inReplyTo && o.inReplyTo.id)) || null; 704 const r = db.prepare(`INSERT OR IGNORE INTO ap_mentions (slug, object_uri, note_url, actor_uri, actor_name, actor_handle, actor_icon, actor_url, content, published, in_reply_to, help_request, wave, has_guardians, emoji_json, actor_emoji_json, media_json, created_at) 705 VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)`) 706 .run(slug, o.id, safeUrl(o.url) || null, actorUri, ai.name, ai.handle, ai.icon, ai.url, html, o.published || null, ouder, help ? 1 : 0, wave ? 1 : 0, hasG ? 1 : 0, 696 707 extractEmojiTags(o.tag), emojiJsonOf(ai.emojis), mediaFromNote(o)); 697 708 if (r.changes) { -
src/services/ap-timeline.js
r78b8e58 r76290bf 334 334 const MESSAGE_COLUMNS = ` 335 335 m.object_uri, m.note_url, m.actor_uri, m.actor_name, m.actor_handle, m.actor_icon, m.actor_url, 336 m.content, m.published, m.created_at, m.wave, m.help_request, 336 m.content, m.published, m.created_at, m.wave, m.help_request, m.in_reply_to, 337 337 m.emoji_json, m.actor_emoji_json, m.media_json, m.quote_json, m.embed_json`; 338 338
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)