OHSHubv0.35.0

OHSHub

v0.35.0

Kennisplatform voor arbeidshygiënisten, hogere veiligheidskundigen en A&O-deskundigen. Onderzoeksgegevens worden beveiligd opgeslagen in de cloud. Inloggen is vereist voor toegang.

Over de ontwikkelaar

OHSHub wordt ontwikkeld door DiversiThijs, gevestigd te Breedenbroek. Het platform is ontstaan vanuit de praktijk: een behoefte aan toegankelijke, gestructureerde ondersteuning bij arbeidshygiënisch onderzoek conform de geldende wet- en regelgeving en normen.

KvK
92899943
Vestigingsplaats
Breedenbroek
E-mail
info@diversithijs.nl
Privacyverklaring
/privacy
Disclaimer
/disclaimer

Vroege ontwikkelfase — maak altijd een eigen back-up

OHSHub is volop in ontwikkeling. In deze fase kan niet worden gegarandeerd dat opgeslagen onderzoeken bewaard blijven bij updates of technische problemen. Zorg daarom altijd voor een eigen back-up via de exportfunctie (JSON) binnen een onderzoek. De ontwikkelaar aanvaardt geen aansprakelijkheid voor verlies van gegevens.

Versiehistorie

v0.35.0minor2026-04-22Geluid

Geluid: basisonderzoek (basic characterisation) als RI&E-module

  • Drie nieuwe stappen vóór het volledige meetonderzoek: bronneninventarisatie, HEG-schatting en conclusie.
  • Stap 1 — Bronneninventarisatie: vastleggen van geluidsbronnen met type, locatie, fabrieksopgave, piekgeluid en blootstellingsduur.
  • Stap 2 — HEG's & blootstellingsschatting: per HEG geschatte L_EX,8h (energetische berekening), signaleringsvragen en bijzondere risicogroepen.
  • Stap 3 — Beoordeling & conclusie: per HEG oordeel (laag / aandachtspunt / meting aangewezen / meting noodzakelijk) en RI&E-documentatie.
  • Automatische suggestie voor conclusie op basis van indicatieve blootstelling, piekgeluid en signaleringsvragen.
  • Beslisregels conform AI-04, AG H17 en PAV H39.
  • Bestaande onderzoeken automatisch gemigreerd naar het nieuwe stappenschema (schemaversie 2).
v0.34.0minor2026-04-22

Abonnementen: Stripe-integratie en Pro-toegangscontrole

  • Stripe Checkout en Billing Portal gekoppeld voor maandelijkse Pro-abonnementen.
  • Abonnementsstatus (free / active / trialing) opgeslagen in gebruikersprofiel.
  • Accountpagina toont abonnementssectie met upgrade-knop of abonnementsbeheer.
  • Admins krijgen automatisch volledige toegang zonder abonnement.
  • Webhook-handler voor automatische statusupdates bij betaling, verlenging en opzegging.
v0.33.0minor2026-04-15Geluid

Geluid stap 12: Word-export meetresultaten + berekeningen + apparatuur

  • Nieuwe knop "Word (meetdata)" in stap 12 — Rapport.
  • Word-document bevat alle meetwaarden per HEG en taak (alle velden inclusief octaafbanden, afwijkingen, uitsluiting).
  • Pagina statistische berekeningen: taakbijdragen, onzekerheidsanalyse, L_EX,8h,95%, normconformiteitschecks.
  • Pagina meetapparatuur en kalibratie: instrumenttabel met lab-kalibratie, veldkalibratie-data en drift-check per reeks.
v0.32.0minor2026-04-02Geluid

Geluid: professioneel B2-rapport (lopende tekst + bijlagen)

  • Nieuw rapport op B2-niveau: lopende tekst voor leken, technische data in bijlagen.
  • Rapporthoofdstukken: aanleiding, werkzaamheden, methode, gezondheidscontext, resultaten, aanbevelingen, conclusie.
  • Bijlagen: meetresultaten, berekeningen, instrumentatie, arbeidsmiddelen, conformiteitsverklaring.
v0.31.0minor2026-03-11Geluid

Geluid: 11-bands octaafband (16 Hz–16 kHz) + kalibratiefix + duur-only invoer

  • Octaafbanden uitgebreid van 8 naar 11 bands: 16 / 31,5 / 63 / 125 / 250 / 500 / 1k / 2k / 4k / 8k / 16k Hz.
  • A-gewichten bijgewerkt conform IEC 61672-1:2013 voor alle 11 bands.
  • PPE-stap (stap 6): octaafbandmethode (EN 458 §A.2) toegevoegd met m/s-invoer per band en APV-preview.
  • Meetstap (stap 8): octaafbandinvoer toont alle 11 bands.
  • Bug opgelost: kalibratie/meetserie verdween na opslaan door stale-closure race condition in SeriesPanel.
  • Meetstap (stap 8): datum/tijdstip-velden verwijderd; alleen duur nog invoerbaar.
v0.30.10patch2026-03-07Geluid

Geluid PDF: correcte Arbobesluit-artikelen + eerlijke conformiteitsverklaring

  • Alle foutieve art. 6.6-verwijzingen in PDF gecorrigeerd naar de juiste lids van art. 6.8.
  • Conformiteitsverklaring toont "met afwijkingen" als er normafwijkingen of ontbrekende HEG's zijn.
  • Managementsamenvatting toont ontbrekende HEG's en normafwijkingen (complianceChecks).
  • Normtitel cover pagina: "werkplek" gecorrigeerd naar "arbeidsplaats"; art. 6.5 → art. 6.7.
  • PPE-referenties gecorrigeerd: art. 6.5 lid 3 / art. 6.9 → art. 6.8 lid 9 / art. 6.8.
v0.30.9patch2026-03-07Geluid

Geluid stap 12: automatisch gegenereerde conclusie

  • Knop "Genereer op basis van onderzoek" toegevoegd bij het conclusieveld.
  • generateConclusion: resultaten per HEG (L_EX,8h,95%, verdict, piekgeluid, PBM-gecorrigeerd niveau).
  • Normafwijkingen (fail-checks) en ontbrekende HEG's worden in de conclusie benoemd.
  • Eindoordeel met actie-omschrijving per verdichtniveau (LAV/UAV/GW/voldoet).
  • Openstaande maatregelen worden vermeld met verwijzing naar herbeoordeling.
v0.30.8patch2026-03-07Geluid

Geluid stap 12: conformiteitsverklaring weerspiegelt normafwijkingen en ontbrekende HEG's

  • generateComplianceStatement: "conform" → "met afwijkingen" wanneer er fail-checks of onbeoordeelde HEG's zijn.
  • Normafwijkingen (fail/warning uit stap 9) nu inline per HEG-regel en als aparte sectie in de verklaring.
  • Onbeoordeelde HEG's (onvoldoende meetdata) expliciet benoemd in resultatenlijst en eindoordeel.
  • Eindoordeel in verklaring: "niet alle HEG's beoordeeld" wanneer data ontbreekt.
  • Completeness check "Berekeningen uitgevoerd" vereist nu resultaten voor álle HEG's.
  • Waarschuwingsbanner boven conformiteitsverklaring bij bekende afwijkingen of ontbrekende HEG's.
v0.30.7patch2026-03-07Geluid

Geluid stap 10: alle Arbobesluit-artikelverwijzingen gecorrigeerd

  • OBLIGATIONS en PEAK_OBLIGATIONS: Art. 6.6 (definities) vervangen door correcte Art. 6.8 leden (maatregelen).
  • Art. 6.7 correct beschreven als RI&E/meting (niet audiometrie); audiometrie verwijst nu naar Art. 6.10 lid 2/3.
  • Art. 6.8 correct beschreven als bronmaatregelen (niet voorlichting); voorlichting verwijst naar Art. 6.11.
  • Art. 6.9 (weekgemiddelde) verwijderd uit verplichtingenlijsten; was onterecht gebruikt voor PBM-effectiviteit.
  • Grenswaarde-verplichting (GW bij overschrijding) verwijst nu naar Art. 6.8 lid 11a/b/c.
  • Threshold-tabel: grondslagen LAV/UAV/GW gecorrigeerd (Art. 6.8 lid 7, 9, 10).
  • Voetnoot threshold-tabel: niet-bestaand Art. 6.5 lid 3 vervangen door Art. 6.8 lid 10.
  • Titel en verplichtingentabel-kop: art. 6.6–6.8 → art. 6.7–6.11.
  • AudiometrySection: art. 6.7/6.10 → art. 6.10 lid 3 (LAV); art. 6.10 lid 1 → art. 6.10 lid 2 (UAV).
v0.30.6patch2026-03-07Geluid

