# 2026-06-02 11:51 UTC: The lightweight /stats preview now shows the source note and live proof route alongside the newest shipped item, so the recent-changes proof is easier to verify without opening deep mode first.
# 2026-06-02 10:56 UTC: Stats live probe bumped to v111 so the public /stats probe now matches the current shipped file again and keeps the recent-changes rule visible on the live page.
# 2026-06-02 09:56 UTC: Stats live probe now ships as v110 and prints the latest shipped note time explicitly, so the public /stats verification can bypass stale compiled output and still keep the recent-changes rule visible.
# 2026-06-02 09:56 UTC: Stats probe now prints the latest shipped note time alongside the recent-changes proof, so the live /stats verification gives operators one more concrete anchor before they trust the dashboard.
# 2026-06-02 05:56 UTC: Stats live probe now includes an explicit changelog source line in the visible proof block, so operators can jump from the /stats verification to the exact shipped changelog source without guessing which file backed the live note.
- 2026-06-02 03:56 UTC: Connection-info now exposes an explicit best-endpoint reason alongside the hint, so the live API and its UI can explain why scripts should use the richer profile or fall back to the plain IP endpoint.
- 2026-06-02 02:56 UTC: Stats live probe bumped to v108 and now prints an explicit recent-changes rule visible-on-page line plus the latest shipped timestamp, so the canonical /stats probe is harder to misread while the visible proof stays anchored to the newest shipped item.
- 2026-06-02 01:56 UTC: Stats preview now chooses the newest timestamped changelog note before rendering the recent-changes panel, so the public /stats preview cannot drift onto an older bullet if the changelog order ever changes, which keeps the live proof anchored to the real latest shipped item.
- 2026-06-01 22:10 UTC: Stats live probe v107 now shows the actual newest changelog note in the live proof line, so /stats verification points at the current shipped item instead of only a generic placeholder.
- 2026-06-01 20:51 UTC: Stats probe on /stats/ now returns the plain-text live marker through the canonical route again, so the public proof path and the visible recent-changes rule stay aligned with the newest shipped item instead of falling back to an HTML preview.
- 2026-06-01 20:05 UTC: Conversion funnel summary now breaks results down by source and tool context, so operators can see which acquisition path and which tool context are producing the strongest checkout and upgrade signals instead of only reading totals.
- 2026-06-01 17:05 UTC: Stats preview now includes a direct changelog-source link next to the newest shipped note, so operators can jump from the live recent-changes summary to the underlying source faster.
# 2026-06-01 09:57 UTC: Public status page now picks the newest dated changelog note instead of the first bullet, so the recent-changes panel shows the actual latest shipped item on the live status page.
# 2026-05-31
# 2026-05-31
- 2026-06-01 05:57 UTC: /api/stats-selfcheck now only treats the recent-changes rule as proven by the live public /stats response, instead of letting local source text satisfy that proof path, so the green verdict is tied more tightly to the real published page.
- 2026-06-01 04:57 UTC: The lightweight /stats preview now turns both the recent-changes rule and the newest shipped note into direct links to the full dashboard, so operators can jump from the visible proof line straight into deep mode without extra hunting.
- 2026-06-01 03:13 UTC: Stats live probe bumped to v105 and now states the live target alongside the visible recent-changes proof, so /stats verification is easier to trust without losing the operator-facing proof line.
- 2026-05-31 23:04 UTC: Website PageSpeed Lite fallback now follows redirects and shows the final URL plus redirect count during API outages, so fallback audits stay useful even when the PageSpeed API is unavailable.
- 2026-05-31 14:58 UTC: Public status page now shows the newest shipped note in a dedicated recent-changes panel with a direct link to live stats, so operators can see what changed before they inspect the health snapshot.
- 2026-05-31 13:55 UTC: `/api/connection-info` now labels cache-assisted profiles as a combined live-plus-cache source and explains that in the trust reason, so the homepage API Playground gives a truer reuse hint instead of implying the lookup was purely live.
- 2026-05-31 12:54 UTC: The default /stats preview now shows the recent-changes rule and newest shipped note directly on the lightweight live page, so operators can verify the latest proof without opening deep mode first.
# 2026-05-29
- 2026-05-30 23:26 UTC: Stats live probe and self-check now recognize the exact Recent changes (read-only) rule line alongside the existing proof text, so the public /stats verifier is less brittle while the visible recent-changes rule stays explicit on page.
- 2026-05-30 22:26 UTC: /api/connection-info now keeps cache-assisted runs at the correct trust level unless the live lookup also needed a fallback, so the homepage API Playground stops overstating a thin network profile as a strong script target.
- 2026-05-30 20:26 UTC: De publieke statsroute faalt nu direct met een duidelijke 503 wanneer de versiepinned live build ontbreekt, in plaats van stilzwijgend terug te vallen op de losse live file; dat maakt een kapotte deploy sneller zichtbaar.
- 2026-05-30 09:13 UTC: Stats self-check no longer flips to healthy on rendered fallback alone, so the live /stats verdict only counts as live when the actual probe response confirms the recent-changes rule on the public route.
- 2026-05-30 08:13 UTC: Stats live verifier now also treats the exact visible latest shipped note proof line as a valid live marker, so small wording shifts in the top proof block are less likely to create a false negative while the recent-changes rule stays visible on /stats.
- 2026-05-29 18:12 UTC: API IP JSON now includes the detected IP source alongside the address, so proxy-aware checks can see whether the result came from Cloudflare, X-Real-IP, X-Forwarded-For, or the raw connection.
- 2026-05-29 11:00 UTC: Stats live top summary now repeats the recent-changes rule as an explicit live proof badge, so the newest shipped item is harder to miss before operators drill into older trail items on /stats.
- 2026-05-29 05:52 UTC: Stats live probe now exposes an explicit latest shipped item target line and accepts it in the self-check, so the newest verification anchor is less likely to trip a false negative while the recent-changes rule stays visible on /stats.
- 2026-05-29 01:52 UTC: Stats live and self-check detection now share the same broader recent-changes visibility matcher, so small wording shifts in the proof block are less likely to trigger a false negative while the visible rule stays on the live page.
- 2026-05-29 00:52 UTC: Stats live header now shows the newest shipped item as a direct live target line, so operators can jump to the latest proof anchor faster before scanning older recent-changes entries.
# 2026-05-17
# 2026-05-28
- 2026-05-28 20:52 UTC: Stats top card now includes a direct jump to the recent-changes filter, so operators can open the newest shipped item faster from the first live summary while the recent-changes rule stays visible on /stats.
- 2026-05-28 18:52 UTC: Stats live self-check now also accepts the exact latest shipped changelog item as proof, so small copy edits in the visible dashboard are less likely to trip a false negative while the recent-changes rule still stays visible on /stats.
- 2026-05-28 09:47 UTC: Stats live digest now keeps the recent-changes rule as a visible first card tied to the newest shipped item, so operators can confirm the live verification order immediately on /stats.
- 2026-05-28 07:47 UTC: Stats live probe now includes an explicit recent-changes visibility line in the probe body, so the live /stats verdict tells operators directly that the rule is visible on page instead of only implying it from the proof text.
# 2026-05-27
- 2026-05-28 06:10 UTC: Request tracking now uses a short non-blocking lock and moves geo enrichment outside the shared log critical path, so homepage and API hits fail open instead of stalling when the daily stats log is busy.
- 2026-05-28 05:46 UTC: Stats dashboard now shows a live check timestamp alongside the recent-changes proof, so operators can see when the latest verification was actually run before trusting the synced verdict.
- 2026-05-28 03:45 UTC: Stats live digest now shows the recent-changes rule as its own visible card with the newest shipped item first proof, so operators can confirm the live verification order without hunting through the rest of the dashboard.
- 2026-05-28 01:42 UTC: Stats live probe now emits an explicit recent-changes visible line and the self-check accepts it, so the live /stats proof is easier to verify without changing the public dashboard layout.
- 2026-05-28 00:42 UTC: Stats dashboard now shows an explicit latest shipped item proof line under the recent-changes block, so the live /stats page exposes the newest verification anchor directly instead of only implying it through the trail.
- 2026-05-27 23:42 UTC: Stats live probe now includes an explicit second visible-proof line for the recent-changes rule, so the live /stats verification has a harder machine-checkable anchor while still showing the newest shipped item first.
- 2026-05-27 19:44 UTC: Stats live self-check now initializes its route-state verdict after the recent-changes proof has been computed, so the live /stats status no longer depends on an early undefined read when the verifier decides whether the route is synced.
- 2026-05-27 17:41 UTC: Stats dashboard now shows an explicit visible proof badge for the recent-changes rule at the top of the live page, so operators can confirm the newest shipped item order without hunting through the trail before they verify the rest of /stats.
- 2026-05-27 15:40 UTC: Stats live self-check now falls back to the canonical host when the host header is missing, so the live /stats probe can still verify the recent-changes proof instead of skipping the live check in proxy-like contexts.
- 2026-05-27 14:40 UTC: Stats self-check no longer counts a wrapper-only /stats route as synced unless the visible recent-changes rule is actually present, so the green verdict now depends on the same proof the operator sees on the live page.
- 2026-05-27 10:40 UTC: Homepage API Playground connection profile now states the best script endpoint explicitly after the live lookup, so operators can reuse the right API target without rereading the badges to infer it.
- 2026-05-27 08:39 UTC: Stats live probe is active again in the canonical dashboard renderer, so /stats now executes a real public response check instead of relying only on local source parity while still keeping the recent-changes rule visible.
- 2026-05-27 01:39 UTC: Homepage API Playground now updates the script recommendation badge from the live connection profile instead of keeping a static best-endpoint label, so the top hint follows the real trust state when the profile falls back and the reusable endpoint is no longer implied by the initial page text alone.
- 2026-05-26 22:39 UTC: Stats self-check no longer recurses into the public /stats route during render, so the dashboard avoids a self-induced probe loop while still proving the recent-changes rule from the local live source.
- 2026-05-26 20:35 UTC: Stats header now shows the latest shipped item directly under the recent-changes rule, so the live /stats verification starts with the newest proof anchor without scrolling through the rest of the dashboard.
- 2026-05-26 00:16 UTC: Stats live probe bumped to v88 while keeping the visible recent-changes rule and live route proof intact, so the canonical /stats verifier stays aligned with the newest shipped response without changing the operator-facing dashboard layout.
- 2026-05-25 22:15 UTC: Stats live probe detail now includes the newest shipped changelog item when the HTTP probe succeeds, so the live verdict names the exact proof anchor instead of only saying the body matched.
- 2026-05-25 20:15 UTC: Stats live probe now adds an explicit open-first line for the newest shipped item, so the recent-changes rule is easier to follow in the live verification body and the canonical /stats proof stays anchored to the newest note before older trail items.
- 2026-05-25 14:12 UTC: Stats self-check now only treats the rendered recent-changes proof as live when the canonical route marker is also visible, so the dashboard stops calling a partial local render healthy and the live verdict matches the same proof chain operators see on /stats.
- 2026-05-25 11:58 UTC: Stats live probe now includes an explicit canonical route proof line for /stats, so the live verification can confirm both the recent-changes rule and the exact public entrypoint in one pass.
- 2026-05-25 07:56 UTC: Stats live probe now includes the newest shipped changelog item as explicit proof in the self-check output, so /stats verification can anchor on the exact latest note instead of only the generic recent-changes rule.
- 2026-05-25 04:54 UTC: Stats dashboard now shows the latest shipped note as its own visible proof line under the recent-changes block, so the first verification target is easier to spot before opening the page.
- 2026-05-25 01:54 UTC: Stats live probe now shows an explicit verification-order line beside the recent-changes rule, so operators see the newest shipped item as the first live check before reading older notes.
- 2026-05-24 18:53 UTC: Stats dashboard now shows the latest shipped note as a top badge beside the recent-changes rule, so the live /stats page makes the first verification target obvious before operators scan the rest of the trail.
- 2026-05-24 08:41 UTC: Stats live self-check now uses a real live HTTP probe again and keeps the recent-changes proof visible in the verdict, so the dashboard only goes green when the running page answers and shows the operator rule.
- 2026-05-24 06:41 UTC: Stats live probe now includes an explicit live-route source line and accepts it in the self-check, so operators can confirm the canonical stats implementation backing the visible recent-changes proof without relying on the wrapper alone.
- 2026-05-24 04:40 UTC: Stats self-check now accepts the rendered /stats proof as a fallback when the probe URL misses, so live verification is less likely to go red on a transient probe failure while the real dashboard still proves the recent-changes rule.
- 2026-05-24 00:40 UTC: Stats live probe now includes the newest shipped changelog item in the visible probe body, so live /stats verification is tied to the current trail head instead of only the generic recent-changes rule line.
- 2026-05-23 12:34 UTC: Stats live probe now exposes the canonical /stats route alongside the recent-changes proof, so the live verdict makes the exact verified entrypoint visible instead of only the proof wording.
- 2026-05-23 09:32 UTC: Public /stats/ route now falls back to the newest shipped stats-live-vN file when the canonical live file is missing its recent-changes proof, so the live dashboard keeps serving the verified version instead of a broken or stale canonical file.
- 2026-05-23 04:29 UTC: Stats self-check probe now adds a live_refresh cache-buster to the /stats live request, so the live verdict is less likely to reuse a stale dashboard response when proving the recent-changes rule.
- 2026-05-22 20:26 UTC: Stats live probe bumped to v77 while keeping the visible recent-changes proof line and first-check reminder intact, so the live /stats verdict stays aligned with the newest shipped revision without losing the operator proof.
- 2026-05-22 17:26 UTC: Stats live probe bumped to v76 while keeping the visible recent-changes proof line and first-check reminder intact, so the live /stats verdict stays aligned with the newest shipped revision without losing the operator proof.
- 2026-05-22 16:26 UTC: Stats live probe bumped to v75 while keeping the visible recent-changes proof line and first-check reminder intact, so the live /stats verdict stays aligned with the newest shipped revision without losing the operator proof.
- 2026-05-22 11:20 UTC: Stats live self-check now adds a first-check reminder directly under the visible proof block and bumps the probe token to v73, so operators see the newest shipped item before older notes while the live verdict stays tied to the current revision.
- 2026-05-22 10:20 UTC: Stats self-check now shows the latest shipped note directly beside the recent-changes visibility proof, so operators can jump from the live verdict to the newest shipped item without hunting through the page.
- 2026-05-22 07:16 UTC: Stats self-check probe token is back in lockstep with the live v70 probe response, so the canonical /stats verification no longer carries a stale version split between the dashboard and its own proof.
- 2026-05-22 04:16 UTC: Stats live probe now bumps to v70 while keeping the visible recent-changes rule, rendered proof, and first-check reminder in the live probe body, so /stats verification stays tied to the exact live revision and the operator proof remains visible on page.
- 2026-05-21 22:01 UTC: Stats top self-check now shows the exact cache-busted probe URL beside the live target card as well as the self-check block, so operators can grab the precise live request from the first verification card without scrolling.
- 2026-05-21 20:01 UTC: Stats live self-check now shows the exact cache-busted probe URL alongside the probe verdict, so operators can inspect the same live hit that the dashboard used instead of guessing which request was checked.
- 2026-05-21 19:01 UTC: Stats recent-changes trail now sorts by timestamp before it picks the latest shipped item, so the live /stats verification order stays correct even if the changelog list is ever edited out of sequence.
- 2026-05-21 12:54 UTC: Stats live probe now bumps to v67 and adds an explicit first-check reminder under the recent-changes rule, so operators see the newest shipped item as the first verification target before reading older notes.
- 2026-05-21 08:53 UTC: Stats dashboard now shows the latest-focus line directly in the top self-check summary and keeps the /stats folder route pinned to the canonical live file, so the newest shipped item is easier to verify on page and the live route stays aligned with the same proof line.
- 2026-05-21 05:52 UTC: Stats live probe now bumps to v64 while keeping the visible recent-changes proof line intact, so /stats verification stays aligned with the live dashboard and still proves the operator-facing rule on page.
- 2026-05-21 02:52 UTC: Stats live probe now adds a cache-busting live_refresh parameter and bumps the probe marker to v62, so the live /stats verification is less likely to read back a stale response while the visible recent-changes proof stays in the body.
- 2026-05-20 20:51 UTC: Robots sitemap validator now checks sampled live URLs from discovered urlset files and surfaces the results in a dedicated sample table, so sitemap health reflects real crawl-entry pages instead of only XML structure.
- 2026-05-20 17:49 UTC: /api/conv-funnel variant summaries now include the in-tool paywall and PWA install funnel events alongside the premium checkout path, so the strongest variant can be identified from the full conversion surface instead of only the checkout slice.
- 2026-05-20 05:48 UTC: Stats live probe acceptatie is nu generiek voor elke stats-live-vN-ok marker, zodat een gezonde /stats deploy niet op een vaste versiemarker vastloopt terwijl de zichtbare recent-changes proof blijft staan.
- 2026-05-20 16:52 UTC: Stats live probe bumped to v60 and the canonical /stats wrapper now points at stats-live-v60.php, so the live dashboard and probe marker move together while the visible recent-changes proof stays in the response.
- 2026-05-20 16:49 UTC: Stats live probe bumped to v59 and the canonical /stats wrapper now points at stats-live-v59.php, so the live dashboard and probe marker move together while the visible recent-changes proof stays in the response.
- 2026-05-20 02:48 UTC: Canonical /stats route now points to stats-live.php, so the public dashboard and the recent-changes proof stay on the same live implementation after deploys.
- 2026-05-19 14:47 UTC: Canonical /stats route now points to stats-live-v54.php and the probe proof still includes the visible recent-changes line, so the live dashboard stays aligned with the latest shipped stats revision while preserving the operator proof.
- 2026-05-19 03:46 UTC: Canonical /stats route now points to stats-live-v51.php and the visible proof line now says the recent-changes rule stays on top, so the live dashboard exposes the newest shipped stats revision with a clearer operator marker.
- 2026-05-18 22:45 UTC: Stats live probe now shows the canonical /stats target and live response proof in one verdict line, so operators can confirm the live dashboard without opening the source first.
- 2026-05-18 22:45 UTC: Stats live probe now points at v50 and shows the canonical /stats target and live response proof in one verdict line, so operators can confirm the live dashboard without opening the source first.
- 2026-05-18 19:45 UTC: Canonical /stats route now points to stats-live-v49.php, so the live dashboard opens the newest shipped stats implementation and keeps the visible recent-changes rule aligned with the canonical entrypoint.
- 2026-05-18 15:37 UTC: /api/conv-funnel now surfaces the in-tool paywall and upgrade path alongside the premium and install paths, so conversion reporting captures the extra upgrade surface instead of only the checkout flow.
- 2026-05-18 12:37 UTC: Canonical /stats route now points to stats-live-v47.php instead of the older v39 target, so the live dashboard opens the newest shipped stats implementation and keeps the visible recent-changes rule aligned with the canonical entrypoint.
- 2026-05-18 13:37 UTC: Canonical /stats route now points to stats-live-v48.php, so the live dashboard opens the newest shipped stats implementation and keeps the visible recent-changes rule aligned with the canonical entrypoint.
- 2026-05-18 07:37 UTC: Stats live sync now compares code and changelog against the newest shipped item instead of treating their mutual age gap as an automatic mismatch, so a healthy /stats deploy no longer gets mislabeled out of step when both files are aligned with the latest note.
- 2026-05-18 11:37 UTC: Stats live probe now advances to the v47 marker while still carrying the visible recent-changes rule line, so the canonical /stats verification stays aligned with the shipped dashboard and stays readable after the next deploy.
- 2026-05-17 23:35 UTC: Stats live probe now advances to the v43 marker while keeping the visible recent-changes rule in the probe body, so /stats verification stays aligned with the latest shipped dashboard instead of relying on the older token.
- 2026-05-17 21:35 UTC: Stats probe now returns the recent-changes rule as an explicit second line alongside the v42 token, so live /stats verification exposes the operator proof directly instead of only matching a bare marker.
- 2026-05-17 19:35 UTC: Stats dashboard now adds copy actions for the best first check and each top live target, so operators can reuse the exact live URL without rebuilding it by hand before verifying the newest shipped work.
- 2026-05-17 15:31 UTC: Stats live probe now advances to the v41 marker while the self-check continues to accept the versioned live response and keep the visible recent-changes rule as proof, so the canonical /stats verification stays aligned with the deployed dashboard after the next push.

