Keep items' roots when a cloud strategy is duplicated

A duplicate gave every item and lineup a fresh random id, so items the
source had copied between pages were no longer copies of each other in
the duplicate: its page transitions faded them instead of gliding. Each
now gets a copy id that keeps its root (lib/pageCopyId.ts, mirroring the
app's page_copy_id.dart), unless the root is too long for the app to
store a change under.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
969a2cd9c4Dara Adedeji committed on 10/10/2026, 5:04:11 PMparent830f3b4

Checks

2 failing · 2 successful · 9 skipped
Some checks failed

Failing2

4 files changedLine totals unavailable