Geluid stap 9: normcorrecties berekening en paragraafverwijzingen

  • u1b-formule gecorrigeerd: deelt nu door 2×Tm (norm §C.7 Noot: u1b=0,5(Tmax−Tmin)) i.p.v. 2√3×Tm.
  • §9.3.1 → §9.3.2 in alle compliance-checks en taakmeldingen (minimum metingen per taak).
  • Job-based minimum N=5 i.p.v. 3; N=3 en N=4 zijn per Tabel C.4 Noot 1 uitsluitend geldig voor dagmetingen.
  • Meetplan task-based: "Tabel 2" → "Tabel 1" (Tabel 1 = taakgericht nmin; Tabel 2 = functiegericht nmin).
  • Meetplan job-based: §10.4 → §10.2; min. duur per steekproef 15–60 min (aanbevolen 45 min) i.p.v. volledige Te.
  • Meetplan full-day: min. duur per meting = 75% van Te (i.p.v. 100%).
  • Onzekerheidsrij: "Formule C.1" → "Formule C.3" (taakgericht) / "Formule C.9" (functie-/dagmeting).
  • Energiegemiddelde label: full-day toont nu "Formule (7) → Formule (9)" i.p.v. "Formule 7".
v0.30.5minor2026-03-07Geluid

Geluid: normconformiteit per HEG in stap 9 en stap 10

  • Nieuw SoundCompliancePanel toont per HEG of het onderzoek voldoet aan NEN-EN-ISO 9612:2025.
  • Checks: min. metingen per taak (§9.3.2), spreiding (Bijlage E), dagmeting dekking ≥ 75% (§9.4), representativiteit (§15.d.4), onzekerheid c₁u₁ (§10.4).
  • Panel zichtbaar in zowel stap 9 (berekening) als stap 10 (beoordeling/conclusie).
  • Baangerichte en dagmeting HEGs met 1–2 metingen produceren nu altijd een indicatief resultaat i.p.v. geen resultaat.
v0.30.4patch2026-03-07Geluid

Stap 8 geluid: duur weergave als HH:MM:SS (enkelveld)

  • Duurveld in meetregistratie toont en accepteert HH:MM:SS in plaats van aparte m/s-invoervelden.
v0.30.3patch2026-03-07Geluid

Stap 8 geluid: begintijd/eindtijd in seconden, bewerkbaar duurveld (m + s)

  • Begintijd en eindtijd invoerbaar met secondenprecisie (HH:MM:SS).
  • Duurveld nu direct bewerkbaar als aparte m- en s-invoer, naast auto-berekening uit begin/eindtijd.
  • Automatische duurberekening gebruikt seconden-precisie.
v0.30.2patch2026-03-07Geluid

Stap 8 geluid: datum, begintijd, eindtijd en duur per meting (ISO 9612 §15.d.2/3)

  • Datum / tijdstip kolom toegevoegd aan meetresultatentabel (taakgericht en functie-/volledigedag).
  • Begintijd en eindtijd invoerbaar per meting; duur wordt automatisch berekend.
  • "Medewerker / datum" kolom hernoemd naar "Medewerker" — datum staat nu in de nieuwe tijdstip-kolom.
v0.30.1patch2026-03-07Geluid

Stap 8 geluid: medewerkerkolom conditioneel, opmerking per meting

  • "Medewerker / datum" kolom alleen zichtbaar wanneer de HEG meer dan 1 medewerker heeft.
  • Opmerking-veld toegevoegd per meting (taakgericht en functie-/volledigedagmeting).
v0.30.0patch2026-03-07Geluid

PDF meetplan: opschoning §-refs, URL, handtekeningen en oranje HEG-boxes

  • Oranje req-box per HEG verwijderd — werkinstructies staan al volledig uitgeschreven in de sectie bovenaan het document.
  • Functie- en volledigedagmeting: HEG-specifieke aantallen (min. steekproeven, min. cumulatief, min. meting-duur) verhuisd naar de HEG-meta tabel.
  • Handtekeningblok verwijderd uit meetplan-PDF.
  • URL bijgewerkt: ohs-hub.vercel.app → ohshub.app.
  • Onnodige §-verwijzingen verwijderd: §9/10/11 uit strategielabel, §12.2 uit calibratie-header, §15.d.4 uit opmerkingenveld, Arbobesluit art. uit footer.
v0.29.0minor2026-03-07Geluid

Meetplan PDF: werkinstructies, kolom-fix, isCyclic; PDF-knop in stap 7; meetduur-tabel verwijderd

  • PDF meetplan: "Meetprocedure & werkinstructies" sectie toegevoegd met 4 velden (Kalibratie & aantallen, Meetduur, Meetpositie, Omstandigheden).
  • PDF meetplan: kolomtelling-bug opgelost — meetrijen hadden 9 cellen, koptekst 10 kolommen.
  • PDF meetplan: typo "Functiomschrijving" hersteld naar "Functiebeschrijving".
  • PDF meetplan: cyclische taken (isCyclic) tonen nu eigen duratie-eis (≥ 3 volledige cycli, min. 3 min) in de per-taak req-box.
  • PDF meetplan: dode code `includeTask`-parameter verwijderd uit meetkoptabel.
  • Meetplan PDF-knop beschikbaar in stap 7 (meetplan & taken), naast de bestaande knop in stap 8.
  • Meetduur-vereisten tabel verwijderd uit stap 8; min. eisen zijn zichtbaar in het PDF-meetplan en via per-taak feedback.
v0.28.0minor2026-03-07Geluid

Stap 8 geluid: norm-review ISO 9612:2025 — tabelbugs, deviations, §-opschoning

  • Bug fix: meetduur-vereisten tabel toonde voor functiegerichte strategie de volledige werkdag als min. meetduur (was ≥ Te); nu correct: 15–60 min per steekproef, min. n uit Tabel 3.
  • Bug fix: volledigedag-tabel toonde 3 × Te als min. totaal; nu: ≥ 75% per meting, min. 3 metingen.
  • PDF meetplan functiegericht herschreven: juiste steekproefduur (45 min), berekend min. aantal steekproeven en cumulatieve duur uit Tabel 3.
  • PDF volledigedag: spreiding- en c₁u₁-conditie voor extra metingen toegevoegd.
  • ≥ 5 metingen: "aanbevolen" gecorrigeerd naar "verplicht" indien meerdere medewerkers bemeten worden (ISO 9612 §9.3.2 shall).
  • isCyclic-vlag in meetduur-tabel: cyclische taken tonen ≥ 3 cycli / min. 3 min i.p.v. ≥ 5 min.
  • Afwijkingen van representatieve omstandigheden: eigen sub-rij direct zichtbaar wanneer Rep. wordt uitgevinkt; niet meer verstopt achter OB-knop.
  • Alle §-paragraafverwijzingen verwijderd uit de UI (labels, tooltips, tabelheaders, InfoBox). In het PDF-meetplan blijven ze staan.
  • InfoBox vereenvoudigd: "aanlooptijd"-bullet verwijderd (niet normatief), subsectie-headers zonder §-nummers, volgorde logischer.
v0.27.0minor2026-03-07Geluid

Stap 7 geluid: ISO 9612:2025 norm-review verbeteringen (§9.1, §9.3.3, §10.4)

  • Cyclisch geluid: taak markeerbaar als cyclisch; toont ≥ 3 cycli / min. 3 min-waarschuwing bij T_m-invoer (§9.3.3).
  • Uitgebreide InfoBox taakgericht: §9.1 guidance (handgereedschap = aparte taak), min. meetduur ≥ 5 min, verduidelijking spreiding op meetresultaten L_p,A,eqT.
  • Functiegericht meetplan: §10.4-eis toegevoegd (c₁u₁ > 3,5 dB → verfijn HEG of extra steekproeven) — nieuw in ISO 9612:2025.
  • Bug fix: min. cumulatieve meetduur tabel 3 (15–40 mw.) toont nu het berekende resultaat in uren.
v0.26.0minor2026-03-07AlgemeenBeheer

Disclaimer — volledig versiebeheer en admin push (spiegeling privacysysteem)

  • Disclaimer-versiebeheer toegevoegd: admins kunnen nieuwe versies publiceren via de disclaimerpagina.
  • Admin push per gebruiker: op de gebruikersdetailpagina kan een admin herbevestiging verplichten (bell-knop) of intrekken (X-knop).
  • Admin push voor alle gebruikers: knop op /disclaimer om herbevestiging voor alle gebruikers tegelijk in te stellen.
  • Gebruikersmodal: bij openstaand verzoek verschijnt de disclaimertekst als sessie-modal met "Accepteren" en "Later".
  • Registratie: nieuwe gebruikers moeten bij aanmaken de disclaimer accepteren (checkbox naast privacyverklaring).
  • Mijn gegevens: geaccepteerde disclaimerversie en datum worden getoond.
  • DisclaimerModal omgezet van localStorage-based naar DB-driven (sessionStorage voor "Later").
v0.25.0minor2026-03-07Algemeen

Disclaimer — pagina, eenmalige modal en footer

  • Disclaimerpagina toegevoegd (/disclaimer) met volledige aansprakelijkheidsbeperking.
  • Eenmalige onboarding-modal: nieuwe gebruikers moeten de disclaimer bevestigen voordat ze verdergaan (localStorage, geen DB).
  • Footer toegevoegd op elke pagina met links naar Disclaimer, Privacyverklaring en Over OHSHub.
v0.24.7patch2026-03-07Geluid

