
thePR0M3TH3ANandClaude Opus 4.8
0e2f683b62
feat(nip71): Phase 0 — addressable 34235/36 mirror builder + magnet/i/ox imeta
First build step of the NIP-71 interop plan (no UX; FEATURE_PUBLISH_NIP71 stays
off). Pure mapping from a bitvid video (kind-30078 shape) to an opt-in addressable
NIP-71 mirror event.
- js/nostr/nip71.js (foundational):
- normalizeNip71Kind now recognizes the addressable kinds 34235/34236 (so the
parser preserves them), alongside 21/22.
- imeta builder + parser gained standard NIP-94 fields magnet, i (infohash), ox
— bitvid's WebTorrent now rides the standard, round-trippable.
- js/nostr/nip71Mirror.js (new): buildNip71MirrorEvent(video, options) →
{ ok:true, event } | { ok:false, reason }. Builds kind 34235 (normal) / 34236
(short, by dims or explicit flag), d=videoRootId, title/published_at(stable)/alt,
imeta (url/m/image/x/ox/magnet/i/dim/duration), content-warning (NSFW), t
hashtags, origin + a back-pointer to the canonical 30078, client=bitvid.
Hard rules enforced: private videos refused; non-HTTPS-url refused.
tests/nip71-mirror.test.mjs: spec-shape mapping, round-trip via
extractNip71MetadataFromTags (magnet/i/ox survive), private + url-less refusals,
portrait→34236 + content-warning, explicit short override, MIME derivation.
Mutation-verified (private refusal, magnet imeta, d-tag all load-bearing).
Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-21 23:05:12 -04:00
..
2026-02-27 02:14:29 +00:00
2026-06-20 08:27:41 -04:00
2026-02-11 03:27:26 +00:00
2026-06-20 12:38:51 -04:00
2026-02-12 13:49:47 +00:00
2026-02-12 13:49:47 +00:00
2026-01-26 23:40:59 +00:00
2026-02-08 02:02:51 +00:00
2026-01-30 10:29:00 -05:00
2026-01-19 14:03:15 -05:00
2026-02-07 21:52:51 +00:00
2026-01-19 13:51:48 -05:00
2026-02-17 07:58:40 +00:00
2026-06-21 18:08:43 -04:00
2026-06-21 17:17:35 -04:00
2026-02-08 00:38:42 +00:00
2026-01-03 13:57:46 -05:00
2026-02-21 19:59:47 -05:00
2026-02-07 23:57:14 +00:00
2026-01-19 08:39:43 -05:00
2026-01-19 08:39:43 -05:00
2026-06-16 13:04:34 -04:00
2026-02-27 03:43:14 +00:00
2026-02-08 03:58:39 +00:00
2026-02-08 00:27:45 +00:00
2026-01-18 17:40:12 +00:00
2026-06-21 23:05:12 -04:00
2026-06-21 23:05:12 -04:00
2026-06-12 19:55:07 -04:00
2026-06-18 20:32:50 -04:00
2026-02-13 23:50:42 +00:00
2026-06-14 22:51:36 -04:00
2026-02-11 21:31:53 +00:00
2026-02-09 21:32:29 +00:00
2026-06-12 11:16:25 -04:00
2026-06-12 15:52:40 -04:00
2026-06-20 08:27:41 -04:00
2026-02-07 21:52:51 +00:00
2026-06-19 16:52:57 -04:00
2026-01-18 10:58:19 -05:00
2026-06-14 10:11:43 -04:00
2026-01-17 21:11:48 +00:00
2026-06-20 12:14:03 -04:00
2026-06-18 20:32:50 -04:00
2026-06-12 20:30:46 -04:00
2026-06-18 20:32:50 -04:00
2026-02-10 03:04:42 +00:00
2025-10-22 21:48:38 -04:00
2026-02-09 19:23:41 +00:00
2026-06-20 19:13:32 -04:00
2025-10-22 21:23:23 -04:00
2026-06-19 11:35:44 -04:00
2026-06-12 19:55:07 -04:00
2026-06-20 17:29:35 -04:00