Currently Moho always remains in the mode dictated by the user plaque, Online, Idle, DND, Invisible. Moho should follow the standard set by Discord and classic IRC programs and detect activity on the device itself and update presence accordingly from Online to Idle. This will require studying how Discord does this as we do not want to engage in invasive forms of detection.
This should not overwrite what the user actively sets, if they set invisible, DND or Idle it should be respected until they return the status back to 'Online.'
Currently Moho always remains in the mode dictated by the user plaque, Online, Idle, DND, Invisible. Moho should follow the standard set by Discord and classic IRC programs and detect activity on the device itself and update presence accordingly from Online to Idle. This will require studying how Discord does this as we do not want to engage in invasive forms of detection.
This should not overwrite what the user actively sets, if they set invisible, DND or Idle it should be respected until they return the status back to 'Online.'
Salastil
added this to the v1.0 milestone 2026-10-09 11:01:28 -04:00
moho now goes idle when you step away, and comes back on its own.
How Discord does it, and what this copies. Discord's own client works from one fact: how long since the keyboard or mouse was used (10 minutes by default). It does not look at what is on screen, what was typed, or which program is in front. It marks the session idle with the gateway's afk flag, does that on the session alone (it does not rewrite the saved account status that every other device starts from), and does not go idle while you are in a call. This does the same and nothing more.
Only an online account is moved. If you set Idle, Do not disturb or Invisible, it stays exactly there until you set Online again. Coming back from being away puts an account right only if moho was the one that moved it.
Where it applies: Discord and IRC (the services that have an idle). Matrix, Kick and Sneedchat are not touched, as with the tray's Idle.
Not in a call. An account in a voice call is not idled.
Locking the screen or suspending counts as away at once; unlocking or resuming as back.
The plaque says "Idle (away)" for an automatic idle, and the status popout keeps what you chose (Online) ticked.
Settings > General > Presence: a switch, and 5, 10, 15, 30 or 60 minutes.
Where the idle time comes from. From the system where the platform will say (Windows, macOS, X11). Some Wayland desktops give Chromium no idle time at all and report zero for ever, which looks like somebody who never stops typing; I checked this on this machine (Hyprland), and it does read zero throughout. So the system's figure is only believed once it has been seen to be anything but zero, and until then moho goes by use of its own windows. The consequence on such a desktop: if you are busy in another program with moho in the background, moho counts that as away after the threshold. The setting's description says so.
Checked: unit tests for the policy (clock, threshold, locking, the zero that never changes) and for the daemon rule (only online, only where there is an idle, not in a call). npm run test:tray now also drives the real app and daemon against a fake IRC server: stepping away turns an online account idle and IRC receives AWAY :Idle, coming back sends AWAY, and Do not disturb, a chosen Idle, are all left alone through both. Moving the pointer in a window is heard by main. I have not left a real Discord account idle for ten minutes; that part rests on the above and on the same op 3 presence message the tray's status already uses.
Finished: [23c87dd](https://git.salastil.com/Salastil/moho/commit/23c87dd3530756e1a834dabf889f648f1820bff8).

moho now goes idle when you step away, and comes back on its own.
**How Discord does it, and what this copies.** Discord's own client works from one fact: how long since the keyboard or mouse was used (10 minutes by default). It does not look at what is on screen, what was typed, or which program is in front. It marks the session idle with the gateway's `afk` flag, does that on the session alone (it does not rewrite the saved account status that every other device starts from), and does not go idle while you are in a call. This does the same and nothing more.
- **Only an online account is moved.** If you set Idle, Do not disturb or Invisible, it stays exactly there until you set Online again. Coming back from being away puts an account right only if moho was the one that moved it.
- **Where it applies:** Discord and IRC (the services that have an idle). Matrix, Kick and Sneedchat are not touched, as with the tray's Idle.
- **Not in a call.** An account in a voice call is not idled.
- **Locking the screen or suspending** counts as away at once; unlocking or resuming as back.
- **The plaque** says "Idle (away)" for an automatic idle, and the status popout keeps what you chose (Online) ticked.
- **Settings > General > Presence:** a switch, and 5, 10, 15, 30 or 60 minutes.
**Where the idle time comes from.** From the system where the platform will say (Windows, macOS, X11). Some Wayland desktops give Chromium no idle time at all and report zero for ever, which looks like somebody who never stops typing; I checked this on this machine (Hyprland), and it does read zero throughout. So the system's figure is only believed once it has been seen to be anything but zero, and until then moho goes by use of its own windows. The consequence on such a desktop: if you are busy in another program with moho in the background, moho counts that as away after the threshold. The setting's description says so.
**Checked:** unit tests for the policy (clock, threshold, locking, the zero that never changes) and for the daemon rule (only online, only where there is an idle, not in a call). `npm run test:tray` now also drives the real app and daemon against a fake IRC server: stepping away turns an online account idle and IRC receives `AWAY :Idle`, coming back sends `AWAY`, and Do not disturb, a chosen Idle, are all left alone through both. Moving the pointer in a window is heard by main. I have not left a real Discord account idle for ten minutes; that part rests on the above and on the same `op 3` presence message the tray's status already uses.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Currently Moho always remains in the mode dictated by the user plaque, Online, Idle, DND, Invisible. Moho should follow the standard set by Discord and classic IRC programs and detect activity on the device itself and update presence accordingly from Online to Idle. This will require studying how Discord does this as we do not want to engage in invasive forms of detection.
This should not overwrite what the user actively sets, if they set invisible, DND or Idle it should be respected until they return the status back to 'Online.'
Finished: 23c87dd.
moho now goes idle when you step away, and comes back on its own.
How Discord does it, and what this copies. Discord's own client works from one fact: how long since the keyboard or mouse was used (10 minutes by default). It does not look at what is on screen, what was typed, or which program is in front. It marks the session idle with the gateway's
afkflag, does that on the session alone (it does not rewrite the saved account status that every other device starts from), and does not go idle while you are in a call. This does the same and nothing more.Where the idle time comes from. From the system where the platform will say (Windows, macOS, X11). Some Wayland desktops give Chromium no idle time at all and report zero for ever, which looks like somebody who never stops typing; I checked this on this machine (Hyprland), and it does read zero throughout. So the system's figure is only believed once it has been seen to be anything but zero, and until then moho goes by use of its own windows. The consequence on such a desktop: if you are busy in another program with moho in the background, moho counts that as away after the threshold. The setting's description says so.
Checked: unit tests for the policy (clock, threshold, locking, the zero that never changes) and for the daemon rule (only online, only where there is an idle, not in a call).
npm run test:traynow also drives the real app and daemon against a fake IRC server: stepping away turns an online account idle and IRC receivesAWAY :Idle, coming back sendsAWAY, and Do not disturb, a chosen Idle, are all left alone through both. Moving the pointer in a window is heard by main. I have not left a real Discord account idle for ten minutes; that part rests on the above and on the sameop 3presence message the tray's status already uses.