Stap 6/10 geluid: APF→APV, H-klasse HML-check, handmatige presets, 80–87 dB waarschuwing

  • APF overal vervangen door APV (Assumed Protection Value, conform EN 458:2026 terminologie).
  • HML-check (A.4): H-waarde invoerveld en H-klasse radioknop toegevoegd; klasse-omschrijvingen bijgewerkt (H < 2 dB, M 2–5 dB, L ≥ 5 dB).
  • Handmatige methode: SNR-invoer + drie aanname-presets toegevoegd (Optimistisch SNR−3, Realistisch SNR−7, Conservatief SNR−10 conform AI-04); schatting-waarschuwing getoond wanneer preset actief is.
  • Stap 10: PFRE-paragraaf en (SNR÷2)-annotatie verwijderd.
  • Stap 10: waarschuwing toegevoegd wanneer L_EX,8h,oor in de band 80–87 dB(A) valt.
v0.24.6patch2026-03-07Geluid

Stap 6 geluid: EN 458 selectiemethoden gehoorbescherming

  • PPE-formulier uitgebreid met EN 458-selectiemethoden: HML-check (A.4), SNR-methode (A.5) en handmatig.
  • HML-check: M- en L-waarden invoeren + geluidskarakter (M-klasse / L-klasse) → APF auto-berekend.
  • SNR-methode: SNR + spectraalcorrectie (Lp,C − Lp,A) → APF = SNR − correctie.
  • Berekende APF wordt direct opgeslagen in ppeAttenuation voor gebruik in stap 10.
  • Standaard selectiemethode bij nieuw toe te voegen gehoorbescherming gewijzigd naar HML-check.
v0.24.5patch2026-03-06Geluid

Stap 6 geluid: SNR÷2 APF-berekening verwijderd

  • SNR÷2 auto-berekening van APF verwijderd — methode heeft geen normatieve basis in EN 458:2026 of Nederlandse richtlijnen.
  • APF is nu een handmatig invoerveld; gebruiker bepaalt waarde zelf via EN 458-selectieprocedure (SNR-, HML- of octaafbandmethode).
  • SNR-veld blijft als documentatieveld (waarde van datablad).
  • PFRE-disclaimer vervangen door instructietekst: APF invoeren op basis van EN 458-selectie.
v0.24.4patch2026-03-06Geluid

Stap 6 geluid: normreferenties en InfoBoxen verwijderd

  • Staptitel "(art. 7.4a Arbobesluit)" verwijderd.
  • InfoBox arbeidsmiddelen (Arbobesluit / Machinerichtlijn) verwijderd.
  • InfoBox gehoorbescherming (wettelijke basis EN 458) vervangen door beknopte plaintekst.
  • InfoBox dubbele gehoorbescherming vervangen door plain notitieblok; normcitaten verwijderd.
  • Normreferenties verwijderd uit keuringsalerts, PFRE-disclaimer, capped-melding en sub-header gehoorbescherming.
v0.24.3patch2026-03-06Geluid

Stap 5 geluid: meetapparatuur uitgebreid en kalibratiecontrole gecorrigeerd

  • Kalibratietermijn gecorrigeerd: waarschuwing nu bij >24 maanden (was 12) conform §5.3; referentiedatum is aanmaakdatum onderzoek i.p.v. vandaag.
  • Foutieve normreferentie §12.1 vervangen door §5.3 in kalibratiemeldingstekst.
  • Nieuwe velden: naam kalibratie­laboratorium en uitkomst verificatie (§5.3 / §15.c.3).
  • Kalibratorsectie toegevoegd: type/model en serienummer kalibrator (§5.2 — IEC 60942).
  • Waarschuwing bij selectie klasse-2 instrument toegevoegd (§5.1 — minder geschikt bij lage T of hoge freq.).
  • InfoBox, SectionRef-chips en normreferentie in staptitel verwijderd.
v0.24.2patch2026-03-06Geluid

Stap 4 geluid: strategie-aanbevelingen gecorrigeerd conform Tabel B.1

  • STRATEGY_GUIDANCE herschreven: onderscheid tussen ✓ᵃ (Aanbevolen), ✓ (Acceptabel) en — (Niet aanbevolen) conform Tabel B.1 NEN-EN-ISO 9612:2025.
  • Twee ontbrekende werkpatronen toegevoegd: "Meerdere taken — taaklengtes onbekend" en "Geen taken toegewezen" (beide S2=✓ᵃ, S3=✓).
  • InfoBox §6 en SectionRef-chips verwijderd; staptitel ontdaan van §8-referentie.
  • Strategie-titels vereenvoudigd (§9/§10/§11 verwijderd uit weergavetitels).
  • Motivering-label ontdaan van §15.b.4-chip.
v0.24.1patch2026-03-06Geluid

Stap 3 geluid: werkanalyse uitgebreid conform §7 / §15.b NEN-EN-ISO 9612:2025

  • Staptitel en beschrijving ontdaan van §7-paragraafverwijzingen; "HBG" verwijderd (niet ISO 9612 terminologie).
  • InfoBox verwijderd; SectionRef-chips (§8, Bijlage B) uit het werkpatroon-label verwijderd.
  • "Geluidsbronnen & werkomschrijving" gesplitst in twee aparte velden: "Beschrijving werkzaamheden" (§7.1.a) en "Geluidsbronnen" (§7.3.b).
  • Nieuw veld "Beschrijving nominale werkdag" per HEG toegevoegd (§7.3 / §15.b.3).
  • Nieuw veld "Indelingscriterium HEG" toegevoegd (§7.2 — functietitel, werkzone, productieproces, beroep, anders).
  • Nieuwe checkbox "Significante piekgebeurtenissen" + beschrijvingsveld toegevoegd (§7.1.e / §7.3.c); amber badge in samenvatting.
v0.24.0minor2026-03-06Geluid

Stap 2 geluid: normreferentie, opgeruimde sectietitels

  • Toegepaste norm (NEN-EN-ISO 9612:2025) vastgelegd als zichtbaar veld in stap 2 conform §15.a.6.
  • Optioneel veld "Afwijkingen / aanvullende normen" toegevoegd naast de normvermelding.
  • Infokader met normtitel verwijderd (was redundant naast het nieuwe normveld).
  • Paragraafverwijzingen (§15.a.1 enz.) uit sectietitels en beschrijvingstekst verwijderd.
v0.23.9patch2026-03-06Geluid

Q14/Q15 uitgeschakeld bij ontbrekende RI&E; Q13=Nee weegt mee in aanbeveling

  • Q14 en Q15 worden uitgeschakeld (N.v.t.) wanneer Q13 op Nee staat — vragen zijn dan niet beantwoordbaar.
  • Uitgeschakelde vragen tellen niet mee in de voortgangsteller.
  • Q13=Nee is nu een expliciete trigger: altijd indicatief onderzoek; gecombineerd met geluidsklachten of blootstellingsduur ≥ 2u → volledig onderzoek.
v0.23.8minor2026-03-06Geluid

Voorverkennende vragen geluid verbeterd (normatief)

  • Cat. A — drempel verlaagd van > 85 naar ≥ 80 dB(A), conform de wettelijke ondergrens voor de beoordelingsplicht (Arbobesluit art. 6.6 lid 1).
  • Cat. B — wetsreferentie gecorrigeerd: grenswaarde 87 dB(A) staat in lid 2, niet lid 1.
  • Q8 (was Q9) — drempel voor arbeidsmiddelenvermogen gewijzigd van > 100 dB(A) naar L_pA ≥ 85 dB(A) op de werkpost.
  • Q9 (was Q10) — PPE-vraag uitgebreid: ook geschiktheid en attenuatiewaarde (SNR/HML).
  • Cat. E — Q19 (medezeggenschap, geen risico-indicator) vervangen door Q17: audiometrisch programma aanwezig (Arbobesluit art. 6.10).
  • Vraagnummers hernummerd Q1–Q17 in logische volgorde per categorie.
v0.23.7patch2026-03-06GeluidGevaarlijke stoffenFysieke belastingKlimaat

Stapvoortgang blijft zichtbaar bij terugnavigeren

  • Afgeronde stappen blijven groen gemarkeerd wanneer je terugnavigert naar een eerdere stap.
  • Voortgang is nu gebaseerd op de hoogst bereikte stap in de sessie, niet de huidige positie.
v0.23.6patch2026-03-06Admin

Afkortingen volledig uit code — beheer via database

  • Alle ingebakken afkortingen gemigreerd naar de database (migration 007_abbr_seed.sql).
  • Afkortingenbeheer toont nu één vlakke lijst — geen onderscheid meer tussen standaard en eigen.
  • Alle afkortingen zijn gelijkwaardig bewerkbaar en verwijderbaar via het beheerderspaneel.
v0.23.5patch2026-03-06Admin

Afkortingenbeheer: één gecombineerde tabel

  • Eigen en standaard afkortingen samengevoegd in één alfabetische tabel.
  • Badge per rij: "standaard" (grijs), "eigen" (blauw), "aangepast" (oranje).
  • Alle rijen bewerkbaar; verwijderen/terugzetten alleen voor DB-vermeldingen.
v0.23.4minor2026-03-06Kennisportaal

FAQ zoekfunctie op /kennisportaal/faq

  • Zoekbalk op /kennisportaal/faq doorzoekt alle vragen en antwoorden over alle thema's.
  • Zoekresultaten tonen thema-badge en inklapbaar antwoord; wis-knop in het zoekveld.
  • Gegroepeerde weergave verdwijnt tijdens het zoeken en verschijnt terug zodra het zoekveld leeg is.
  • Zoekbalk verwijderd uit de per-thema FAQ op de kennisportaal-themapagina's.