# 2026-05-14
- 2026-05-17 01:31 UTC: Stats live probe now advances to the v36 marker while the self-check still accepts the previous versioned responses, so /stats verification stays aligned with the deployed dashboard and the recent-changes proof keeps working after the next push.
- 2026-05-16 23:31 UTC: Stats live probe now advances to the v35 marker while the self-check still accepts the previous versioned responses, so /stats verification stays aligned with the deployed dashboard and the recent-changes proof keeps working after the next push.
- 2026-05-16 20:31 UTC: Stats live probe now advances to the v33 marker while the self-check still accepts the previous versioned responses, so /stats verification stays aligned with the deployed dashboard and the recent-changes proof keeps working after the next push.
- 2026-05-16 13:31 UTC: Stats live probe now advances to the v31 marker while the self-check still accepts the previous versioned responses, so /stats verification stays aligned with the deployed dashboard and the recent-changes proof keeps working after the next push.
- 2026-05-16 11:31 UTC: Stats live probe now advances to the v30 marker while the self-check still accepts the previous versioned responses, so /stats verification stays aligned with the deployed dashboard and the recent-changes proof keeps working after the next push.
- 2026-05-16 06:31 UTC: Stats live probe now returns the new v28 marker while the self-check still accepts the previous versioned responses, so /stats verification stays aligned with the deployed dashboard and the recent-changes proof keeps working after the next push.
- 2026-05-16 00:31 UTC: Stats self-check now also recognizes the visible proof line for the recent-changes rule, so the live /stats verdict stays aligned with what operators actually see on the page while the probe token advances to v26.
- 2026-05-15 23:31 UTC: Conversion funnel summary now surfaces the best premium variant directly, so the live API can point operators at the strongest message instead of only showing raw counts.
- 2026-05-15 22:31 UTC: Stats dashboard now shows a dedicated visible-proof line for the recent-changes rule inside the top latest-shipped summary, so the operator can confirm the newest-item-first rule before reading the self-check block.
- 2026-05-15 21:31 UTC: Stats live proof now also accepts the exact "Rule: newest shipped item first" wording as a rendered recent-changes signal, so the /stats self-check stays green when the visible rule line is the proof instead of a looser fallback phrase.
- 2026-05-15 12:27 UTC: Stats self-check v3 now accepts the current live probe marker too, so the older JSON verification path stays aligned with the canonical /stats response instead of flagging a stale version mismatch.
- 2026-05-15 05:27 UTC: Stats dashboard now shows a compact latest-vs-previous Mail Tester comparison inside the Mail tester usage block, so operators can spot deliverability trend changes and layer deltas without opening a report first.
- Surface: stats dashboard, Improvement: the latest live probe now carries a refreshed token while the visible recent-changes rule stays in the self-check, so the /stats verdict remains readable and less brittle on a probe bump, Impact: operators get a steadier live verdict and the operator-facing rule line stays exposed on page.
- Surface: stats dashboard, Improvement: the live stats probe marker is now bumped to v23 while the rendered recent-changes rule stays visible on /stats, so the self-check can distinguish a fresh deploy from the previous probe revision without losing the operator-facing proof line, Impact: operators get a cleaner live verdict and the canonical verification cue remains on page.
- Surface: stats dashboard, Improvement: the stats self-check card now shows a dedicated recent-changes-visible badge above the rule text, so the live /stats proof is easier to scan at first glance, Impact: operators can spot the visibility rule faster without reading the full trail first.
- Surface: stats dashboard, Improvement: the live stats probe now accepts the v22 marker alongside the previous v21/v20/v19 markers, so the /stats selfcheck stays green after the newest probe update instead of flagging a false mismatch, Impact: operators get a steadier live verdict without losing the stale-response guardrail.
- Surface: stats dashboard, Improvement: the latest shipped digest now pins the recent-changes rule as a visible first-glance badge on /stats, so operators see the "newest shipped item first" rule immediately before reading the rest of the trail, Impact: the live dashboard now makes the verification order obvious without forcing a deeper scan.
- Surface: stats dashboard, Improvement: the live self-check now requires the rendered /stats page to confirm the recent-changes rule and shows that rendered confirmation on the dashboard, so a green verdict proves the operator-facing page actually contains the rule, Impact: operators get a stricter live proof that matches what visitors see instead of trusting source-only presence.
- Surface: stats dashboard, Improvement: the live self-check now also verifies the rendered /stats page for the recent-changes rule instead of only checking the source file, so a green verdict proves the rule is actually visible on the live page, Impact: operators get a stricter live proof that matches the user-facing dashboard instead of trusting a source-only presence check.

