Updated various components to utilize parseAppDecimal and formatAppDecimal for consistent decimal parsing and formatting. This change enhances the handling of numeric inputs across the application, ensuring better accuracy and user experience in forms and displays.
Der tote Ternär lieferte in beiden Zweigen dieselbe Rundung; ab 100 m
wird jetzt auf 10 m gerundet, damit schwache Fixes nicht falsch präzise wirken.
Co-authored-by: Cursor <cursoragent@cursor.com>
Nutzer sehen spezifische Meldungen bei GPS-Problemen, eine Schätzung des
Empfangs aus der Browser-Genauigkeit und beim ersten Live-Log-Besuch nur
dann einen Freigabe-Hinweis, wenn die Standortberechtigung noch offen ist.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prüft videoinput-Geräte beim Öffnen des Foto-Modals und zeigt eine
klare Meldung statt leerem Kamera-UI; getUserMedia-Fehler differenziert.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stellt sicher, dass signSkipper und signCrew gemeinsam für den
Punktewert bei der Auswahl des Tageseintrags ausgewertet werden.
Co-authored-by: Cursor <cursoragent@cursor.com>
Live-journal uploads are tracked only via Photo Uploaded and Voice Memo Uploaded with context live_log.
Co-authored-by: Cursor <cursoragent@cursor.com>
Let users support project development and running costs via ko-fi.com/kapteinsdaagbok, with i18n tooltips and Plausible tracking.
Co-authored-by: Cursor <cursoragent@cursor.com>
The download button stays inactive until both fields agree and meet
the minimum length, so users cannot start export with a mismatch.
Co-authored-by: Cursor <cursoragent@cursor.com>
ZIP .daagbok files use a compact manifest and binary KDAB blobs so large
photo, voice, and GPS payloads no longer inflate in a single JSON file.
Co-authored-by: Cursor <cursoragent@cursor.com>
Record short E2E-encrypted audio attachments from the live log, link them to events via __live:voice markers, and play them back in the stream and chronological event table.
Co-authored-by: Cursor <cursoragent@cursor.com>
Correct owner detection while the logbook loads, preserve AI summaries on
live-log saves, skip corrupt entry decrypts, and never regenerate keys for
shared logbooks.
Co-authored-by: Cursor <cursoragent@cursor.com>
Users see localized feedback when OpenWeatherMap or travel-day summary
features are used without connectivity, instead of generic API errors.
Co-authored-by: Cursor <cursoragent@cursor.com>
Forward X-Forwarded-For through frontend nginx, use TRUST_PROXY=1 for the Docker hop, and limit auth rate limiting to login flows only.
Co-authored-by: Cursor <cursoragent@cursor.com>
EventTimeInput24h switches to input type=time on touch devices while keeping dual selects on desktop for reliable 24h entry.
Co-authored-by: Cursor <cursoragent@cursor.com>
Global theme-aware scrollbar styling replaces the thin 6px event-table bar so long forms are easier to scroll on mobile.
Co-authored-by: Cursor <cursoragent@cursor.com>
Cache plaintext list metadata on entry save so the journal list avoids
full decrypt per row, and batch sync pull writes with main-thread yields.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extend dashboard search with ship name and crew name parts from local data.
When leaving a dirty travel day, offer save, discard, or stay instead of only leave/cancel.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prevents failed app bootstrap from being marked as successful so the boot watchdog can continue recovery attempts instead of suppressing them.
Co-authored-by: Cursor <cursoragent@cursor.com>
Die Slider-Styles galten nur unter .tank-liter-input; MetricRangeInput nutzt dieselbe Klasse, lag aber in einem anderen Container.
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds a production boot watchdog to self-heal white/black-screen startup stalls without clearing IndexedDB data offline, reducing failure loops after frequent deploys. Also records watchdog recovery paths in Plausible and documents the new events/properties for monitoring stability.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ergänzt visibility in Editor und Live-Log inkl. OWM-Übernahme, CSV-Export
und touch-taugliche Slider für Luftdruck, Seegang, Sichtweite und Krängung.
Co-authored-by: Cursor <cursoragent@cursor.com>
Benutzerweiter Vessel-Pool (E2E, Sync, Migration von Legacy-Yachts) mit
LogbookVesselSelection und LogbookVesselPicker. Profil mit Accordion
(Flotte & Crew); Demo und Onboarding-Tour inkl. profile_vessel_pool.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prefer canonical skipper id and stop overwriting activeSkipperId during
legacy crew migration and read-only share conversion.
Co-authored-by: Cursor <cursoragent@cursor.com>
Match dashboard card DOM so entry tiles get correct height, remove nested
form-card chrome, and open today’s entry instead of creating a second one.
Co-authored-by: Cursor <cursoragent@cursor.com>