Page MenuHomePhabricator

VE should save updated main+details main bodies as references list items when converting to Parsoid DOM
Closed, ResolvedPublic

Description

Background: As discovered in T389929: Save edited main reference content back to inline main+details, the rendered reflist being sent by VE when saving the page contains an outdated rendering, the same as what VE was opened with. Content of newly-edited references is only carried through the reflist tag data-mw.

Problem: This makes it extremely difficult for Parsoid to extract the updated content, and especially affects our main+details use case because the main ref content needs to be used ahead of processing the reflist.

Suggested implementation: VE should instead render the reflist from scratch so that all <li> contain freshly transformed content. Each li should include an standardized element ID corresponding to the mainBody of a main+details subref.

Especially consider how to handle a template-produced reflist. Perhaps all transclusion-produced content should be omitted, and any missing reflists should be added at the end of the document, including reflists with non-default group names.

Dev notes:

Event Timeline

awight renamed this task from [stub] main+details body must be passed back from VE to Parsoid as a references list item to VE should save updated main+details main bodies as references list items when converting to Parsoid DOM.Jun 5 2025, 7:21 AM
awight updated the task description. (Show Details)

Change #1154002 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Failing test demonstrating reflist in DOM

https://gerrit.wikimedia.org/r/1154002

Change #1154030 had a related patch set uploaded (by Awight; author: Awight):

[mediawiki/extensions/Cite@master] [WIP] Emit fresh reflist when saving from VE

https://gerrit.wikimedia.org/r/1154030

This was discussed in story time and I think the intention was to pull it in, doing so now.

Change #1165523 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Extract some methods in MWReferencesListNode::toDomElements

https://gerrit.wikimedia.org/r/1165523

Change #1165523 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Extract some methods in MWReferencesListNode::toDomElements

https://gerrit.wikimedia.org/r/1165523

Change #1165885 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Move more code in MWReferencesListNode.toDomElements

https://gerrit.wikimedia.org/r/1165885

Change #1165910 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Adding JSDoc blocks to conversion functions

https://gerrit.wikimedia.org/r/1165910

Change #1165885 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Move more code in MWReferencesListNode.toDomElements

https://gerrit.wikimedia.org/r/1165885

Change #1165910 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Adding JSDoc blocks to conversion functions

https://gerrit.wikimedia.org/r/1165910

Change #1167843 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Minor streamlining in MWReferencesListNode.toDomElements

https://gerrit.wikimedia.org/r/1167843

Change #1167843 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Minor streamlining in MWReferencesListNode.toDomElements

https://gerrit.wikimedia.org/r/1167843

Change #1154002 abandoned by WMDE-Fisch:

[mediawiki/extensions/Cite@master] [WIP] Failing test demonstrating reflist in DOM

Reason:

Not needed anymore. See Iaed01fc2f0719ab36b48b03a090aac36d54ee492

https://gerrit.wikimedia.org/r/1154002

Change #1168120 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] VE: Enforce referenceslist reserialization when MW changed

https://gerrit.wikimedia.org/r/1168120

Change #1168120 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Enforce referenceslist reserialization when MW changed

https://gerrit.wikimedia.org/r/1168120

Change #1168193 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] VE: Remove special handling for ReferencesList clipboard mode

https://gerrit.wikimedia.org/r/1168193

Change #1154030 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Emit fresh reflist when saving from VE

https://gerrit.wikimedia.org/r/1154030

VE: Remove special handling for ReferencesList clipboard mode

Note that the remaining patch attached is about some special clipboard handling that's not needed for our case AFAIK.

Change #1170079 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] VE: Emit fresh reflist when saving a reflist template

https://gerrit.wikimedia.org/r/1170079

Change #1170800 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Revert "VE: Enforce referenceslist reserialization when MW changed"

https://gerrit.wikimedia.org/r/1170800

Change #1171031 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@wmf/1.45.0-wmf.10] Revert "VE: Enforce referenceslist reserialization when MW changed"

https://gerrit.wikimedia.org/r/1171031

Change #1170800 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Revert "VE: Enforce referenceslist reserialization when MW changed"

https://gerrit.wikimedia.org/r/1170800

Change #1171031 merged by jenkins-bot:

[mediawiki/extensions/Cite@wmf/1.45.0-wmf.10] Revert "VE: Enforce referenceslist reserialization when MW changed"

https://gerrit.wikimedia.org/r/1171031

Mentioned in SAL (#wikimedia-operations) [2025-07-21T07:30:34Z] <awight@deploy1003> Started scap sync-world: Backport for [[gerrit:1171031|Revert "VE: Enforce referenceslist reserialization when MW changed" (T400013 T396017)]]

Mentioned in SAL (#wikimedia-operations) [2025-07-21T07:51:25Z] <awight@deploy1003> wmde-fisch, awight: Backport for [[gerrit:1171031|Revert "VE: Enforce referenceslist reserialization when MW changed" (T400013 T396017)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2025-07-21T08:07:47Z] <awight@deploy1003> Finished scap sync-world: Backport for [[gerrit:1171031|Revert "VE: Enforce referenceslist reserialization when MW changed" (T400013 T396017)]] (duration: 37m 13s)

Change #1172613 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Parsoid: Add test to cover the minimal VE reflist output

https://gerrit.wikimedia.org/r/1172613

Change #1173037 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] VE: Make sure that emitted relist items have an id

https://gerrit.wikimedia.org/r/1173037

Change #1172613 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Parsoid: Add test to cover the minimal VE reflist output

https://gerrit.wikimedia.org/r/1172613

Change #1173037 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] VE: Make sure that emitted relist items have an id

https://gerrit.wikimedia.org/r/1173037

Change #1174323 had a related patch set uploaded (by WMDE-Fisch; author: WMDE-Fisch):

[mediawiki/extensions/Cite@master] Parsoid: Proove in parser tests that VE reflist output is flexible

https://gerrit.wikimedia.org/r/1174323

Change #1168193 abandoned by WMDE-Fisch:

[mediawiki/extensions/Cite@master] VE: Remove special handling for ReferencesList clipboard mode

Reason:

Not sure if this makes sense

https://gerrit.wikimedia.org/r/1168193

Change #1174323 merged by jenkins-bot:

[mediawiki/extensions/Cite@master] Parsoid: Proove in parser tests that VE reflist output is flexible

https://gerrit.wikimedia.org/r/1174323