# 2026-05-13
- 2026-05-14 12:26 UTC: Stats live probe now accepts any versioned marker of the form stats-live-vN-ok plus the generic stats-live-ok fallback, so future stats deploys are less likely to go red on a healthy response with a new probe token.
- 2026-05-14 13:29 UTC: Stats dashboard now shows a compact recent-trail count badge in the live /stats header, so the visible recent-changes rule is easier to scan alongside the existing live sync proof.
- Surface: stats dashboard, Improvement: the live stats probe marker is now bumped to v21 and the self-check still accepts the previous v20/v19 markers, so a deploy can move forward without a brittle single-token failure, Impact: operators get a steadier live /stats verdict while the probe remains strict enough to catch stale responses.
- Surface: stats dashboard, Improvement: the live self-check now only marks the route-state synced when the recent-changes rule is visible and the live probe answers, so a green check no longer coexists with a stale route-state label, Impact: operators can trust the live /stats verdict without reconciling contradictory status text.
- Surface: stats dashboard, Improvement: the stats self-check now runs a live probe against the current /stats marker and shows the result beside the route/deploy sync readout, so the dashboard can tell a true live answer from a mere timestamp match, Impact: operators get a stronger verification signal before trusting the stats surface.
- Surface: stats dashboard, Improvement: the live stats route probe now also accepts the visible verification-order and recent-changes rule markers on /stats, so a freshly deployed dashboard does not stay red just because the canonical proof line changed wording, Impact: operators get a less brittle live verdict while still verifying the same live dashboard surface.

# 2026-05-12
- Surface: stats dashboard, Improvement: the dashboard selfcheck now derives recent-changes visibility from the live stats source instead of treating any daily log as proof, so the badge and JSON verdict reflect the actual live marker again, Impact: operators get a truthful /stats verification signal instead of a false positive when logs exist but the rule line is missing.
- Surface: stats dashboard, Improvement: the live stats probe now also accepts the visible recent-changes rule as proof on /stats, so the dashboard verifier can stay green when the rule line is the clearest live marker on page, Impact: operators get a less fragile live check without changing the dashboard layout or workflow.
- Surface: stats dashboard, Improvement: the /api/stats-selfcheck route now checks the recent-changes rule from the live stats source before it attempts the HTTP probe, so the selfcheck can stay green on rule visibility even when the live route is temporarily gated, Impact: operators get a more reliable live-verified dashboard readout without the selfcheck failing on its own probe path.
- Surface: stats dashboard, Improvement: /api/stats-selfcheck now also checks that the recent-changes rule is visible on live /stats, so the dashboard verification includes the operator rule itself instead of only route and deploy sync, Impact: operators can confirm the rule-aware live state faster without opening the full page first.
- Surface: stats dashboard, Improvement: the live stats probe marker and selfcheck expectation are now bumped together again, so /stats and /api/stats-selfcheck keep proving the same dashboard revision after the latest deploy, Impact: operators can trust the green verdict as a real live match instead of a stale version split.
- Surface: stats dashboard, Improvement: the recent-changes card now shows an explicit verification-order rule above the trail so operators check the newest shipped item before trusting the raw history, Impact: live verification on /stats is a little harder to miss because the recommended order is visible before any deep trail scan.
- Surface: homepage API Playground, Improvement: Tool Copilot now treats public-IP and connection-profile questions as a first-class homepage route, so intent like "what is my ip" can jump straight to the live IP card instead of only surfacing generic tools, Impact: visitors reach the actual IP check faster and are less likely to detour through an unrelated diagnostic first.
- Surface: stats dashboard, Improvement: the best-first-check card now explains why a surface ranks highest by showing the mapped versus fallback route state, live probe verdict, and freshness age in one glance, so operators can see the reason before they click, Impact: verification gets faster and less guessy because the dashboard now turns ranking into an explicit live-debug cue instead of just a surface name.
- Surface: stats dashboard, Improvement: the recent-changes trail now surfaces a ranked "best first check" card that picks the highest-value live verification target from the newest shipped items, so operators can open the most useful page first instead of scanning the whole trail to guess the next check, Impact: verification gets faster and more reliable because the dashboard now tells the operator which live target deserves attention first.

