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>
Add three feature bullets in all locales, reduce feature list font to 8.5pt for single-page layout, and regenerate PDF/PNG exports.
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>
Translate only visible body/title text, preserve HTML structure, and regenerate all flyer PDF/PNG exports.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extend generate-beta-flyer.mjs with --all/--lang support and add da, sv, nb assets alongside refreshed German exports.
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>
Erweitert den bestehenden Flyer-Generator um eine PNG-Ausgabe aus der HTML-Vorlage inklusive eigenem npm-Skript und erzeugter PNG-Datei für den direkten Einsatz.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stoppt den Bootstrap nach einem erfolgreichen Hard-Recovery sofort, damit vor dem asynchronen Reload kein React-Render mehr gestartet wird.
Co-authored-by: Cursor <cursoragent@cursor.com>
Verhindert Blank-Screens und Reload-Schleifen beim Wiederöffnen der PWA, indem Recovery nur bei bestätigter SW-Übernahme greift und Navigationen bevorzugt frisch aus dem Netzwerk geladen werden.
Co-authored-by: Cursor <cursoragent@cursor.com>
Die Sortiersteuerung nutzt auf schmalen Viewports eine horizontale Zeile mit gleichmäßig verteilten Touch-Zielen.
Co-authored-by: Cursor <cursoragent@cursor.com>
Suppression wird vor dem Flush geprüft, damit gepufferte
needRefresh-Werte erhalten bleiben, bis die Unterdrückung endet.
Co-authored-by: Cursor <cursoragent@cursor.com>
Frühe Service-Worker-Callbacks puffern den Refresh-Status; der Flush
erfolgt jetzt im useEffect statt in der Render-Phase.
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>
index.css auf App-Shell reduziert, App.css zentral in main.tsx geladen
und #root zentriert Dashboard/Logbuch-Ansichten nach dem Login.
Co-authored-by: Cursor <cursoragent@cursor.com>
Das periodische Intervall nutzt checkForUpdate() und respektiert damit
„Später“ wie Fokus- und Online-Checks.
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>
Stale-Recovery zählt nur aufeinanderfolgende Fehler und wird nach Hard Recovery zurückgesetzt; Update-Checks respektieren „Später“, und PWA-Refresh-State sowie Recovery-Timer werden zuverlässig gesetzt bzw. beim Unmount aufgeräumt.
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>
Service Worker übernimmt Updates zuverlässig (SKIP_WAITING, clientsClaim),
wartende Versionen werden beim Start angewendet und veraltete Chunks führen
nicht mehr zum Hängenbleiben.
Co-authored-by: Cursor <cursoragent@cursor.com>