Closed matildepark closed 3 years ago
Design work is in progress (as of yesterday).
urbit/urbit#4264
Possibly can include #56? Depends on networking logic, point to point subscriptions would make it work fine; recurring fetch would make it out of date frequently.
Brief overview on the major touch points for the new profile work: Part One
Imagining we've just opened up our personal urbit, the first major change of note is the way we render the profile in the top bar.
Note: We've removed the display of the patP in favor of only displaying the sigil, which should reflect changes made to it, via the profile, accordingly. Given there is now a single editing surface for a single profile-representation used throughout Landscape (until we build a more robust and still-simple multi-avatar system), it only makes sense that we reflect color changes, and the decision to use an avatar in the top bar:
Clicking the ship representation in the top bar will bring you to your profile immediately. We are no longer bundling ship settings and identity within a single interface. It should be obvious, but ship settings are now accessed via the gear that now resides next to the "urbit representation".
Moving on!
After clicking the ship representation in the top bar, an urbit pilot lands within their profile. It's hyper minimal for now:
The pilot-editable elements include:
and last but not least, in a move to begin supporting a notion of discoverability in urbit:
These fields are also forever and always OPT-IN — you do NOT -NEED- to fill them all out. None of them rely on one another — this is by design, and should ideally remain so.
The fields are presented as a whole, and cannot be selectively 'turned on' or 'turned off' — if your profile is PUBLIC, than all information a pilot edits will be visible to the world. If the profile is PRIVATE, than any edited information is only visible by ships who 1) have been directly DMed and had the profile shared with them and 2) members of a group in which a pilot has made their profile visible/public.
Anyone viewing a private profile only sees a monochromatic sigil, and the pilot's @p
The profile, as one might imagine, can become arbitrarily rich, and someday support a lot more functionality, but we're purposefully keeping the scope of editable/displayable elements low, in order to see how they fare on the network.
Unedited or "Default" profiles, or profiles of unbooted ships, will look incredibly bare for the time being:
This isn't ideal, and perhaps we can report back on their azimuth info, to populate profiles with interesting info, but we'll see how Ethereum holds up, and whether we mitigate Azimuth via another system.
If an urbit pilot is looking at their own profile, they see the option to EDIT it.
If a pilot is looking at another person's profile, they can MESSAGE the user. Other options, such as PAY or REPORT/CENSURE/BLOCK, will find their way into the profile display when they are built.
The editing interface looks very similar to the profile interface itself:
Each of the fields are displayed in a non-fancy manner. The most complex field is the "Add a Group" field, which allows a pilot to filter through a list of public groups they are a member of and list them as affiliations on their profile.
So, this is an overview of everything profile viewing/editing is concerned.
There are no longer "Group Profiles" in their current form, or the ability to edit a profile in the context of a group. If you view a list of group members, you'll be given the option to visit another person's profile, which occupies the entire view/screen, as shown above.
Here's how you'd share your profile with a group:
If you don't share your profile with a group, you'll simply appear as a basic urbit ship/sigil/@p
Brief overview on the major touch points for the new profile work: Part Two
Now that we've covered the primary profile display, and its editing methods, we now divulge secondary and tertiary interfaces that can be found throughout landscape.
Anywhere you can find a ship representation in Landscape, we should couple them with onClick micro profiles, which display a small selection of information mirrored from one's primary profile:
An example of a card that represents "my identity":
An example of a card that represents "someone else's identity":
There are small point of distinction between both cards, such as being able to message "someone else", and being able to set a text-status on my own mini profile (if/when we ever develop this). Actions made available on the Mini Profile should mirror the actions one can take on a ship via its profile.
This profile mirror is simple:
When I begin to type a sig ~
to start writing a ship's name, we should bring back the autocomplete box, which should mirror a minimal amount of profile information, such as a ship's pilot-set name, their ship color, and their avatar if set.
Last but not least, Leap should begin to render out snippets of a pilot's identity information if any of it has been set:
In this example, programmatic status, sigil color, and a small pilot-set status message is included in Leap's completion set.
As I was writing out some of the secondary/tertiary interfaces, I was reminded that these may be quite limited depending on how we treat the privacy model of profiles — for example:
If I search "~ravmel-ropdyl" in leap, and I am a brand-new, completely fresh urbit, I'd expect this to effectively function as a |hi
sent to him. Despite never being in a group with one another, and him sharing his profile to me, should I be privy to any of his profile information?
I think this sort of begs the question: Should an additional field be added to profiles to make them universally public (and thus able to display information via a ship search in Leap) or private? I can imagine a private profile would operate such that I perform edits on it, and selectively share with groups, and any members of said group are granted view access to my profile info, including via Leap.
I imagine if we offer this capability, it'd look like this:
And thusly remove or disable the ability to 'not share' your profile with a group.
Would appreciate any thoughts here!
cc @tacryt-socryp re: everything above — tear it up, we can chat about how this is currently stated and how it should evolve
cc @tacryt-socryp
Adding some additional designs promised during our chat/review. All of the above thoughts are contingent on a toggle in one's profile editing experience that allows them to set the profile to public or private:
Onward —
While talking to someone for the first time after identities are released, you will see a banner in the DM:
If your profile is Private, you'll be given a chance to share out your profile in a banner pinned to the top of your chat. If dismissed, your profile edits can be shared with the recipient in the chat's settings. Note the details like your sigil in the text input still retaining a "default" black and white appearance.
If your profile is set to "Public", the DM banner will appear, but note that your profile information has been shared with the recipient:
Any edits made to your profile, including your name and avatar/sigil edits will be mirrored into the chat automatically.
Private and Public profile settings also affect one's experience joining a group:
If your profile is set to private, you'll be asked explicitly while joining a channel if you'd like to share your private profile to the group, making it visible to the group members:
A preview of your profile is listed under the checkbox, to ensure you're aware of what you'll be sharing.
If your profile is set to public, the same modal will grey out the already-toggled setting:
A small note ( again, cc @tacryt-socryp ) about MiniProfiles:
In line with our general approach to heavily simplify our first take on urbit identities, we're removing a lot of extra options from the interfaces:
Instead of a dedicated icon-button, clicking the ship's sigil/avatar now takes you to their profile. While viewing other people's profiles, you are only (for now) given the option to DM them.
As we expand the possibility of profiles/identities, we'll be sure to make these minimal interfaces more useful.
Front-end work starting now.
Relevant issue: https://github.com/urbit/urbit/pull/4264
@urcades to extend this issue with status-inclusive mocks after https://github.com/urbit/landscape/issues/120#issuecomment-763212383.
Updates for @tacryt-socryp
Apart from the change to their interfaces, these cards are also larger than previously presented, 250px square, for increased ability to set a meaningful status. Clicking the profile image takes you to the card owner's profile.
It's worth noting that in -all- cases a pilot's identity is surfaced in Landscape (in chat, in posts, in notebooks, in collections), they should be able to be clicked, and a MiniProfile should be able to be presented.
Here are two states of "Someone Else's Profile":
On the left, this pilot has not set a status, so no space is occupied on their profile to display one.
On the right, another pilot's status will appear as a full-width banner stacked on top of their header. Think of it as a banner you wave — a statement to immediately set the present context.
In each of these cases, this is how your profile will appear from other people's perspective.
On the other hand, if you are looking at your own profile, you'll see the following:
Note that this field is editable even though you have not entered "Editing Mode" for you profile!
This is a deliberate choice, to reduce the amount of friction in setting a status, which should be more accessible than not.
If you enter "Profile Edit Mode", this status interface will not change state — it's effectively always able to be edited.
@urcades Thoughts on making the sigil in the top-right corner a drop-down that has a "set status" button and a "view profile" button?
That's a rad idea, I'll sketch up something quick to get a sense of how this could work — a dumb version and a slightly more nifty version.
Okay, further updates @tacryt-socryp :
Note: This simplifies our existing 1.6 specification for our top bar — now we can simplify it even more, using the sigil as the container for navigating to System Preferences (you can always leap to it too):
Using new indigo dropdown and Alert components, we should be able to use the sigil to enter a dropdown which allows us to set the status from any Landscape context:
This additional interface now makes for three distinct interfaces you can set your status from:
The "Nifty Idea" I mentioned before would be to leverage Leap and create a new command called "Status..." or "Set Status..." which could be typed and autocompleted within Leap.
This would likely be a 1.7 update, given the updated Leap interfaces are roughly scheduled to be implemented at that time.
I've written the "profile view" and created the "edit state", but have yet to write the contents of the edit state yet. Attached is my current progress, showing an entirely empty profile.
It's lookin' good — very excited this is coming together
Current status: networking model work needs to be rewritten for group-federated pattern, UI needs detail attention — @matildepark to handle that as per meeting tomorrow.
@urcades how do we save / submit the form state? https://github.com/urbit/landscape/issues/120#issuecomment-760010913
Yo @tacryt-socryp , great question, will try to illustrate clearly here:
The shortest possible answer: While in "edit" mode, we should provide a very obvious bar-based interface that allows pilots to either implicitly discard their changes (using "Cancel") or save their profile edits (using "Update Profile").
This bar's z-index should effectively "float" over the content underneath, in case it is not clear – this keeps the ability to save or cancel/go back never hidden out-of-sight of the viewport.
Front-end still in progress.
Simplify contact-store to store a map of ship to contact instead of storing a map of group to map of ship of contact.
Includes statuses for profile cards (#56)