mirror of
https://github.com/storytold/designcraft.git
synced 2026-10-28 12:16:53 -06:00
Kept separate from the parent-page fix and from the all-on export fix: this is the traversal remediation on its own. The detection helpers already walked parent spreads, groups and the stories in table cells, notes and endnotes, while the two exports walked document spreads only, and the write side (Document::update_items) did not reach placements nested in those stories either. So a choice on a frame anchored in a cell's text or in a footnote asked for the newer file format and was named by the package report, yet the IDML copy carried the file's defaults. The walk was narrow on main as well (see the probe evidence), so this is pre-existing for the older hidden-list state; it becomes a wrong claim only because the paired PR added the variants and said every placement counts. Document::placed_items recurses those stories (depth budget 64, like the detection side) and a new Document::update_placed_items applies the change where the placement actually is, copying only the branches holding a match. update_items is untouched, so unrelated commands keep their reach. Both exports also refuse rather than fall back when a document has a choice but the walk found no placement to carry it. Regression: nested_placements_keep_their_layer_choices_in_saves_and_exports runs a placement anchored in a table cell's text, then in a footnote: the save keeps the choice, the embedded IDML copy shows every layer, external-only IDML is rejected, PDF/A-2b export succeeds.