block / block/buzz

Support NIP-24 website and banner profile metadata in desktop

Open
#4,584 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Problem

Buzz Desktop currently models and displays only part of a kind:0 profile. The standard NIP-24 `website` and `banner` fields are not exposed in Profile settings or rendered in the member profile panel.

That leaves profiles less useful for community members who want to share a primary website and visually distinguish their identity without introducing a Buzz-specific metadata format.

## Proposed scope

Add first-class Desktop support for the standard NIP-24 fields:

- parse `website` and `banner` from kind:0 metadata
- allow users to edit their website in Profile settings
- allow users to upload, replace, and remove a banner using the existing media-upload path
- render the banner and website in the existing member profile panel
- accept only valid HTTP/HTTPS URLs, reject embedded credentials, and fall back cleanly when a banner cannot load
- preserve existing avatar, profile-cache, deferred-avatar, and profile animation behavior

This would remain within the existing kind:0 profile, Tauri profile command, media upload, and profile UI architecture. It would not add a dependency, endpoint, event kind, or parallel profile model.

## Relationship to existing profile-preservation work

This feature should integrate with the resolution of #2534 rather than silently rebuilding a new fixed allowlist.

Two open PRs currently address preservation of unmodeled kind:0 fields:

- #2606
- #3294

The implementation should be rebased onto whichever preservation approach maintainers select so profile edits retain `bot`, `lud16`, future NIP fields, and other unmodeled metadata.

## Explicitly out of scope

- custom social-link arrays or provider-specific metadata
- banner positioning/cropping metadata
- joined dates or community-role changes
- CLI profile flags
- mobile profile editing
- unrelated profile refactors

Those can be discussed separately after the standard fields are supported.

## Acceptance criteria

- existing NIP-24 website/banner metadata is parsed and displayed
- website edits and banner upload/removal round-trip through kind:0
- unsafe website schemes are rejected
- unavailable banner images do not break the profile panel
- existing profile fields and unmodeled kind:0 metadata remain intact
- existing profile tests remain green, with focused Rust, frontend, and Desktop E2E coverage added

Is this focused Desktop scope acceptable once the #2534 preservation work is resolved?

Contributor guide

Open the contributing guide

Research direction

First review #2534 and the selected preservation approach, including how it affects the existing kind:0 profile model. Then inspect the Tauri profile command, media-upload path, and member profile UI. Run the existing profile tests and add focused Rust, frontend, and Desktop E2E coverage; done means website and banner round-trip safely while existing and unmodeled metadata remain intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, tauri
Domain
backend, desktop, frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.