Skip to content

Changelog

Newest first, and each entry names the commit that carried it so the change can be read directly. Faults are listed here next to features: a fix to something we got wrong is worth more to a reader than an announcement.

RSS · Service status · Check methodology

· Email

Product mail is a branded HTML template

Alerts, password resets and client reports now arrive as HTML rather than plain text, from the same `lib/email.ts` path that already preferred Cloudflare Email Sending over a vendor key.

0ef69a4

· Rank tracking

A hung SERP poll no longer stalls a config

A vendor poll that never returned left a rank config running indefinitely. It now times out, fails the run rather than the config, and pairs sandbox rows by id when the tag is dropped. Both found by a check written before the fix.

8cfb099 a9c7c5a 6bb4b3e

· Local SEO

New reviews alert, but only after a silent baseline

The first review fetch sets a baseline and sends nothing — a baseline is a snapshot, not news. Later runs compare against it, so a business with 400 reviews does not get 400 alerts on setup.

77ebf73

· Monitoring

The usage line reports the limit it actually enforces

The monitoring screen counted against one number while the API enforced another. The screen now reads the same limit the check does.

d6531c8

· Monitoring

Schedule, diff and alert — and charge nothing per run

A monitor re-checks a URL on a five-minute clock, compares the run to itself, and emails only when something changed. Critical is a page that left the index or an AI crawler's reach; a check that did not run last time is not a regression. A run costs 0 credits and that is asserted in two ways.

769b4da 5ffbc95 c67a66c

· AI visibility

The next action names your site, not our evidence page

A diagnosis handed the reader a link to crawlwise's own pages instead of theirs. It now names the reader's site, which is what the step was always supposed to say.

667473d

· Local SEO

The sweep now collects local tasks nobody collected

A local task whose collector died sat pending for ever while the generic sweep quietly reclaimed its hold — so a late collection would have delivered bought data for free. Sweeping now runs first, to completion, for that reason.

d8d3dce

· AI visibility

AI visibility, brand mentions, and a crawler diagnosis

Four models asked a prompt, one row per model per prompt, and an ordered diagnosis that explains the silence: a crawler that cannot read the site is the answer and everything below it is deferred. There is no AI visibility score anywhere, and the word survives in the source only in the sentence explaining why.

bbd5b5f 2fd7b09