A parent notebook stayed after repeated deletes when it only contained empty children. Remove that empty subtree together, and keep the tree when any note is still inside.
Give Web, desktop, and mobile the same product-baseline conflict recovery:
copy the local draft, then adopt the cloud version and rehydrate, instead of
telling users to reload while durable local conflict state remains.
Surface revision, content, edit-session, and offline-stale conflict details in the editor, keep error metadata through the sync queue, and avoid hook-order crashes plus stale dev service workers after failed HMR.