# 2026-05-11
- Surface: homepage API Playground, Improvement: the API Playground now auto-selects the strongest live endpoint after the connection profile loads, so high-confidence runs start on /api/connection-info while fallback or low-confidence reads stay on /api/ip, Impact: operators reach the most reusable endpoint faster and avoid copying a shaky profile route when the live lookup is thin.
- Surface: stats dashboard, Improvement: the latest shipped card and recent-changes trail now add a compact freshness age badge beside the existing ship timestamp, so operators can see at a glance which item is newest and how old each item is before they decide what to verify first, Impact: verification priority is clearer because the live trail now surfaces recency as a first-class signal instead of forcing manual time parsing.
- Surface: stats dashboard, Improvement: the latest shipped digest and each recent-changes card now include an explicit live-proof block with probe status, evidence, URL, and timing, so operators can verify the actual live response instead of only trusting route labels and mtime sync, Impact: verification is faster and more reliable because the changelog trail now shows both the target and the proof that the target answered correctly.
- Surface: stats dashboard, Improvement: the canonical /stats route now answers a dedicated lightweight probe marker from the live dashboard file itself, and /api/stats-selfcheck now validates that same current target and marker instead of the stale v10 entrypoint, Impact: operators can trust the stats selfcheck again because it now proves the live dashboard route actually responds with the expected probe body before they rely on the changelog trail.
- Surface: stats dashboard, Improvement: the recent-changes trail now surfaces an explicit route reason for mapped versus fallback targets and keeps the live probe evidence visible on the latest item, so operators can tell faster why a route exists and what exact page was verified, Impact: verification is easier to trust because the trail now separates mapped, fallback, and no-route cases before you open the live surface.
- Surface: stats dashboard, Improvement: the recent-changes overview now includes a trail-health summary that counts mapped versus fallback live targets and healthy versus failing probes across the newest items, so stale or mis-mapped routes are visible before you drill into the raw trail, Impact: operators can spot broken verification paths faster and trust the live recent-changes view more when checking shipped work.
- Surface: stats dashboard, Improvement: the active stats selfcheck route now probes the current stats-live-v10 dashboard target and its matching live marker instead of the older v9 path, so the verify flow no longer reports stale dashboard code as healthy, Impact: operators can trust /api/stats-selfcheck and the /stats/ trail against the same live dashboard revision after FTP deploys.
- Surface: stats dashboard, Improvement: the live probe cards now show the exact URL that was checked in addition to the status badge and timing, so operators can see whether the dashboard verified the canonical route or only a fallback path, Impact: verification is easier to trust because the live check is now explicit about what was actually probed.
- Surface: stats dashboard, Improvement: the recent-changes rail now exposes a one-click "Open latest shipped item" jump target and anchors each item so operators can land on the newest note immediately instead of scanning or scrolling, Impact: verification gets faster because the freshest shipped change is now one click away and the trail is easier to navigate on a live dashboard.
- Surface: homepage API Playground, Improvement: the API matrix now auto-runs once on page load so the best endpoint, trust level, and reuse hint are visible immediately instead of waiting for a click, Impact: operators can judge the safest script target faster and the page converts better because the useful comparison appears on first load.
- Surface: stats dashboard, Improvement: the selfcheck route now points at the current stats-live-v9 target and matches the live marker again instead of probing the older v8 entrypoint, so the diagnostics reflect the canonical dashboard revision, Impact: operators get a truer live-sync verdict and can spot stale stats code faster after FTP deploys.

# 2026-05-10
- Surface: homepage API Playground, Improvement: the connection profile endpoint now reuses the local geo cache when live provider lookup is thin, and the homepage surfaces that cache usage in the summary, Impact: operators get a steadier provider/location readout plus an explicit cache note when the lookup is being rescued locally instead of pretending the response is fully fresh.
- Surface: stats dashboard, Improvement: the authenticated stats dashboard now loads again because the DB include path was corrected, and the live-probe cards now include probe duration plus a short body-evidence snippet alongside the HTTP status and marker verdict, so operators can tell not only that a target answered but also what proof was seen, Impact: operators can now verify a shipped surface faster because the stats trail shows response speed and concrete marker evidence instead of a 500 or a generic reachable/live badge.
- Surface: stats dashboard, Improvement: the stats selfcheck now runs a real live HTTP probe against /stats/ and records the response marker alongside the existing mtime checks, while the dashboard shows that probe as a dedicated health card, Impact: operators can now catch stale wrapper or opcache failures from the live dashboard itself instead of only inferring sync from file timestamps.
- Surface: stats dashboard, Improvement: the selfcheck route now advances to a fresh `stats-live-v7.php` entrypoint and `/api/stats-selfcheck` follows the same target, so the dashboard can skip stale opcode-cache behavior instead of reusing the old v6 filename, Impact: operators get a more reliable `/stats/` sync readout after FTP deploys because the live target now moves to a new file when the previous one proves sticky.
- Surface: stats dashboard, Improvement: the selfcheck panel and `/api/stats-selfcheck` now point at `stats-live-v6.php` instead of the stale v5 target, so the route gap and deploy gap reflect the actual live dashboard file and no longer report an outdated target name, Impact: operators can trust the sync card again when checking whether `/stats/` is truly aligned with the deployed dashboard.
- `/stats/` now includes a dedicated selfcheck panel plus `/api/stats-selfcheck`, which verify the daily log, hourly backup, canonical route, live dashboard target, and changelog sync in one place, so operators can spot dashboard drift before trusting the rest of the trail.
- `/stats/` recent-changes rail now runs a live HTTP probe on the most relevant targets and shows a live-probe badge with response detail, so operators can confirm a route is actually live and not just implied by mtime.
- `/stats` top live targets now resolve against the newest matching changelog entry for each surface instead of the oldest one, so the route hint, route-status badge, and open-live link stay aligned with the latest shipped work.
- `/tools/response-waterfall-lite-premium` now traces redirect hops, surfaces final-hop security header drift, and adds a clearer fix-impact forecast, so operators can spot redirect bloat and header regressions from one run instead of inferring them from a single status line.
- `/stats/` now routes directly to the canonical `stats-live.php` dashboard implementation instead of the extra `stats-live-v4` wrapper layer, with explicit stat/opcache invalidation before the handoff, so the stats surface is less likely to 500 from a stale or drifted wrapper after FTP deploys.
- Homepage API Playground now auto-loads the connection profile on page open, so the operator immediately sees IP, provider, location, source, confidence, and fallback notes without having to click Run first.
- `/stats` live sync panel now shows the active request path, the canonical `/stats/` route, the direct `stats-live-v3` fallback target, and a live surface probe with HTTP plus content-marker verdicts, so operators can confirm real page behavior instead of trusting route reachability alone.
- Homepage API Playground now down-ranks `/api/connection-info` when the lookup falls back or reports low confidence, so weak geo/provider runs stop outranking the simpler IP endpoint in the script-target recommendation.
- `/stats` login preview now shows the newest item's route status, exact live target, and copy action before sign-in, so operators can see whether the shipped surface is mapped or fallback and open the right page without reconstructing the path by hand.
- `/stats/` and the live stats fallback now use the correct `stats/config.php` include path and share the missing `myip_stats_contains()` helper again, so both the canonical folder route and the live stats branch stop tripping a 500 on production.
- `/tools/website-pagespeed` now spells out whether Core Web Vitals come from URL-level CrUX, origin fallback, or no field data at all, and it shows the recommended operator action plus missing metrics inline so the field-data verdict is easier to trust before acting on it.

