Viewing contacts
Navigate to the Contacts page to see all your saved contacts. Each contact card displays:- Profile picture or avatar: If the contact has a profile picture, it’s displayed. Otherwise, initials are shown in a colored circle
- Display name: The contact’s petname (if set) or their Nostr display name
- Nostr name: Shows underneath if different from the petname
- Public key: The contact’s public key in hex format (in small gray text)
Adding contacts
Open the add contact form
Click the ”+ Add Contact” button at the top of the Contacts page. This opens the add contact form.
Enter the public key
In the “Public Key” field, enter the contact’s Nostr public key in one of these formats:
- npub format:
npub1...(Nostr public key in bech32 format) - Hex format: 64-character hexadecimal public key
Hoot validates the key format in real-time. If the format is invalid, you’ll see an error: “Invalid public key. Use npub1… or 64-char hex.”
Add a petname (optional)
In the “Petname” field, enter a nickname for this contact. Petnames are useful for:
- Giving friends memorable names
- Distinguishing between contacts with similar Nostr names
- Organizing your contact list
If a contact already exists, you’ll see an error: “Contact already exists.”
Editing contacts
Editing petnames
Click 'Edit' on the contact card
Find the contact you want to edit and click the “Edit” button on their card.
Removing contacts
To remove a contact:Contact sorting
Contacts are automatically sorted alphabetically by their display name (petname > display_name > name > pubkey).Contact avatars
Hoot displays contact profile pictures when available:- Profile pictures: Loaded from the
pictureURL in the contact’s Nostr metadata - Initials: If no picture is available, up to 2 initials are shown in a colored circle
- Async loading: Images are loaded in background threads to keep the UI responsive
- Caching: Images are cached to reduce network requests
Contact metadata
When you add a contact, Hoot automatically:- Checks if their metadata is already cached
- Displays their display name, username, and profile picture if available
- Subscribes to metadata updates from relays
- Updates the contact card when new metadata arrives
- Display name: The contact’s friendly name
- Name: The contact’s username or handle
- Picture: URL to their profile picture
- Other fields: About text, website, etc. (shown in profile views)
Allowed senders
The Contacts page includes an “Allowed Senders” section for managing message permissions.Understanding sender status
Hoot uses a sender status system to control who can reach your inbox:- Allowed: Messages appear in your inbox
- Junked: Messages go to the Junk folder
- Unknown: Messages appear in Requests (require approval)
Viewing allowed senders
Expand the “Allowed Senders” section to see a list of public keys that can send messages to your inbox. Each entry shows:- Display name or username (if available)
- Public key in hex format
- Action buttons
Managing allowed senders
For each allowed sender:- Move to Junk: Click to move this sender to junked status. Future messages from them will go to the Junk folder
- Remove: Click to remove the allowed status. Future messages will go to Requests
These actions don’t affect existing messages. Only future messages are filtered based on sender status.
NIP-05 verification
Contacts may have NIP-05 identifiers (like[email protected]) associated with their public key. These appear in:
- The compose window when selecting a sender account
- Contact metadata if the contact has verified their NIP-05
Contact images
Profile images are loaded and displayed using these steps:- Request: When a contact is displayed, Hoot checks if an image should be loaded
- Background fetch: The image is downloaded in a background thread to avoid blocking the UI
- Cache: Successfully loaded images are cached in memory
- Display: The image is rendered as a texture in the contact card
- Fallback: If loading fails or no picture URL exists, initials are shown
Image invalidation
Images are automatically invalidated and reloaded when:- A contact’s picture URL changes
- A contact is removed and re-added
Contacts and sender requests
When someone not in your contacts sends you a message:- The message appears in the “Requests” folder
- You can approve or junk the sender
- Approving adds them to allowed senders (they don’t need to be in contacts)
- Adding them to contacts also allows messages
Contacts and allowed senders are separate. You can:
- Have contacts who aren’t allowed senders
- Have allowed senders who aren’t contacts
- Combine both for complete control
Syncing contacts across devices
Future versions of Hoot may support Nostr-based contact list synchronization using NIP-02.Importing/exporting contacts
Contact import/export features are planned for a future release.
Next steps
- Configure your profile and NIP-05 identifiers
- Learn about sending messages to contacts
- Understand message filtering and sender management