feat: Discord-style presence status selector

Adds a manual presence picker to the sidebar user avatar. Clicking the
avatar opens a popout menu with Online, Idle, Do Not Disturb, Invisible,
and Auto (activity-based) options. The selected status is shown as a
colored badge on the avatar and stored in settings (survives reloads).

usePresenceUpdater now short-circuits for manual states and only runs
the full activity-tracking logic in Auto mode.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-30 23:29:29 -04:00
parent 582839fddb
commit bd8e116cf3
3 changed files with 191 additions and 31 deletions
+2
View File
@@ -45,6 +45,7 @@ export interface Settings {
pageZoom: number;
hideActivity: boolean;
hidePresence: boolean;
presenceStatus: 'auto' | 'online' | 'idle' | 'dnd' | 'invisible';
isPeopleDrawer: boolean;
memberSortFilterIndex: number;
@@ -89,6 +90,7 @@ const defaultSettings: Settings = {
pageZoom: 100,
hideActivity: false,
hidePresence: false,
presenceStatus: 'auto',
isPeopleDrawer: true,
memberSortFilterIndex: 0,