From fdd6e3806593319427186c894955588919b6b7af Mon Sep 17 00:00:00 2001 From: Sandro Date: Sat, 31 Oct 2026 19:17:51 +0100 Subject: [PATCH] feat(ui): connection status in the header; README screenshots as WebP - Desktop shows "offline" with a red dot under the user name when the server is unreachable; phones show a green/red dot on the avatar. Based on the app-wide realtime connection, so a server outage is noticed even while the device has network (4 s grace period). - Screenshots converted to WebP (1280 px desktop, 480 px phone, q90), e2e/screenshots.sh converts with cwebp; new journal picture with round corners. Rules in AGENTS.md. - Release v0.26.0. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 6 ++ CHANGELOG.md | 11 ++- Doku/architecture.md | 1 + README.md | 24 +++---- e2e/README.md | 2 +- e2e/screenshots.mjs | 3 + e2e/screenshots.sh | 13 +++- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- frontend/src/App.tsx | 30 +++++++- .../lib/__tests__/useServerOnline.test.tsx | 66 ++++++++++++++++++ frontend/src/lib/useServerOnline.ts | 45 ++++++++++++ screenshots/Listen_desktop.png | Bin 218477 -> 0 bytes screenshots/Listen_desktop.webp | Bin 0 -> 32848 bytes screenshots/Mobile_Triage.png | Bin 123618 -> 0 bytes screenshots/Mobile_Triage.webp | Bin 0 -> 38104 bytes screenshots/Mobile_Workspace.png | Bin 170138 -> 0 bytes screenshots/Mobile_Workspace.webp | Bin 0 -> 47604 bytes screenshots/Theme_fjord.png | Bin 236522 -> 0 bytes screenshots/Theme_fjord.webp | Bin 0 -> 53002 bytes screenshots/Theme_polarized.png | Bin 219054 -> 0 bytes screenshots/Theme_polarized.webp | Bin 0 -> 51482 bytes screenshots/Theme_suri.png | Bin 232963 -> 0 bytes screenshots/Theme_suri.webp | Bin 0 -> 52072 bytes screenshots/Theme_terracotta.png | Bin 237286 -> 0 bytes screenshots/Theme_terracotta.webp | Bin 0 -> 53008 bytes screenshots/Triage_desktop.png | Bin 463304 -> 0 bytes screenshots/Triage_desktop.webp | Bin 0 -> 43042 bytes screenshots/aufgaben_desktop.png | Bin 284801 -> 0 bytes screenshots/aufgaben_desktop.webp | Bin 0 -> 47508 bytes screenshots/journal_desktop.png | Bin 272396 -> 0 bytes screenshots/journal_desktop.webp | Bin 0 -> 42304 bytes screenshots/workspace_desktop.png | Bin 300846 -> 0 bytes screenshots/workspace_desktop.webp | Bin 0 -> 59680 bytes 34 files changed, 186 insertions(+), 21 deletions(-) create mode 100644 frontend/src/lib/__tests__/useServerOnline.test.tsx create mode 100644 frontend/src/lib/useServerOnline.ts delete mode 100644 screenshots/Listen_desktop.png create mode 100644 screenshots/Listen_desktop.webp delete mode 100644 screenshots/Mobile_Triage.png create mode 100644 screenshots/Mobile_Triage.webp delete mode 100644 screenshots/Mobile_Workspace.png create mode 100644 screenshots/Mobile_Workspace.webp delete mode 100644 screenshots/Theme_fjord.png create mode 100644 screenshots/Theme_fjord.webp delete mode 100644 screenshots/Theme_polarized.png create mode 100644 screenshots/Theme_polarized.webp delete mode 100644 screenshots/Theme_suri.png create mode 100644 screenshots/Theme_suri.webp delete mode 100644 screenshots/Theme_terracotta.png create mode 100644 screenshots/Theme_terracotta.webp delete mode 100644 screenshots/Triage_desktop.png create mode 100644 screenshots/Triage_desktop.webp delete mode 100644 screenshots/aufgaben_desktop.png create mode 100644 screenshots/aufgaben_desktop.webp delete mode 100644 screenshots/journal_desktop.png create mode 100644 screenshots/journal_desktop.webp delete mode 100644 screenshots/workspace_desktop.png create mode 100644 screenshots/workspace_desktop.webp diff --git a/AGENTS.md b/AGENTS.md index b007ef6..50e43c3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -38,6 +38,12 @@ Die Linter-Warnungen `react-hooks/exhaustive-deps` gibt es schon länger; neuer ``` - **Zeitabhängiger Code** (Alarme, Tageszusammenfassung, Begrüßungen, Termine): nie `time.Now()` dort, wo eine übergebene Zeit gemeint ist. Die betroffenen Go-Tests zusätzlich mit verschiedenen `TZ`-Werten laufen lassen (z. B. `Europe/Berlin`, `America/Los_Angeles`, `Asia/Tokyo`). Ein uhrzeitabhängiger Test hat schon einmal einen Release verhindert, weil er nur vormittags grün war. +## Screenshots + +- Bilder in `screenshots/` (README) sind **WebP**, keine PNG: Desktop und Theme-Raster 1280 px breit, Handy 480 px, Qualität 90. Das bringt rund ein Fünftel der PNG-Größe bei sauberer Schrift. +- Erzeugt werden sie mit `e2e/screenshots.sh`; das Skript nimmt PNGs auf und wandelt sie am Ende mit `cwebp` (Alpine-Container) um. Einzelne Bilder neu aufnehmen: denselben Ablauf aus `screenshots.mjs` verwenden und mit dem Umwandlungsschritt aus `screenshots.sh` konvertieren. +- Chromiums eigenes WebP (`canvas.toDataURL('image/webp')`) nicht verwenden: verlustfrei wird es größer als die PNG. + ## Release-Ablauf **Committen** ist jederzeit erlaubt. **Jeder Push ist ein Release**, also mit Version und CHANGELOG-Eintrag. diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d9c55f..7220df3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V ## [Unreleased] +## [0.26.0] - 2026-10-31 + +### Added +- Verbindungsstatus im Kopf: Ist der Server nicht erreichbar, steht am Desktop unter deinem Namen klein „● offline“ mit rotem Punkt; die Seite bleibt bedienbar. Am Handy zeigt ein kleiner Punkt unten rechts am Profilbild den Status (grün online, rot offline). Das funktioniert auch, wenn nur der Server ausgefallen ist und das Gerät selbst noch Netz hat – bisher war das nur in den Listen zu sehen. + +### Changed +- Screenshots im README sind jetzt kleinere WebP-Bilder (zusammen etwa 0,5 statt 2,7 MB); das Journal-Bild zeigt die aktuelle Ansicht. + ## [0.25.1] - 2026-10-31 ### Fixed @@ -519,7 +527,8 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V - Geteilte Listen (Einkaufs-, Pack- und Checklisten) mit `#Kategorie`-Gruppierung, Mengenangaben und Echtzeit-Abhaken. - Benutzer-, Gruppen- und Admin-Verwaltung (Ersteinrichtungs-Assistent, Einladungscodes, Profilbilder, persönliche API-Keys & Webhook-Ingest `/api/v1/webhooks/ingest`, JSON-Datenexport) sowie CSS-Theme-Engine mit 4 Themes (`Dark`, `Light`, `High Contrast`, `Soft`) und PWA-Unterstützung. -[Unreleased]: https://git.dsit.me/sandrodach/MindSift/compare/v0.25.1...dev +[Unreleased]: https://git.dsit.me/sandrodach/MindSift/compare/v0.26.0...dev +[0.26.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.25.1...v0.26.0 [0.25.1]: https://git.dsit.me/sandrodach/MindSift/compare/v0.25.0...v0.25.1 [0.25.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.24.2...v0.25.0 [0.24.2]: https://git.dsit.me/sandrodach/MindSift/compare/v0.24.1...v0.24.2 diff --git a/Doku/architecture.md b/Doku/architecture.md index 49d1c6a..854d3c3 100644 --- a/Doku/architecture.md +++ b/Doku/architecture.md @@ -162,6 +162,7 @@ Die Tests laufen beim Image-Build (Frontend: `npm run test:run`, Backend: `go te - **Lese-Cache** ([lib/offline.ts](../frontend/src/lib/offline.ts)): Jede erfolgreiche GET-Antwort landet pro Benutzer in IndexedDB (`mindsift-offline`). Ohne Verbindung liefert `request()` die letzte bekannte Antwort; so startet die App offline angemeldet und zeigt Gedanken, Aufgaben und Listen. Ausgenommen: Streams, Long-Polling, Notiz-Sync (eigener Speicher, [modules/collaboration.md](modules/collaboration.md)), Export, Suche. Abmelden leert Cache und Warteschlange. - **Warteschlange (Outbox):** Offline erfasste Gedanken (`POST /inbox`) und abgehakte Aufgaben bzw. Listeneinträge (`PATCH`) werden in `localStorage` gesammelt, wiederholtes Umschalten zählt nur mit dem Endstand. Gesendet wird in Reihenfolge beim `online`-Ereignis, beim Start und alle 30 s, solange etwas wartet; vom Server abgelehnte Einträge (4xx) entfallen. Andere Änderungen brauchen weiterhin eine Verbindung. - **Hinweis:** Ein Banner über der unteren Navigation zeigt „Offline“ und die Zahl wartender Änderungen bzw. „Synchronisiere…“. +- **Verbindungsstatus im Kopf** ([lib/useServerOnline.ts](../frontend/src/lib/useServerOnline.ts)): Maßgeblich ist die app-weite Echtzeit-Verbindung (WebSocket/SSE), nicht `navigator.onLine`; so fällt auch ein ausgefallener Server auf. Offline gilt erst nach 4 s ohne Verbindung (Start, kurze Reconnects), ohne Gerätenetz sofort. Desktop: „● offline“ unter dem Namen, nur ohne Verbindung; Handy: Punkt am Profilbild, grün oder rot. ## App-Icons, PWA & Social-Preview (Open Graph) diff --git a/README.md b/README.md index 37f3f4f..8398b63 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,12 @@ [![Self-Hosted](https://img.shields.io/badge/100%25-Self--Hosted-2563eb?style=flat-square)](#) [![Docker](https://img.shields.io/badge/Deployment-Single%20Container-2496ed?style=flat-square&logo=docker&logoColor=white)](#-schnellstart) [![SQLite](https://img.shields.io/badge/Daten-SQLite-003b57?style=flat-square&logo=sqlite&logoColor=white)](#-deine-daten-gehören-dir) -[![Version](https://img.shields.io/badge/Version-v0.25.1-16a34a?style=flat-square)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/Version-v0.26.0-16a34a?style=flat-square)](CHANGELOG.md) **MindSift** ist eine selbst gehostete Schaltstelle für spontane Gedanken, Aufgaben mit Kanban-Board, hierarchische Outliner-Notizen, die mehrere Personen gleichzeitig bearbeiten können, und gemeinsame Listen. Alles läuft als ein einzelner Container mit eingebetteter SQLite-Datenbank, auf deinem eigenen Server.

