[claude] Timmy Nostr identity, zap-out, vouching (#13) #29

Closed
claude wants to merge 1 commits from claude/the-nexus:claude/issue-13 into main
Member

Fixes #13

What this does

Implements Timmy as a sovereign economic peer on Nostr:

nostr.js (new module)

  • Generates and persists Timmy's secp256k1 keypair in localStorage
  • NIP-01 signed text notes (createNote)
  • NIP-57 zap requests (createZapRequest) — signs and broadcasts to relays
  • NIP-58 badge awards for vouching (createVouch, createBadgeDefinition)
  • Relay broadcast via WebSocket with timeout and result reporting
  • In-memory economic activity feed with nostr:activity DOM events

app.js changes

  • Imports nostr.js; initialises identity on boot (non-blocking)
  • New holographic ECONOMIC 3D panel on the left side of the Nexus showing live npub and activity feed
  • Chat commands: /identity, /zap <pubkey> <sats> [msg], /vouch <pubkey> <badge> [reason], /note <text>, /relays, /help
  • Economic panel scanline animated in game loop

index.html changes

  • Nostr identity widget (top-right HUD): shows truncated npub with Zap / Vouch / ID buttons
  • Zap modal: form to enter recipient pubkey, amount, comment → signs & broadcasts
  • Vouch modal: form to enter recipient pubkey, badge name, reason → signs & broadcasts

style.css changes

  • Full design system for all Nostr UI: .nostr-panel, .nostr-modal, inputs, buttons, status, and zapFlash keyframe animation on incoming zaps

Uses nostr-tools v2 via esm.sh CDN (handles secp256k1/Schnorr).
Default relays: damus.io, relay.nostr.band, nos.lol, relay.snort.social.

Fixes #13 ## What this does Implements Timmy as a sovereign economic peer on Nostr: ### `nostr.js` (new module) - Generates and persists Timmy's secp256k1 keypair in localStorage - NIP-01 signed text notes (`createNote`) - NIP-57 zap requests (`createZapRequest`) — signs and broadcasts to relays - NIP-58 badge awards for vouching (`createVouch`, `createBadgeDefinition`) - Relay broadcast via WebSocket with timeout and result reporting - In-memory economic activity feed with `nostr:activity` DOM events ### `app.js` changes - Imports `nostr.js`; initialises identity on boot (non-blocking) - New holographic **ECONOMIC** 3D panel on the left side of the Nexus showing live npub and activity feed - Chat commands: `/identity`, `/zap <pubkey> <sats> [msg]`, `/vouch <pubkey> <badge> [reason]`, `/note <text>`, `/relays`, `/help` - Economic panel scanline animated in game loop ### `index.html` changes - **Nostr identity widget** (top-right HUD): shows truncated npub with Zap / Vouch / ID buttons - **Zap modal**: form to enter recipient pubkey, amount, comment → signs & broadcasts - **Vouch modal**: form to enter recipient pubkey, badge name, reason → signs & broadcasts ### `style.css` changes - Full design system for all Nostr UI: `.nostr-panel`, `.nostr-modal`, inputs, buttons, status, and `zapFlash` keyframe animation on incoming zaps Uses [nostr-tools v2](https://github.com/nbd-wtf/nostr-tools) via esm.sh CDN (handles secp256k1/Schnorr). Default relays: damus.io, relay.nostr.band, nos.lol, relay.snort.social.
claude added 1 commit 2026-03-23 22:40:27 +00:00
Implements Timmy as an economic peer with sovereign Nostr presence:

- nostr.js: New module handling keypair lifecycle (localStorage),
  NIP-01 signed notes, NIP-57 zap requests, NIP-58 badge awards,
  relay broadcast, and an economic activity feed
- app.js: Imports nostr module; adds 3D holographic "ECONOMIC" panel
  on the left side of the Nexus showing live npub + activity feed;
  wires /zap, /vouch, /note, /identity, /relays chat commands;
  animates economic panel scanline in game loop
- index.html: Adds Nostr identity HUD widget (top-right) showing npub
  with Zap, Vouch, and ID buttons; Zap modal and Vouch modal for
  point-and-click economic actions; inline module script for modal UX
- style.css: Full design system for .nostr-panel, .nostr-modal,
  form inputs, action buttons, status indicators, and zapFlash
  keyframe animation on incoming zaps

Keypair persists in localStorage (timmy_nostr_privkey_v1).
Broadcasts to damus.io, relay.nostr.band, nos.lol, relay.snort.social.

Fixes #13

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Owner

Closing: foundation PRs #2, #28, #34 have been merged. This PR conflicts with the new base. The corresponding issue remains open and assigned — claude will re-implement on top of the merged foundation as a sequential PR.

Closing: foundation PRs #2, #28, #34 have been merged. This PR conflicts with the new base. The corresponding issue remains open and assigned — claude will re-implement on top of the merged foundation as a sequential PR.
Timmy closed this pull request 2026-03-24 01:36:30 +00:00

Pull request closed

Sign in to join this conversation.