# Changelog Alle betekenisvolle wijzigingen worden hier bijgehouden. Het project volgt voorlopig een pre-1.0 semantische versieaanpak. ## 0.2.10 — 2026-07-22 ### Gewijzigd - De officiële Belgische GeoNames-postcodedataset 2026-04-03 is lokaal geladen onder CC BY 4.0; postcode 2400 is gecontroleerd als Mol met benaderend postcodecentrum 51.1919, 5.1166. - Gemeente Mol, Ziekenhuis Geel, lokaal bestuur Geel, Stad Turnhout, Group Renotec, Ravago, Sanofi Geel en DAF Trucks Westerlo zijn als echte, gereviewde bronnen geactiveerd. - Twaalf interessante regionale werkgevers zijn als afzonderlijke, niet-scanbare waaklijst toegevoegd, ook wanneer zij momenteel geen lokale vacature publiceren. - De bronnenpagina toont 21 actieve bronnen, 12 waaklijstwerkgevers en de actieve GeoNames-afstandsstatus; waaklijstbronnen vallen buiten bulkacties en geplande scans. - HTTP-, robots- en IMAP-verbindingen gebruiken expliciet de gepinde `certifi`-CA-bundel met verplichte hostnaam- en certificaatcontrole. Gemeente Mol en Ziekenhuis Geel werken daarmee zonder TLS-bypass. - Celery gebruikt expliciet queue `default`, zodat bronruns en andere standaardtaken daadwerkelijk door de productie-worker worden geconsumeerd. - De fetcher controleert het werkelijk verbonden peer-IP en accepteert daardoor veilige publieke CDN-rotatie zonder de SSRF-blokkade voor private adressen te versoepelen. ### Verificatie - De 8 nieuwe actieve bronnen leverden samen 53 kaarten per cyclus en voltooiden elk twee livecycli zonder parserwarnings; de tweede cycli maakten geen nieuwe dubbelen aan. - GeoNames valideerde 2.781 unieke Belgische postcode-/gemeenterijen; bron- en afgeleide SHA-256-checksums zijn vastgelegd en het actieve profiel is opnieuw gescoord. - 218 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 84,46% branch-aware codedekking; Ruff, Django, migraties, taakledger en repositoryvalidatie zijn groen. - De Codex-browsercontrole bevestigde 21 actieve bronnen, 12 waaklijstkaarten, 8 nieuwe actieve werkgevers, één `h1`, een lege console en geen horizontale overflow op desktop of 390 px. ## 0.2.9 — 2026-07-22 ### Gewijzigd - Het actieve zoekprofiel gebruikt postcode 2400 en een straal van 40 km; de bronnenpagina maakt ontbrekende geocodedata expliciet zonder een afstand te verzinnen. - SCK CEN, Cipal Schaubroeck, VanRoey, NTX/Netropolix en Thomas More zijn als gereviewde werkgeversbronnen rond Mol toegevoegd. - De nieuwe regionale adapter accepteert alleen vijf exacte HTTPS-routes en gebruikt host-, pad-, plaats- en waar nodig werkgever-GUID-filters; login-, apply- en kandidaatendpoints blijven uitgesloten. - Gemeente Mol en Ziekenhuis Geel zijn onderzocht maar niet geactiveerd omdat hun careersites de TLS-certificaatcontrole niet doorstonden. ### Verificatie - De vijf nieuwe bronnen voltooiden twee livecycli zonder parserwarnings; Cipal verwerkte de tweede cyclus correct als HTTP 304. De radar toont 13 actieve bronnen en 210 actieve vacature-aliassen. - 206 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 84,12% branch-aware codedekking. - De Codex-browsercontrole bevestigde postcode 2400, 40 km, 13 bronkaarten, een lege console en geen horizontale overflow op desktop of 360 px. ## 0.2.8 — 2026-07-22 ### Gewijzigd - EuroBrussels en BrusselsJobs zijn uit de actuele platformkeuzes verwijderd; Careerjet, Randstad en Robert Half zijn toegevoegd met hun officiële vacaturealertingangen. - Vijf gereviewde werkgeversbronnen uit de kernregio Hasselt–Genk zijn live toegevoegd: ACA Group, Xplore Group, Universiteit Hasselt, Hogeschool PXL en Ziekenhuis Oost-Limburg. - Zeven eerder toegevoegde werkgevers buiten de regio zijn veilig uitgeschakeld en verborgen, met behoud van historische vacatures en bronprovenance. - De regionale werkgeversadapter beperkt links tot vooraf gereviewde HTTPS-hosts en paden; vacaturedata blijft door bronbeleid, SSRF-validatie en sanitization gaan. ### Verificatie - Alle vijf nieuwe werkgeversbronnen voltooiden twee geslaagde livecycli zonder parserwarnings; samen met VITO, Corda Campus en RPM Europe Logistics zijn 8 bronnen actief en 162 vacature-aliassen beschikbaar. - 200 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 83,90% branch-aware codedekking. - De Codex-browsercontrole bevestigde 9 actuele platformkeuzes, 8 regionale bronkaarten, een lege console en geen horizontale overflow op desktop of 375 px. ## 0.2.7 — 2026-07-22 ### Gewijzigd - Platformmailboxen ondersteunen nu ook LinkedIn, ictjob.be, Jobat, StepStone, EuroBrussels en BrusselsJobs naast VDAB en Indeed. - De bronnenpagina verwijst per jobboard naar de actuele officiële alertconfiguratie; elk platform behoudt een eigen mailbox, interval, status en synchronisatieactie. - Platformgebonden mailimport accepteert uitsluitend gelabelde HTTPS-links op het gekozen jobboarddomein en verwerpt externe tracking-, account-, help-, privacy- en uitschrijflinks. - Alle brede jobboards blijven op de directe-fetchdenylist; VacatureRadar logt alleen in op de mailbox en nooit op het jobboard. ### Verificatie - 192 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 83,61% branch-aware codedekking. - De Codex-browsercontrole bevestigde acht platformkeuzes en alertkaarten, één `h1`, een lege console en geen horizontale overflow op desktop of 390 px. ## 0.2.6 — 2026-07-22 ### Gewijzigd - VDAB en Indeed kunnen elk aan een afzonderlijke Gmail-, Outlook- of aangepaste IMAP-mailbox worden gekoppeld vanuit de bronpagina. - Iedere mailbox kiest een eigen interval van 5 minuten tot 6 uur en kan afzonderlijk worden gewijzigd, gepauzeerd of direct gesynchroniseerd. - App-wachtwoorden worden met een aparte roteerbare MultiFernet-sleutel versleuteld; ciphertext, wachtwoorden en ruwe serverfouten worden niet in de UI, logs of taakresultaten getoond. - De scheduler gebruikt per-mailboxleases en idempotentie per mailbox + Message-ID; een falende mailbox blokkeert andere platformmailboxen niet. - Aangepaste IMAP-hosts worden op publieke DNS/IP-adressen gecontroleerd voordat een TLS-verbinding wordt gestart. ### Verificatie - 178 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 83,56% branch-aware codedekking. - De Codex-browsercontrole bevestigde de platformmailboxformulieren en statussen, één `h1`, een lege console en geen horizontale overflow op desktop of 390 px. ## 0.2.5 — 2026-07-22 ### Gewijzigd - De officiële VDAB-jobalertingang draait standaard eenmaal per dag om 06:15 en is via omgevingsvariabelen configureerbaar. - VDAB-mails krijgen herkenbare provenance en hun vacatures stromen idempotent door de bestaande normalisatie-, dedupe- en rankingpipeline zonder automatische platformfetch. - Mailboxbatches zijn begrensd op aantal en berichtgrootte; een fout of oversized bericht stopt andere mails niet. - De bronpagina toont planning, configuratiestatus, laatste VDAB-import, een handmatige inplanknop en het onderscheid met de officiële VDAB Vacature API waarvoor partnershipgoedkeuring nodig is. ### Verificatie - 164 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 83,55% branch-aware codedekking. - De Codex-browsercontrole bevestigde de dagelijkse VDAB-sectie, officiële links, één `h1`, een lege console en geen horizontale overflow op desktop of 390 px. ## 0.2.4 — 2026-07-22 ### Gewijzigd - De livecatalogus groeit van twee naar tien gereviewde bronnen, met lokale Corda Campus-vacatures en werkgeversfeeds uit Genk, Brussel en België-breed. - Gedeelde ATS-domeinen ondersteunen nu meerdere werkgevers op basis van hun exacte publieke feed-URL zonder records te overschrijven. - De SmartRecruiters-adapter ondersteunt het gedocumenteerde publieke `content`-formaat, stabiele vacaturelinks, locaties, contracttype en remote-status. - Corda Campus heeft een begrensde listingparser die werkgever, titel en regio bewaart en off-domain vacaturelinks weigert. - De bronpagina legt VDAB- en Indeed-ingress via officiële vacaturealerts uit; directe platformcrawling blijft geblokkeerd. ### Verificatie - Acht nieuwe bronnen leverden 84 actuele bronrecords in twee geslaagde livecycli zonder parserwarnings; lokaal staan 10 bronnen actief met 145 actieve vacatures. - 159 tests geslaagd, 2 optionele Playwrightvarianten overgeslagen en 82,91% branch-aware codedekking. - De in-app-browsercontrole vond 10 bronkaarten, 2 platformalertlinks, geen horizontale overflow en geen consolefouten. ## 0.2.3 — 2026-07-21 ### Gewijzigd - Thuislocatie vraagt alleen nog een Belgische postcode; afgeleide gemeente en coördinaten zijn geen handmatige velden meer. - Functietitels, skills, contractvormen, werkmodellen en regio's gebruiken toegankelijke checkboxgroepen met behoud van bestaande waarden. - VITO en Deliverect zijn als gereviewde, functionele werkgeverfeeds toegevoegd en na twee geslaagde cycli geactiveerd. - Recruitee `offers` en de publieke Lever Postings API worden volledig verwerkt, inclusief werkgeveridentiteit, directe-bronmarkering en actuele inventaristelling na HTTP 304. - Robotsredirects worden opnieuw op publieke adressen gevalideerd; de oude fixturebron verdwijnt uit het normale bronoverzicht. ## 0.2.2 — 2026-07-21 ### Gewijzigd - Tweede Stitch-pass (`VR-119`) maakt de aangeleverde schermcompositie leidend in plaats van alleen de kleuren en componenttokens. - De utilitybar bevat nu de brede vacaturezoeker en directe zoekprofielactie uit Stitch. - Dashboard en vacatureoverzicht gebruiken een dichte, enkelkoloms radarfeed met echte scores, datakwaliteit en acties; één resultaat vult niet langer slechts een halve lege grid. - Vacaturedetail heeft een echte intelligence-strip; pipeline, profieleditor, bronnenbeheer en systeemstatus volgen de bijbehorende Stitch-hiërarchie veel directer. - Handmatige import is een compacte disclosure zodat brongezondheid opnieuw de primaire compositie vormt. - Alle zichtbare profieleditorlabels zijn Nederlandstalig en de lokale favicon voorkomt een ontbrekend browserasset. ### Verificatie - 146 tests geslaagd, 2 optionele lokale Playwrightvarianten overgeslagen en 82,02% branch-aware codedekking. - Browsermatrix geslaagd op 1440×900, 1280×800, 1024×768, 768×1024, 390×844 en 360×800, inclusief dark/light, mobiele drawer, één `h1` en geen pagina-overflow. ## 0.2.1 — 2026-07-21 ### Toegevoegd - Productieklare vertaling van de negen Stitch Intelligence Cockpit-schermen naar de bestaande Django-kern. - Gedeelde responsive shell, lokale SVG-iconsprite, donkere en lichte thematokens en toegankelijke mobiele navigatie. - Cockpitdashboard, vacature-intelligentiekaarten/detail, sollicitatiepipeline, gegroepeerde profieleditor, bronkaarten en systeemstatus. - Integratieplan, permanente Stitch-referentie en browservalidatiescreenshots voor zes doelviewports. ### Gewijzigd - Alle kernroutes gebruiken nu één CSP-veilige lokale CSS/JS-laag zonder externe productie-assets. - Bronbeheer is teruggebracht onder de gedeelde shell terwijl import, bulkacties, retry, policy en SSRF-beveiliging intact blijven. - Browseropslag voor themavoorkeur is progressief: opslagbeperkingen veroorzaken geen console- of bedieningsfout. ### Niet overgenomen - Quick/direct apply, fictieve workerstatistieken, onbewezen werkgeversinformatie en kunstmatige activiteitenfeeds. ## 0.1.1 — 2026-07-21 ### Toegevoegd - Releaseverificatie voor productie-kandidaat met `scripts/release_verify.sh`. - Scriptbare smoke voor fixture/import/score/feedback/application/digest. - PostgreSQL back-up + restore smoke met modelcount-validatie op een tijdelijke stack. - Releaseartefacten toegevoegd: package checksum, SBOM, configdiff en upgrade/rollbackpad. - Release- en Unraid-runbook bijgewerkt met expliciet upgrade/rollbackpad. ### Bijgewerkt - Traceability en projectstatus bijgewerkt voor VR-117 voltooiing. ## 0.1.0 — 2026-07-20 ### Toegevoegd - werkende Django/Celery MVP-kern; - bronbeleid en SSRF-veilige fetcher; - JSON-LD, generieke HTML, RSS/Atom en e-mailadapters; - normalisatie, provenance, versies, dedupe en scoring; - zoekprofielen, feedback, digest en sollicitatiedossiers; - responsief design, Docker/Unraid-configuratie en operationele scripts; - autonome Codex-overdracht, taakledger en volledige specificaties; - uitgebreide unit-, integratie- en securitytestset.