feat: more comprehensive kind descriptions

This commit is contained in:
Alejandro Gómez
2025-12-11 16:21:33 +01:00
parent 80e206c1f2
commit eaaa3d9da9
2 changed files with 599 additions and 140 deletions

View File

@@ -110,3 +110,4 @@ Show timestamps/dates for notes in feed views for better chronological context.
- **App-wide error boundary** - Splash crash screen for unhandled errors
- **Collapsible relay list** - Show user relay links without inbox/outbox icons initially
- **NIP badges everywhere** - Use consistent NIP badge components for linking to NIP documentation
- **External spec event kind support** - Add references and documentation links for commented-out event kinds from external specs (Blossom, Marmot Protocol, NKBIP, nostrocket, Corny Chat, NUD, etc.) in `src/constants/kinds.ts`. Consider adding a separate registry or documentation for non-official-NIP event kinds.

View File

@@ -1,46 +1,61 @@
import {
User,
MessageSquare,
Radio,
Users,
Lock,
Trash2,
Repeat,
Heart,
Activity,
AlertCircle,
ArrowRight,
Award,
MessageCircle,
BarChart3,
Bookmark,
Calendar,
Cloud,
Coins,
Compass,
Eye,
EyeOff,
Image,
Video,
Hash,
FileText,
AlertCircle,
ShoppingBag,
Zap,
Pin,
Bookmark,
Settings,
List,
Smile,
FileCode,
GitBranch,
FileEdit,
FileText,
Filter,
Flag,
Tag,
Calendar,
Wallet,
Package,
Map,
Gavel,
GitBranch,
Grid3x3,
Hash,
Heart,
Highlighter,
BarChart3,
Timer,
ListChecks,
Mic,
Image,
Info,
Key,
Cloud,
UserCheck,
UserX,
List,
ListChecks,
ListFilter,
Lock,
Mail,
MessageCircle,
MessageSquare,
Mic,
Package,
PackageOpen,
Pin,
Play,
Presentation,
Radio,
Repeat,
Settings,
Shield,
ShoppingBag,
Smile,
Star,
Tag,
Trash2,
User,
UserCheck,
UserMinus,
UserPlus,
Users,
UserX,
Video,
Wallet,
Zap,
type LucideIcon,
} from "lucide-react";
@@ -208,6 +223,36 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
icon: Video,
},
// References (NKBIP-03) - External spec, commented out
// 30: {
// kind: 30,
// name: "Internal Reference",
// description: "Internal reference",
// nip: "NKBIP-03",
// icon: Link,
// },
// 31: {
// kind: 31,
// name: "External Reference",
// description: "External web reference",
// nip: "NKBIP-03",
// icon: ExternalLink,
// },
// 32: {
// kind: 32,
// name: "Hardcopy Reference",
// description: "Hardcopy reference",
// nip: "NKBIP-03",
// icon: BookOpen,
// },
// 33: {
// kind: 33,
// name: "Prompt Reference",
// description: "Prompt reference",
// nip: "NKBIP-03",
// icon: MessageSquareText,
// },
// Channels
40: {
kind: 40,
@@ -261,6 +306,47 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
icon: Package,
},
// Marmot Protocol - External spec, commented out
// 443: {
// kind: 443,
// name: "KeyPackage",
// description: "KeyPackage",
// nip: "Marmot",
// icon: Key,
// },
// 444: {
// kind: 444,
// name: "Welcome Message",
// description: "Welcome Message",
// nip: "Marmot",
// icon: Mail,
// },
// 445: {
// kind: 445,
// name: "Group Event",
// description: "Group Event",
// nip: "Marmot",
// icon: Users,
// },
// Merge Requests
818: {
kind: 818,
name: "Merge Request",
description: "Merge Requests",
nip: "54",
icon: GitBranch,
},
// Marketplace
1018: {
kind: 1018,
name: "Poll Response",
description: "Response to a poll",
nip: "88",
icon: ListChecks,
},
// Data vending machine
5000: {
kind: 5000,
@@ -329,13 +415,6 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "88",
icon: ListChecks,
},
1018: {
kind: 1018,
name: "Poll Response",
description: "Response to a poll",
nip: "88",
icon: ListChecks,
},
1111: {
kind: 1111,
name: "Comment",
@@ -355,7 +434,7 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
name: "Voice Message",
description: "Voice Message",
nip: "A0",
icon: MessageCircle,
icon: Mic,
},
1311: {
kind: 1311,
@@ -389,32 +468,62 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
},
1619: {
kind: 1619,
name: "Git Status",
description: "Git repository status",
name: "PR Updates",
description: "Pull Request Updates",
nip: "34",
icon: GitBranch,
},
1621: {
kind: 1621,
name: "Issue",
description: "Git Issues",
description: "Issues",
nip: "34",
icon: AlertCircle,
},
1622: {
kind: 1622,
name: "Release",
description: "Git Release Artifacts",
name: "Git Replies",
description: "Git Replies (deprecated)",
nip: "34",
icon: Package,
icon: MessageCircle,
},
818: {
kind: 818,
name: "Merge Request",
description: "Merge Requests",
nip: "54",
icon: GitBranch,
1630: {
kind: 1630,
name: "Status",
description: "Status",
nip: "34",
icon: Activity,
},
1631: {
kind: 1631,
name: "Status",
description: "Status",
nip: "34",
icon: Activity,
},
1632: {
kind: 1632,
name: "Status",
description: "Status",
nip: "34",
icon: Activity,
},
1633: {
kind: 1633,
name: "Status",
description: "Status",
nip: "34",
icon: Activity,
},
// Problem tracking - External spec (nostrocket), commented out
// 1971: {
// kind: 1971,
// name: "Problem Tracker",
// description: "Problem Tracker",
// nip: "nostrocket",
// icon: Bug,
// },
// Moderation
1984: {
@@ -431,15 +540,20 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "32",
icon: Tag,
},
// Community
4550: {
kind: 4550,
name: "Community Post",
description: "Community Post Approval",
nip: "72",
icon: Users,
},
// 1986: {
// kind: 1986,
// name: "Relay Reviews",
// description: "Relay reviews",
// nip: "",
// icon: Star,
// },
// 1987: {
// kind: 1987,
// name: "AI Embeddings",
// description: "AI Embeddings / Vector lists",
// nip: "NKBIP-02",
// icon: Brain,
// },
// Torrents
2003: {
@@ -456,6 +570,93 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "35",
icon: MessageCircle,
},
// 2022: {
// kind: 2022,
// name: "Coinjoin Pool",
// description: "Coinjoin Pool",
// nip: "joinstr",
// icon: Coins,
// },
// Community
4550: {
kind: 4550,
name: "Community Post",
description: "Community Post Approval",
nip: "72",
icon: Users,
},
// Cashu
7374: {
kind: 7374,
name: "Reserved Cashu Token",
description: "Reserved Cashu Wallet Tokens",
nip: "60",
icon: Wallet,
},
7375: {
kind: 7375,
name: "Cashu Token",
description: "Cashu Wallet Tokens",
nip: "60",
icon: Wallet,
},
7376: {
kind: 7376,
name: "Cashu History",
description: "Cashu Wallet History",
nip: "60",
icon: Wallet,
},
// Geocaching - External spec, commented out
// 7516: {
// kind: 7516,
// name: "Geocache Log",
// description: "Geocache log",
// nip: "geocaching",
// icon: MapPin,
// },
// 7517: {
// kind: 7517,
// name: "Geocache Proof",
// description: "Geocache proof of find",
// nip: "geocaching",
// icon: MapPinCheck,
// },
// User management
8000: {
kind: 8000,
name: "Add User",
description: "Add User",
nip: "43",
icon: UserPlus,
},
8001: {
kind: 8001,
name: "Remove User",
description: "Remove User",
nip: "43",
icon: UserMinus,
},
// Zaps
9321: {
kind: 9321,
name: "Nutzap",
description: "Nutzap",
nip: "61",
icon: Zap,
},
// 9467: {
// kind: 9467,
// name: "Tidal Login",
// description: "Tidal login",
// nip: "Tidal-nostr",
// icon: LogIn,
// },
// Zaps
9041: {
@@ -541,10 +742,24 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
10009: {
kind: 10009,
name: "User Groups",
description: "User groups list",
description: "User groups",
nip: "51",
icon: Users,
},
10012: {
kind: 10012,
name: "Favorite Relays",
description: "Favorite relays list",
nip: "51",
icon: Star,
},
10013: {
kind: 10013,
name: "Private Event Relay",
description: "Private event relay list",
nip: "37",
icon: Lock,
},
10015: {
kind: 10015,
name: "Interests",
@@ -552,6 +767,20 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "51",
icon: Heart,
},
10019: {
kind: 10019,
name: "Nutzap Mint Rec",
description: "Nutzap Mint Recommendation",
nip: "61",
icon: Coins,
},
10020: {
kind: 10020,
name: "Media Follows",
description: "Media follows",
nip: "51",
icon: Play,
},
10030: {
kind: 10030,
name: "Emoji List",
@@ -559,36 +788,155 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "51",
icon: Smile,
},
10050: {
kind: 10050,
name: "DM Relay List",
description: "Relay list to receive DMs",
nip: "51",
icon: Mail,
},
// 10051: {
// kind: 10051,
// name: "KeyPackage Relays",
// description: "KeyPackage Relays List",
// nip: "Marmot",
// icon: Key,
// },
// 10063: {
// kind: 10063,
// name: "User Server List",
// description: "User server list",
// nip: "Blossom",
// icon: Server,
// },
10096: {
kind: 10096,
name: "File Storage",
description: "File storage server list",
description: "File storage server list (deprecated)",
nip: "96",
icon: Cloud,
},
10166: {
kind: 10166,
name: "Relay Monitor",
description: "Relay Monitor Announcement",
nip: "66",
icon: Activity,
},
// 10312: {
// kind: 10312,
// name: "Room Presence",
// description: "Room Presence",
// nip: "53",
// icon: Users,
// },
// 10377: {
// kind: 10377,
// name: "Proxy Announce",
// description: "Proxy Announcement",
// nip: "Nostr Epoxy",
// icon: Network,
// },
// 11111: {
// kind: 11111,
// name: "Transport Method",
// description: "Transport Method Announcement",
// nip: "Nostr Epoxy",
// icon: Truck,
// },
// Cashu
7374: {
kind: 7374,
name: "Cashu Token",
description: "Cashu Wallet Tokens",
nip: "60",
// Wallet & Auth
13194: {
kind: 13194,
name: "Wallet Info",
description: "Wallet Info",
nip: "47",
icon: Wallet,
},
7375: {
kind: 7375,
name: "Cashu Quote",
description: "Cashu Mint Quote",
nip: "60",
// 13534: {
// kind: 13534,
// name: "Membership Lists",
// description: "Membership Lists",
// nip: "43",
// icon: Users,
// },
// 17375: {
// kind: 17375,
// name: "Cashu Wallet Event",
// description: "Cashu Wallet Event",
// nip: "60",
// icon: Wallet,
// },
// 21000: {
// kind: 21000,
// name: "Lightning Pub RPC",
// description: "Lightning Pub RPC",
// nip: "Lightning.Pub",
// icon: Zap,
// },
22242: {
kind: 22242,
name: "Client Auth",
description: "Client Authentication",
nip: "42",
icon: Key,
},
23194: {
kind: 23194,
name: "Wallet Request",
description: "Wallet Request",
nip: "47",
icon: Wallet,
},
7376: {
kind: 7376,
name: "Cashu Request",
description: "Cashu Melt Quote",
nip: "60",
23195: {
kind: 23195,
name: "Wallet Response",
description: "Wallet Response",
nip: "47",
icon: Wallet,
},
24133: {
kind: 24133,
name: "Nostr Connect",
description: "Nostr Connect",
nip: "46",
icon: Key,
},
// 24242: {
// kind: 24242,
// name: "Blossom Blobs",
// description: "Blobs stored on mediaservers",
// nip: "Blossom",
// icon: Database,
// },
27235: {
kind: 27235,
name: "HTTP Auth",
description: "HTTP Authentication",
nip: "98",
icon: Key,
},
// 28934: {
// kind: 28934,
// name: "Join Request",
// description: "Join Request",
// nip: "43",
// icon: UserPlus,
// },
// 28935: {
// kind: 28935,
// name: "Invite Request",
// description: "Invite Request",
// nip: "43",
// icon: Mail,
// },
// 28936: {
// kind: 28936,
// name: "Leave Request",
// description: "Leave Request",
// nip: "43",
// icon: UserMinus,
// },
// Group Control
9000: {
@@ -655,50 +1003,6 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
icon: Settings,
},
// Wallet & Auth
13194: {
kind: 13194,
name: "Wallet Info",
description: "Wallet Info",
nip: "47",
icon: Wallet,
},
22242: {
kind: 22242,
name: "Client Auth",
description: "Client Authentication",
nip: "42",
icon: Key,
},
23194: {
kind: 23194,
name: "Wallet Request",
description: "Wallet Request",
nip: "47",
icon: Wallet,
},
23195: {
kind: 23195,
name: "Wallet Response",
description: "Wallet Response",
nip: "47",
icon: Wallet,
},
24133: {
kind: 24133,
name: "Nostr Connect",
description: "Nostr Connect",
nip: "46",
icon: Key,
},
27235: {
kind: 27235,
name: "HTTP Auth",
description: "HTTP Authentication",
nip: "98",
icon: Key,
},
// Replaceable events (kind 30000+)
30000: {
kind: 30000,
@@ -710,7 +1014,7 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
30001: {
kind: 30001,
name: "Generic Lists",
description: "Generic lists",
description: "Generic lists (deprecated)",
nip: "51",
icon: List,
},
@@ -728,6 +1032,27 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "51",
icon: Bookmark,
},
30004: {
kind: 30004,
name: "Curation Sets",
description: "Curation sets",
nip: "51",
icon: ListFilter,
},
30005: {
kind: 30005,
name: "Video Sets",
description: "Video sets",
nip: "51",
icon: Video,
},
30007: {
kind: 30007,
name: "Kind Mute Sets",
description: "Kind mute sets",
nip: "51",
icon: Filter,
},
30008: {
kind: 30008,
name: "Profile Badges",
@@ -742,6 +1067,13 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "58",
icon: Award,
},
30015: {
kind: 30015,
name: "Interest Sets",
description: "Interest sets",
nip: "51",
icon: Heart,
},
30017: {
kind: 30017,
name: "Stall",
@@ -756,6 +1088,20 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "15",
icon: ShoppingBag,
},
30019: {
kind: 30019,
name: "Marketplace UI/UX",
description: "Marketplace UI/UX",
nip: "15",
icon: Grid3x3,
},
30020: {
kind: 30020,
name: "Product Auction",
description: "Product sold as an auction",
nip: "15",
icon: Gavel,
},
30023: {
kind: 30023,
name: "Article",
@@ -777,6 +1123,27 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "51",
icon: Smile,
},
// 30040: {
// kind: 30040,
// name: "Publication Index",
// description: "Curated Publication Index",
// nip: "NKBIP-01",
// icon: Library,
// },
// 30041: {
// kind: 30041,
// name: "Publication Content",
// description: "Curated Publication Content",
// nip: "NKBIP-01",
// icon: FileText,
// },
30063: {
kind: 30063,
name: "Release Artifacts",
description: "Release artifact sets",
nip: "51",
icon: Package,
},
30078: {
kind: 30078,
name: "App Data",
@@ -784,6 +1151,20 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "78",
icon: Settings,
},
30166: {
kind: 30166,
name: "Relay Discovery",
description: "Relay Discovery",
nip: "66",
icon: Compass,
},
30267: {
kind: 30267,
name: "App Curation",
description: "App curation sets",
nip: "51",
icon: Grid3x3,
},
30311: {
kind: 30311,
name: "Live Event",
@@ -793,17 +1174,17 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
},
30312: {
kind: 30312,
name: "Live Chat Msg",
description: "Live Chat Message (Deprecated)",
name: "Interactive Room",
description: "Interactive Room",
nip: "53",
icon: MessageCircle,
icon: Users,
},
30313: {
kind: 30313,
name: "Live Status",
description: "Live Event Status",
name: "Conference Event",
description: "Conference Event",
nip: "53",
icon: Timer,
icon: Presentation,
},
30315: {
kind: 30315,
@@ -812,6 +1193,13 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "38",
icon: MessageSquare,
},
// 30388: {
// kind: 30388,
// name: "Slide Set",
// description: "Slide Set",
// nip: "Corny Chat",
// icon: Presentation,
// },
30402: {
kind: 30402,
name: "Classified",
@@ -833,6 +1221,13 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "34",
icon: GitBranch,
},
30618: {
kind: 30618,
name: "Repo State",
description: "Repository state announcements",
nip: "34",
icon: GitBranch,
},
30818: {
kind: 30818,
name: "Wiki",
@@ -843,10 +1238,31 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
30819: {
kind: 30819,
name: "Wiki Redirect",
description: "Redirects to a wiki article",
description: "Redirects",
nip: "54",
icon: FileText,
icon: ArrowRight,
},
31234: {
kind: 31234,
name: "Draft Event",
description: "Draft Event",
nip: "37",
icon: FileEdit,
},
// 31388: {
// kind: 31388,
// name: "Link Set",
// description: "Link Set",
// nip: "Corny Chat",
// icon: Link,
// },
// 31890: {
// kind: 31890,
// name: "Feed",
// description: "Feed",
// nip: "NUD: Custom Feeds",
// icon: Rss,
// },
31922: {
kind: 31922,
name: "Calendar Event",
@@ -882,6 +1298,20 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "89",
icon: Settings,
},
31990: {
kind: 31990,
name: "Handler Info",
description: "Handler information",
nip: "89",
icon: Info,
},
// 32267: {
// kind: 32267,
// name: "Software App",
// description: "Software Application",
// nip: "",
// icon: AppWindow,
// },
34550: {
kind: 34550,
name: "Community",
@@ -889,12 +1319,26 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "72",
icon: Users,
},
37516: {
kind: 37516,
name: "Geocache",
description: "Geocache listing",
nip: "geocaching",
icon: Map,
// 37516: {
// kind: 37516,
// name: "Geocache",
// description: "Geocache listing",
// nip: "geocaching",
// icon: Map,
// },
38172: {
kind: 38172,
name: "Cashu Mint",
description: "Cashu Mint Announcement",
nip: "87",
icon: Coins,
},
38173: {
kind: 38173,
name: "Fedimint Announce",
description: "Fedimint Announcement",
nip: "87",
icon: Coins,
},
38383: {
kind: 38383,
@@ -903,6 +1347,20 @@ export const EVENT_KINDS: Record<number | string, EventKind> = {
nip: "69",
icon: ShoppingBag,
},
39089: {
kind: 39089,
name: "Starter Packs",
description: "Starter packs",
nip: "51",
icon: PackageOpen,
},
39092: {
kind: 39092,
name: "Media Starter Packs",
description: "Media starter packs",
nip: "51",
icon: Play,
},
39701: {
kind: 39701,
name: "Web Bookmarks",