phpDivingLog v4.1.0
Redesigned phpDivingLog — modern UI and many fixes. Still a read-only web publisher over your Diving Log MySQL export.
Live demo: https://divelog.lensen.nu/
Modernized foundation
- Layered PHP 8.3+ architecture: PDO repositories + Twig templates + a JSON API.
- Retired the legacy Smarty / wp-db / jqPlot stack.
- Web app served from
public/, configured via a simple.envfile (see.env.example). - Added automated tests, static analysis, and coding-standard checks (
composer test && composer stan && composer cs).
New look & feel (Material Design 3 / Beer CSS)
- Responsive UI with an accessible light/dark theme toggle.
- Switchable color palettes (Reef / Sunset / Kelp / Abyss), persisted per browser.
- All front-end assets vendored locally — no runtime CDN, works offline.
- App title/branding derived from your Personal profile.
- Added a favicon.
Dive detail
- Sticky Logbook pane with smooth previous/next navigation (no page jumping).
- Theme-aware dive profile graph.
- Tank info now also shows when gas data is stored on the dive row (inline fallback).
- Equalized hero metric card heights.
Dive site pages
- Previous/next site navigation.
- Google Maps link generated from coordinates.
- Max depth and water type (Salt/Fresh/Brackish) derived from dives.
- Site photo gallery + lightbox; clickable map image.
Countries, overview & stats
- Country pages resolve their dive sites even when sites are not directly stamped with a country.
- Dive overview shows profile and photo indicator icons per dive.
- Certifications section on the statistics page (from the
Brevetstable): organisation, brevet, date, number, instructor, plus front/back card scans with lightbox.
Robustness
- Schema-agnostic profile/data loading that survives missing optional columns across Diving Log export versions.
- Consolidated media into
public/images/(removed the duplicate legacyimages/tree).
Full details in the CHANGELOG.