v0.23.3minor2026-03-06Kennisportaal

Zoekfunctie in kennisportaal FAQ per thema

  • Zoekveld toegevoegd bovenaan de veelgestelde vragen per thema — filtert live op vraag én antwoord.
  • "Geen resultaten"-melding bij zoekopdrachten zonder treffer.
v0.23.2patch2026-03-06Wettelijk kader & normen

Streefwaarden op dezelfde rij als comfortwaarden

  • ThemeLimit krijgt optioneel veld `targetValue` — streefwaarde naast de richtwaarde op dezelfde rij.
  • Comfortwaarden-sectie toont kolomkoppen "Richtwaarde" / "Streefwaarde" wanneer streefwaarden aanwezig zijn.
  • NPR 3438 geluid: streefwaarden toegevoegd (≤40 / ≤50 / ≤65 dB(A)) naast de richtwaarden.
  • StructuredLimitEditor: streefwaarde-invoerveld (groen) toegevoegd per limietregel.
v0.23.1patch2026-03-06Wettelijk kader & normen

Streefwaarden toegevoegd aan wettelijk kader

  • Nieuw veld "Streefwaarden" toegevoegd naast grenswaarden en comfortwaarden — volle breedte, groen (emerald) kleuraccent, via CMS aanpasbaar per thema.
v0.23.0minor2026-03-06Wettelijk kader & normen

Comfortwaarden + vereenvoudiging wettelijk kader

  • Nieuw veld "Comfortwaarden (richtwaarden)" toegevoegd aan wettelijk kader — gebaseerd op NPR 3438 voor geluid, via CMS aanpasbaar per thema.
  • Grenswaarden worden nu over de volle breedte weergegeven; comfortwaarden eveneens.
  • "Administratieve verplichtingen" verwijderd uit het wettelijk kader-paneel.
  • Grenswaarden-bewerker: invoervelden vallen niet meer buiten het kader (fix gestapeld layout).
v0.22.9patch2026-03-06Wettelijk kader & normen

Grenswaarden-editor layout fix

  • Grenswaarden-bewerker: invoervelden vallen niet meer buiten het kader — gestapeld layout (label + verwijderknop, sublabel + waarde).
v0.22.8minor2026-03-06KennisportaalWettelijk kader & normen

Wettelijk kader bewerken vanuit kennisportaal + formuleherstel in InlineMd

  • Admins kunnen wettelijk kader & normen nu direct vanuit de kennisportaal-pagina bewerken via potloodknoppen.
  • Edit-logica geconsolideerd in ThemeLegalContent (namespace-prop); ThemeLegalInfo is nu een slanke collapsible wrapper.
  • InlineMd ondersteunt nu [[LaTeX]]-formulemakers (KaTeX) — formules in wetgeving- en normbeschrijvingen renderen correct.
v0.22.7minor2026-03-06KennisportaalWettelijk kader & normen

Kennisportaal — wettelijk kader & normen uit gedeelde bron

  • Nieuw `ThemeLegalContent`-component: pure weergave van wetgeving, normen, grenswaarden en administratieve verplichtingen.
  • Named section-exports (`LegislationList`, `NormsList`, `LimitGroupsList`, `AdminObligationsList`) gedeeld door ThemeLegalInfo en ThemeLegalContent — geen code-duplicatie.
  • Kennisportaal-themapagina's tonen nu "Wettelijk kader & normen" vanuit dezelfde databron als de investigation tab (`theme-legal.{slug}` namespace).
  • Admin bewerkt juridische inhoud één keer (via investigation tab), beide pagina's worden automatisch bijgewerkt.
  • Kennisportaal-secties "Normen & grenswaarden" en "Wetgeving & regelgeving" (vrije markdown) verwijderd; "Meetmethoden", "Praktische tips" en "Bronnen" blijven als vrije CMS-secties.
  • Parse-helpers `parseLegalItems` en `parseLegalJson` verplaatst naar `lib/theme-legal-info.ts` voor hergebruik in server- én client-components.
v0.22.6minor2026-03-06Wettelijk kader & normen

Wettelijk kader & normen — gelijkgetrokken structuur, herordening en markdown

  • Wetgeving-items hebben nu dezelfde structuur als normen: naam + optionele beschrijving + inspring-niveau.
  • Beide secties (Wetgeving én Toepasselijke normen) ondersteunen herordening via omhoog/omlaag-knoppen.
  • Beide secties ondersteunen inspring-niveaus (0–2) voor hiërarchische weergave.
  • Alle tekstvelden (naam en beschrijving) ondersteunen markdown-opmaak: **vet**, *cursief*, <u>onderstreept</u>.
  • Nieuwe editor-component `LegalItemsEditor` vervangt `JsonArrayEditor` (wetgeving) en `NormsEditorClient` (normen).
  • Nieuwe `InlineMd`-component voor inline markdown-rendering zonder block-level wrappers.
v0.22.5patch2026-03-06Algemeen

Onderzoekstegels: geluid actief, overige thema's gedeactiveerd voor gebruikers

  • Alle onderzoeksthema's behalve Geluid zijn gemarkeerd als inactief (`active: false` in lib/themes.ts).
  • Niet-admins zien inactieve tegels als greyed-out (opacity-40) met "Binnenkort"-badge; tegels zijn niet klikbaar.
  • Admins zien alle tegels als links met een subtiel "inactief"-label.
  • Directe URL-navigatie naar een inactief thema (/themes/climate etc.) leidt niet-admins terug naar de homepagina.
v0.22.4patch2026-03-06Geluid

Vereenvoudiging PPE-module geluid — SNR÷2 als standaard, PFRE-disclaimer

  • Geluid: PPE-invoerformulier (stap 6) vereenvoudigd tot SNR-only — methode-tabs (SNR §A.5, HML §A.4, octaafband §A.2, handmatig) verwijderd.
  • Geluid: APF wordt altijd berekend als SNR÷2 (conservatieve PFRE-benadering); handmatige override blijft mogelijk.
  • Geluid: PFRE-disclaimer toegevoegd in stap 6 en stap 10 — legt uit dat werkelijke demping ≈ 50–60% van nominale SNR is (EN 458:2025 Annex B) en waarom SNR÷2 aansluit bij ISO 9612.
  • Geluid: piekgeluid-correctie (L_p,Cpeak,oor) is niet meer berekend — SNR beschrijft de spectrale samenstelling van piekgeluid niet; uitleg toegevoegd.
  • Geluid: beoordeling (stap 10) vereenvoudigd — apfFreqBased-logica verwijderd; PBM-samenvatting toont SNR÷2 als methode-label.
  • Geluid: bestaande onderzoekdata met HML/octaafband-methode blijft geldig (velden worden bewaard in de database; PDF-export en rapport ongewijzigd).
v0.22.3patch2026-03-06Geluid

SNR-methode fix + normatieve verwijzingen gehoorbescherming (EN 458:2025)

  • Geluid: SNR-methode aangepast conform EN 458:2025 §A.5 — exacte formule L′_p,A = L_p,C − SNR; invoerveld voor C-gewogen niveau L_p,C toegevoegd. Zonder L_p,C wordt SNR÷2 als benadering gebruikt (niet conform norm, duidelijk aangegeven).
  • Geluid: normatieve verwijzingen (EN 458:2025 §A.2/§A.4/§A.5/§6.2.4) toegevoegd aan alle PPE-methode-secties in stap 6 en stap 10.
  • Geluid: afwijkingen van EN 458:2025 expliciet gedocumenteerd — HML check-methode (§A.4 i.p.v. §A.3), dubbele bescherming (schatting vs. fabricantcombinaties), 35 dB-cap (informatief).
  • Geluid: code-commentaar en infoboxen bijgewerkt van EN 458:2016 naar EN 458:2025.
v0.22.2patch2026-03-06Geluid

Fix: HML-methode gehoorbescherming (EN 458)

  • Geluid: HML-waarden (H, M, L) worden nu direct als PNR gebruikt conform EN 458:2016, i.p.v. onterecht gedeeld door 2. Geldt voor enkelvoudige én dubbele bescherming.
v0.22.1patch2026-03-06Home

Volledige onderzoekstegels klikbaar

  • Home: volledige onderzoekstegel is klikbaar (niet alleen het kleine pijltje voor admins).
v0.22.0minor2026-03-05Platform

Landingspagina + naamwijziging navbar

  • Home: generieke landingspagina met hero, drie feature-pillars (Kennisportaal, Onderzoeksinstrumenten, Abonnementen/binnenkort) en onderzoekengrid.
  • Navbar: "Thema's" hernoemd naar "Onderzoeken".
v0.21.1patch2026-03-05Platform

Fix: [[formule]]-markers renderen nu correct in FAQ-vraagkoppen

  • FaqAccordion + FaqInlineManager: vraagkop doorgestuurd via renderWithFormulas zodat [[L_{EX,8h}]] als KaTeX-formule verschijnt.
v0.21.0minor2026-03-05Platform