# 2026-05-09
- `/stats` recent-changes trail now keeps search, kind, and surface filters in the URL and shows the active filter state inline, so operators can refresh or share a filtered verification view without losing context.
- `app-health-center` live target resolver now recognizes more app and status routes plus broader tool slugs before it falls back to a generic path, so recent-changes cards and top live-target tiles point operators to the real page more often instead of a guessed placeholder.
- Homepage API Playground and Internet Speed Test now surface connection provenance: `/api/connection-info` returns source, confidence, lookup time, and fallback usage, while the UI shows that metadata alongside IP/provider/location, so operators can judge how trustworthy the network context really is before acting on it.
- Homepage API Playground now includes `/api/connection-info` with a live connection profile panel for IP, provider, and location, so visitors can validate the network context behind the IP in the same place they already test the core endpoints.
- `/tools/internet-speed-test` now adds an executive summary block that turns the live measurements into a single verdict, bottleneck, next-step recommendation, and confidence readout, so operators can act on the result without reading every diagnostic card first.
- `/stats` recent-changes cards now fall back to a generic tool-slug link when a new Tool:/Surface: item was not explicitly mapped yet, so newly shipped surfaces stay clickable before the lookup table is hand-updated.
- `/stats` live-sync panel now separates code lag, changelog lag, and deploy gap, and it flips to an explicit mismatch verdict when the code and changelog drift apart, so operators can tell whether the trail is stale or the FTP deploy missed the new stats code.
- Homepage API Playground now includes a one-click matrix run for `/api/ip`, `/api/headers`, `/api/ipv4`, and `/api/ipv6`, with live status, latency, content-type, and body-shape summaries in a single compare view, so operators can verify the core API surface faster instead of testing endpoints one by one.
- `http-headers` redirect drift panel now summarizes critical security-header loss across hops with a verdict and direct recommendation, so operators can see at a glance when a redirect chain weakens HSTS/CSP or other guardrails before drilling into the hop table.
- Stats login preview now mirrors the authenticated recent-changes cards with surface, improvement, impact, verify, action, and live-surface links, so operators can triage the newest shipped work before logging in.
- Homepage API Playground upgraded into a reusable debug surface: it now shows copyable cURL, response-type and body-kind badges, and a clearer live summary for /api/ip, /api/ipv4, /api/ipv6, and /api/headers so operators can move from browser check to terminal request faster.

# my-ip-is.com — Functionaliteiten
- 2026-05-28 16:49 UTC: Stats dashboard now shows an explicit visible-proof line above the recent-changes rail, so the newest shipped item is easier to verify first on the live page.
- 2026-05-27 21:42 UTC: Stats dashboard now spells out the latest shipped item alongside the latest shipped note in the visible recent-changes summary, so the newest verification target is easier to confirm on the live page.
- 2026-05-24 05:41 UTC: Stats self-check no longer performs a recursive HTTP request back into /stats during render, so the live dashboard is less likely to stall on its own verification path while still keeping the visible recent-changes proof line.

_Laatste update: 2026-05-09 09:59 UTC_

- Homepage API Playground now measures live latency, shows HTTP status and content-type, and summarizes the core API endpoints instead of only dumping raw output, so operators can validate endpoint health and reuse the exact URL more quickly.

- `/stats` recent-changes trail now adds a compact top-live-target rail that surfaces the most active recent surfaces with counts and direct open-live actions, so operators can jump to the highest-signal pages without scanning the whole trail first.
- `/stats` recent-changes trail now adds an explicit action target next to the verification cue, so each shipped note shows the first live place to click instead of only telling operators what to check.

- `/stats` recent-changes trail now includes an explicit per-item verification cue, so each shipped note shows the first live check to run instead of only describing the change and its impact.

- `/stats` recent-changes trail now adds an explicit live-sync verdict plus next-check guidance for the newest shipped item, so operators can tell in one line whether the stats page is synced, merely close, or already stale before they trust the rest of the dashboard.

- `/stats` recent-changes trail now adds a concrete action target and critical-header change counts to the `http-headers` redirect drift summary, so operators can tell where to fix the chain instead of only reading the first-versus-final hop diff.
- `/stats` recent-changes trail now shows a live sync badge and freshness readout for the newest shipped item, including code mtime, changelog mtime, and lag minutes, so operators can spot a stale deploy faster instead of trusting the trail blindly.

- `/tools/internet-speed-test` now adds a live route-diagnosis layer that labels the line shape, primary limiter, interactive risk, and best-fit workload from the measured ping/download/upload profile, so operators get a real connection verdict instead of raw throughput alone.
- `/stats` recent-changes trail now includes live search plus Tool/Surface/Ops filter chips and clickable focus chips for the most active surfaces, so operators can jump from a filtered trail straight to the relevant shipped note and live page faster.
- `/stats` recent-changes trail now turns recognized tools and surfaces into direct live links, so operators can jump from the shipped note straight into the relevant page and verify the change in one click.
- `/stats` recent-changes trail uitgebreid met een TLS Expiry Monitor chain-bottleneck diagnose die het kortstlopende certificaat in de keten markeert als leaf/intermediate/self-issued en de renewal pressure direct in de samenvatting toont, zodat operators precies zien welk cert-link de renovatie urgent maakt.

- `/stats` recent-changes trail uitgebreid met een compacte focus-samenvatting die de laatste 12 items groepeert naar tool/surface/ops en de meest actieve live surface benadrukt, zodat operators sneller zien waar de recente shipped werkstroom over gaat.
- Homepage Tool Copilot now shows confidence, next-step guidance, and direct jump buttons for ranked matches, so visitors can land on the right diagnostic faster from a single intent.

## Core
- Public IP check (IPv4/IPv6 detectie)
- Copy IP + keyboard shortcuts
- API playground op homepage
- Donker/licht thema met toggle + localStorage

## API & Agent-ready
- `/api/ip` (JSON)
- `/api/ipv4` (text)
- `/api/ipv6` (text)
- `/api/headers` (JSON)
- `openapi.yaml`
- `/.well-known/mcp.json`
- `/.well-known/ai-plugin.json`
- `/llms.txt`

## Tooling (site/tools)
- IPv4 Checker
- IPv6 Checker
- WebRTC Leak Test
- DNS Leak Check
- DNS Lookup
- Reverse DNS (PTR)
- TLS/SSL Checker
- MX Lookup
- SPF Checker
- DMARC Checker
- NS Lookup
- Port Checker
- DNS Propagation
- HTTP Headers
- Redirect Checker
- Whois Lite
- Bulk DNS Checker
- User-Agent Analyzer
- API Docs

## Stats / Logging
- Dagelijkse logging in `/log/YYYY-MM-DD.json`
- Password-protected `/stats/` dashboard

## SEO / Platform
- sitemap + robots
- structured data (WebApplication + FAQ)
- OG/Twitter metadata

---

## Nieuw toegevoegd / aangepast (changelog)

### 2026-05-08
- `user-agent-analyzer` uitgebreid met **identity posture diagnosis**: de tool vat UA, Client Hints, Accept-Language en live runtime nu samen tot een operator-gericht verdict zoals verified live browser, reduced/privacy-limited browser, likely spoofed or stitched identity, of automation/crawler posture, inclusief bewijsregels en aanbevolen vervolgstappen.

### 2026-05-07
- `redirect-checker` uitgebreid met **redirect-chain efficiency diagnosis**: de tool scheidt pure canonicalization-only hops nu van mixed-intent redirects, schat avoidable canonical hops plus avoidable latency, en geeft een verdict wanneer gestapelde HTTPS/www/slash/index-normalisatie waarschijnlijk in minder redirects samengevouwen kan worden.
- `uptime-response-checker` uitgebreid met **delivery-path diagnosis**: de tool splitst herhaalde probe-latency nu uit in DNS lookup, TCP connect, TLS handshake, origin wait vóór first byte en response transfer ná first byte, bepaalt welke fase dominant is, en toont shares, gemiddelden, pieken en spread-evidence zodat bottlenecks direct te herleiden zijn naar netwerk-setup, backend-wacht of payload-transfer.
- `website-pagespeed` uitgebreid met **third-party dependency posture**: mobile en desktop classificeren nu of externe code slechts bijzaak is, een betekenisvolle budgetdruk vormt, of door één vendor wordt gedomineerd, plus een cross-device verdict wanneer dezelfde partij beide strategieën trekt.
- `ip-location-lookup` uitgebreid met **geographic blast-radius auditing**: city concentration, metro spillover, centroid distance en farthest-gap evidence worden nu samengevoegd tot een verdict zoals single-metro dependency, regional cluster only, single-country geographic spread of cross-country long-haul failover.

### 2026-03-07
- **Today shipped snapshot (late update):**
  - Tool UX verbeterd: icon/badge alignment, spacing-fixes en mobile polish op cards/buttons/tables.
  - `/app` en `/app/health-center` taalconsistency hersteld naar Engels.
  - Nieuwe homepage-sectie **Featured Apps** + **Tool Copilot** (goal-based routing naar juiste tool).
  - AI honeypot fase 1+2 live (adaptive scoring, canary-routes, challenge ladder met browser guardrails).
  - WebMCP fase 2 live (`/api/mcp` JSON-RPC + callable tools + discovery update).
  - 5 nieuwe premium tools live: delist assistant, SPF flatten analyzer, DMARC forensic parser, redirect chain visualizer, TLS chain trust debugger.
- **Vandaag opgeleverd (samenvatting):**
  - End-to-end mail-tester flow van MVP naar premium (diagnose + scoring + compare + exports).
  - Renderkwaliteit en UX sterk verbeterd (CID images, polished scorecard, badges, animaties).
  - Operationele inzichten toegevoegd in `/stats` (gebruik, frequentie, afzenders, recente rapporten).
