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.
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>
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>
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>
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>
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>
Harden geolocation with watchdog timeouts and permission checks so
desktop browsers without GPS no longer hang Live-Log. Show a hint to
log a position when none exists for the day.
Return 503 when crew-pool Prisma models are missing instead of crashing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move skipper and crew master data to the user profile pool, replace the logbook crew tab with selection from that pool, inherit crew on new travel days, and sync via new PersonPayload and LogbookCrewSelection models. Includes migration from legacy crew records, tour/demo updates, and i18n.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move the title input out of the card open button so Space no longer
activates navigation; use an overlay button for opening the logbook.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract ProfileHeaderButton and open UserProfilePage from any screen
without leaving the active logbook.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>