Kennisportaal — theoretische achtergrond, normen en FAQ per thema

  • Nieuw: /kennisportaal — openbare sectie met theoretische kennisbladen per arbeidshygiënisch thema.
  • Kennisblad per thema (/kennisportaal/[slug]): introductie, CMS-secties (normen, methoden, wetgeving, praktijk) inline bewerkbaar voor admins, thema-FAQ en CTA naar het onderzoeksinstrument.
  • FAQ-overzicht (/kennisportaal/faq): alle gepubliceerde vragen gegroepeerd per thema.
  • Kennisportaal-landing: themakaarten + teaser met 5 algemene FAQ-vragen.
  • DB: faq_items-tabel met RLS (public read voor gepubliceerde items, admin schrijf) — migration 007.
  • API: GET /api/faq (publiek), GET+POST /api/admin/faq, PATCH+DELETE /api/admin/faq/[id].
  • Admin FAQ-beheer (/admin/faq): items toevoegen, bewerken, verwijderen, volgorde instellen en publicatiestatus togglen.
  • Navbar: "Kennisportaal"-link toegevoegd tussen Home en Thema's.
  • AdminNav: "FAQ"-tab toegevoegd.
v0.20.4patch2026-03-05Platform

Admin: één scrollbare tabel voor alle schermformaten

  • Kaartweergave verwijderd; alle gebruikers staan nu in één tabel die horizontaal scrollt op smalle schermen.
v0.20.3patch2026-03-05Platform

Admin gebruikersoverzicht: responsieve opmaak

  • Beheerderspaneel: tabel is nu horizontaal scrollbaar op smalle schermen (overflow-x-auto + min-breedte).
  • Mobiele weergave (< 768px): kaartweergave per gebruiker met alle velden overzichtelijk gestapeld.
v0.20.2patch2026-03-05Platform

Fix: privacy modal toont na client-side inloggen

  • PrivacyAcceptModal luistert nu via onAuthStateChange (SIGNED_IN) naar inloggen — de modal werkte niet na client-side navigatie via router.replace omdat de root layout niet herstartte.
v0.20.1patch2026-03-05Platform

Privacy-kolom in gebruikersoverzicht

  • Beheerderspaneel: aparte "Privacy"-kolom in de gebruikerslijst met geaccepteerde versie, acceptatiedatum, "herbevestiging vereist"-melding én bell-/X-knop per rij.
v0.20.0minor2026-03-05Platform

Privacy herbevestiging — admin push + gebruikersmodal

  • Admin kan per gebruiker (detailpagina) of voor alle gebruikers tegelijk een herbevestiging van de privacyverklaring verplichten.
  • Gebruikers zien bij de volgende sessie een modal met de privacytekst; "Later" slaat de herinnering tot de volgende sessie op via sessionStorage.
  • "Accepteren en doorgaan" slaat de versie op in user_roles en wist het verzoek.
  • Beheerderspaneel: bell-icoon per gebruiker in de lijst (oranje stip) en op de detailpagina (bell- of X-knop + amber badge).
  • DB: kolom privacy_required_version toegevoegd aan user_roles (migration 006).
v0.19.0minor2026-03-05Platform

Privacyversiegeschiedenis + inline bewerken "Over de app"

  • Privacyverklaring: admin kan nu een nieuwe versie publiceren met type (major/minor/patch) en versienummer; eerdere versies zijn inklapbaar zichtbaar op /privacy.
  • Versionering: semantic versioning voor privacyverklaring (1.0.0 → 1.0.1 → 1.1.0 → 2.0.0).
  • Registratie: nieuw aangemaakte accounts accepteren automatisch de actuele live-versie van de privacyverklaring.
  • "Over de app" pagina: ondertitel, ontwikkelaarsbeschrijving, contactgegevens (KvK, vestigingsplaats, e-mail) en disclaimer nu volledig inline bewerkbaar.
  • Fix: onderzoekenaantal stond op 0 voor alle gebruikers in het beheerderspaneel — PostgREST aggregate-syntax vervangen door JS-telling.
v0.18.12patch2026-03-05Platform

UI-opruiming: placeholder badge + hamburgermenu vereenvoudigd

  • Placeholder-pagina's: subtitel-badge verwijderd, "In ontwikkeling" badge staat nu inline naast de paginatitel.
  • color.badge en color.border props verwijderd uit InvestigationPlaceholder (waren overbodig).
  • Hamburgermenu: "Afkortingen beheren" en "UI-componentenbibliotheek" verwijderd — beide zijn bereikbaar via het beheerderspaneel.
  • AdminNav: "UI-bibliotheek" tab toegevoegd als derde tab in het beheerderspaneel.
v0.18.11patch2026-03-05Platform

Placeholder stappen-layout: uitlijning cijfer en tekst gecorrigeerd

  • InvestigationPlaceholder: absolute positionering van stapnummers vervangen door flex-layout — tekst staat nu correct naast het getal in plaats van erachter.
  • Stapnummering gewijzigd van 0-gebaseerd naar 1-gebaseerd.
v0.18.10patch2026-03-05Platform

Documentatie: renderWithFormulas vs MarkdownContent keuzegids

  • CLAUDE.md: formules/markdown/afkortingen sectie samengevoegd tot een keuzegids met tabel — wanneer Formula, renderWithFormulas of MarkdownContent te gebruiken.
  • lib/render-with-formulas.tsx: JSDoc uitgebreid met mogelijkheden, beperkingen en gebruiksadvies.
  • components/MarkdownContent.tsx: JSDoc uitgebreid met mogelijkheden, beperkingen en gebruiksadvies.
v0.18.9patch2026-03-05Platform

Placeholder-thema's: dode wizard-imports verwijderd + CMS inline bewerken

  • wizard-configs.ts: dead imports voor bio-agents, verlichting, trillingen en straling wizards verwijderd — vervangen door lege stub-configs. Wizard-bestanden blijven bewaard als draft voor toekomstige implementatie.
  • wizardConfigs export-shim verwijderd (was nergens geïmporteerd).
  • InvestigationPlaceholder: InlineEdit toegevoegd voor paginatitel en -beschrijving; ThemeLegalInfo ontvangt nu ook namespace + contentOverrides.
  • Placeholder-pagina's (bio-agents, verlichting, trillingen, straling): geconverteerd naar async server components; fetchen theme.{slug} en theme-legal.{slug} content — admin kan titels en beschrijvingen nu inline bewerken.
v0.18.8patch2026-03-05Platform

Deduplicatie: gedeelde InvestigationThemePage layout voor de 4 modules

  • Nieuw: components/InvestigationThemePage.tsx — gedeelde server-component voor de layout van alle onderzoeksmodule-pagina's (back-link, header, icon, InlineEdit-titel, InlineEdit-beschrijving, ThemeLegalInfo).
  • app/themes/sound, hazardous-substances, physical-load en climate page.tsx gereduceerd van 107 naar ~45 regels elk — alleen unieke metadata, fallback-strings en de module-app-component blijven per pagina.
v0.18.7patch2026-03-05Platform

Efficiëntie: DB-aggregaat tellling onderzoeken + gedeelde fmtFullName helper

  • Admin gebruikerslijst: onderzoeken worden nu via DB COUNT-aggregaat geteld i.p.v. alle rijen op te halen — minder dataoverdracht bij grote datasets.
  • fmtFullName() geëxtraheerd naar lib/utils.ts — was gedupliceerd in admin/page.tsx en admin/users/[id]/page.tsx.
v0.18.6patch2026-03-05Platform

Code-kwaliteit: gedeelde auth-helper, dode imports, revalidateTag-fix

  • requireAdmin() geëxtraheerd naar lib/auth.ts — centrale definitie voor alle API-routes (was 4× gedupliceerd).
  • generateStaticParams in app/themes/[slug]/page.tsx geeft nu [] terug — alle thema's hebben eigen pagina's, fallback-route heeft geen statische params nodig.
  • Ongebruikte ReactMarkdown-import verwijderd uit app/privacy/page.tsx.
  • revalidateTag('content', {}) hersteld — tweede argument is vereist in Next.js 16 (CacheLifeConfig).
v0.18.5patch2026-03-05Platform

