Skip to content
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

Add user presence status #1504

Open
MrLuxuri opened this issue May 1, 2023 · 9 comments
Open

Add user presence status #1504

MrLuxuri opened this issue May 1, 2023 · 9 comments
Assignees

Comments

@MrLuxuri
Copy link

MrLuxuri commented May 1, 2023

Add the ability for users to be able to set a user profile presence, such as Online, Idle, Do not disturb or Invincible.

Screenshot from 2023-05-01 18 30 44

UPDATE: Proposed designs: https://www.figma.com/file/frxdNd42wV8kgXoiBExoqR/User-and-network-status?type=design&node-id=716-24413&mode=design&t=kwN714nqlQBAlCX9-4

@holmesworcester
Copy link
Contributor

One note on this is that it's very difficult for us to completely hide your online status from others. We can hide it in the UI, but a sophisticated or determined user would be able to figure it out from their network logs, or write some code to do it.

Perhaps we could say, for Invisible, "hide your online status (still visible to determined fellow members)"

What's the threshold for idle? Is it user-determined or based on UI interaction? Does browsing messages or switching channels change your status?

@MrLuxuri
Copy link
Author

One note on this is that it's very difficult for us to completely hide your online status from others. We can hide it in the UI, but a sophisticated or determined user would be able to figure it out from their network logs, or write some code to do it.
Perhaps we could say, for Invisible, "hide your online status (still visible to determined fellow members)"

I honestly don't think we have to completely hide online status, because this feature-request is mainly for the average user who wouldn't even know you can try to see through their network logs, so with most average users out there, this will not be an issue, and this feature-request is for such mass average users. I could change my presence to invinsible and be online, maybe some tech nerd might be able to figure out I am online, but most people will just see me as offline, same with other presence status like idle/away or DND.

What's the threshold for idle? Is it user-determined or based on UI interaction? Does browsing messages or switching channels change your status?

Great question, it's mostly user determined BUT there are some exceptions. It really depends on each type of presence, for example if I choose "online" and I am inactive for like over a threshold, then discord/guilded usually changes the presence automatically from "online" to "Idle/away (whatever name you choose here, but it's the yellow one). But if you look at the DND presence, that is almost 99% user-determined as far as I know, it means no notifications or disturbance and as soon as you put DND, it says like that for almost all the time until you change it back, it is often even used to help make yourself seem more active by leaving it on DnD all day all night and your account will stay like that, also often helpful for young growing servers, as they tend to use this presence to make the server look "alive" until more people join, so DnD as far as I know, is the most user-determined here. "invisible" is a dependent factor on "away/idle" and "online". For example if I am actively participating on the platform, and I put it on "online", it will change back after a certain threshold to "idle/away" when I go inactive BUT have not closed the app on my computer, when you close the app, the "idle" can change to "invisible", but if you are online and manually set it to "invisible", then it's mostly user-determined.

I tried to best explain here, sorry if I became repetitive or too unnecessarily long anywhere haha

@holmesworcester
Copy link
Contributor

holmesworcester commented May 12, 2023

I understand this! That's interesting about setting your status to DND to appear present rather than appearing idle. It's counter-intuitive but I can see how it works that way.

Googling this, it seems that Discord switches to "Idle" after 5 minutes of inactivity with the app open, where inactivity is based on the lack of mouse movements and keystrokes.

Since you might not be directly connected to a user and there's no server here, we would have to base activity on some kind of heartbeat ping that clients do automatically. What do you think about the following proposal?

  1. When we detect mouse movements or keystrokes the user status is set to "Active" with a green indicator, and the user begins sending a heartbeat ping every 5 minutes with status "Active". If you have received an "Active" ping within 5 minutes, that user's status is "Active", to you.
  2. After 5 minutes of inactivity, this status message switches to "Idle" but we still send it every 5 minutes. (We could also send it once an hour to get less message volume, but it will be easier to test if we send it every 5 minutes.) If the status message is "Idle", the user displays as "Idle".
  3. If others have not received a status message from you in the last 5 minutes, we assume you are now offline and the status switches from "Active" or "Idle" to "Inactive" ...unless it was set to "Do not disturb" inn which case it remains the same.
  4. The user can set their status to "do not disturb", which mutes all notifications and overrides their online/idle/inactive status.
  5. The user can set their status to "inactive", which overrides their online/idle/inactive status but does not mute notifications.

UPDATED to reflect naming choice of active/idle/inactive

On mobile, we would do the same as above, but "online" status is based on user activity in the app, not on mouse movements.

@MrLuxuri
Copy link
Author

@holmesworcester I think you got this! 5 minute ping is brilliant, I think that would work out well since we don't have servers (and why I love quiet, no servers!) so an in-built heartbeat 5 min ping would solve that.

@holmesworcester
Copy link
Contributor

"Hidden" should be described as "You will not appear online, though a user could detect this."

@holmesworcester
Copy link
Contributor

@holmesworcester
Copy link
Contributor

Update: we're saying "Inactive" instead of "Hidden" or "Invisible" since "Inactive" doesn't make any claim about how detectable your status is to others. It's just a way for you to say you're inactive.

@holmesworcester
Copy link
Contributor

Some of the feedback was to allow custom status too: #2326

@holmesworcester holmesworcester self-assigned this Jul 12, 2024
@holmesworcester holmesworcester moved this from Backlog - Desktop & Backend to Design In Progress in Quiet Dec 4, 2024
@holmesworcester holmesworcester moved this from Design In Progress to Design - Awaiting Internal Feedback in Quiet Dec 4, 2024
@holmesworcester holmesworcester moved this from Design - Awaiting Internal Feedback to Backlog - Desktop & Backend in Quiet Dec 16, 2024
@holmesworcester holmesworcester moved this from Backlog - Desktop & Backend to Design Finishing in Quiet Dec 16, 2024
@jgaylor
Copy link
Collaborator

jgaylor commented Dec 16, 2024

@holmesworcester

For good measure I'm adding links to the latest thinking for:

  1. Custom status (In this draft we left this open ended to revisit in design with one of these directions when the time comes: A, B, C or D)
  2. User and Network status (This one is a little older—from before we considered allowing custom status, and includes bits about Network status.)

This was in "Design Finishing" which doesn't make sense. Both of these specs should be reconciled when we prioritize building this, but currently they are on hold with decisions to make.

@jgaylor jgaylor moved this from Design Finishing to Design - Awaiting Internal Feedback in Quiet Dec 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Design - Awaiting Internal Feedback
Development

No branches or pull requests

3 participants