diff --git a/CHANGELOG.md b/CHANGELOG.md index 57a7494..9c5c98a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ Alle noemenswaardige wijzigingen aan de Duikmonitor worden hier bijgehouden. +## [1.22.0] - 2026-06-28 + +De controle op een onmogelijke ademdrukmeting is verruimd. Tot nu toe gaf de luchtbewaking alleen een melding wanneer de laatste of einddruk hoger was dan de begindruk. Voortaan kijkt de bewaking ook naar de metingen onderling: als een latere meting een hogere druk laat zien dan een eerdere meting, verschijnt een korte controle-melding. Dit is en blijft een waarschuwing, geen drempel, grens of blokkade. De luchtberekening (verbruikstrend, resterende tijd tot 100 bar en de kritieke meldingen) blijft in alle gevallen gewoon doorlopen. Uitvoering van besluit B-0032. + +### Toegevoegd + +- De live-luchtbewaking aan de waterkant en de samenvatting na het boven komen geven nu ook een controle-melding wanneer een latere ademdrukmeting hoger is dan een eerdere meting in dezelfde reeks. De reeks wordt op tijd geordend en op geldige druk gefilterd; bevat zij ergens een stijging tussen twee opeenvolgende metingen, dan volgt een enkele samenvattende melding, niet een melding per paar. De bestaande melding voor een laatste of einddruk hoger dan de begindruk blijft daarnaast bestaan zoals zij was. + +### Gewijzigd + +- Appversielabel verhoogd naar v1.22.0; de bijbehorende zelftest controleert mee op v1.22.0. +- Het opstart-zelftest-aantal gaat van 417 naar 422 door vijf toegevoegde interactietests. Twee tests doen een echte metingenreeks met een tussenstijging na en controleren in de teruggegeven meldingen dat de nieuwe controle-melding verschijnt, in zowel de live-bewaking als de samenvatting na het boven komen. Eén test bevestigt dat de luchtberekening bij zo'n stijging blijft doorlopen. Twee tegencontroles met een nette dalende reeks bevestigen dat de melding dan uitblijft, zodat de tests niet vanzelf slagen. + +### Niet gewijzigd + +- De rekenkern, de DCIEM-tabellen, de rekenbronfingerprint, de blokkeerlogica (waaronder de blokkade boven 15 m en de grens bij 100 bar), het statusmodel en de validatie zijn niet aangeraakt. De luchtberekening zelf (verbruikstrend, resterende tijd, het ademverbruik per minuut en de bijbehorende meldingen) is ongewijzigd: de verruiming voegt uitsluitend een melding toe en stelt niets uit, maakt niets leeg en blokkeert niets. Er is geen drempel, grens, minimum of maximum op de begindruk of op enige drukmeting toegevoegd; het toegestane drukbereik blijft gelijk. De OSOD-recordlaag, de doelvalidator en Export/Import OSOD zijn ongewijzigd, evenals het schema. De boot-verificatie en de standen van de verificatiebadge blijven werken zoals voorheen. De Content-Security-Policy is ongewijzigd. _headers, site.webmanifest en de iconen blijven byte-identiek. + ## [1.21.0] - 2026-06-28 Drie kleine verbeteringen aan de bediening en de weergave aan de waterkant, zonder gevolgen voor de rekenkern of de registratie. De duikerkaartjes op het scherm Dagregistratie krijgen een duidelijke scheidingslijn tussen opeenvolgende kaartjes, zodat ze ook in fel zonlicht beter uit elkaar te houden zijn. Het tabblad Planning vooraf verdwijnt uit de onderste tabbalk; de planningsfunctie en het bijbehorende scherm blijven in hun geheel in de app aanwezig. De verificatiebadge bovenin wordt aantikbaar en opent de releasepagina van het project; kleur, tekst en standen van de badge blijven precies gelijk. diff --git a/CHECKSUMS.sha256 b/CHECKSUMS.sha256 index cd06c26..6f05ca9 100644 --- a/CHECKSUMS.sha256 +++ b/CHECKSUMS.sha256 @@ -1 +1 @@ -7b1a430c07841fd10e37fdbb085240c473dab18dee0942bf41db2ddf92e075b9 index.html +d3f50753939a53d991f00d749abf612e6587b66db55c803c76d350a00779ae3d index.html diff --git a/index.html b/index.html index d4bf74c..b46d983 100644 --- a/index.html +++ b/index.html @@ -579,7 +579,7 @@

Duikmonitor

(() => { "use strict"; - const APP_VERSION = "v1.21.0"; + const APP_VERSION = "v1.22.0"; const EXPECTED_VIEWPORT = "width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover"; const PUBLIC_APP_URL = "https://duikmonitor.nl/"; const REPO_URL = "https://github.com/OSOD-NL/duikmonitor"; @@ -1737,6 +1737,7 @@

Duikmonitor

if(!last) add(1, "Einddruk of laatste luchtmeting ontbreekt."); if(last){ if(startBar != null && last.bar > startBar) add(1, "Laatste/einddruk is hoger dan begindruk."); + if(hasRisingPair(ms)) add(1, "Een latere meting is hoger dan een eerdere; controleer invoer."); if(last.bar <= AIR_STOP_BAR) add(2, "100 bar bereikt of onderschreden."); } return {severity, messages}; @@ -2662,6 +2663,19 @@

Daggegevens

.filter(m=>m.time && m.bar != null) .sort((a,b)=>a.time-b.time); } + // Signaleert of de op tijd gesorteerde, op geldige bar gefilterde metingenreeks ergens + // een opeenvolgend paar bevat waarbij de latere meting een hogere druk heeft dan de + // eerdere. Een ademdrukmeting hoort tijdens een duik niet te stijgen; dit is een + // controlesignaal voor de invoer, geen drempel of grens. Eenmalige uitkomst (true/false): + // een reeks met meerdere stijgingen levert een enkele samenvattende melding, geen melding + // per paar. De luchtberekening verandert hier niet door; dit is uitsluitend een melding. + function hasRisingPair(ms){ + if(!Array.isArray(ms)) return false; + for(let i=1;i ms[i-1].bar) return true; + } + return false; + } function addAirMeasurement(d, bar, time=new Date(), depth=""){ ensureAirFields(d); const n = validBar(bar); @@ -2756,6 +2770,7 @@

Daggegevens

} if(!timerNeedsCheck && last){ if(startBar != null && last.bar > startBar) messages.push("Laatste druk is hoger dan begindruk; controleer invoer."); + if(hasRisingPair(ms)) messages.push("Een latere meting is hoger dan een eerdere; controleer invoer."); if(last.bar <= AIR_STOP_BAR){ cls="bad"; label="100 bar bereikt"; messages.push("100 bar bereikt of onderschreden."); } else if(rateBarMin == null){ cls="warn"; label="Trend onbekend"; messages.push("Nog geen bruikbare verbruikstrend."); } else if(remainingMin <= 5){ cls="bad"; label="Lucht kritiek"; messages.push(`Resterend tot 100 bar is ${remainingMin} min.`); } @@ -3573,7 +3588,7 @@

${esc(displayDiver(d))} ${s.txt}