diff --git a/24.md b/24.md index 0094d58d..0a805e97 100644 --- a/24.md +++ b/24.md @@ -15,8 +15,6 @@ These are extra fields not specified in NIP-01 that may be present in the string - `display_name`: an alternative, bigger name with richer characters than `name`. `name` should always be set regardless of the presence of `display_name` in the metadata. - `website`: a web URL related in any way to the event author. - `banner`: an URL to a wide (~1024x768) picture to be optionally displayed in the background of a profile screen. - - `bot`: a boolean to clarify that the content is entirely or partially the result of automation, such as with chatbots or newsfeeds. - - `birthday`: an object representing the author's birth date. The format is { "year": number, "month": number, "day": number }. Each field MAY be omitted. #### Deprecated fields @@ -24,6 +22,8 @@ These are fields that should be ignored or removed when found in the wild: - `displayName`: use `display_name` instead. - `username`: use `name` instead. + - `birthday`: use [NIP-F1](F1.md) instead. + - `bot`: unreliable. ### kind 3 diff --git a/F1.md b/F1.md index 3825c668..e4a6c542 100644 --- a/F1.md +++ b/F1.md @@ -1,37 +1,44 @@ NIP-F1 ====== -Profile Hypercustomization --------------------------- +Profile Theming +--------------- `draft` `optional` -This NIP describes a new event `kind:19999` that can be used for multiple optional and weird forms of profile customization, such as extra colors, extra pictures, preferences and background music. +This NIP describes a new event `kind:16767` that can be used for profile theming, such as colors, fonts, background images, background audio and extra metadata. It's completely optional and clients may choose to fulfill only some of these tags, or none. Clients may also allow users to turn off these customizations or not. ## Tags -| Name | Value type | Description | -| --- | ---- | ----------- | -| `background-color` | hex value | To be used by clients when displaying the user profile page | -| `foreground-color` | hex value | Idem | -| `background-music` | URL | Music that optionally plays when the profile is opened | -| `priority_kinds` | stringified kind number (variadic) | Kinds to be displayed by default in the user profile page (rather than `kind:1` always) | -| `custom` | string name, then value | An arbitrary field to be displayed along with the profile | +| Name | Value type | Description | +| ----------------- | ----------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `c` | hex color code, then role name | Color for a specific role (`background`, `text`, `primary`) | +| `f` | font name, URL to woff2, then usage | Font for a specific usage (`body`, `title`) | +| `bg` | `url `, `mode `, imeta-style | Background image, follows [92](92.md) format with optional mode (`cover`) | +| `background-music` | URL | Music that optionally plays when the profile is opened | +| `priority_kinds` | stringified kind number (variadic) | Kinds to be displayed by default in the user profile page (rather than `kind:1` always) | +| `birthday` | date (YYYY-MM-DD) | User's birthday | +| `custom` | string name, then value | An arbitrary field to be displayed along with the profile, as text | ## Example ```yaml { - "kind": 19999, + "kind": 16767, "tags": [ - ["background-color", "#1a1a2e"], - ["foreground-color", "#eee444"], - ["background-music", "https://example.com/music/profile-theme.mp3"], + ["c", "#171411", "background"], + ["c", "#fce9cf", "text"], + ["c", "#f96b06", "primary"], + ["f", "Inter", "https://cdn.jsdelivr.net/fontsource/fonts/inter:vf@latest/latin-wght-normal.woff2", "body"], + ["f", "Merriweather", "https://cdn.jsdelivr.net/fontsource/fonts/merriweather:vf@latest/latin-wght-normal.woff2", "title"], + ["bg", "url https://blossom.ditto.pub/b3a09050d21a07a05e5345e11a532ea0d7536a3f6eded9b70fede03c22aefd47.jpeg", "mode cover", "m image/jpeg", "dim 1024x1536"], + ["music", "https://example.com/music/profile-theme.mp3"], ["priority_kinds", "20", "30023", "21", "10009"], ["custom", "favorite fruit", "banana"], - ["custom", "pets?", "no"] + ["custom", "pets?", "no"], + ["birthday", "1990-01-15"] ], // ...other fields } diff --git a/README.md b/README.md index ad41a01a..7dfbe1da 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ NIPs listed here are not a protocol checklist. Nothing forces any software to im - [NIP-C0: Code Snippets](C0.md) - [NIP-CC: Geocaching](CC.md) - [NIP-C7: Chats](C7.md) +- [NIP-F1: Profile Theming](F1.md) - ~~[NIP-EE: E2EE Messaging using MLS Protocol](EE.md) --- **unrecommended**: superseded by the [Marmot Protocol](https://github.com/marmot-protocol/marmot)~~ ## Event Kinds @@ -177,6 +178,7 @@ This table is not exhaustive. For a machine-readable registry of all known event | `1622` | Git Replies (deprecated) | [34](34.md) | | `1630`-`1633` | Status | [34](34.md) | | `1971` | Problem Tracker | [nostrocket][nostrocket] | +| `16767` | Profile Theming | [F1](F1.md) | | `1984` | Reporting | [56](56.md) | | `1985` | Label | [32](32.md) | | `1987` | AI Embeddings / Vector lists | [NKBIP-02] |