Skip to content

Release 0.31.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 08:17
· 259 commits to main since this release
ae1b2f6

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