fix(webmention): scope link extraction to .h-entry not .e-content
u-in-reply-to, u-like-of, u-repost-of etc. are rendered in an aside before the .e-content div, not inside it. Scoping to .h-entry .e-content caused these microformat links to be missed entirely. Also bump reset-stale migration to v3 so posts already marked sent with zero results (like /replies/88feb/) are retried with the corrected scope. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,16 @@
|
|||||||
/**
|
/**
|
||||||
* Patch @rmdes/indiekit-endpoint-webmention-sender webmention.js to:
|
* Patch @rmdes/indiekit-endpoint-webmention-sender webmention.js to:
|
||||||
*
|
*
|
||||||
* Scope link extraction to the post content area only (.e-content inside
|
* Scope link extraction to the post content area only (.h-entry, or <article>,
|
||||||
* .h-entry, or <article>, or <main>) when processing a full page.
|
* or <main>) when processing a full page.
|
||||||
* Without this, links from the sidebar, navigation, and footer are included
|
* Without this, links from the sidebar, navigation, and footer are included
|
||||||
* because the live-fetch patch fetches the full rendered page HTML.
|
* because the live-fetch patch fetches the full rendered page HTML.
|
||||||
*
|
*
|
||||||
|
* Scopes to the full .h-entry (not just .e-content) so that microformat
|
||||||
|
* property links like u-in-reply-to, u-like-of, u-repost-of, u-bookmark-of
|
||||||
|
* are included — these are rendered outside .e-content (e.g. in an aside
|
||||||
|
* before the prose body) but are still inside the .h-entry root.
|
||||||
|
*
|
||||||
* Falls back to the whole document when no content container is found
|
* Falls back to the whole document when no content container is found
|
||||||
* (e.g. when processing a stored post body fragment rather than a full page).
|
* (e.g. when processing a stored post body fragment rather than a full page).
|
||||||
*/
|
*/
|
||||||
@@ -21,11 +26,12 @@ const originalBlock = ` $("a[href]").each((_, el) => {`;
|
|||||||
|
|
||||||
const newBlock = ` // [patched:content-scope] Scope to post content area only, so that
|
const newBlock = ` // [patched:content-scope] Scope to post content area only, so that
|
||||||
// sidebar/nav/footer links from the live-fetched full page are excluded.
|
// sidebar/nav/footer links from the live-fetched full page are excluded.
|
||||||
|
// Use .h-entry (not .h-entry .e-content) so that microformat property links
|
||||||
|
// like u-in-reply-to, u-like-of, u-repost-of etc. are included — these are
|
||||||
|
// rendered outside .e-content but still inside the .h-entry root.
|
||||||
const contentRoot =
|
const contentRoot =
|
||||||
$(".h-entry .e-content").first().length
|
$(".h-entry").first().length
|
||||||
? $(".h-entry .e-content").first()
|
? $(".h-entry").first()
|
||||||
: $(".e-content").first().length
|
|
||||||
? $(".e-content").first()
|
|
||||||
: $("article").first().length
|
: $("article").first().length
|
||||||
? $("article").first()
|
? $("article").first()
|
||||||
: $("main").first().length
|
: $("main").first().length
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
import { MongoClient } from "mongodb";
|
import { MongoClient } from "mongodb";
|
||||||
import config from "../indiekit.config.mjs";
|
import config from "../indiekit.config.mjs";
|
||||||
|
|
||||||
const MIGRATION_ID = "webmention-sender-reset-stale-v2";
|
const MIGRATION_ID = "webmention-sender-reset-stale-v3";
|
||||||
|
|
||||||
const mongodbUrl = config.application?.mongodbUrl;
|
const mongodbUrl = config.application?.mongodbUrl;
|
||||||
if (!mongodbUrl) {
|
if (!mongodbUrl) {
|
||||||
|
|||||||
Reference in New Issue
Block a user