A running conversion no longer shows a green tick against its job session while it is still working, and the session you started stays selected instead of flicking back to the previous one first.
Nested rows live on PageContentColumn.rows, so a column with empty
contentText is usually not empty at all, and a flat read of
rows[].columns[].contentText will report sections as missing that are
sitting in nested rows. The skills now say to walk the tree before
judging what a page contains, to spread rather than rebuild rows and
columns so nothing unseen is dropped, and to rewrite imageSource
recursively when copying a page between sites.
The CMS keeps no version history, so a PUT that replaces rows is unrecoverable. The skills now require fetching immediately before the write, saving a copy first, and asking before writing to a page the user has said they are editing.
While a conversion is running, the job session shown above the progress log keeps up with it: the spinner becomes a tick when the job finishes and the elapsed time is the real one rather than 0 ms, without needing a page refresh.