- Mail Tester Premium flow uitgebreid: catch-all testadres + check-score flow met voortgangsstappen.
- Mail Tester Premium uitgebreid met echte secties i.p.v. placeholders: **Your message**, **HTML compatibility**, **Content analysis**, **Links check**.
- Nieuwe analyzerlaag toegevoegd op inbound e-mail: HTML-compatibility scoring, content/spam-signaal analyse en link hygiene scoring.
- Rapport-opslag verrijkt: analyzerresultaten worden server-side mee opgeslagen in `mailtester-reports/<rid>.json`.
- Fase 2 live: gewogen **overall deliverability score** + **score breakdown** (auth/blacklist/spamassassin/html/content/links).
- Fase 2 live: automatisch **action plan** met prioriteit (high/medium/low) en concrete fix-adviezen per rapport.
- Fase 3 live: **Rule findings (parity mode)** met expliciete rule IDs, severity en evidence per failure.
- Fase 3 live: **DNS records to paste** (SPF/DMARC/DKIM suggesties) direct in rapport op basis van gedetecteerde auth-failures.
- Scoring-engine aangescherpt: betrouwbaardere auth-detectie uit raw headers + verbeterde weging zodat 100/100 realistisch haalbaar is bij echt sterke mailkwaliteit.
- Layout polish pass live: premium scorecard met motivatie-/kudos-blok en visuele breakdown bars voor een duidelijker “progress/goed bezig”-gevoel.
- Micro-polish live: score breakdown bars animeren nu subtiel in op load.
- Micro-polish live: 95+ score triggert een korte, subtiele confetti/celebration burst in de scorecard.
- Check-score flow gefixt: frontend gebruikt nu weer directe backend-trigger (`check_score`) i.p.v. poll-loop die kon blijven hangen op "fetching email".
- UX polish: "**PERFECT 100**" badge toegevoegd die alleen zichtbaar wordt bij een 100/100 eindscore.
- Fase 4 live: **Compare with previous report** (delta op totaalscore + layer-by-layer verschillen).
- Fase 4 live: **Domain health timeline** met recente scoretrend per domein en snelle doorklik naar rapporten.
- Rendered HTML verbeterd: **CID inline images** worden nu server-side omgezet naar `data:` URLs zodat logo’s/inline beelden zichtbaar zijn in de iframe-preview.
- Nieuwe premium module: **Inbox placement simulator** (Inbox/Promotions/Spam kans + risk index).
- Nieuwe premium module: **Template linting (pre-send)** met concrete issues op onderwerp/body/links/html voordat je verstuurt.
- Nieuwe premium module: **Fix impact forecast** met verwachte score-uplift (+punten) en risico-daling per aanbevolen fix.
- UI uitbreiding: **regressie-alert badge** bovenaan scorecard (groen/geel/rood) met delta t.o.v. vorige run.
- Export toegevoegd: **PDF (print mode)** knop per rapport + auto-print view (`?print=1`) geoptimaliseerd voor Save-as-PDF.
- Export toegevoegd: directe **JSON download** knop naar raw rapportbestand.
- `/stats` uitgebreid met **Mail tester usage** blok: totaal tests, frequentie per dag, top afzenders (from-adressen) en recente testrapporten met score/grade + doorklik.
- `/stats` uitgebreid met **PWA install & push health**: install completed/clicks/prompts, push subscriptions, users met push aan, conversion % en laatste push-status timestamps.
- Wave 1 premium-proof upgrade: `email-auth-audit-premium` nu met auth-score, rule findings en DNS fix playbook + forecast.
- Wave 1 premium-proof upgrade: `multi-port-monitor-premium` nu met health score, latency diagnostics en fix impact forecast.
- Wave 1 premium-proof upgrade: `dnsbl-ip-check-premium` nu met risk score, severity, delist-links en forecast.
- `/app` UX polish: duidelijk gepositioneerd als persoonlijke omgeving (control room), met quick KPI-cards (projecten/monitors/alerts/push) en verbeterde push-status feedback.
- Wave 2 premium-proof upgrade: `whois-lite` nu met WHOIS risk score, expiry-insights, findings + fix impact forecast.
- Wave 2 premium-proof upgrade: `traceroute-viewer` nu met route quality score, hop-analyse, findings + forecast.
- Wave 2 premium-proof upgrade: `response-waterfall-lite-premium` nu met performance score, bottleneck findings, headers-view + forecast.
- Premium-labeling update: in tool-overzicht is badge-terminologie aangescherpt naar **Premium** en **Premium Beta** (i.p.v. Premium Ready), incl. herclassificatie van recente upgrades.
- Label-policy update op verzoek: alle tools in de premium-set tonen nu badge **Premium** (geen Premium Beta-labels meer in de kaartweergave).
- Homepage UX upgrade live: nieuwe sectie **Uitgelichte Apps** + use-case shortcuts + quick actions voor sneller grasduinen door tools.
- AI honeypot fase 1 live: adaptive scoring uitgebreid, extra canary-routes (`/ai/internal-prompts`, `/ai/agent-sitemap`), probe-feed update en nieuwe honeypot stats-sectie in `/stats`.
- AI honeypot fase 2 live: challenge-ladder geactiveerd (slow/challenge/block) met browser guardrails om false positives voor normale browsers te beperken.
- WebMCP fase 2 live: JSON-RPC endpoint `/api/mcp` toegevoegd met callable tools (`myip.tls_watchlist`, `myip.speed_health`, `myip.mail_tester_report`) + discovery update in `/.well-known/mcp.json`.
- App uitbreiding live: nieuwe route `/app/health-center` met centrale health-overview, top-risks, quick actions en recente alerts; plus snelle toegang vanuit `/app`.
- UX finisher live: **Mission Control** status-strip toegevoegd op homepage en `/app` (systems/mailtester/push/webmcp in één oogopslag).
- Nieuwe premium wave live (5 tools): `blacklist-delist-assistant-premium`, `spf-flatten-analyzer-premium`, `dmarc-forensic-parser-premium`, `redirect-chain-visualizer-premium`, `tls-chain-trust-debugger-premium`.
- Webapp push-flow fix: nieuwe monitors krijgen nu standaard `interval_minutes=1` voor snelle cron-gedreven checks.
- Monitor runner gefixt voor out-of-the-box werking: heartbeat check draait nu voor alle actieve monitor-types.
- Monitor runner uitgebreid met `force=1` override (handmatig direct runnen zonder interval-wachtblok), handig voor debug/verificatie.
- Reportpagina uitgebreid met berichtweergave (Rendered HTML / Raw HTML / Text / Source).
- SpamAssassin-sectie toegevoegd met detectie van `X-Spam-*` headers, score en triggered tests.
- Blacklist-sectie toegevoegd met DNSBL-checks, severity en score-impact.
- Blacklist-matrix uitgebreid van 4 naar 22 zones.
- DNSBL interpretatie verbeterd: policy/query-block responses (zoals `127.255.255.x`) worden niet meer als echte listing geteld.
- Hostkarma-resultaten verrijkt met code-uitleg in rapportage.
- Stats-normalisatie toegevoegd: mail-tester `?rid=` varianten worden samengevoegd tot één pad in tracking.
- Message-view sectie omgezet naar uitklapbaar blok voor compactere rapportlayout.

### 2026-03-06
- API docs: light mode leesbaarheid verbeterd (code/result-box contrast).
- API docs: menu gelijkgetrokken met hoofdmenu (Check/Tools/FAQ/API Docs/Stats/LLMs).
- Theme toggle iconen omgedraaid naar logische volgorde: 🌙 links, ☀️ rechts.
- Topbar/logo alignment aangescherpt (logo-height + centrering) voor nettere uitlijning.
- Light mode topbar contrast verbeterd.
- CSS cache-buster verhoogd naar `20260306-02` op homepage + API docs.
- Logo alignment fix v2: desktop topbar hoogte naar 68px, logohoogte naar 28px, brand-padding verwijderd; mobile logohoogte naar 24px.
- CSS cache-buster verhoogd naar `20260306-03` op homepage + API docs.
- Stats (`/stats/`) menu nu gelijkgetrokken met hoofdsite (Check/Tools/FAQ/API Docs/Stats/LLMs + juiste toggle-volgorde).
- Stats date-filter uitgebreid met optie **Alles** (aggregate van alle daglogs).
- Stats date-range toegevoegd (Van/Tot kalender) met aggregate over geselecteerde periode.
- Export-links (CSV/JSON) nemen nu date-range mee.
- Stats heatmap fallback toegevoegd: duidelijke melding als geolocatie-data ontbreekt.
- Stats topbar nu met hetzelfde logo als de rest van de site (consistente brand header).
- Logo render-fix: donkere modus zet logo niet meer via CSS-filter op invert (originele logo-kleuren blijven intact).
- CSS cache-buster verhoogd naar `20260306-04` (home + API docs).
- Logo-set vervangen met aangeleverde SVG's van Paul:
  - hoofdlogo -> `assets/img/logo-vector.svg`
  - schild-icoon -> `assets/img/shield-icon.svg`
  - favicon SVG -> `favicon.svg`
