-
Notifications
You must be signed in to change notification settings - Fork 162
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] Relay Profiles with NIP-66 support #1251
Comments
Another suggestion to compliment relay profiles, is the division of hashtags and global. This of course creates quite a headache with a myriad of possibilities. Relay profiles should account for their own menu item within the existing drop-down feed selection menu. Each profile should also offer its own global feed. In this case, the global icon would become a toggle, and it would adapt to the current profile selected. This would allow multiple global feeds. Then, within the feed selection drop-down, could be an "All Global" option, for viewing the cumulative global feed. The hashtag icon could be used to filter amongst the profile or feed selected. In this way, users would be able to quickly enable 'global mode' to browse their global feed and filter via hashtags there. Or, they could simply select a feed generated from a profile, such as 'Mycelium', and the hashtag button would adapt to filter within the mycelium relays list. "Followed hashtags" could remain in the same drop-down menu, but will likely need to assume their own UI panel for later management. |
This is an interesting idea. The major issue I see is that changing the relay profile affects the entire app, not only the feed like you are doing in your second reply here. For instance, When you change to Mycelium, all DMs, media, DVMs and notifications must disappear and only the mycelium ones need to be reloaded. It's an interesting concept but the app's architecture is definitely not ready for it. The top navigation usually only affects the current feed. Each feed has that choice. (DMs don't). I wanted to generalize the feed architecture to include relays as well so that we could get a Global feed from relay X and another Global feed from relay Y. These would be two entries in the top bar. The relays could be set on the Custom Feed Editor to avoid mixing with the user's main relay lists. I don't know... good of ideas. Lots of work to get them going.. |
I consider this to be additional to the global experience. In my example, I have not provided 'true to life' relays. These are merely for imagery. So, in this case, the 'home profile' is what takes precedent throughout the app. These profiles will be only for generating feeds and allowing the user to submit posts to them. All other functionality will remain as it is. I have made many changes to these posts in the last couple of hours, so you may want to refresh and skim it back over. Especially in the last ten minutes, I changed the second post dramatically to account for some of the global functionality. I think the only major change here would be the way global is constructed, and the hashtag suggestion. These two I'm not exactly clear on, but that stuff is a bit less of my concern here. My major concern is handling the very large and growing list of relays that I might communicate publicly with. Edit: So, basically, these profiles are just generating new feeds, not entirely taking over, like the home feed does, and all of the other primary settings. These lists would not get blasted out with nip-65 or anything. The idea is the 'home profile' is what we are already working with, and this should remain to be the default working relays for the user. Along with all of those other relays that I don't have set up nor use at this time. DVM's and such.. none of that functionality would be included here. Basically a very large and extended overhaul of local relays? By including the existing icons for dm's, groups, etc, I may have misled you a bit with the graphic. So, in that case, it may be that those icons do not appear under the custom profiles section, nor offer those functionalities. This would at least allow for a simplified-only view where a user can toggle global or remove relays from the profile. I was also considering that these profiles could simply be exported manually later. So, the idea is definitely to allow management of a catalogue of local relays, as opposed to functionally identifying a user's npub with complete functionality of every single relay. I consider this a "kind 1 feature," I guess. If a user wishes to interact on an intricate level with relays, it would be presumed they are part of that user's 'home profile' (or otherwise enabled through foundational features of amethyst). Edit: To clarify also, users would never "change" profiles. They would merely select relays from their profiles when submitting notes. Home would default to all of its assigned relays, and be included in each note submission. Then, the user can rely on their profiles to select additional relays for their reply. Here's an example: Let's say you submit a note on example.relayhost.net. I don't follow this relay, but I investigate it and decide to add it to my "new relays" profile. When replying to your note in Amethyst, the app assumes I want to submit this to my default relays. If I decide not to include these, I tap the home profile icon on my 'relay selection' screen, and deselect all. Then, I can switch back to my 'new relays' profile to ensure I am only submitting the note to example.relayhost.net. I tap 'save' and 'post' and I have successfully replied to you on the only relay you submitted to. I included this in a generic profile, as not to disturb other profiles. I am certainly not adding the unknown relay to my home list, as it is foreign to me. Profiles would allow generic and temporary trust, alongside remembered trust, alongside our protocol-level relays. Another consideration is that profiles could be shareable within amethyst between npubs. Then, you could quickly import profiles from other npubs you use, by sharing them between each other. So, you could create the profile on npub 1 and later decide to shuffle that profile of relays to npub 2. You share it with npub 2 and delete it from npub 1. Easy! |
Here is a more concise and clear process of adding a relay profile. In this example, I have separated "search" and "dm" relays from the "home profile". Note that "home, dm's, and search" relays would make up the user's "working relay" sets. The rest of the profiles will be reserved for local relays. The "home" profile, on its own, would only be responsible for "public home," "inbox," and "private home" relays. Recommended relays would assume their own tab at the top of the relay settings page. This would allow for more relays to appear (assuming more become widely known?), as well as allow for quick addition of those relays to existing profiles. "General" relays does not have a home in this suggestion- so I assume it also lives in the "home" profile. This would clean up the current relay configuration screen, without disrupting amethyst's general flow. |
Ok, so here's a different issue. On NIP-65 (Outbox model) the inbox and outbox relays are for the others to use. If I need to send a reaction to pubkeyA, I need to find pubkeyA's NIP-65 event and send to that inbox. If I have an event uri that is authed by pubkeyA, I need to find the NIP-65 event and connect to the outbox relays to download the event itself. If I am rendering a post by pubkeyA, I need to connect to pubkeyA's inbox relays to download the likes, zaps and replies for a post. Each reply by a different author in the same thread requires the app to connect to the relay of that author. How would my app know that my friend has multiple profiles and, more importantly, how it would know when to use which one? |
Amethyst should have no idea what profiles (other users) are using at all. Think of it like this- the 'local relay' section in Amethyst is being extended to the user's demands. For some, they may only have 1 or 2 profiles. But for some others, they may have several, because they are very proactive in discovering relays. But in this case, discovering a lot of relays shouldn't burden the user's relay configuration. Amethyst will only concern itself with broadcasting what is defined in the 3 default profiles. Home, search, and dm's. Home profile defines the inbox/outbox model and private home relays for the npub. This remains constant. Search profile is just moving the search relays setting to its own page, for people who may want to search on 10 or more relays. DM's profile is the same as search, but for DM's. Mostly this is being separated for visual benefit and QOL management. Then comes custom profiles. This is again, JUST local relay lists that we are building in the client itself. We are not trying to create npubs with Multiple Personality Disorder! It's just that sometimes a friend launches a new relay. Great! Now what? Add it to the never-ending list of general or local relays? It becomes a mess quickly. The same can be said for people who decide to host more relays than "the inbox/outbox model demands." I think topical relays are still a grey area for nostr, but I am in favor of them personally. To me this is a way of empowering users who have topical relays, while still serving the majority who do not. So, in light of the uncertain direction for any nostr client, I just want to propose Amethyst provide some more flexibility to local relays. These profiles are meant to be simple ways of expanding on what exists now- so I'm not sure how all of that works in regards to local relays in Amethyst now. But since they do not offer the fine-tune controls of "general relays," I assume they provide limited functionality. Edit: And again, a secondary benefit of this is they can be queried as custom feeds, so the user does not have to generate their own lists of feeds, with external tools, simply to follow a group of new relays that have little-to-no impact on the user's primary experience. As well as transferring these profiles between npubs, for more flexibility on a multi-account spectrum. It would make setting up a new npub a breeze! We could import the base profiles too, if we wanted. Would be great imo. And we would get the "+" add to profile button for quickly remembering a relay in the short-term. I think a lot of us would have a profile called "unknown relays" or "general relays" etc, for relays that we simply want to keep around but are not yet ready to fully manage. |
It feels like the proposal is more aligned with a Custom Feed (which certain feeds would use different relays for that feed) than a "profile" for relay lists. Custom feeds are something we are trying to push for sure. We just don't have a good architecture for that yet. At this point, they would just be additional options in the top nav bar that could be configured to specify event kinds, relay set and other attributes for that feed alone. Then users can apply to any page in the app. Meaning, it would be less of an "Account Switcher" type of thing that the whole app changes, and more of in screen option for users to change that screen. |
Where I see this being most powerful is when deciding where to post. As it stands now, the defaults are still not being correctly toggled, at least in my app. So with this change, when you post a note, Amethyst will assume you are posting the message to your home relays. The icons for your profiles would appear at the top. The same way as if I added relay.example.net to my local relays section, and then tried to post to it. By filtering the dm and search relays away from the 'home' profile into their own, these dm and search profiles can be hidden when posting. This leaves only the home profile and the custom profiles to switch between. So a new user, who has never set up a custom profile, would only see a home button at the top when selecting the relays they are broadcasting to. Each button here acts as its own independent list of toggles. That way, people who have custom relay profiles set up, can automatically be broadcasting to their default relays, and additionally deselect all home relays in the instance of needing to post to one relay. And, it would be more convenient to visually differentiate these growing lists, as they would already be separated for the user. The end result is allowing people to discover and explore new relays, and post to them, while adhering to Amethyst's existing relay configuration. There is definitely no switching between profiles, either. Only in the sense of browsing a profile as a feed. An unintended but useful consequence, I think. This is merely breaking up the publishing into categories that are sensible and have room for expansion. With the ability to make multiple npubs, through multiple clients, I see plenty of demand for Amethyst to juggle relay lists locally, for the benefit of the user. I consider this to be a stepping stone toward custom feed architecture, if you will. Amethyst basically says "I'm gonna blast this to the known spots. Is there anywhere else we need to go?" and offers the additional toggle lists of custom profiles. EDIT: To be clear here too, the profiles will still let the user toggle relays individually within each panel. This is not intended to blast ALL profiles or ALL relays within a profile, UNLESS the user specifically toggles all relays within that profile. I would assume Amethyst will also later decide "ok, I will include ALL relays that I can see the note on, and respond to all of those too." But I mentioned being uncertain of consensus on this particular mechanic. It would only know this for replies, specifically, and not new notes. |
Interesting.. if the goal is to make posting to separate relays more customizable, there is no need to separate the "profile relay list" by relay type, simplifying the settings screen. Each profile should also have some type of pre-set to let the app know if the new relays should be used alone OR in addition to the regular relays that is computed from the outbox model. |
Right, I guess you could set up a preconfiguration for that. In my mind, the home profile would always be selected, and the user would just tap the home button to quickly deselect all before submitting on the relay they desire. This is sort of how I post now, usually. If I forget to deselect all, suddenly I have blasted the network, lol. So I am in favor of having that option, for sure. I suppose you could also have an option for including the entire list by default, also, for those blastr folk. :^) (why would I even suggest that at this point honestly <_<) One small thing I didn't include in the images, was the notification bell beside each relay in a custom profile, for handling that. Could be worked as a global feature per profile as well, but yeah lots of options. I think by relay type, do you mean dm's and search? I was in favor of separating these only for visual preference. I don't think the relay configuration is too unwieldy, but I do think managing it all in one screen is cumbersome. So that is purely for visual benefit, because I assume some users might want to include many DM or search relays. If you meant something else, I am not sure what you meant by "profile relay list".. Sorry :) The DM and search profiles would then become invisible to the user when posting- and it declutters their 'home' profile in the process, so if they need to select or deselect relays from the home profile, dm's and search is simply not included there. Also, I think by provisioning the user 3 predetermined profiles, it sort of guides them into the expectation of creating custom profiles, so they know how to manage things when the time comes for that expansion. Anyone who gets to that point, can decide for themselves if they wish to manage relays this way or not. |
Something like this, maybe? I don't know where one could assign the emoji, if they wish to use it. Perhaps a long-press of the button would allow for it. Otherwise, detecting an emoji at the beginning of the title, such as "🍄 Mycelium" but that seems kind of jank. If a random, generic emoji was set for the user, maybe it will encourage them to inquire about a long-press. Perhaps these relay sets can be published with kind 30002 if desired? Then users can share their lists, and they could be displayed on our profiles. This seems good for a long-term idea: |
Made some additions to the mockup above to include a control panel and showcase an emoji. I edited the post to update the image, so, I am just commenting now in case it gets overlooked. I hope I have addressed everything as best I can. Amethyst is the best! Here is the NIP-66 import process. The first step would be to optionally import relays via nip-66 or simply type them manually to begin the profile. Once this initial profile is saved, the profile is then configurable on-the-fly. |
Users would be able to create profiles of relays.
Profiles should be named locally, assigned by the user. This could have influence over the profile buttons- or perhaps generic icons could be relied on. OR, custom emojis could be used as placeholders. For instance, I would select a mushroom for my relays at mycelium. A direct shortening scheme could also be applied, such as 'M' for mycelium.
The 3 top-and-left-most images makeup the 'flow' of creating a relay profile.
Once the profile has been created, users should still be able to manage the profile, by way of adding and removing relays, and specifying their roles with the existing toggle options.
The far-right mockup is an example of relay selection when posting a new note or comment reply. In this case, I have used my existing relays as an example, but they would be stored under relay profile '2'.
With consideration to relay selection- the button text could toggle between white and purple to signify "if a relay is selected within the profile". So, in the example, both the home button and profile 1 both have purple text. This suggests that there are relays selected under all 3 profiles. If the user were to de-select all relays from profile 1, the text should be white, to show there are no relays selected within this profile. Alternatively, instead of text coloration, either button coloration could be used, or small badge indicators with the number of selected relays could appear in the corner of the button.
Edit: This would present the opportunity to add 'global' as its own customizable profile. It could take precedent as the second pre-generated profile. By default, amethyst would not assume the user wants to always post to global.
Considering this, relay profile pages could also offer the option to be assumed by default when posting notes or replies. This may be preferred by some users, or in some situations.
The text was updated successfully, but these errors were encountered: