# Changelog

User-facing changes to Windrose, newest first. Chores, refactors, and internal
plumbing are left out on purpose.

## 2026-07-30

- AI crawler traffic now includes an inferred purpose for each canonical bot: training, indexing, retrieval, active-agent, or unknown.
- `get_ai_traffic` and the dashboard aggregate crawler hits by purpose with verified, spoof-suspect, and unverified splits.
- Purpose labels describe documented User-Agent behavior. IP verification still confirms vendor identity, not the intent of an individual request.

## 2026-07-28

- Added a collection-health dashboard showing browser and server freshness, crawler identity verification coverage, crawl failures, and spoof-suspect traffic.
- Added the `get_collection_health` MCP tool so agents check evidence quality before interpreting analytics.
- Server silence is labelled as unobserved, not broken, because a healthy integration can be quiet when no recognized crawler visits.

## 2026-07-20

- New sites must prove control by serving a generated token from an exact-host HTTPS well-known path before Windrose accepts or exposes analytics.
- Server-side crawler capture now requires a rotatable, site-specific bearer key. Windrose shows the raw key once and stores only its SHA-256 hash.
- Browser collection now requires a matching Origin from a verified site and applies bounded source and site rate limits.

## 2026-07-19

- AI-readiness checks are now available to agents through the `check_ai_readiness` MCP tool, including exact fixes and the per-crawler robots policy.
- Published `llms.txt`, `robots.txt`, and `sitemap.xml` for Windrose itself.
- Added a customer Privacy Kit with the exact data flow, retention details, processor-role guidance, an AVV request path, and a copyable German disclosure template.
- Tightened data minimization: new events no longer store raw user-agent strings or full referrer URLs; event retention is 13 months and MCP telemetry retention is 90 days.

## 2026-07-18

- Stripe machinery landed, dormant: checkout (14-day trial), customer portal, webhook-driven subscription state, and plan helpers. Nothing is gated; the free beta is unchanged until billing is switched on.
- Billing settings card on the dashboard (renders only when Stripe is configured).
- Settings cards (proactive push, billing) moved out of the live-refresh region so an update can never wipe what you are typing.
- Changelog page, served at `/changelog.md` and linked from the footer.
- Refresh prompt: after a deploy, the dashboard shows a dismissible banner
  offering to reload, instead of silently serving a stale page.
- Sustained-absence detector: flags a crawler that has gone quiet, measured
  against a frozen pre-quiet baseline so a genuine drop-off is not masked.
- Autonomous hourly sweep: detectors now run unattended every hour and push
  what they find, so you learn about an anomaly without opening the dashboard.
- Proactive delivery to GitHub: point a finding at a GitHub `/dispatches` URL to
  trigger a workflow, or any other endpoint to receive the signed JSON. Payloads
  are HMAC-signed with a per-site webhook secret.
- One-command connect: per-client setup instructions plus a `windrose-analytics`
  agent skill served at `/skill.md`.
- Crawler identity verification: each AI-crawler hit is checked against the
  vendor-published IP ranges and labelled verified, unverified, or spoofed.
- GitHub Action doc served publicly at `/docs/github-action.md`, so you can wire
  a finding into a pull request from your own repo.

## 2026-07-16

- Proactive push backbone: hourly webhook digests and recommendation findings,
  deduplicated so the same finding is never sent twice.
- `get_recommendations` tool and an AEO suggested-actions panel that turns crawl
  errors into concrete fixes.
- Faster world map: the base geometry is cached and coloured in the browser, so
  the map paints without re-fetching on every dashboard refresh.

## 2026-07-15

- Recognise user-triggered AI fetches (Claude-User, ChatGPT-User, and similar),
  not just training crawlers, so assistant-driven visits are counted.

## 2026-07-14

- Server-side AI-crawler capture: a drop-in middleware records non-JS crawlers
  like GPTBot and ClaudeBot, plus the HTTP status each one received.
- Per-site crawler-coverage indicator in the sites table, showing at a glance
  whether server-side capture is active.

## 2026-07-11

- Live-updating dashboard with an in-dashboard connect card.
- AI-share hero metric and a world-map view of visitors by country.
- Invite-only beta gate with an admin approval flow.
- Reject collected events whose browser Origin does not match the claimed site,
  so the public tracker endpoint cannot be spoofed.

## 2026-07-08

- GitHub sign-in and a dashboard gated to the sites you own.
- MCP server over OAuth 2.1, with tools scoped to your own sites.
- Landing page, connect guide, and legal pages (Impressum, Datenschutz, AGB).

## 2026-07-05

- First release: cookieless tracker, ingest pipeline, MCP server, and a
  multi-site dashboard with anomaly detection that excludes AI crawlers from
  human metrics.