- Logo cache-buster toegevoegd op alle pagina's die header-logo laden: `logo-vector.svg?v=20260306-05`.
- Dark mode logo-fix: aparte donkere logo-variant toegevoegd (`assets/img/logo-vector-dark.svg`) en toegepast op home, API docs en stats.
- Header hotfix: dubbele logo-weergave opgelost met expliciete `display`-prioriteit (light/dark logo toggling met `!important`).
- Alle toolpagina's gelijkgetrokken naar volledig hoofdmenu + consistente brand header (incl. ipv4/ipv6/dns-leak/webrtc pagina's die eerder geen topbar hadden).
- Hotfix dubbele logo-weergave: dark-logo standaard inline verborgen (`style="display:none"`) zodat zelfs met oude CSS-cache nooit twee logo's tegelijk zichtbaar zijn.
- Vereenvoudigd logo-beleid (v3): overal weer één origineel hoofdlogo; geen logo-swaps meer per theme.
- Dark mode leesbaarheid opgelost met subtiele lichte badge achter het logo i.p.v. een tweede dark-logo bestand.
- Logo-size update: headerlogo vergroot naar 34px desktop / 28px mobiel (home/tools/stats), met iets hogere topbar voor nette uitlijning.
- Herstel light/dark logo-wissel zonder dubbele rendering: 1 `<img>` per header met `data-light`/`data-dark`, src-switch via theme JS (home/tools/guides/status/ai + stats).
- Logo-size verhoogd (v4): 40px desktop / 32px mobiel + hogere topbar, inclusief stats-layout.
- Extra vergroting logo (v5): 60px desktop / 44px mobiel in hoofdsite-styles.
- Extra vergroting logo (v6): 82px desktop / 56px mobiel (home/tools/stats).
- Header hoogte gecorrigeerd na feedback: terug naar compactere 92px op tools/home (logoformaat behouden).
- Mobiele hamburger-menu toegevoegd voor hoofdsite (via `app.js`) en stats (inline handler).
- Site-wide cache-bust geforceerd voor CSS/JS op alle PHP-pagina's (`style.css?v=20260306-08`, `app.js?v=20260306-08`) zodat logo/layout-wijzigingen direct zichtbaar zijn.
- Nieuwe tool: `/tools/internet-speed-test` (ping + download + upload, browser-based).
- Nieuwe API-endpoints voor speedtest:
  - `/api/speed-download.php` (download payload)
  - `/api/speed-upload.php` (upload receiver)
- `.htaccess` routes toegevoegd voor `/tools/internet-speed-test`, `/api/speed-download`, `/api/speed-upload`.
- Homepage tools-grid uitgebreid met “Internet Speed Test”.
- Speedtest UX upgrade: visuele meter (gauge) toegevoegd en testvolgorde aangepast naar: download → upload → ping.
- Speedtest timing vertraagd/verbeterd: per fase 3 rondes + minimale testduur, zodat de meter rustiger en beter zichtbaar loopt.
- Gauge schaal toegevoegd met verdeling van 0 t/m 1500 (ticks + labels).
- Speedtest uitgebreid met connection details: publiek IP, provider/ISP en locatie (best effort via ipwho.is).
- Social share toegevoegd op speedtest-resultaat (native share, X, LinkedIn en copy-text).
- Speedtest meter upgraded naar echte wijzer/naald met vloeiende uitslag.
- Testduur verlengd (grotere payloads + langere minimale fasetijd) zodat meting minder "te snel" klaar is.
- Connection details betrouwbaarder gemaakt via server-side endpoint `/api/connection-info` (IP/provider/locatie) i.p.v. browser-direct call.
- Speedtest testsize verhoogd naar zware profielen: 500 MB of 1 GB download.
- Testresultaten worden nu server-side opgeslagen via `/api/speed-result-save` in `log/speedtests-YYYY-MM-DD.jsonl`.
- Sharing gebruikt nu unieke result-URL per test (`/speedtest/result/<id>`) i.p.v. generieke speedtest-link.
- Speedtest profiel aangepast: vaste testgrootte 250 MB (geen keuze meer in UI).
- Upload/ping betrouwbaarheid verbeterd: fase-fouten blokkeren de rest niet meer (download/upload/ping lopen sequentieel door met fail-state per fase).
- Share-flow aangescherpt: share-knoppen pas actief ná opgeslagen resultaat met unieke URL; generieke fallback-link verwijderd.
- Tools-overzicht: drag-and-drop "Arrange tools" toegevoegd op homepage + lokale opslag van toolvolgorde + reset-optie.
- Mobiele reorder-fix: touch fallback toegevoegd met Up/Down knoppen per toolkaart in Arrange mode.
- Homepage API Playground upgraded with an explicit recommendation panel, best-endpoint verdict, trust level, and copyable operator summary so the page now tells you which API is the strongest script target after a run.
- Speedtest health/transparantie toegevoegd via `/api/speed-health` (node/time/tests-today).
- Speedtest history toegevoegd via `/api/speed-history` (laatste 10 tests van jouw IP).
- Rate-limit guard toegevoegd op speed endpoints (`speed-download`, `speed-upload`, `speed-result-save`).
- Speedtest resultpagina verbeterd met rijkere metadata (OG/Twitter desc + canonical per unieke result URL).
- Realtime naald verfijnd: tragere/smoother gauge-animatie + upload progress op basis van echte upload-progress events.
- SEO-content/FAQ upgrade afgerond voor `ipv6-checker` en `dns-leak-test`.
- Stats: nieuwe default grafiek toegevoegd met automatisch de laatste 7 dagen traffic trend.
- Stats: Top paths chart voorzien van duidelijke uitlegtekst.
- Stats: IP heatmap verbeterd met server-side geo-fallback + cache (`log/ip_geo_cache.json`) zodat OpenStreetMap markers ook zonder bestaande `ip_meta` data gevuld worden.
- Stats bugfix: datumselector toont nu alleen echte dagbestanden (`YYYY-MM-DD.json`) en niet meer `ip_geo_cache.json`.
- Stats 7-day chart uitgebreid met tweede lijn: `Unique IPs` naast `Total visits`.
- Stats trendgrafiek omgezet naar Google Charts line chart met interactieve mouseover tooltips.
- Stats uitgebreid met interactieve pie chart voor Top Browsers.
- Stats layout polish: Top Browsers tabel + pie chart nu netjes gecombineerd in één paneel voor rustiger overzicht.
- Stats visual polish pass: consistente heading-spacing, rustigere tabelstijl, subtiele row-hover en betere leesbaarheid in panelen.
- Stats charts uitgebreid naar Google Charts voor: Top Paths, Top Browsers (pie), Agent Classes (pie), Top LLM/Bot Signals (pie), Journey Graph en Honeypot Pressure.
- Speedtest quality update: ping nu op median + jitter + packet loss metrics; node profile endpoint toegevoegd (`/api/speed-nodes`).
- Blok 2B: nearest-node selectie toegevoegd via `/api/speed-node-select` + gedeelde node-definities (`inc/speed_nodes.php`) en automatische node-keuze in speedtest flow.
- Blok 3 start: speedtest result sharing verbeterd met dynamische OG image endpoint (`/speedtest/result-image/<id>.svg`).
- Blok 3 SEO: structured data (WebApplication + FAQ) toegevoegd op internet-speed-test pagina.
- Blok 3 afronding: SEO interne linking uitgebreid op `ipv6-checker` en `dns-leak-test`.
- Blok 3 afronding: speedtest-result UX polish met copy-share-link knop + duidelijke CTA naar eigen speedtest.
- Blok 4 start: monitoring endpoint `/api/speed-monitor` + monitorblok op speedtestpagina.
- Blok 4: history compare toegevoegd (laatste test vs vorige test) voor snellere trendinzichten.
- Blok 4 final: alert-hook toegevoegd bij monitor spikes (`log/alerts/speed-alerts-YYYY-MM-DD.jsonl`) + UI alert-indicator op speedtest monitor.
- Stats segmentatie uitgebreid: view-filters `Possible bot` en `Likely LLM/Crawler` toegevoegd naast `All` en `Human`.
- Stats heatmap upgraded met Leaflet marker clustering voor betere leesbaarheid bij veel IP-locaties.
- Toolbox uitgebreid met 8 nieuwe tools: website-pagespeed, uptime-response-checker, ip-reputation-lookup, port-range-scanner, geo-latency-estimator, dnssec-validator, tls-expiry-monitor, security-headers-score.
- Uptime checker fix: geen HEAD-only check meer; gebruikt lichte GET probe + duidelijke verdict (403 nu niet meer als “ok” geclassificeerd).
- SEO/LLM pass over 8 nieuwe tools: OG/Twitter metadata + FAQ schema + related-tools interne linking toegevoegd.
- LLM funnel update: `llms.txt` uitgebreid met alle nieuwe tool-routes en korte agent-usage context.
- Toolbox uitgebreid met nog 8 extra tools: traceroute-viewer, asn-lookup, cidr-subnet-calculator, reverse-ip-lite, robots-sitemap-validator, http2-http3-checker, email-deliverability-check, cdn-waf-detector.
- Tools UX upgrade: iconen per toolcard + extra categorie-filters (`performance`, `monitoring`) voor beter overzicht.
- Icon pass fix: volledige icoonmapping uitgebreid over alle tools + fallback per categorie i.p.v. één generieke fallback.
- Premium/Regular opzet live: toolsplit op homepage met premium badges, unlock-CTA en premium note (incl. mail-tester API roadmap verwijzing onder premium mail tool).
- Icon mapping fix v2: href normalisatie naar pathname + oude icon cleanup + cache-bust naar `app.js?v=20260306-16` op homepage.
- Project TODO toegevoegd: `my-ip-is/TODO.md` met Mail-tester premium tool roadmap.
- Uptime & Response Time Checker: response-consistency detectie verhardt nu tegen per-request Cloudflare/challenge/nonces, met raw vs stable body fingerprints en zichtbare volatility-normalization per run zodat operatoren minder false positives krijgen bij gezonde pagina’s.
- Premium zichtbaarheid fix: fallback-render in frontend toegevoegd zodat premium toolcards altijd zichtbaar zijn.
- Premium quick-win tools toegevoegd: bulk-security-headers-premium, tls-watchlist-premium, domain-drift-monitor-premium, mail-tester-api-premium (roadmap page).
- Premium set/filters/icon mapping uitgebreid voor nieuwe premium tools + backlog aangevuld in `my-ip-is/TODO.md`.
- Premium UX v2: aparte `/premium` plannenpagina, premium filter-chip, premium/regular counters op homepage, en unlock CTA nu gericht naar `/premium?tool=...`.
- Cache-bust homepage script naar `app.js?v=20260306-17`.
- 5 extra premium tools live gezet: email-auth-audit-premium, multi-port-monitor-premium, bulk-dns-propagation-premium, response-waterfall-lite-premium, dnsbl-ip-check-premium.
- Routes, icon mapping, premium set en llms-index bijgewerkt voor deze 5 tools.
- Stripe voorbereiding toegevoegd: `STRIPE_SETUP.md`, `site/inc/stripe-config.example.php`, API endpoints voor checkout/portal/webhook, en `/premium` knoppen die checkout starten zodra config staat.
- Legal/compliance update: nieuwe pagina's `/cookie-policy` en `/privacy` toegevoegd + links in footer.
- Bedrijfsvermelding toegevoegd op site: `pk Holding B.V. - Mgr. van de Weteringstraat 1 1211GG - Hilversum - NL850613735B01 - KvK: 52822125`.
- Cookie consent popup toegevoegd (akkoord / alleen noodzakelijk) met link naar `/cookie-policy`.
- Cache-bust voor cookie/privacy/home/premium naar `style.css/app.js?v=20260306-18`.
- Legal cleanup: bedrijfsnaam gecorrigeerd naar **PK Holding B.V.** en full bedrijfsgegevens verplaatst naar nieuwe `/legal` pagina.
- Footer opgeschoond (links naar Cookie Policy / Privacy / Legal i.p.v. volledige adresregel in footer).
- Stripe config pad gefixt: `inc/stripe-config.php` is nu op live aanwezig (met ingevulde price IDs voor Pro/Team; keys nog veilig te vervangen via secure sessie).
- Conversion target (1% paid) vastgelegd met uitvoerplan in `CONVERSION_SPRINT.md` + TODO-updates voor instrumentatie, funnel endpoint, paywall prompts en A/B tests.
- Conversion tracking fase 1 live: `/api/conv-event` + `/api/conv-funnel` toegevoegd en premium CTA flow gekoppeld aan events (view/click/checkout_created/failed).
- Stripe webhook spiegelt nu `checkout_completed`/`checkout_failed` naar conversion logs voor funnel reporting.
- Tracking hardening: `inc/track.php` beschermt nu tegen silent reset bij JSON parse-fouten en schrijft atomisch (`.tmp` + rename) om dataverlies in daglogs te voorkomen.
- Extra stats-guardrails: hourly backup snapshots van daglogs (`/log/backups/YYYY-MM-DD-HH.json`) en nieuwe health endpoint `/api/stats-selfcheck`.
- Fix: `website-pagespeed` breekt niet meer bij PSI quota/API errors; tool toont nu Lite fallback audit (TTFB/total/bytes) + duidelijke notice i.p.v. hard failure.
- Premium labeling split live: `Premium Ready` vs `Premium Beta` badges op homepage tools, met duidelijke beta-note en aangepaste CTA.
- Premium sectiecopy aangescherpt en cache-bust homepage JS naar `app.js?v=20260306-19`.
- Webapp fase 2 start live: MariaDB-config + schema bootstrap + magic-link auth endpoints (`/api/auth-magic-request`, `/auth/verify`) en app shell op `/app`.
- Magic-link mailer aangesloten op SMTP (`mail.my-ip-is.com:587`, STARTTLS) met `noreply@my-ip-is.com`; auth request endpoint stuurt nu echte e-mail i.p.v. dev-link output.
- `/app` uitgebreid met werkende fase-2 kern: ingelogde users kunnen nu Projects en Monitors aanmaken en direct beheren/lijsten vanuit MariaDB.
- Mobile menu fix: hamburger toggle werkte niet wanneer knop al server-side aanwezig was; JS bindt nu altijd click/close handlers.
- Cache-bust voor app.js naar `v=20260306-20` uitgerold over sitepagina's.
- PWA install basis toegevoegd: service worker (`/sw.js`) + install-prompt op `/app` via `beforeinstallprompt`.
- Webmanifest geüpdatet voor app-start op `/app` en sitewide cache-bust naar `style/app v=20260306-21`.
- Uptime monitor runner toegevoegd: `/api/monitor-runner` verwerkt actieve `uptime` monitors, bewaart state in monitor-config JSON en schrijft offline/recovery alerts naar app-notifications.
- `/app` toont nu monitor state/last-check + Alerts & notifications feed.
- Session Diagnostics verplaatst naar inklapbare `Advanced` sectie om homepage rustiger te maken.
- Stats mobile cleanup: form-controls full-width, chart heights geharmoniseerd, tabellen horizontaal scrollbaar en nested grids op 1 kolom.
- Nieuwe toolbox tool: `/tools/ip-location-lookup` (IPv4/IPv6 geolocatie + ISP/ASN details).
- Redirect Checker uitgebreid met signed-link expiry-window analyse: detecteert expliciete expirytimestamps en AWS/GCS presign windows in redirect-querystrings, en labelt hops als active, near-expiry of expired inclusief resterende lifetime.
- Stats dashboard verbeterd met een compacte latest-change verificatiekaart die live target, sync verdict en de eerste check-actie naast de nieuwste changelog-entry zet, zodat operators sneller de juiste pagina openen en minder tijd verliezen aan verkeerde verificatiestappen.
- Stats dashboard verificatiekeuze aangescherpt: de beste eerste check krijgt nu extra prioriteit voor het nieuwste shipped item, zodat de live target rail minder snel uitkomt op een minder relevante maar nog steeds groene kandidaat.

