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>
Copy Prisma schema before npm ci in the builder image and skip
postinstall in the production stage since the client is copied from builder.
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>
Add rotate-postgres-password.sh with optional app role, document the
procedure, and stop defaulting production POSTGRES_PASSWORD to postgres.
Co-authored-by: Cursor <cursoragent@cursor.com>