mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-11-02 02:42:28 +00:00
Foundation for bounded watch-history loading (slice B part 2). A deep history references many monthly chunks; under a NIP-46 remote signer each uncached chunk decrypt is a serialized published relay RPC, so decrypting them all up front blocks the first render and risks the relay rate limit. manager.fetch now: - sorts chunk events newest-first by created_at, so the decrypt budget is spent on the most recent history; - accepts a chunkDecryptLimit option that caps how many *uncached*, genuinely-encrypted chunks are decrypted per fetch. Cached/plaintext chunks are always decrypted (they cost no RPC) and never count against the limit. Default is Infinity -> no behavior change for existing callers; - returns deferredChunkCount so a caller can tell more history is available on demand (re-fetching with a larger limit reuses the chunk cache, so only the newly requested older chunks cost RPCs). Test: two uncached nip44 chunks (newest + older) with chunkDecryptLimit:1 asserts only the newest is decrypted (1 RPC), deferredChunkCount is 1, and only the newest chunk's items appear. Mutation-verified against both removing the cap and removing the newest-first sort. Co-Authored-By: Claude Opus 4.8 <[email protected]>