Notes de version
Version 1.0.0
Ce qui a changé dans GripIQ 1.0.0 (2026-05-12).
De eerste stabiele release van GripIQ: een fors uitgebreid beheerpaneel, snellere pagina’s voor eindgebruikers, krachtigere filters en een stevige beveiligingsupgrade.
Forse beveiligingsupgrade
Section intitulée « Forse beveiligingsupgrade »Wachtwoorden moeten voldoen aan OWASP-regels inclusief een check tegen bekende datalekken. Voor lokale registratie is e-mailverificatie verplicht; Azure-aangemelde gebruikers worden automatisch als geverifieerd behandeld. SSRF, XXE en SQL-injectie zijn afgesloten in sitemap-, website- en social-fetchers. Login- en password-reset-throttling kijken nu naar de combinatie (IP, e-mail), en response-hardening-headers met een strakkere CSP zijn standaard actief.
Snellere pagina’s door progressief laden
Section intitulée « Snellere pagina’s door progressief laden »Pagina’s laden niet meer in één blok, maar in lagen: KPI’s verschijnen direct, grafieken en lijsten komen erna binnen. Chart.js wordt voortaan per route lazy ingeladen, en blokken onder de vouw laden pas zodra ze in beeld komen. Statische enums worden één keer opgehaald en daarna gecached. Dashboard- en navigatietellers updaten direct na een wijziging.
Krachtigere filters op Prompts, Insights en Competitors
Section intitulée « Krachtigere filters op Prompts, Insights en Competitors »Op Prompts kunnen meerdere statussen en tags tegelijk geselecteerd worden, en op Insights staat de filterbalk bovenaan met een statusslider en multi-select. Competitors heeft multi-select voor Brand, infinite scroll in de feed, en een segmented-control die per filter te wissen is. Alle widgets onder de filterbalk respecteren voortaan elke ingestelde filter, en de slider klikt netjes terug naar “Alle”.
Klikbare KPI-kaarten en duidelijkere Share of Voice
Section intitulée « Klikbare KPI-kaarten en duidelijkere Share of Voice »De KPI-kaarten op het Overzicht zijn nu interactief — een klik leidt naar de bijbehorende detailweergave. Share of Voice is duidelijker gelabeld en gedragen: rijen tellen voortaan correct op tot 100%. Help-tooltips bij de visibility-cijfers op Prompts leggen uit welk oppervlak elke meting precies dekt.
Overige wijzigingen
Section intitulée « Overige wijzigingen »- Tags voor Prompts kunnen nu beheerd worden met kleurkiezer en management-UI.
- “New”-KPI op Insights dekt zowel Draft als Published; het menubadge telt alleen onopgeloste insights en “ignored” wordt als gesloten gedimd.
- Visibility-KPI, rankings en trend op de Prompt Show-pagina volgen voortaan de ingestelde
date_range. - Brand-mentions op Prompts worden geteld via
mentioned_brand_idsin plaats van substring-matching, wat foutieve treffers voorkomt. - Socials toont alle platforms zonder hardcoded allowlist; hydratie van
brand.platformsen platform-stats alsEnumFieldvoorkomt crashes op/social. - Achtergrond-crawls op Socials draaien in blokken van 10 accounts voor stabielere doorlooptijden.
- Diverse UI-fixes: Dialog forwardt
$attrs, kaartschaduwen volgen de afgeronde hoeken, en de geestlijn aan de linkerrand van de Prompts-tabel is weg. - SSRF in sitemap-, website- en social-image-fetchers is afgesloten en deze paden gaan voortaan via
SafeHttp. - Sitemap-XML-parsing is gehard tegen XXE en zip-bom-DoS; raw-SQL-builders staan geen string-interpolatie meer toe.
- Forwarded proxy headers achter de Forge load balancer worden weer correct vertrouwd.
- Beheerders met admin-rechten kunnen geen lokale wachtwoordlogin meer gebruiken — uitsluitend Azure SSO.
- Login- en password-reset-throttling kijken naar (IP, e-mail) in plaats van alleen IP.
- User-invitation mail wordt bepaald op
azure_idin plaats van e-maildomein; Azure-gebruikers worden bij SSO als geverifieerd behandeld met backfill op de kolom. tag_ids exists-regels in vier Form Requests zijn project-scoped om cross-tenant-leakage te voorkomen.- Rate-limiting middleware op de
CreateKeywordAnalysis-job voorkomt overschrijding van DataForSEO-quota. - Achtergrond-jobs zijn ontdubbeld en mogen langer in de wachtrij staan zonder elkaar te blokkeren.
- Cache-invalidatie van
nav_counts,insights_contextenavailable_modelsreageert correct op model-wijzigingen; cache-keys voldoen aan de tenant-scoping-conventie uit ADR-0024. - Vertaalde labels (
$t()/trans()) op enum- en datumvelden, zodat de Nederlandse weergave overal klopt.