Admin Content-sectie verwijderd — opruimen dode code

  • Volledige /admin/content-sectie (7 pagina's) verwijderd — alle bewerkfunctionaliteit is al inline op de betreffende pagina's beschikbaar.
  • Verwijderd: editor-componenten PlainEditor, TextareaEditor, MarkdownEditor (niet meer in gebruik).
  • Verwijderd: AdminEditButton-component (was al dode code — nergens geïmporteerd).
  • AdminNav: "Content"-tab verwijderd; navigatiebalk toont nu "Gebruikers" en "Afkortingen".
v0.18.4patch2026-03-05Platform

Veiligheidsfixes: datalek onderzoeken + inputvalidatie + AdminNav

  • Fix: GET /api/investigations/[id] filtert nu op user_id — onderzoeken van andere gebruikers waren opvraagbaar voor ingelogde gebruikers.
  • Fix: POST /api/investigations valideert nu het type-veld (toegestaan: hazardous, sound, physical, climate), het id-formaat (UUID) en de naamlengte (max 500); updated_at wordt altijd server-side gegenereerd.
  • Fix: AdminNav wordt nu ingeladen in admin/layout.tsx — navigatietabs Gebruikers, Content en Afkortingen zijn nu zichtbaar op alle beheerpagina's.
v0.18.3patch2026-03-05Platform

Afkortingenbeheer — eigen afkortingen toevoegen en beheren via admin

  • Nieuwe beheerpagina /admin/abbreviations: eigen afkortingen toevoegen, bewerken en verwijderen.
  • Eigen afkortingen worden via React Context gemerged met de hardcoded tabel — beschikbaar voor [[abbr:ID]]-markers in alle CMS-tekstvelden.
  • Navigatie: link in hamburgermenu + tab in AdminNav.
  • Overzicht van alle standaard (hardcoded) afkortingen als referentie — overschreven entries krijgen badge.
v0.18.2patch2026-03-05Platform

[[abbr:ID]]-marker voor afkortingen in CMS-tekstvelden

  • [[abbr:CMR]] rendert automatisch <abbr title="…"> via de gedeelde ABBR_TITLES-tabel — geen HTML meer nodig.
  • [[abbr:OELV:Eigen omschrijving]] voor een afwijkende toelichting.
  • InlineEdit-hint toont de abbr-markersyntax.
v0.18.1patch2026-03-05Platform

HTML-tags (abbr) en betere voorinvulling in inline CMS-velden

  • MarkdownContent ondersteunt nu rauwe HTML via rehype-raw — <abbr title="voluit">afkorting</abbr> werkt in alle bewerkbare tekstvelden.
  • Bewerkingsveld toont nu de huidige live-tekst als beginwaarde (i.p.v. leeg) wanneer er nog geen DB-override bestaat.
  • InlineEdit-hint uitgebreid met abbr-voorbeeld.
v0.18.0minor2026-03-05GeluidGevaarlijke stoffenFysieke belastingKlimaat

Inline bewerkbare staptitels, beschrijvingen en InfoBox-inhoud in alle onderzoeksmodules

  • Staptitels, intro-beschrijvingen en InfoBox-inhoud zijn nu inline bewerkbaar in alle 4 onderzoeksmodules (47 stapcomponenten).
  • Admin: hover boven staptitel of beschrijving → potloodje → bewerk direct op de pagina.
  • Nieuwe InlineStepHeader-component herbruikbaar voor h2-titels in alle stap-componenten.
  • Namespaces: investigation.sound, investigation.hazardous-substances, investigation.physical-load, investigation.climate.
  • Shell-headers tonen ook de bewerkbare staptitel (InlineEdit op de stap-nummerbalk).
  • Bij InfoBox-override: markdown-rendering; bij geen override: originele JSX-opmaak (Abbr, Formula, SectionRef) als fallback.
v0.17.0minor2026-03-05Platform

Volledig inline CMS — alle teksten direct op de pagina bewerkbaar

  • Wettelijk kader & normen bij thema's zijn nu per sectie inline bewerkbaar (potloodje per sectie: wetgeving, normen, grenswaarden, beheersverplichtingen).
  • Wizardteksten (staptitels, beschrijvingen, vraagopties) inline bewerkbaar via uitvouwbaar bewerkpaneel per stap.
  • Privacyverklaring inline bewerkbaar als markdown direct op /privacy.
  • Versiehistorie (changelog) inline bewerkbaar op /over via admin-toggle.
  • AdminEditButton-component volledig verwijderd — geen doorverwijzingen naar aparte beheerroutes meer.
v0.16.2patch2026-03-05Platform

Admin contentbeheer-tab verwijderd

  • Content-tab verwijderd uit het admin-paneel — alle teksten zijn nu inline bewerkbaar direct op de pagina.
  • Admin-layout vereenvoudigd: tabnavigatie verwijderd (niet meer nodig met één sectie).
v0.16.1patch2026-03-05Platform

Homepage ondertitel inline bewerkbaar

  • Homepage ondertitel ("Kennisplatform voor...") is nu inline bewerkbaar voor admins via namespace page.home, key subtitle.
  • Uitgelogde gebruikers zien de actuele (DB-)tekst; de standaardtekst dient als fallback.
v0.16.0minor2026-03-05Platform

Inline bewerken op homepage-themakaarten + markdown in beschrijvingen

  • Nieuw: HomeThemesGrid-component — admins zien potloodje op naam en beschrijving van elke themakaart op de homepage; bewerken direct op de pagina zonder doorverwijzing.
  • Niet-admins zien de homepage ongewijzigd: themakaarten zijn volledig klikbaar als Link.
  • Alle vier thema-paginabeschrijvingen (geluid, klimaat, fysieke belasting, gevaarlijke stoffen) renderen nu als markdown via MarkdownContent.
  • InlineEdit-velden voor beschrijvingen hebben nu markdown-prop: admin ziet syntaxhint bij bewerken.
  • Bugfix: sound/page.tsx — onjuiste ReactMarkdown/renderWithFormulas-aanroep vervangen door MarkdownContent.
v0.15.2patch2026-03-05Platform

Inline bewerken direct op de pagina

  • Nieuw: InlineEdit-component — hover over bewerkbare tekst en klik het potloodje om direct op de pagina te wijzigen.
  • Thema-pagina's (geluid, klimaat, fysieke belasting, gevaarlijke stoffen): titel en beschrijving inline bewerkbaar via namespace theme.{slug}, keys pageTitle en pageDesc.
  • Generieke thema-pagina (/themes/[slug]): naam en intro inline bewerkbaar.
  • Na opslaan: router.refresh() herlaadt de server-data zonder volledige herlaad van de pagina.
  • Nieuw: lib/render-with-formulas.tsx — gedeelde [[formule]]-rendering voor server- en client-componenten.
  • ThemeLegalInfo importeert renderWithFormulas nu uit gedeelde lib.
v0.15.1patch2026-03-05Platform

Admin potloodje op alle bewerkbare UI-elementen

  • AdminEditButton (potloodje) toegevoegd naast alle bewerkbare koppen en secties voor admins.
  • ThemeLegalInfo: adminEditHref prop + potloodje in de inklapbare header.
  • ThemeWizard: potloodje in de progress-header naast de thema-naam.
  • Specifieke thema-pagina's (geluid, klimaat, fysieke belasting, gevaarlijke stoffen): potloodje naast de h1.
  • Generieke thema-pagina (/themes/[slug]): potloodje naast de h1.
v0.15.0minor2026-03-05Platform

Admin CMS — webteksten bewerken zonder deployment

  • Nieuw: content-tabel in Supabase met namespace/key/value/ctype en RLS (alleen admin mag schrijven).
  • Nieuw: lib/content.ts — getNamespaceContent() en getContent() met Next.js unstable_cache en tag "content".
  • Nieuw: API-route GET/PUT/DELETE /api/admin/content met admin-authenticatie en revalidateTag na mutatie.
  • Nieuw: Admin tab-navigatie — "Gebruikers" en "Content" als horizontale tabs in de admin-layout.
  • Nieuw: /admin/content — overzichtspagina met drie categorieën: Pagina's, Thema's, Wizards.
  • Nieuw: /admin/content/pages — Privacyverklaring (MarkdownEditor) en Changelog (ChangelogEditor).
  • Nieuw: /admin/content/themes — naam, beschrijving en intro per thema met PlainEditor/TextareaEditor.
  • Nieuw: /admin/content/themes/[slug]/legal — wetgeving, normen, grenswaarden en administratieve verplichtingen.
  • Nieuw: /admin/content/wizards + /admin/content/wizards/[slug] — WizardEditor met boom-view: stap → vraag → optie.
  • Integratie: privacy/page.tsx laadt body uit DB; fallback naar hardcoded JSX.
  • Integratie: over/page.tsx laadt changelog-array uit DB; fallback naar hardcoded array.
  • Integratie: app/page.tsx laadt thema-naam/beschrijving uit DB.
  • Integratie: ThemeLegalInfo accepteert contentOverrides prop; alle vier thema-pagina's laden legal-overrides.
  • Integratie: ThemeWizard accepteert contentOverrides prop; applyWizardOverrides() past stap/vraag/optie-teksten toe.
  • Installatie: react-markdown voor MarkdownEditor preview en privacy-rendering.
v0.14.1patch2026-03-03Gevaarlijke stoffenGeluidKlimaatFysieke belasting

Bedrijfsarts als beroepsprofiel + BIG-registratienummer

  • Bedrijfsarts toegevoegd als kwalificatieoptie voor uitvoerend onderzoekers in alle vier modules.
  • Bij keuze Bedrijfsarts verschijnt een veld voor het BIG-registratienummer (Wet BIG art. 3).
  • BasePerson uitgebreid met bigNumber?: string.
v0.14.0minor2026-03-03Gevaarlijke stoffenGeluidKlimaatFysieke belasting

Pre-survey standaardisatie + gedeelde scope-componenten

  • Nieuw: Step0_PreSurvey voor gevaarlijke stoffen — 15 ja/nee/onbekend vragen (categorie A–E), automatische aanbeveling (volledig/gericht/geen), handmatige override.
  • Nieuw: lib/shared-investigation-types.ts — BasePerson en CommonScopeFields interfaces.
  • Nieuw: components/shared/scope/PersonCard.tsx — gedeeld persoonskaartje met kwalificatie, AKD-registratie, anonimiteit.
  • Nieuw: components/shared/scope/PersonSection.tsx — gedeelde personen-sectie met add/update/remove.
  • Nieuw: components/shared/scope/ScopeFields.tsx — gedeelde onderzoeksgegevens-sectie (bedrijf, werkplek, medewerkers, doel, periode).
  • SoundPerson, PhysicalPerson, ClimatePerson, PersonEntry breiden nu BasePerson uit.
  • SoundInvestigationScope, PhysicalInvestigationScope, ClimateInvestigationScope en InvestigationScope breiden nu CommonScopeFields uit.
  • InvestigationShell uitgebreid van 10 naar 11 stappen — stap 1 is nu de voorverkenning gevaarlijke stoffen.
  • Alle vier Step1-bestanden herschreven: PersonSection + ScopeFields + module-specifieke aanvullingen.
v0.13.3patch2026-03-02Gevaarlijke stoffen

Migratie gevaarlijke stoffen stappen naar gedeelde UI-componenten

  • Alle 10 stap-bestanden in components/investigation/steps/ gemigreerd naar Button, Input, Select, Textarea, Alert en Icon uit @/components/ui.
  • Raw <button>, <input>, <select> en <textarea> elementen vervangen door gedeelde UI-componenten voor consistente styling.
  • Button variant="dashed" voor toevoeg-knoppen, variant="ghost"/"danger" size="xs" voor bewerken/verwijderen in stappen 1–10.
  • Alert variant="warning" vervangt ad-hoc oranje/amber waarschuwingsdivs in stappen 3, 4 en 7.
v0.13.2patch2026-03-02Klimaat

Migratie climate-investigation stappen naar gedeelde UI-componenten

  • Alle 13 stap-bestanden in components/climate-investigation/steps/ gemigreerd naar Button, Card, FieldLabel, FormGrid, Icon, Input, Select, Textarea en Alert uit @/components/ui.
  • Raw <input>, <select>, <textarea> en <button> elementen vervangen door gedeelde UI-componenten voor consistente styling.
  • Alert-component vervangt ad-hoc gekleurde waarschuwingsdivs (warning/neutral/error/success) in Steps 3, 5, 6, 7, 8, 9, 10, 11.
  • Card variant="form" vervangt oranje formuliercontainers in BGForm en MeasureForm.
  • Button variant="dashed" voor toevoeg-knoppen, variant="ghost"/"danger" size="xs" voor bewerken/verwijderen.
v0.13.1patch2026-03-02Fysieke belasting

Migratie physical-investigation stappen naar gedeelde UI-componenten

  • Alle 11 stap-bestanden in components/physical-investigation/steps/ gemigreerd naar Button, Card, FieldLabel, FormGrid, Icon, Input, Select, Textarea en Alert uit @/components/ui.
  • Raw <input>, <select>, <textarea> en <button> elementen vervangen door gedeelde UI-componenten voor consistente styling.
  • Alert-component vervangt ad-hoc gekleurde waarschuwingsdivs (amber/warning).
  • Card variant="form" vervangt oranje formuliercontainers in BGForm, LiftingForm, PushPullForm, RepetitiveForm, PostureForm, ForceForm en MeasureForm.
v0.13.0minor2026-03-02Platform

Gebruikersprofiel: naam & bedrijf

  • Nieuwe profiles-tabel (voornaam, tussenvoegsel, achternaam, bedrijf) met RLS en auto-aanmaken via trigger.
  • Mijn gegevens: profielsectie met bewerkbaar formulier (voornaam / tussenvoegsel / achternaam / bedrijf).
  • Navbar toont voornaam als die ingevuld is; anders het (afgekorte) e-mailadres. Avataarinitaal volgt mee.
  • Admin-overzicht: naam en bedrijf zichtbaar als tweede regel onder het e-mailadres.
  • Admin-detailpagina: naam en bedrijf toegevoegd aan de accountinfo-sectie.
  • JSON-export bevat nu ook het volledige profiel.
v0.12.2patch2026-03-02Platform

Registratie van privacyakkoord per gebruiker

  • Privacyversie en acceptatiedatum worden bij registratie opgeslagen in user_roles (via Supabase user-metadata + trigger).
  • Admin-overzicht: waarschuwingsicoontje bij gebruikers zonder geregistreerde privacyversie.
  • Admin-detailpagina: accountinfo-sectie met e-mail, rol, aanmeldatum, laatste login en privacyakkoord (versie + datum).
  • Mijn gegevens: privacyversie en acceptatiedatum zichtbaar in accountgegevens.
  • JSON-export bevat nu ook privacy_version_accepted en privacy_accepted_at.
v0.12.1patch2026-03-02Platform

Bedrijfsgegevens DiversiThijs & privacyverklaring definitief

  • Over-pagina: DiversiThijs als ontwikkelaar vermeld met KvK-nummer (92899943), vestigingsplaats Breedenbroek, e-mail info@diversithijs.nl en link naar privacyverklaring.
  • Privacyverklaring volledig bijgewerkt met definitieve bedrijfsnaam, contactgegevens, grondslagen, sub-verwerkers, bewaartermijnen en alle AVG-rechten.
v0.12.0minor2026-03-02Platform

Vergeten wachtwoord & privacyverklaring

  • Nieuwe flow "Wachtwoord vergeten": e-mailformulier op /auth/forgot-password en wachtwoord-resetpagina op /auth/reset-password (via Supabase PKCE herstelmail).
  • "Wachtwoord vergeten?"-link toegevoegd aan de inlogpagina naast het wachtwoordveld.
  • Privacyverklaring-pagina (/privacy) aangemaakt met AVG-conforme structuur (art. 13 informatieplicht).
  • Registratiepagina: verplichte checkbox waarmee gebruikers de privacyverklaring accepteren voor accountaanmaak.
v0.11.0minor2026-03-02Platform

AVG-pagina "Mijn gegevens"

  • Nieuwe pagina /account met vier AVG-secties: inzage (accountgegevens), rectificatie (e-mail wijzigen), portabiliteit (JSON-export) en vergetelheid (account verwijderen).
  • API-route DELETE /api/account verwijdert het eigen account via supabaseAdmin; CASCADE ruimt onderzoeken en rol op.
  • API-route GET /api/account/export retourneert alle persoonsgegevens als JSON (user-info, rol, onderzoeken).
  • Navbar: "Mijn gegevens"-link toegevoegd in het gebruikersdropdown (desktop) en in het hamburgermenu (mobiel).
v0.10.0minor2026-03-02StralingPlatform

Straling, wetgeving & thema-iconen

  • Nieuw thema "Straling" toegevoegd als placeholder-pagina (ioniserende straling, UV, IR, laser, EMV).
  • Risico-inventarisatie wizard voor Straling (3 vragen: stralingstype, stralingswerkerscategorie, vergunning/melding).
  • Wetgeving, toepasselijke normen en grenswaarden nu zichtbaar op alle 8 thema-pagina's — zowel placeholders als uitgewerkte onderzoeken.
  • Centrale datalaag lib/theme-legal-info.ts met juridische referentiedata voor alle thema's; geen dubbele definities meer.
  • SVG-iconen (Heroicons v2) toegevoegd aan alle themakaarten op de homepagina en aan de pagina-headers.
v0.9.6patch2026-02-27Geluid

Meetplan PDF — rijenaantal per taak op basis van HEG-grootte

  • HEG met 1 medewerker: 3 genummerde invulrijen per taak (norm-minimum §9.3.2).
  • HEG met meerdere medewerkers: 5 genummerde invulrijen per taak (aanbevolen aantal).
  • Altijd 2 extra lege rijen zonder nummer (gestippeld) voor eventuele aanvullende metingen.
  • Vereistenvak per taak toont nu ook het aanbevolen aantal bij meerdere medewerkers.
v0.9.5patch2026-02-27Geluid

Correctie meetduur-berekening (§9.3.2) + inklapbare tabel

  • Bugfix: minimale meetduur per meting was omgekeerd berekend. Correct conform §9.3.2 NEN-EN-ISO 9612: T_m ≥ 5 min → min. 5 min per meting; T_m < 5 min → volledige taak meten.
  • Gecorrigeerd in stap 8 (tabel), stap 9 (HEG-kaarten) en de Meetplan PDF.
  • Voetnoot aangepast: "* Taakduur < 5 min: meet de volledige taak".
  • Meetduur-vereistentabel in stap 8 is nu inklapbaar.
v0.9.4patch2026-02-27Geluid

Meetduur-vereistentabel in stap 8 (Meetresultaten)

  • Tabel "Meetduur-vereisten per HEG" toegevoegd aan stap 8 (Meetresultaten), boven de HEG-accordeons.
  • Toont per taak (strategie 1) of per HEG (strategie 2/3) de minimale meetduur per meting en het vereiste minimum aantal metingen.
  • Werkelijk ingevoerd aantal metingen wordt live bijgehouden met groen ✓ zodra aan het minimum is voldaan.
v0.9.3patch2026-02-27Geluid

Meetplan PDF — afdrukbaar veldregistratieformulier

  • Knop "Meetplan PDF" toegevoegd aan stap 7 (Meetresultaten) van het geluidsonderzoek.
  • Genereert een afdrukbaar A4-formulier per HEG met lege invulrijen voor L_p,A,eqT, L_p,Cpeak, duur, medewerker en opmerkingen.
  • Per taak (strategie 1) of per HEG (strategie 2/3) staan de NEN-EN-ISO 9612-minimumeisen vermeld (§9.3.2 / §10.4 / §11.4).
  • Kalibratiestabel per meetreeks met kolommen voor voor- en nakalibratie, drift en voldoet-check (< 0,5 dB).
  • Ondertekeningsblok en opmerkingenregels voor afwijkingen van representatieve omstandigheden (§15.d.4).
v0.9.2patch2026-02-27Geluid

Meetduur-overzicht per HEG en meetreeks in geluidsonderzoek

  • Stap 8 (Statistieken) toont nu per HEG een meetduur-overzicht conform NEN-EN-ISO 9612 §9.3.2 / §10.4 / §11.4.
  • Strategie 1 (taakgericht): vereiste minimum meetduur en aantal per taak (≥ max(T_m, 5 min) × ≥ 3), met werkelijk n en totaal per taak.
  • Strategie 2/3 (functiegericht / volledige dag): vereiste minimum steekproeven (≥ 3 × T_e) met werkelijk n.
  • Per meetreeks: verwachte meetduur per meting en werkelijke totaalduur (indien meetduur ingevoerd in stap 7).
  • Norm-minimum-markering (*) wanneer taakduur < 5 min.
v0.9.1patch2026-02-27Geluid

Meetprocedure-handreiking in geluidsonderzoek

  • Informatievak (§9.2 / §9.3 / §12.2 / §15.d NEN-EN-ISO 9612) toegevoegd aan stap 7 (Meetreeksen) en stap 8 (Statistieken) van het geluidsonderzoek.
  • Handreiking omvat: minimale meetduur (≥ 5 min), stabiliteitcriterium (0,2 dB / 30 s), microfoonpositie, representatieve meetomstandigheden en kalibratie-eisen.
v0.9.0minor2026-02-26Platform

Authenticatie, rollen en server-side opslag

  • Inloggen en registreren via e-mail en wachtwoord (Supabase Auth).
  • Drie gebruikersrollen: admin, test-gebruiker en gebruiker — rol automatisch toegewezen bij registratie.
  • Alle onderzoeken (geluid, klimaat, fysieke belasting, gevaarlijke stoffen) worden voortaan opgeslagen in de cloud (Supabase PostgreSQL) in plaats van localStorage.
  • Row Level Security: gebruikers zien uitsluitend eigen onderzoeken; admins kunnen alle onderzoeken inzien (alleen-lezen).
  • Beheerderspaneel (/admin): gebruikersoverzicht met inline rolwijziging, verwijderactie en onderzoekaantallen.
  • Gebruikersdetailpagina: alle onderzoeken van een gebruiker met uitklapbare JSON-weergave.
  • Navbar uitgebreid met gebruikersindicator, uitlogknop en admin-link (alleen zichtbaar voor admins).
  • Routebeveiliging via proxy.ts: niet-ingelogde bezoekers worden doorgestuurd naar de inlogpagina.
  • Homepagina auth-aware: niet-ingelogde bezoekers zien een welkomstpagina met CTA.
v0.8.0minor2026-02-26TrillingenBiologische agentiaVerlichting

Placeholders: Trillingen, Biologische agentia, Verlichting

  • Nieuw thema "Trillingen" toegevoegd met volledige risico-inventarisatie wizard (HAV/WBV, Richtlijn 2002/44/EG, Arbobesluit art. 6.11a–6.11g).
  • Placeholder-pagina voor Trillingen-onderzoeksinstrument: grenswaarden HAV/WBV, geplande 11 stappen (ISO 5349-1/2, ISO 2631-1).
  • Placeholder-pagina voor Biologische agentia-onderzoeksinstrument: risicoklassen 1–4, geplande 10 stappen (Richtlijn 2000/54/EG, Arbobesluit art. 4.85–4.114).
  • Placeholder-pagina voor Verlichting-onderzoeksinstrument: grenswaarden lux/UGR/Ra, geplande 11 stappen (NEN-EN-12464-1:2021, Arbobesluit art. 6.29–6.32).
v0.7.0minor2026-02-26Fysieke belasting

Fysieke belasting onderzoek (11 stappen)

  • 11-stappen workflow voor fysieke belastingonderzoek conform ISO 11228-1/2/3, EN 1005-3/4 en Arbobesluit art. 5.1–5.6.
  • Vooronderzoek (18 gewogen vragen) met automatische meetaanbeveling per belastingtype.
  • Belastingsgroepen (BG): definieer homogene werknemersgroepen met geslacht, uren per dag en aantallen.
  • NIOSH-methode voor tillen en dragen: volledige RWL-berekening (Hf × Vf × Df × Ff × Af × Cf) met tilverzwaarende-omstandighedenvlaggen.
  • ISO 11228-2 / DUTCH-methode voor duwen en trekken: referentiekrachten per hendelhoogte en rijbaangesteldheid.
  • OCRA Checklist (ISO 11228-3) voor repeterende handelingen: CF + FaF × (PF + RF + AddF) met live score-preview.
  • EN 1005-4 / ISO 11226 houdingsbeoordeling: verdietoets per lichaamsdeel × frequentie × statisch/dynamisch.
  • EN 1005-3 krachtenbeoordeling: F_Br = F_B × m_v × m_f × m_d met referentiekrachten voor 10 veelvoorkomende handelingen.
  • Automatisch gegenereerde beheersmaatregelen (TOP-principe) op basis van gevonden risico's.
  • Rapport met Arbeidshygienische Strategie-toelichting en kopieerknop.
v0.6.0minor2026-02-26Klimaat

Klimaatonderzoek (13 stappen)

  • 13-stappen workflow voor klimaatonderzoek conform NEN-EN-27243, ISO 7933 (PHS), ISO 7730 (PMV/PPD) en Arbobesluit art. 3.1g/6.1.
  • Vooronderzoek met WBGT-schatting en geautomatiseerde meetaanbeveling.
  • Meetstrategiebepaling: werkplek- of taakgericht conform NEN-EN-27243.
  • Meetapparatuur registratie (kalibratie, herkalibratie, drift-controle).
  • WBGT-berekening voor binnen en buiten, met metabole warmteproductie per activiteitsniveau.
  • PMV/PPD-berekening conform ISO 7730 met comfort-categorie (A/B/C).
  • Hittestress (PHS-methode): Dsweat, Tre, WBGT-grenswaarden per acclimatisatie en kledingfactor.
  • Koude-beoordeling: IREQ (vereiste isolatiewaarde) en windchill.
  • Automatisch gegenereerde beheersmaatregelen (TOP-principe).
  • PDF-rapport met volledige meetdocumentatie.
v0.5.0minor2026-02-25PlatformGeluid

Dark mode & app-menu

  • Schakelaar in de header voor dag- en nachtmodus (voorkeur wordt opgeslagen).
  • App-menu met "Over de app" en placeholder voor Instellingen.
  • Versiebeheerpagina (deze pagina).
  • Veld "Rol in onderzoek" toegevoegd aan respondenten in Stap 1.
  • Adres verborgen bij anonieme respondenten (naast e-mail en telefoon).
v0.4.0minor2026-02-20Geluid

Arbeidsmiddelen, meetreeksen & respondenten

  • Nieuwe Stap 5 — Arbeidsmiddelen: registreer voertuigen, machines en gereedschap met keurings- en onderhoudsstatus (Arbobesluit art. 7.18 / Machinerichtlijn 2006/42/EG).
  • Taken kunnen nu worden gekoppeld aan een of meer arbeidsmiddelen.
  • Taken kopiëren van de ene HEG naar een andere met één klik.
  • Stap 6 (Meetreeksen): meetreeks als eerste-klasse entiteit met voor- en nakalibratie, tussentijdse herkalibratie en automatische uitsluiting bij drift > 0,5 dB.
  • Respondenten (al dan niet anoniem) toegevoegd aan Stap 1.
  • E-mailadres en telefoonnummer voor alle personen (uitvoerders, opdrachtgevers, respondenten).
  • Stap-nummering doorgeschoven naar 11 stappen totaal.
v0.3.0minor2026-01-15Geluid

Volledig geluidsonderzoek (10 stappen)

  • 10-stappen workflow voor geluidsonderzoek conform NEN-EN-ISO 9612:2025.
  • Taakgebaseerde en functiegerichte meetstrategie.
  • HEG-beheer, meetdata, statistieken, beoordeling en maatregelen.
  • PDF-export van het volledige rapport.
  • Opslagbeheer via localStorage.
v0.2.0minor2025-12-10GeluidBio-agentiaGevaarlijke stoffenVerlichtingFysieke belastingKlimaat

Thema-wizards

  • 6 risico-inventarisatie wizards: Geluid, Bio-agentia, Gevaarlijke stoffen, Verlichting, Fysieke belasting, Klimaat.
  • Wizard-engine met conditionele vragen, vertakking en risicobeoordeling.
  • Volledig uitgewerkte wizard voor Gevaarlijke stoffen (inclusief CMR-branching).
v0.1.0minor2025-11-28Platform

Initiële release

  • Next.js 16 (App Router, Turbopack) projectstructuur.
  • Basis navigatie, themaselectie en statische paginastructuur.
  • Tailwind CSS dark-mode ondersteuning via OS-voorkeur.
← Terug naar home