- MindSift Triage am Desktop, links hell, rechts dunkel + MindSift Triage am Desktop, links hell, rechts dunkel

Links das helle, rechts das dunkle Theme. @@ -43,9 +43,9 @@ Die meisten Notiz- und Aufgaben-Apps verlangen Struktur im falschen Moment: Wenn * Papierkorb mit Wiederherstellen.

- MindSift Triage am Smartphone, helles Theme + MindSift Triage am Smartphone, helles Theme    - MindSift Notiz am Smartphone, dunkles Theme + MindSift Notiz am Smartphone, dunkles Theme

### ✅ Aufgaben & Kanban @@ -61,7 +61,7 @@ Die meisten Notiz- und Aufgaben-Apps verlangen Struktur im falschen Moment: Wenn * **Alarme & Benachrichtigungen:** Fälligkeits-Alarme sofort, alle übrigen Ereignisse (Freigaben, erledigte geteilte Aufgaben, beobachtete Aufgaben) gebündelt; pro Ereignis wählbar über E-Mail, Discord, eigenen Webhook und Push.

- MindSift Aufgaben und Kanban-Board + MindSift Aufgaben und Kanban-Board

### 📝 Workspace: Outliner-Notizen @@ -88,11 +88,11 @@ Die meisten Notiz- und Aufgaben-Apps verlangen Struktur im falschen Moment: Wenn Technik dahinter: [Doku/modules/collaboration.md](Doku/modules/collaboration.md).

