recovery: private lists, reliable delivery, broader imports and portable backups - #25
Merged
Merged
Conversation
…e and report coverage per source Bounds query windows and response buffers, retains partial and refused source results, and continues later sources after failed retries. Tests cover fallback, persistence, timestamp saturation and invalid responses.
…relay lists and bookmarks
… guide Keeps recovery guidance in the existing user and management references, including signer-only access and retained version limits.
…t results Runs delivery under relay admission, bounds socket waits and errors, accounts for query usage, and excludes expired or banned events and members-only content.
… authenticated fresh-target previews Includes bounded archives, atomic restore metadata, source-owner authorization, retained list and visibility state, billed archive storage, and usable backup controls. Integration tests cover HTTP restore, upload caps, import fallback, owner isolation and independent target retries.
…ommits Scopes a 90-second timeout to the migration fixtures after the growing-ref case completed in about 41 seconds on CI against a 30-second deadline. Keeps the workload and assertions intact.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Close four practical relay gaps: recover accidentally replaced lists, keep a failed delivery target from losing its backlog, import history from relays without NIP-77, and recover a small relay with its files and Git data.
Change
The first backup format is capped at 8 MiB and 12,000 entries; memory budgeting can refuse a smaller archive. It excludes credentials, relay private keys, fuel credits, custom domains, leases, succession, callback registrations, previous archives and transient jobs. The target receives a fresh relay identity; clients must republish signed service references for moved site/Git URLs. Larger relays retain the separate dump/configuration/Blossom/Git export paths.
Testing Completed
npm run typecheckpasses, including generated assets and console startup checks.npm test -- --maxWorkers=1, 53 files and 274 tests pass.Responsible AI disclosure
Implemented with Codex and subagents. Changes were integrated and checked with the tests above; human review is requested before merge.