forked from akai/readest
981579c255
* refactor(sync): kind-agnostic replica primitives Extract dict-only sync into shared primitives (registry, pull/apply orchestrator, persist env, schema allowlist) so other kinds can plug in. Companion changes: per-replica Storage Manager grouping, useReplicaPull boot-race recovery, manifest=null reconciliation on every boot pull, copyFile takes explicit srcBase + dstBase, settled- event helpers, lenient webDownload Content-Length (R2/S3 signed URLs commonly omit it), and generic "File" transfer toast copy any replica kind can share. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(sync): cross-device custom font sync Plug the font replica adapter into the kind-agnostic primitives: font store gains replica wiring, custom font import publishes the replica row + queues a binary upload, and bootstrap registers the font adapter and download-complete handler. Includes legacy flat-path migration so pre-existing fonts sync without re-import, full @font-face activation on auto-download (load + mount the rule, mirroring manual import), and a fix to createCustomFont so contentId / bundleDir / byteSize survive the trip through addFont — otherwise import-time publish silently no-oped on missing contentId. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
16 lines
664 B
SQL
16 lines
664 B
SQL
-- Migration 007: Per-replica grouping for binaries in `files`.
|
|
--
|
|
-- Replica-kind binaries (custom dictionary mdx/mdd, font ttf/woff, ...)
|
|
-- have no book_hash, so without these columns Storage Manager would
|
|
-- lump every replica binary into one "no-book" bucket. Per-replica
|
|
-- grouping needs the row to carry the replica's identity alongside
|
|
-- file_key/size.
|
|
|
|
ALTER TABLE public.files
|
|
ADD COLUMN IF NOT EXISTS replica_kind text NULL,
|
|
ADD COLUMN IF NOT EXISTS replica_id text NULL;
|
|
|
|
-- Composite filter index for "list / count files by replica row".
|
|
CREATE INDEX IF NOT EXISTS idx_files_replica_lookup
|
|
ON public.files (user_id, replica_kind, replica_id);
|