perf(sync): the fork's signed commit with inbound merges and fast deletes

The offline sync package's shared part now comes from the fork's branch
halkyon/fast-deletes (b545035, signed), which stacks two changes on the
byte payload fix: onInboundMerge, called only when changes from the
remote peer were merged, which the app now reads again on rather than
after every save's sync; and local deletes that skip the foreign key
projection pass when it can't change it (8 s for one delete in a library
of 8,000 cards, 30 s for a card, now tens of milliseconds).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-17 14:47:16 +02:00
commit 99f5ab77c9
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -17,14 +17,20 @@ dev_dependencies:
leancode_lint: ^27.0.0
dependency_overrides:
# The offline sync package's shared part from our fork: v0.0.10 with one fix,
# comparing byte payloads as bytes. v0.0.10 compares them byte by byte through a
# UUID parse that throws for each byte, so a sync touching a few thousand cards kept
# the server busy for minutes, answering nobody, while its client timed out and
# sent everything again (2026-10-12). Pinned to a signed commit of the fork's branch
# halkyon/byte-payloads; drop this once a release of the package has the fix.
# The offline sync package's shared part from our fork: v0.0.10 with three
# changes. Byte payloads compared as bytes: v0.0.10 compares them byte by byte
# through a UUID parse that throws for each byte, so a sync touching a few thousand
# cards kept the server busy for minutes, answering nobody, while its client timed
# out and sent everything again (2026-10-12). onInboundMerge, called only when
# changes from the remote peer were merged: onMergeSuccess fires for a space this
# device only pushed to, so every repository read everything again after each
# save's sync (2026-10-17). A local delete skips the foreign key projection pass
# when it can't change it: the pass loaded nearly every synced row, 8 s for one
# delete in a library of 8,000 cards (2026-10-17). Pinned to a signed commit of
# the fork's branch halkyon/fast-deletes (on halkyon/inbound-merges, on
# halkyon/byte-payloads); drop each change once a release of the package has it.
serverpod_offline_sync:
git:
url: https://code.halkyon.app/project-halkyon/serverpod-offline-sync.git
path: packages/serverpod_offline_sync
ref: 1dce863e72e57eb51222452dd9baf1bbd7c4384e
ref: b5450353b98240a1bd6f4471815a8be94c91ce5b