- MindSift Workspace: zwei Personen in derselben Notiz + MindSift Workspace: zwei Personen in derselben Notiz

- MindSift Journal mit Kalender + MindSift Journal mit Kalender

### 🛒 Geteilte Listen @@ -101,7 +101,7 @@ Technik dahinter: [Doku/modules/collaboration.md](Doku/modules/collaboration.md) * Freigabe an Benutzer und Gruppen (Bearbeiter oder Leser); abgehakte Einträge erscheinen bei allen in Echtzeit.

- MindSift Geteilte Listen + MindSift Geteilte Listen

### 🏢 Benutzer, Gruppen, Administration @@ -117,12 +117,12 @@ Technik dahinter: [Doku/modules/collaboration.md](Doku/modules/collaboration.md) - - + + - - + +
Farbfamilie Fjord, links hell, rechts dunkel
Fjord
Farbfamilie Terrakotta, links hell, rechts dunkel
Terrakotta
Farbfamilie Fjord, links hell, rechts dunkel
Fjord
Farbfamilie Terrakotta, links hell, rechts dunkel
Terrakotta
Farbfamilie Polarized, links hell, rechts dunkel
Polarized
Farbfamilie Suri, links hell, rechts dunkel
Suri
Farbfamilie Polarized, links hell, rechts dunkel
Polarized
Farbfamilie Suri, links hell, rechts dunkel
Suri
diff --git a/e2e/README.md b/e2e/README.md index 28a892f..1571c4a 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -40,4 +40,4 @@ Der Eigentümer tippt mit normaler Verbindung, der Bearbeiter sitzt hinter einem ## Screenshots -`e2e/screenshots.sh` baut das Image, startet es im Demo-Modus mit frischer Datenbank und erzeugt die Bilder in `screenshots/` neu (`screenshots.mjs`). Für die Versionsangabe im Kopf: `APP_VERSION=v0.2 e2e/screenshots.sh`. In der Workspace-Aufnahme bearbeitet der Demo-Benutzer `user` gleichzeitig einen Bullet, damit Sperre und Präsenz zu sehen sind. +`e2e/screenshots.sh` baut das Image, startet es im Demo-Modus mit frischer Datenbank und erzeugt die Bilder in `screenshots/` neu (`screenshots.mjs`). Danach werden sie verkleinert (Desktop 1280 px, Handy 480 px breit) und als WebP mit Qualität 90 gespeichert (`cwebp` in einem Alpine-Container). Für die Versionsangabe im Kopf: `APP_VERSION=v0.2 e2e/screenshots.sh`. In der Workspace-Aufnahme bearbeitet der Demo-Benutzer `user` gleichzeitig einen Bullet, damit Sperre und Präsenz zu sehen sind. diff --git a/e2e/screenshots.mjs b/e2e/screenshots.mjs index aa9c590..bd00eb0 100644 --- a/e2e/screenshots.mjs +++ b/e2e/screenshots.mjs @@ -196,7 +196,10 @@ const main = async () => { await page.getByRole('button', { name: 'Heute' }).click().catch(() => {}); await page.mouse.click(1000, 860); await sleep(2500); + // Round corners (setting "Ecken: rund") for this picture only + await page.evaluate(() => document.documentElement.setAttribute('data-corners', 'round')); await plain(page, 'journal_desktop.png', 'dark'); + await page.evaluate(() => document.documentElement.removeAttribute('data-corners')); await page.getByRole('button', { name: 'Journal', exact: true }).click(); // close it again await tab(page, 'Listen'); diff --git a/e2e/screenshots.sh b/e2e/screenshots.sh index 0818b7f..2b5da39 100755 --- a/e2e/screenshots.sh +++ b/e2e/screenshots.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # Builds MindSift, starts it in demo mode with a fresh database and renews the README screenshots # in screenshots/ (title picture and colour-family grid: light and dark joined along a diagonal). +# The PNGs from the browser are scaled down (desktop 1280 px, phone 480 px wide) and saved as WebP. # Requires podman (or docker via ENGINE=docker). Usage: e2e/screenshots.sh, other theme pair: SHOT_LIGHT=fjord SHOT_DARK=fjord-night set -euo pipefail ENGINE="${ENGINE:-podman}" @@ -21,6 +22,7 @@ cleanup() { rm -rf "$WORK" } trap cleanup EXIT +mkdir -p "$WORK/png" echo "Baue Image …" # Version in the header, e.g. APP_VERSION=v0.2 e2e/screenshots.sh @@ -32,5 +34,14 @@ for _ in $(seq 1 60); do curl -s -m 1 "http://localhost:$PORT/api/v1/health" >/d echo "Erstelle Screenshots …" "$ENGINE" run --rm --network host -e MINDSIFT_URL="http://localhost:$PORT" -e SHOTS_DIR=/shots \ -e SHOT_LIGHT="${SHOT_LIGHT:-light}" -e SHOT_DARK="${SHOT_DARK:-dark}" -e LANG=de_DE.UTF-8 -e TZ=Europe/Berlin \ - -v "$ROOT/e2e":/e2e:Z -v "$ROOT/screenshots":/shots:Z -w /e2e mcr.microsoft.com/playwright:v1.48.2-jammy \ + -v "$ROOT/e2e":/e2e:Z -v "$WORK/png":/shots:Z -w /e2e mcr.microsoft.com/playwright:v1.48.2-jammy \ sh -c 'npm install --no-audit --no-fund >/dev/null 2>&1 && node screenshots.mjs' + +echo "Wandle in WebP um …" +"$ENGINE" run --rm -v "$WORK/png":/png:Z -v "$ROOT/screenshots":/shots:Z docker.io/library/alpine:3.20 sh -c ' + apk add -q libwebp-tools >/dev/null + for f in /png/*.png; do + name=$(basename "$f" .png) + case "$name" in Mobile_*) width=480 ;; *) width=1280 ;; esac + cwebp -quiet -resize "$width" 0 -q 90 -m 6 -metadata none "$f" -o "/shots/$name.webp" + done' diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6069a46..c238685 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "mindsift-frontend", - "version": "0.25.1", + "version": "0.26.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mindsift-frontend", - "version": "0.25.1", + "version": "0.26.0", "license": "Unlicense", "dependencies": { "@fontsource-variable/inter": "5.3.0", diff --git a/frontend/package.json b/frontend/package.json index c4df013..68cfb16 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "mindsift-frontend", "private": true, - "version": "0.25.1", + "version": "0.26.0", "license": "Unlicense", "type": "module", "scripts": { diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 358a61c..6112909 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -56,6 +56,7 @@ import { WorkspaceView } from './features/workspace/WorkspaceView'; import { SharedListsView } from './features/lists/SharedListsView'; import { SetupAndAuthView } from './features/auth/SetupAndAuthView'; import { OfflineBanner } from './components/OfflineBanner'; +import { useServerOnline } from './lib/useServerOnline'; import { SharedImportToast } from './components/SharedImportToast'; import { outboxCount, clearOfflineData } from './lib/offline'; import { DemoCountdown } from './components/DemoCountdown'; @@ -179,6 +180,7 @@ export const App: React.FC = () => { // Profile Dropdown State const [showProfileMenu, setShowProfileMenu] = useState(false); + const serverOnline = useServerOnline(); const [showAbout, setShowAbout] = useState(false); const dropdownRef = useRef(null); @@ -947,7 +949,17 @@ export const App: React.FC = () => { }`} title="Profil & Einstellungen" > - + + + {/* Connection status like in a chat app: green online, red without server */} + + @@ -1013,8 +1025,20 @@ export const App: React.FC = () => { title="Benutzermenü öffnen" > - - {user.displayName} + + + {user.displayName} + + {!serverOnline && ( + + + offline + + )} diff --git a/frontend/src/lib/__tests__/useServerOnline.test.tsx b/frontend/src/lib/__tests__/useServerOnline.test.tsx new file mode 100644 index 0000000..87764f8 --- /dev/null +++ b/frontend/src/lib/__tests__/useServerOnline.test.tsx @@ -0,0 +1,66 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { act, renderHook } from '@testing-library/react'; + +let statusListener: ((connected: boolean) => void) | null = null; +let currentConnected = false; +vi.mock('../api', () => ({ + onRealtimeStatus: (cb: (connected: boolean) => void) => { + statusListener = cb; + cb(currentConnected); + return () => (statusListener = null); + }, +})); + +import { useServerOnline, SERVER_OFFLINE_GRACE_MS } from '../useServerOnline'; + +function setDeviceOnline(value: boolean) { + Object.defineProperty(navigator, 'onLine', { value, configurable: true }); +} + +describe('useServerOnline', () => { + beforeEach(() => { + vi.useFakeTimers(); + currentConnected = false; + setDeviceOnline(true); + }); + afterEach(() => vi.useRealTimers()); + + it('stays online during the grace period at app start', () => { + const { result } = renderHook(() => useServerOnline()); + expect(result.current).toBe(true); + act(() => statusListener?.(true)); + act(() => vi.advanceTimersByTime(SERVER_OFFLINE_GRACE_MS + 100)); + expect(result.current).toBe(true); + }); + + it('turns offline once the server stays unreachable and back online on reconnect', () => { + currentConnected = true; + const { result } = renderHook(() => useServerOnline()); + act(() => statusListener?.(false)); + expect(result.current).toBe(true); + act(() => vi.advanceTimersByTime(SERVER_OFFLINE_GRACE_MS + 100)); + expect(result.current).toBe(false); + act(() => statusListener?.(true)); + expect(result.current).toBe(true); + }); + + it('repeated failed reconnects do not postpone the offline state', () => { + currentConnected = true; + const { result } = renderHook(() => useServerOnline()); + for (let i = 0; i < 4; i++) { + act(() => statusListener?.(false)); + act(() => vi.advanceTimersByTime(SERVER_OFFLINE_GRACE_MS / 2)); + } + expect(result.current).toBe(false); + }); + + it('is offline right away without device network', () => { + currentConnected = true; + const { result } = renderHook(() => useServerOnline()); + act(() => { + setDeviceOnline(false); + statusListener?.(false); + }); + expect(result.current).toBe(false); + }); +}); diff --git a/frontend/src/lib/useServerOnline.ts b/frontend/src/lib/useServerOnline.ts new file mode 100644 index 0000000..16d710b --- /dev/null +++ b/frontend/src/lib/useServerOnline.ts @@ -0,0 +1,45 @@ +import { useEffect, useState } from 'react'; +import { onRealtimeStatus } from './api'; + +// Grace period before a missing realtime connection counts as offline (app start, short reconnects) +export const SERVER_OFFLINE_GRACE_MS = 4000; + +// Whether the server is reachable, judged by the app-wide realtime connection (WebSocket/SSE). Unlike +// navigator.onLine it also notices a server that is down while the device still has network. Without +// device network it is offline right away; otherwise only after the connection stayed away for a moment. +export function useServerOnline(): boolean { + const [online, setOnline] = useState(true); + + useEffect(() => { + let connected = false; + let timer: number | undefined; + // Reconnect attempts report "not connected" every few seconds; they must not restart the grace period + const update = () => { + if (connected) { + window.clearTimeout(timer); + timer = undefined; + setOnline(true); + } else if (navigator.onLine === false) { + window.clearTimeout(timer); + timer = undefined; + setOnline(false); + } else if (timer === undefined) { + timer = window.setTimeout(() => setOnline(false), SERVER_OFFLINE_GRACE_MS); + } + }; + const unsubscribe = onRealtimeStatus((isConnected) => { + connected = isConnected; + update(); + }); + window.addEventListener('online', update); + window.addEventListener('offline', update); + return () => { + unsubscribe(); + window.clearTimeout(timer); + window.removeEventListener('online', update); + window.removeEventListener('offline', update); + }; + }, []); + + return online; +} diff --git a/screenshots/Listen_desktop.png b/screenshots/Listen_desktop.png deleted file mode 100644 index a710cf9493387806c46f20dbdcd2b6f190b05d8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218477 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
    QFWbyTFfZII;Jc5F3io3UFw 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 z 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