mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
631ff92fa2
* fix(reader): fall back to percentage jump when kosync response has no xpointer The KOReader plugin's progress pull calls syncToProgress(body.progress), which fires GotoXPointer(nil) or GotoPage(nil) when body.progress is nil. Both silently no-op, so the reader position does not move and the user sees 'Progress has been synchronized.' with nothing changing. This happens whenever the kosync response has percentage-only progress (e.g. progress written by the BookOrbit web reader, or by an external audiobook->ebook progress bridge that only knows the percentage, not an EPUB xpointer). hasUsableRemoteProgress already guards this case in reconcileProgressBeforeBookSync, but getProgress / applyRemoteProgress never got the same guard. Extend syncToProgress to accept an optional percentage_fallback (0-1, kosync scale). When there is no usable xpointer/page but a fallback percentage is present, fire GotoPercent (0-100 scale) so the reader actually jumps. * fix(reader): apply percentage fallback in pre-book-sync reconcile Drop the hasUsableRemoteProgress short-circuit so the reconcile that runs before a manual book sync behaves like the pull paths. Now that syncToProgress falls back to a percentage jump, the two flows disagreed on identical data: a manual pull moved the reader while the pre-sync reconcile reported "no exact location" and changed nothing, which also left the percentage argument passed to applyRemoteProgress unreachable. An earlier guard already returns when body.percentage is absent, so every response reaching this point can resolve a target. The strategy branches keep the conservative path intact: DISABLE still skips the progress push when the remote is newer. --------- Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com>