diff --git a/docs/decisions.md b/docs/decisions.md index 73e42d3..d52b483 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -444,7 +444,7 @@ text where it has one, so both stay. A card showing only its name keeps its URL Atlassian's schema gives no card a link mark, so only a hand-built document meets this, and `adfToHtml` refuses such a card among the inline nodes it writes as `unsupported-node-shape`: no element holds both its link and the card's own. Inside a carried block it shows as above, since a -carried node's JSON is not checked. Recorded 2026-10-24 without a panel of its own: it puts the second panel's `` around the text a card shows. +carried node's JSON is not checked, and `htmlToAdf` still reads a carry element holding one, as it checks no carried JSON against the schema. Recorded 2026-10-24 without a panel of its own: it puts the second panel's `` around the text a card shows. A fifth panel (2026-11-04, three readers in the same roles, then four more for what the first three split on) was asked how to write a mention, emoji, status, date and inline card, which until then diff --git a/src/html/emit/inline.ts b/src/html/emit/inline.ts index 96c4a39..6704faf 100644 --- a/src/html/emit/inline.ts +++ b/src/html/emit/inline.ts @@ -13,7 +13,7 @@ export function inlineHtml(nodes: readonly AdfNode[], path: ConvertErrorPath): R let afterPlainText = false for (const [index, node] of nodes.entries()) { if (node.type === 'inlineCard' && nodeMarks(node).some(({ type }) => type === 'link')) { - return failure('unsupported-node-shape', 'An inlineCard takes no link mark in ADF.', [...path, 'content', index]) + return failure('unsupported-node-shape', 'an inlineCard takes no link mark: this one holds one', [...path, 'content', index]) } // Two unmarked text nodes side by side read back as one, so the second rides the carry. const written: string | undefined = afterPlainText && isUnmarkedSpellableText(node) ? undefined : tryInlineNode(node)