feat: full Discord-style presence tracking

- Announce online immediately on app startup
- Idle detection: unavailable after 10 min of no input, online on return
- Tab visibility: unavailable when hidden, online when focused again
- Page close: offline via fetch+keepalive (survives unload without bfcache penalty)
- hidePresence setting: broadcasts offline and stops all tracking
- Added 'Hide Online Status' toggle in General settings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 19:28:52 -04:00
parent eb283c29ff
commit 08b1a5c2a3
4 changed files with 115 additions and 0 deletions
+2
View File
@@ -44,6 +44,7 @@ export interface Settings {
twitterEmoji: boolean;
pageZoom: number;
hideActivity: boolean;
hidePresence: boolean;
isPeopleDrawer: boolean;
memberSortFilterIndex: number;
@@ -87,6 +88,7 @@ const defaultSettings: Settings = {
twitterEmoji: false,
pageZoom: 100,
hideActivity: false,
hidePresence: false,
isPeopleDrawer: true,
memberSortFilterIndex: 0,