Repository navigation
Release 0.31.0
Minor, not patch. PR #22 landed the signed-records federation branch — 197 files, +93 590 lines, 10 migrations.
Federation
Three feeds became one stream of signed records, ingested on their proof rather than on the channel they arrived through, and reconciled as a set instead of followed by a cursor. On that spine:
- BitTorrent v2 content addressing — the data-sharing spine
- a request → fill bridge, turning a mirrored release into a request
- cross-seed assist: surface the same content on partners
- a mesh availability signal (rather than peer injection)
- an inter-instance credit model — the settlement layer
- local moderation of federated content, and member reports on mirrored releases
- partner category slugs bridged to local categories
- opt-in federated releases in the Torznab and RSS feeds
Identity became portable
A member can hold their own key, prove a past account instead of asking an admin for it, publish the link so a catalogue survives its author, withdraw a leaked key, and rotate without orphaning earlier work. GDPR erasure anonymises locally and retracts the federated identity.
No operator action
Both destructive statements in the new migrations are idempotent and need nothing from you: federation_catalog_removals is dropped because the mechanism it served was retired, and an unused foreign key on torrents goes with the erasure work.
The chart is untouched by this release, so its own version stays 0.2.1 and only appVersion follows the application.
Verified on the merged tree
| install (frozen lockfile) | OK |
| typecheck | clean |
| unit tests | 28 api + 13 web files, 595 tests (up from 471) |
| schema parity gate (real 18.6) | schema.ts and the migrations agree · 43 journal entries, no orphan · chain applies to an empty database: 62 tables, 561 columns, 190 indexes |
| Helm chart | lints, renders in default / production / S3 |
| docs | build |
Also checked the trap a long-lived branch sets: merged repeatedly from main over weeks, its migrations could have carried when timestamps older than entries already applied, and drizzle would have skipped them in silence. The journal is monotone — it did not bite.
🤖 Generated with Claude Code
What's Changed
- feat(federation): signed records, data sharing, and the credit model by @Dim145 in #22
- chore(release): 0.31.0 by @Dim145 in #23
Full Changelog: 0.30.1...0.31.0