---

## Werkafspraak
- Bij elke nieuwe wijziging in my-ip-is: deze file updaten met **wat nieuw is toegevoegd/gewijzigd**.
# 2026-05-14 18:27 UTC: Homepage now includes a direct live stats dashboard CTA, so the canonical verification surface is one click away from the public homepage.
# 2026-05-17 05:31 UTC: Stats live probe now advances to the v37 marker and the self-check accepts any versioned stats-live-vN-ok response, so future /stats deploys stay aligned with the canonical live route without brittle token churn while the visible recent-changes proof line remains intact.
# 2026-05-17 06:31 UTC: Stats live probe now advances to the v38 marker while the self-check keeps accepting any versioned stats-live-vN-ok response, so the canonical /stats live check stays aligned with the deployed dashboard and the visible recent-changes proof line remains the operator-facing proof.
# 2026-05-17 14:34 UTC: Stats canonical route now points straight at the current live dashboard file again, so /stats stays aligned with the shipped implementation and the visible recent-changes rule remains the proof line.
- 2026-05-19 07:46 UTC: Canonical /stats route now points to stats-live-v53.php and keeps the rendered recent-changes proof visible in the probe body, so the live dashboard confirms the newest shipped stats revision end to end.
- 2026-05-21 11:54 UTC: Homepage premium entrypoints now emit explicit conversion events on the hero and latest-report links, so the main /premium path and a second high-intent premium click are visible in the funnel report instead of only the in-page premium page interactions.
- 2026-05-21 23:02 UTC: Stats live probe now uses a fresh v69 marker while keeping the recent-changes rule and rendered-proof lines explicit, so the canonical /stats check still exposes the newest shipped-item rule as visible proof on the live page.
- 2026-05-22 14:26 UTC: The connection-info API no longer trips the fallback path on every request because the location string is assembled before the completeness check, so the homepage API Playground can trust the primary IP profile again when it is actually complete.
- 2026-05-22 18:26 UTC: Canonical /stats route now requires stats-live.php directly instead of the older pinned wrapper, so the public dashboard stays aligned with the current live implementation and the recent-changes proof remains visible after deploys.
- 2026-05-23 10:32 UTC: Stats live probe now defaults the canonical /stats response to a versioned v80 marker while keeping the recent-changes proof lines intact, so the live verification has a fresh shipped token without losing the operator proof.
# 2026-05-24 09:44 UTC: Stats self-check now accepts the rendered /stats page as a fallback proof when the probe response misses, so transient live probe failures no longer turn a healthy dashboard red while the visible recent-changes rule still proves the page.
# 2026-05-25 03:54 UTC: Stats probe response now adds an explicit live proof line tying the version token, recent-changes rule, latest shipped item, and route source together, so /stats verification is easier to trust when you check the live probe first.
# 2026-05-29 01:52 UTC: Stats live and self-check detection now share the same broader recent-changes visibility matcher, so small wording shifts in the proof block are less likely to trigger a false negative while the visible rule stays on the live page.
- 2026-05-29 20:12 UTC: Stats self-check now also recognizes the explicit latest shipped item line as valid recent-changes proof, so minor wording changes in the live dashboard keep the recent-changes rule visible without tripping a false red check.
- Stats dashboard: latest shipped verification block now includes a direct copy-live-target action, so operators can jump from the newest note to the exact live route with one less manual step.
# 2026-05-31
- 2026-05-31 06:33 UTC: Stats live route now sends explicit version and recent-changes headers, so live verification can confirm the shipped dashboard marker without depending only on the body text.
- 2026-05-31 01:28 UTC: Stats live top area now shows the recent-changes rule as its own visible card above the self-check, so the newest shipped item is harder to miss before verifying the live probe on /stats.
