You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Buzz Desktop presents the first-community profile field as Your username
but persists that value as Nostr display_name. The same value is later shown
under Settings → Profile → Display name.
The Desktop profile model and Tauri command can read and preserve an existing
Nostr name, but neither onboarding nor Profile settings lets a user create or
edit it. A new user therefore cannot represent the standard two-field profile:
This affects new and existing Desktop users who want a short Nostr name and a
separate richer display name. It also teaches the user that they are choosing a
username when the emitted field has different semantics.
The canonical identity remains the public key. This issue is about profile
metadata and UI semantics, not account identity or authorization.
Current main rechecked at: b8510ede1b52ebe87ed3cf18cf0b2590a86b2245
Supported path: first-community onboarding followed by Settings → Profile
Minimal reproduction
Start first-community onboarding with an identity that has no profile event
in that community.
At Build your profile, enter alice into the field labeled Your username.
Complete onboarding.
Open Settings → Profile.
Observe that the same value is labeled Display name, with no separate name or username control.
Inspect the current source or capture the signed kind-0 event. The onboarding
payload supplies displayName: "alice"; it does not supply name.
Current result
Onboarding labels the input as a username.
The input is stored as display_name.
Settings correctly labels the stored value as Display name.
A pre-existing kind-0 name is preserved by Desktop edits but cannot be
created or changed through the supported Desktop UI.
Evidence classification
Observed
On Buzz Desktop v0.4.25 for macOS, first-community onboarding requested a
username.
After onboarding, Profile settings displayed the resulting value as Display name and exposed no separate username/name field.
Code-proven
desktop/src/features/onboarding/ui/CommunityOnboardingFlow.tsx labels the
input Your username, uses username-oriented HTML attributes, and calls updateProfile({ displayName: ... }).
desktop/src/features/settings/ui/ProfileSettingsCard.tsx edits only displayName, avatar, and about; it labels the field Display name.
desktop/src/shared/api/types.ts::UpdateProfileInput has no name member.
desktop/src-tauri/src/commands/profile.rs::update_profile accepts no name
argument. It only carries forward name when one already exists in the
current kind-0 content.
The same behavior remains present on current main at the SHA above.
Documented
NIP-01 defines name in kind-0 user metadata.
NIP-24 defines display_name as a richer alternative to name, states that name should still be set, and deprecates the literal username key in favor
of name.
Review on PR Polish community profile onboarding UI #2088 rejected presenting the existing display-name field as a
username unless a real username model was introduced separately.
Not yet runtime-proven in this report
A redacted raw kind-0 capture from the observed production community has not
been attached. The payload-to-field mismatch is code-proven on both the
release commit and current main.
Expected Behavior
Buzz Desktop should represent Nostr profile metadata without conflating the two
fields:
name is the short Nostr name/handle.
display_name is the richer human-facing name.
The supported Desktop profile flow allows a user to set and later edit both.
UI labels describe the field that is actually signed and published.
The public key remains the canonical identity; neither field is presented as
globally unique.
Editing either field preserves the other field and all unrelated kind-0
metadata.
The exact layout is a product decision. The required outcome is semantic and
wire-level agreement between onboarding, settings, the update contract, and the
signed kind-0 event.
Scope
Buzz Desktop first-community profile onboarding.
Buzz Desktop Profile settings.
Shared Desktop profile/update types and Tauri command wiring needed to carry name.
Signed kind-0 profile construction for the current user's supported Desktop
path.
Focused unit/integration/E2E coverage for the two-field round trip.
Owner boundary: block/buzz Desktop and its local Tauri profile command.
Non-Goals
NIP-05 domain provisioning or verification UI.
Making name globally or community-wide unique.
Changing public-key identity, community owner/admin roles, authentication, or
signing.
No personal names, public keys, private community content, credentials, or
unredacted production event payloads are required in tests or issue evidence.
Problem
Buzz Desktop presents the first-community profile field as Your username
but persists that value as Nostr
display_name. The same value is later shownunder Settings → Profile → Display name.
The Desktop profile model and Tauri command can read and preserve an existing
Nostr
name, but neither onboarding nor Profile settings lets a user create oredit it. A new user therefore cannot represent the standard two-field profile:
{ "name": "alice", "display_name": "Alice Example" }This affects new and existing Desktop users who want a short Nostr name and a
separate richer display name. It also teaches the user that they are choosing a
username when the emitted field has different semantics.
The canonical identity remains the public key. This issue is about profile
metadata and UI semantics, not account identity or authorization.
Evidence And Reproduction
Environment
v0.4.25e8105d1446834f522c75d628bf1d9e77c9c077a4mainrechecked at:b8510ede1b52ebe87ed3cf18cf0b2590a86b2245Settings → Profile
Minimal reproduction
in that community.
aliceinto the field labeledYour username.
nameor username control.payload supplies
displayName: "alice"; it does not supplyname.Current result
display_name.nameis preserved by Desktop edits but cannot becreated or changed through the supported Desktop UI.
Evidence classification
Observed
v0.4.25for macOS, first-community onboarding requested ausername.
Display name and exposed no separate username/
namefield.Code-proven
desktop/src/features/onboarding/ui/CommunityOnboardingFlow.tsxlabels theinput Your username, uses username-oriented HTML attributes, and calls
updateProfile({ displayName: ... }).desktop/src/features/settings/ui/ProfileSettingsCard.tsxedits onlydisplayName, avatar, and about; it labels the field Display name.desktop/src/shared/api/types.ts::UpdateProfileInputhas nonamemember.desktop/src-tauri/src/commands/profile.rs::update_profileaccepts nonameargument. It only carries forward
namewhen one already exists in thecurrent kind-0 content.
mainat the SHA above.Documented
namein kind-0 user metadata.display_nameas a richer alternative toname, states thatnameshould still be set, and deprecates the literalusernamekey in favorof
name.username unless a real username model was introduced separately.
Not yet runtime-proven in this report
been attached. The payload-to-field mismatch is code-proven on both the
release commit and current
main.Expected Behavior
Buzz Desktop should represent Nostr profile metadata without conflating the two
fields:
nameis the short Nostr name/handle.display_nameis the richer human-facing name.globally unique.
metadata.
The exact layout is a product decision. The required outcome is semantic and
wire-level agreement between onboarding, settings, the update contract, and the
signed kind-0 event.
Scope
name.path.
Owner boundary:
block/buzzDesktop and its local Tauri profile command.Non-Goals
nameglobally or community-wide unique.signing.
its open PRs.
Acceptance Criteria
nameanddisplay_namethrough supported BuzzDesktop profile flows.
name = "alice"anddisplay_name = "Alice Example"emits a signed kind-0 containing thoseexact fields.
semantically correct labels.
namepreservesdisplay_name, picture, about, NIP-05, andunmodeled kind-0 fields.
display_namepreservesnameand the same unrelatedmetadata.
display_namecontinues to load andcan be upgraded without silent data loss.
being promoted into or replacing the other.
level and do not delete unrelated metadata.
showing unsaved values as canonical.
nameis globally unique or authoritativeover the public key.
navigation behavior remains compatible.
Validation Plan
nameanddisplay_nameinputs.and unmodeled kind-0 metadata.
display_name;just cibefore proposing implementation for merge.to that PR and is not pre-claimed by this issue.
Security And Compatibility
remains authoritative.
relay admission rules should change.
signed kind-0 event.
field editor does not reintroduce destructive whole-profile rewrites.
unredacted production event payloads are required in tests or issue evidence.
References
https://github.com/nostr-protocol/nips/blob/master/01.md
https://github.com/nostr-protocol/nips/blob/master/24.md
name:kind:0 profile republish drops every field outside a 5-key allowlist — silently deletes bot: true, nip05 and website #2534
fix(profile): preserve unmodeled metadata on update #2545
leaves exposing
--nameout of scope:fix(profile): read-merge-write kind:0 so republish stops deleting unmodeled fields #2606
Polish community profile onboarding UI #2088 (review)
retaining the display-name persistence path:
Polish onboarding avatar capture #2118