Track Live Log Photo Uploaded and centralize OWM Weather Fetched with
source props for live log and entry editor call sites.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use native camera picker on mobile, add preview-and-save step, and
harden canvas capture with toDataURL fallback when toBlob fails.
Co-authored-by: Cursor <cursoragent@cursor.com>
Generate scannable QR codes in settings next to collaboration links so crew can open invites on mobile without copying long URLs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Capture photos via getUserMedia in live log, share encrypted save logic with the editor, and disable weather fetch while other quick actions run.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fast-path today's entry creation, add init timeout, defer auto-position GPS, and migrate logbook keys when the server returns a different id.
Co-authored-by: Cursor <cursoragent@cursor.com>
Batch weather events in one persist cycle, avoid global busy state while loading, and add a 20s API timeout.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fetch OpenWeatherMap in live log when a GPS fix is under six hours old, open a fix modal with manual coordinates when geolocation fails, and only show the undo bar after a successful save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Harden live log init with safe per-entry decrypt, stable loading state, and no parallel list scan in live mode. Improve multi-sail picker UX, stop WebAuthn retry after user cancel, redirect 127.0.0.1 to localhost, and tolerate missing appearance prefs table.
Co-authored-by: Cursor <cursoragent@cursor.com>
Track Live Log Opened/Event Logged with action types, NMEA Uploaded on parse success, and align NMEA Imported properties with docs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Portal overlays to document.body and use opaque modal panels so fixed positioning works outside form-card and journal entries stay readable.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reuses CourseDialInput from the classic journal editor in the live modals, prefilled from the most recent wind or course values.
Co-authored-by: Cursor <cursoragent@cursor.com>
SOG prefills from GPS speed when available; STW is entered manually. Motor journal entries now read “Motor Start” / “Motor Stop”.
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds weather and course quick actions, diesel/water refills, five-second undo, foreground auto-position every three hours, and chronological pressure/wind/motor series in the stats tab.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduces a parallel Live view alongside the existing travel-day list so skippers can log motor, sail, and position events instantly without navigating the full editor.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enables importing .nmea logs into travel-day events with interval/change modes, optional GPS track, local encrypted archive, and a test fixture for the Kieler Förde route.
Co-authored-by: Cursor <cursoragent@cursor.com>
Integrate new locale bundles, language cycling in the UI, SEO hreflang tags, and localized beta flyer HTML variants with scripts for batch translation and key validation.
Co-authored-by: Cursor <cursoragent@cursor.com>
Beschriftungen entfernt, Buttons auf 36px verkleinert; aria-label und
title bleiben für Tooltip und Barrierefreiheit erhalten.
Co-authored-by: Cursor <cursoragent@cursor.com>
Hilft bei vielen Logbüchern: Suche nach Name/Jahr/Datum sowie Sortierung nach Name oder Datum in beide Richtungen.
Co-authored-by: Cursor <cursoragent@cursor.com>
Nach PWA-Cache-Löschung gingen Theme und Farbschema verloren, weil sie nur in localStorage lagen. Die Präferenzen werden jetzt synchronisiert und nach dem Login erneut angewendet.
Co-authored-by: Cursor <cursoragent@cursor.com>
Das Eingabefeld nutzt jetzt Passwort-Semantik und Autocomplete-Attribute, damit OS-Passwortmanager gespeicherte Schlüssel vorschlagen können.
Co-authored-by: Cursor <cursoragent@cursor.com>
Übernimmt den Grauwasser-Füllstand analog zu Frischwasser und Kraftstoff
beim Anlegen eines Reisetags und zeigt ihn im Übernahme-Dialog an.
Co-authored-by: Cursor <cursoragent@cursor.com>
Korrigiert fehlende useEffect-Dependencies beim Auto-Clamping und
deaktiviert Refill-Eingaben, wenn der Morgenstand die Tankkapazität erreicht.
Co-authored-by: Cursor <cursoragent@cursor.com>
Owner sieht einen Dialog zur Aktivierung von Crew-Push-Benachrichtigungen, sofern diese noch nicht aktiv sind.
Co-authored-by: Cursor <cursoragent@cursor.com>
Nachgefüllt ist auf Restkapazität nach Morgen begrenzt, Stand abends auf Morgen plus Nachgefüllt; Werte werden bei Änderungen automatisch gekürzt.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ergänzt No-Op-Stubs für setLogbookActive und setProfileOpen, damit der
Production-Build nach der Profil-Tour-Erweiterung wieder durchläuft.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bereinigt veraltete Demo-Referenzen, löst gültiges Logbuch und ersten Eintrag zur Laufzeit auf und scrollt den GPS-Track-Schritt automatisch ins Viewport.
Co-authored-by: Cursor <cursoragent@cursor.com>
Entfernt left+right-Stretching in CSS, positioniert das Tooltip horizontal
am Spotlight und misst Ziele nach Navigation mit verzögerten Retries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Profil-Schritte auf dem Dashboard und in den Einstellungen, entry_open
highlightet nur die Karte ohne Editor, Finish verweist auf Benutzerprofil.
Co-authored-by: Cursor <cursoragent@cursor.com>
Leeres Event-Formular (nur Uhrzeit) galt fälschlich als Änderung und
invalidierte frische Signaturen. Speichern-Button und Hash-Sperre folgen
nun echten Entwürfen und synchronisiertem Seiteninhalt.
Co-authored-by: Cursor <cursoragent@cursor.com>
useSyncIndicator gibt die Unsubscribe-Funktion von subscribeToSyncState
zurück. conn-status-Klassen berücksichtigen jetzt auch den aktiven
Sync-Lauf (syncing) statt nur die Queue-Länge.
Co-authored-by: Cursor <cursoragent@cursor.com>
Die Drehung hing an der Queue-Länge statt am laufenden Sync. Veraltete
Queue-Einträge werden nach Pull bereinigt; parallele syncAll-Läufe
werden im Sync-State korrekt gezählt.
Co-authored-by: Cursor <cursoragent@cursor.com>
Theme, Farbschema, OWM-Schlüssel, Push, PWA und App-Tour liegen nun im Profil mit pro-User-localStorage. Der Logbuch-Tab fokussiert Teilen, Backup und Crew.
Co-authored-by: Cursor <cursoragent@cursor.com>
Flex-Layout für Pills und Toggle wiederherstellen und den Einklapp-Zustand beim Leeren des Ereignisformulars zurücksetzen.
Co-authored-by: Cursor <cursoragent@cursor.com>
Die Segel-Pills nutzen die volle Formularbreite und wrappen kompakt, statt in der halben Grid-Spalte untereinander zu stapeln.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ersetzt den toten #help-Link durch einen Button, der dasselbe
Hinweise- und Haftungsausschluss-Modal wie in der App anzeigt.
Co-authored-by: Cursor <cursoragent@cursor.com>
Erzwingt Login wenn nur die HTTP-Session übrig ist, begrenzt SW-Reloads,
fängt Bootstrap-/Render-Fehler ab und stabilisiert den PWA-Kaltstart.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ergänzt fehlende i18n-Keys (Himmelsrichtungen, Platzhalter, Schrittweite) und zeigt Validierungsfehler im Kurs-Dial.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ersetzt Textfelder für MgK, rwK und Wind durch einen mobilen Kompass-Ring, normalisiert Kurswinkel beim Speichern und führt Vitest mit Regressionstests für html lang ein.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ersetzt natives type=time (AM/PM je nach System) durch Stunde/Minute-Auswahl, wandelt 12h-Werte beim Laden um und stellt html lang auf de/en zurück.
Co-authored-by: Cursor <cursoragent@cursor.com>
Neue Ereignisse starten mit der aktuellen Uhrzeit; Datums-/Zeitanzeigen und Zeit-Picker nutzen durchgängig das 24-Stunden-Format.
Co-authored-by: Cursor <cursoragent@cursor.com>
Aktions-Spalte im Flex-Layout statt absoluter Positionierung, mit responsivem Stacking auf schmalen Viewports.
Co-authored-by: Cursor <cursoragent@cursor.com>