chore(base): delete nostr-metadata-service + retire webapp-side kind-0 broadcast paths #82
No reviewers
Labels
No labels
app:activities
app:chat
app:events
app:forum
app:libra
app:market
app:restaurant
app:tasks
app:wallet
app:webapp
bug
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aiolabs/webapp!82
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "chore/delete-nostr-metadata-service"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
LNbits's cascade now publishes kind-0 user metadata server-side on account creation AND on every
PATCH /api/v1/auth(aiolabs/lnbitscommit869f67c3folded into PR #26, deployed toaio-demoviaserver-deploy:e2eed9c). The webapp no longer needs its own kind-0 publish surface — this PR retires it.This is the webapp's first bucket-A leg per
aiolabs/lnbits#9phase-1.Changes
src/modules/base/nostr/nostr-metadata-service.ts(162 lines). Server now owns kind-0 lifecycle viaNostrSigner.sign_event.src/modules/base/composables/useNostrMetadata.ts(had zero callers; was a thin wrapper around the deleted service).NOSTR_METADATA_SERVICEtoken fromsrc/core/di-container.ts.NostrMetadataServiceimports / instantiations / registrations / dispose calls fromsrc/modules/base/index.ts.src/modules/base/auth/auth-service.ts:broadcastNostrMetadata()helper entirely.login()andregister()— both flagged for removal by lnbits in thelog:2026-05-29T01:45Zcoordination handoff. Login-time republish was always redundant for kind-0 (replaceable event); register-time is covered by lnbits'screate_user_account → _publish_nostr_metadata_eventpath.updateProfile()too — covered by thePATCH /api/v1/authhandler's_publish_nostr_metadata_eventcall per the gap-fill commit.prvkey/pubkeypreservation inupdateProfile()in place for now. The prvkey field removal is the atomic phase-1 final PR per design doc Q1.2 Option (b).src/modules/base/components/ProfileSettings.vue:isBroadcastingstate +Radioicon +broadcastMetadata()handler. The manual re-broadcast was a local-testing safety net for relay resets and is no longer needed now that the server publishes automatically on profile save."Profile updated!".Diff stat
What's NOT in this PR
User.prvkeyfield removal — that's the atomic final-step PR per design doc Q1.2 Option (b). Coming after the second bucket-A PR (ActivitiesNostrServicedeletion +CreateActivityDialogreroute) merges.auth-service.ts:191-195prvkey threading deletion — same gating; ships with the field removal so it's an atomic commit.Server-side compensation (confirmed live on
aio-demo)create_user_account→_publish_nostr_metadata_event(account)→ kind-0 withname + display_name + picture + nip05 + lud16(latter two gated onLNBITS_NOSTR_IDENTITY_DOMAIN)PATCH /api/v1/auth(profile edit)update_user_account→_publish_nostr_metadata_event(account)→ kind-0 re-publish via signerSo all three places the webapp used to broadcast are now covered server-side.
LNBITS_NOSTR_IDENTITY_DOMAINis set toaiolabs.devon demo per the topology PR addendum (server-deploy:25e9d44), sonip05andlud16fields show up as<username>@aiolabs.devfor users registered on this deploy.Test plan
vue-tsc --noEmitclean post-changeaio-demoafterdevdeploy:"Profile updated!"shows → check relay logs for a kind-0 from the user's pubkey containing the updated fieldsnip05 = <username>@aiolabs.devRefs
log:2026-05-29T01:45Z(lnbits handoff identifying the auth-service line numbers to drop)~/dev/coordination/webapp-design-questions.mdQ2.3 (full decision context)aiolabs/lnbitsPR #26 commit869f67c3(server-side kind-0 publish +LNBITS_NOSTR_IDENTITY_DOMAIN)aiolabs/lnbitsdev tip861f427c, deployed toaio-demoviaserver-deploy:e2eed9caiolabs/lnbits#9(signer abstraction / bunker integration)#80(ReactionService dedup),#81(ScheduledEventService dedup)🤖 Generated with Claude Code
5619a58c73to414b79565c