Changelog

What's new

Every release, dated and explained. FanoutFox is built in public by one person, and this page is the record.

Chrome extensions update through the Chrome Web Store, and every update goes through Google's review before it reaches your browser. Entries marked "rolling out" are built, tested and queued. They flip to "live" when the store approves them, and your installed extension updates itself after that. While a fix sits in that queue, the download page carries the current build for manual install.

v2.0.3

1 September 2026live

One bad capture could take the whole dashboard with it

I went looking for problems before v2.0.2 went out and found one.

A capture the parser didn't expect threw an error while the page was drawing, and one empty slot in the list of searches was enough to do it. Nothing was catching that error, so the whole dashboard went blank, sidebar included. The capture was saved, so it came back blank every time you opened it, and you couldn't reach the Library to delete the one causing it.

Nobody has hit this. It needs a capture the engine wouldn't normally make, so realistically one you imported from a file somebody else wrote. That's a real enough way in, and it left your whole library looking gone.

Every part of the code that reads a saved capture now expects the data to be wrong and carries on, which took forty small fixes. If something still throws, the damage stops at the section it happened in. You get a message naming the capture to delete, the sidebar stays put, and the rest of the dashboard keeps working.

  • Links from a capture are checked before they're drawn. A source with anything other than a normal web address shows as plain text instead of a link.
  • The old v1 dashboard address forwards to the current one again. The v2.0.2 package had a broken page sitting there instead, which is what anyone who bookmarked it would have found.

v2.0.2

30 August 2026live

You can see what you've tabbed to

Nothing in the dashboard drew a focus ring, and five rules took away the one the browser draws. Four of them left a coloured border behind. The fifth, on the workspace picker, left nothing at all, so tabbing to it put your focus somewhere you couldn't see it.

There's one ring now, two pixels of the fox orange, and it only shows up if you got there with the keyboard.

  • The "?" buttons were 20 pixels square. WCAG asks for 24, so they're 24.
  • Seven small controls look the same size as before and give you 44 pixels to hit, including the sidebar links and the theme toggle.

v2.0.1

30 August 2026live

It tells you when you're signed out

Two people on different machines sent me the same card, the one that says ChatGPT changed its format and this build can't read it. Both of them were signed out of ChatGPT. The message was wrong, and it blamed the tool for something a login fixes.

FanoutFox now spots an anonymous session before it makes any network call, and says so. "It isn't you, the format moved" goes back to meaning what it says.

  • An answer built from a map pack or a product catalogue now counts as an answer with something in it, so those cards render instead of the empty state. That includes the provider chip on each business, which is the Yelp versus Google breakdown a user asked me for.

v2.0.0

27 August 2026live

I'm dropping Perplexity and Gemini

From this release FanoutFox reads ChatGPT and nothing else.

There are six entries below this one, all between 6 and 20 August. Two of them are ChatGPT moving where it writes something down, and I got the first of those wrong before I got it right. Every one of the six is a diagnosis, a fix, a test pass, and then a wait in Google's review queue before it gets to anybody. That's one engine. I was paying it three times and all three were a bit behind.

ChatGPT is also where most people ask their questions, and Perplexity isn't close. I can't prove that from my own users, because nothing in the extension phones home and I have no numbers on you at all.

So I'd rather do one engine properly than three adequately. Whatever was going into keeping Perplexity current goes into ChatGPT now.

Your old Perplexity captures still open. They keep their fan-out, their sources and their citations, and they're labelled for what they are. Nothing was deleted. The extension just stops making new ones.

  • Every surface has the new look, in one release rather than a slow drip. Sixteen dashboard sections, the popup, the panel and onboarding.
  • Reddit intel. When ChatGPT points a search at reddit.com, you get the threads behind it, the subreddit each one came from, and the snippet the engine actually read.
  • Local packs. Every business in a map answer names its data feed in the payload, so you see the provider on each business and the split for your workspace. Which feed serves your listing decides which reviews the answer reads.
  • Back up everything, restore anywhere. One file from Settings holds your workspaces, captures, pins and preferences. Restore merges and can only add, so bringing in an old backup never deletes what you did since.
  • Workspace configs follow you across Chrome profiles through Chrome's own sync. Captures deliberately stay where they were made.
  • The new search language, made visible. Every search line shows its freshness window and the site the engine pointed it at. A search that names your brand while targeting a domain you don't run gets flagged.
  • The sample data is gone. It was built from real answers, but the formats moved and it aged into a lie about what the tool shows today.
  • Permissions shrank. Both Perplexity origins are off the manifest.

The store went straight from v1.1.14 to v2.0.3, so this release and the two after it reached you inside that one.

v1.2.0

26 August 2026superseded

Your data, finally safe to hold

This one never reached the store. v2.0.0 came the day after and took everything below with it, so the backups, the onboarding, the local packs and the search language all went out there instead. It stays here because the work is real and the dates are the record.

The worst messages I get are never about layouts. They're "the update ate my data", and until now the honest answer was that nothing could bring it back. This release closes that class of failure, and it changes how the first five minutes feel too.

  • Back up everything, restore anywhere. One file from Settings holds your workspaces, captures, pins and preferences. Restore merges and can only add: bringing in an old backup never deletes the work you did since. Do it before manual updates, machine moves, or just on Fridays.
  • Workspace configs follow you across Chrome profiles through Chrome's own sync. Your domains, rivals and aliases appear on the other machine; captures deliberately stay where they were made. Sync can never delete a workspace either. A safety feature that could destroy something isn't one.
  • A first run that understands agencies. Onboarding now asks whether you're tracking your own brand or client brands, one workspace per client, and hands you prompt suggestions built from what you typed. There's also a restore path right there, for new machines.
  • The sample data is gone. It was built from real answers, but the formats moved and it aged into a lie about what the tool shows today. Your own first capture takes two minutes and it's yours.
  • Map answers show their sources per business. A user asked whether the local results come from Yelp or Google. It turns out every business in a ChatGPT map pack names its data feed, so the places card now shows the provider on each business and the split for the answer. Which feed serves your listing decides which reviews the answer reads.
  • The new search language, made visible. Every ChatGPT search line now shows its freshness window in days ("30d window", observed behaviour, documented in the research) and the site the engine pointed it at. A search that names your brand while targeting a domain you don't run gets flagged: that's the rebrand and migration trap, caught mechanically. Searches the engine pointed at reddit.com carry their own chip, and Reddit intel says how many of your prompts fired one.
  • Local packs, a new section. Every business in a map answer names its data feed in the payload, so FanoutFox now shows the feed per business and the split per workspace. Which feed serves your listing decides which reviews the answer reads.
  • The Overview leads with the verdict. Two sentences composed from your own numbers, then the engine split when you capture on more than one.
  • Release notes now ship inside the build: a one-line banner on the dashboard, once per version, nothing fetched. Regression suite grown from 572 assertions to 654 across 15 suites.

v1.1.14

20 August 2026live

Your searches are back, and I had the reason wrong

A user sent me a screenshot with the extension on one side saying no searches were exposed, and their browser's own developer tools on the other showing all four searches sitting right there in the response. They were right and I was wrong. ChatGPT never stopped recording the searches it runs. It moved them out of the saved conversation and into the live response, and this tool was only reading the saved copy.

  • It now reads both, and the older tool-call format too. Three places to look, and whichever one has the searches wins. They add to each other rather than replace, so a capture that has them in two places gets all of them and nothing is lost.
  • The empty message was too confident and that has changed. It used to say the engine hadn't exposed its query list, which sounded like a fact and was a guess. It now says the searches may not have been recorded, or the format may have moved again and this build can't see it, and asks you to tell me if the answer clearly ran searches. That card is the first place a format change shows up, so a confident wrong answer there is the expensive kind.
  • The wider lesson, kept here rather than in a private note. v1.1.13 was built from a report that the field had been deleted. I couldn't see the traffic myself and said so, then built on it anyway. One screenshot from someone actually using the thing settled in a second what the report had wrong. Regression suite grown from 550 assertions to 572.

v1.1.13

20 August 2026live

ChatGPT changed how it writes down its searches

On 20 August the fan-out card went quiet on new answers. The explanation in this entry was wrong when it was written, and the correction is in v1.1.14 above. ChatGPT had not stopped recording its searches; it had moved where it records them. What is true here is the rest of it, because the same release found a second way the engine writes its search calls down, and that turned out to be worth reading in its own right.

  • The new format says more than the old one did, so the fan-out card now shows it. Each search carries the site the engine restricted it to, which is different from a site: operator inside the query and is badged separately, because both happen and sometimes on the same search. Searches also carry a recency number. It looks like days, but that isn't documented anywhere, so it's shown as a bare number and the tooltip says the reading is a guess.
  • A chip row on each capture names which kinds of lookup the answer made, whether that's a web search, an image search, the product catalogue or the places index. That recovers some of what the intent label told you before OpenAI stopped sending it in August.
  • Two new cards, and each only appears when that lookup actually happened. Places shows the venues the engine shortlisted for a local answer and sent back to verify, which is the local version of the brand shortlist. Catalogue shows the products it looked up before any product card rendered, so you can see what was considered and not just what won.
  • When part of an answer is a widget that ChatGPT draws itself, a chart or a fixture list, the capture says so. Those carry no citation, so there's no slot to win in that part of the answer, which you want to know before you spend time trying.
  • One caveat. Reading the new format means reading a text layout rather than named fields, which is more fragile than everything else here. Any line it doesn't recognise is kept and reported rather than dropped, so a change shows up as a note instead of a silent gap. Regression suite grown from 439 assertions to 482.

v1.1.12

18 August 2026live

A mention means the text you actually read

Someone reported five mentions of a car maker that appears nowhere in the answer they got. They were right. ChatGPT had weighed that brand up in its own reasoning, decided against it, and never put it in the reply, and mention counting was reading the reasoning as though it were the answer.

  • Mention counting took every message the assistant produced, which includes the thinking blocks and the searches it runs. So a brand the model considered and rejected scored the same as one it recommended. The trail view had the right test for this since last year; the mentions path just never used it. Now it does.
  • This one is worth being plain about. Mentions is the number this tool leads with, and the page says a mention sits in the text people actually read. For any answer where the model thought out loud about brands it then dropped, that number was too high.
  • Captures taken before this build keep the old counts. Mentions are worked out when a capture is taken, so re-run anything you are about to report on.
  • Found by a user, like the citation fix in v1.1.11. Two reports in two days from people reading the numbers closely, and every test I had passed through both of them, because each one checked its own feature on its own.
  • So the tests changed shape. There's a new suite that ignores features and checks the numbers agree with each other, running the real parser over real answers rather than saved examples. It catches both of those bugs when I put them back deliberately. The regression suite went from 326 assertions to 439.
  • It also caught something in the sample workspaces. Four of the twelve sample answers claimed a cited source that the runner-up ledger didn't know about, so the sample data contradicted itself, which is the first thing anyone sees before their own first capture. Fixed, and the samples are now built from the same rule the real parser uses.

v1.1.11

14 August 2026live

Pages linked in the answer could read as uncited

Someone testing a live answer found their client linked twice in the text, sitting in ChatGPT's own Sources panel, and marked uncited here. They were right and I could reproduce it in a minute. Cited means the links in the answer text, it always has, and the parser was failing to match some of them to the pages they point at. This has been wrong since the first release.

  • Two separate causes. The parser reads a payload from the outside in, so when the retrieval records and the citations sat on the same message, which is the usual shape, it checked the citation before it had registered the page being cited. Whether a citation resolved came down to the order of keys in the payload, which is why the flag looked erratic rather than broken.
  • The second cause is spelling. Matching was exact, and ChatGPT adds a tracking parameter to the links it shows you, so the link in the answer and the record of the page it points at were never the same string. Matching now ignores tracking parameters, trailing slashes, www and http against https, while keeping real parameters apart so two pages that differ by ?page=1 and ?page=2 stay two pages.
  • Your existing captures keep the old flags. Cited is worked out when a capture is taken, not when it's displayed, so anything captured before this build still under-reports. Re-run the prompts you care about. Anything built on the cite rate, the converts column and the conversion warnings included, was reading low.
  • The regression test pins both payload orderings, because a test written after a fix like this passes on the broken version too unless it does. Suite grown from 293 assertions to 326.

v1.1.10

12 August 2026live

Tell it what your brand is actually called

Mentions get matched on your domain and the bare root of it. So keywordinsights.ai counted, and "Keyword Insights" written out in the answer text didn't. Competitors have had an alias editor since the first release. Your own domains never did, even though the matching underneath never cared which list a domain sat in. If your brand name isn't one word identical to your domain, you've been undercounting the number this whole tool is built around.

  • Your domains now get the same alias editor competitors have, in the same layout, with your own rows in the accent colour. Add a display name and as many alternates as the answers use.
  • Aliases are worked out from settings rather than frozen into each capture. So adding yours today corrects every capture you've already taken, not only the next one.
  • If a workspace tracks domains and none of them have an alias, the settings page now says so. That failure was invisible before, because the mention count still rendered. It was just low.
  • A user asked how to do it, which is how it got found. The sample workspaces have had own-brand aliases from the start, so anyone exploring the sample data watched "KI" and "Keyword Insights" merge correctly and then couldn't reproduce it. Regression suite grown from 241 assertions to 293.

v1.1.9

6 August 2026live

The shortlist ChatGPT writes before it searches

Ask ChatGPT a comparison question and it names its candidates in its own reasoning, before it's fetched a single page. "My likely shortlist is Kinsta, Rocket.net, Cloudways, SiteGround, and Hostinger" is a real line from a real answer, written before any of those sites were opened. That's the round your brand has to be in, and until now nothing here showed it.

  • A new Shortlist card on every capture and a new dashboard section, both reading the candidate set out of the engine's own words. Each brand is scored against what actually got cited, so shortlisted and cited reads differently to shortlisted and then ignored. The workspace view answers the harder question, which is whether you're ever a candidate at all.
  • It doesn't match on the phrase. That wording changes every few weeks, so candidates get found by how they look and then confirmed against something else the capture already holds, an entity reference or a domain the engine really retrieved. Anything unconfirmed is dropped. Checked against live conversations across hosting, accounting and support software.
  • OpenAI stopped declaring the answer intent (turn_use_case) in August 2026, and its streaming response is now an empty handshake. The intent label and URL moderation counts retire with a plain note, the same treatment the pipe column got in v1.1.8. Captures saved before the change keep theirs. Sources, citations, fan-out and reasoning are untouched.
  • The fan-out survived a rename in the same week (search_model_queries became search_queries) with no code change, because the parser already read both. Regression suite grown from 132 assertions to 241.

v1.1.8

30 July 2026live

Features an engine can't feed now switch off

The runner-up layer is ChatGPT's own data structure. Perplexity's citations are flat markers with no second place. Until now the runner-up ledger and shopping still rendered on a Perplexity view, with empty states that read like findings. I checked a live capture, and the layer never turns up there at all.

  • On an engine that never sends the layer, those sections disable in the nav with a "ChatGPT only" tag, the runner-up rate and latest-losses tiles sit out, and the winners-vs-runner-ups card isn't built at all. Where it does render, it carries the same engine badge the Perplexity-only cards got in v1.1.6. Real data always wins, so a capture that holds the layer renders it whatever the engine.
  • OpenAI removed the retrieval pipe layer (result_source) from ChatGPT payloads in July 2026, so the dominant-pipe column and vendor colours retire where that data is gone, replaced by a plain note linking the research that mapped the pipes. Perplexity keeps its pipe column, and captures saved before the removal keep theirs.
  • Behind it, a full end-to-end pass. 132 regression assertions, every dashboard section walked on both engine slices, and a live capture on each engine parsed with the released adapters against that day's formats.

v1.1.7

25 July 2026live

Engine-only signals reach the popup

The v1.1.6 badge sat inside card bodies, and the popup renders every card as a collapsed row. So on the surface people actually use, nothing said a feature was engine-specific until you expanded it.

  • The badge now sits on the collapsed row itself, reading "query router · 86% · Perplexity only" with no click needed.
  • The always-open summary card gains a line whenever an answer carries engine-only extras, pointing at the rows below.
  • The preview harnesses hardcoded ChatGPT as the engine label, so Perplexity captures previewed under the wrong name. Fixed.

v1.1.6

25 July 2026live

An Engine signals section, and badges on engine-only features

After v1.1.5 the router card and trust notes existed, but only inside a single opened capture. They were on no aggregate view and in no nav entry, so you had to know they were there.

  • A new Engine signals dashboard section rolls them up across the workspace. Which categories the engine filed your prompts under and how confidently, which checks fire and how often, and what it says it trusts each domain for.
  • An "only on this engine" badge, in that engine's own colour, marks the router card and the trust summary wherever they render.
  • On ChatGPT the section says plainly that the engine exposes none of this, and how to see it, instead of rendering empty.

v1.1.5

25 July 2026live

The router card and trust notes, captured but never shown

A bug worth putting on the record. Perplexity's query classifier and its per-domain trust notes had been captured since v1.1.0, and no surface ever rendered them. Found by using the extension rather than by the test suite, which is the kind of gap a suite can't catch.

  • The query router card shows how Perplexity filed your question before it searched, with the label, the confidence, and which checks fired against which thresholds.
  • Trust notes on sources, the per-domain sentence saying what Perplexity considers that domain reliable for, shown on the source rows plus a summary line.
  • Both appear only on engines that send them, which set up the badge work in v1.1.6 and v1.1.7.

v1.1.4

25 July 2026live

Conversion, not just retrieval

Almost everything gets fetched, and very little of it gets cited. Across 57 live conversations the overall cite rate was 3.1%, and per-domain it ran from 16% down to zero. Counting retrievals was measuring the wrong thing.

  • Top domains swaps the old "fetched, not cited" column for converts, the share of reads that actually earned a citation. The raw miss was always visible from the two columns either side. The rate is the part you can't eyeball.
  • The Overview calls the diagnosis worst case first. Your own pages read five or more times and never cited is a content problem rather than a crawling one. Converting below the rest of the workspace gets a warning with both rates. At or above par is stated plainly rather than dressed up as a scolding.
  • A citation-type tripwire. ChatGPT's own client handles seven citation-bearing types and only two have ever appeared on the wire here, so captures now flag it when a rare one fires, including the kind the model predicts rather than traces.

v1.1.1

21 July 2026live

The personalisation lens

A user asked the right question. ChatGPT personalises answers per account, so how do you trust what you're measuring? By having the tool flag it.

  • Captures get a "personalised" flag when the engine pulled from your account's own memory, history or files, or when its searches targeted your own brand or site without your prompt asking. A site: probe on your own domain for a generic question is the classic account-memory tell.
  • The verdict row, the plain-English readout, the Library and the Overview all carry it, and they all say the same thing. Your own placement in a personalised answer is a mirror rather than the market. Rival and citation data stays reliable.
  • The fix comes with it. Have someone neutral run the same prompt, copy the capture as JSON from their popup, import it into your Library and diff. The difference between the two captures measures what your account changed.
  • Under the hood, the representation audit now keeps each engine's stored summaries in separate timelines, so ChatGPT and Perplexity representations of the same page never read as one page "changing".

v1.1.0

21 July 2026live

Perplexity goes live, and the dashboard goes multi-engine

The multi-engine promise, delivered. FanoutFox now captures your own Perplexity sessions the same way it reads ChatGPT.

  • Perplexity capture. The fan-out, sources, citations and mentions behind a Perplexity answer, plus two signals only Perplexity gives you, per-source trust notes and the router's classification of your question.
  • Per-engine dashboard. A segmented engine selector scopes every section to one engine's captures, with engine chips throughout.
  • Compare. The same prompt lined up side by side across engines. Cited in ChatGPT but invisible in Perplexity is an action plan, and now it's a view.
  • Chrome asks you to approve access to perplexity.ai when this update reaches your browser. That's the new engine, and the same privacy rules apply. It reads your own session and keeps everything local. On Perplexity there's no token to read at all, so it's a lighter touch than ChatGPT.

v1.0.7

22 July 2026live

The parser catches up with ChatGPT, twice

ChatGPT changed the shape of its answer payloads on 21 July, then changed it again the next day on thinking answers. Every capture was showing the fallback card instead of sources. This build reads all three generations of the format, each one fixed and verified against live captures the day it broke.

  • The 21 July change dropped the old source wrapper and moved citations into grouped items. The 22 July change went further on thinking answers, nesting every source under per-domain result groups and turning the reference id into an object. FanoutFox now keys on the parts of the format that survived all three shapes.
  • Runner-up sources moved inside citation items. The ledger finds them in their new home.
  • The retrieval-pipe signal is no longer exposed in new payloads at all, so captures say so plainly instead of guessing.
  • A regression suite now pins every payload generation seen so far, so the next format change fails loudly in development instead of silently in your popup.
  • Live on the Chrome Web Store since 24 July, approved after review, and it took the v1.0.1 to v1.0.6 work below to the store with it. It's also always available as a manual install, which is where the next format fix will appear first, before the store update clears.

v1.0.6

21 July 2026live

Representation tracking over time

The stored-summary work from v1.0.5 now watches for change. Because the same page can appear across many of your captures, FanoutFox compares the summaries it was handed each time.

  • Pages show "summary changed" with the date, and you can read the previous version next to the current one.
  • A red flag when a page's summary changed and it hasn't been cited since. That's the regression worth chasing.
  • Pages whose summary keeps coming back identical are marked stable across N sightings, which is evidence the representation is stored rather than generated per query.
  • The Monday brief gains a Representation gaps section listing every page whose summary works against you, with the on-page fix.
  • A citation-rate comparison between pages whose summaries name you and pages whose summaries don't. It only appears once you have a real sample, and it's labelled for what it is. Correlation from your own captures, not causation.

v1.0.5

21 July 2026live

The representation audit

ChatGPT doesn't hand the model your page. It hands the model a stored summary of your page. This release shows you that summary and scores it against your brand.

  • Top URLs gains a "your pages · representation" view holding the full stored summary for each of your pages the engine retrieved, with a verdict.
  • Every page gets checked four ways. Does the summary name your brand, does it name your rivals (comparison pages do this constantly), do your numbers survive, and is it thin for its retrieval pipe or stale in the stored version. Every failed check comes with the on-page fix.
  • The popup calls out the case worth acting on in plain words. Your page was retrieved, wasn't cited, and its stored summary never names you.
  • Everything is read from your own captures. FanoutFox never claims to see the engine's index, only what the model was actually handed in your sessions.

v1.0.4

21 July 2026live

Full stored summaries

  • Captures now keep the stored page summary near-full, up to 2,000 characters, where it used to get truncated at 300. Some retrieval pipes hand the model summaries over 1,200 characters long, and the audit needs the real text.

v1.0.3

21 July 2026live

One-click export from the popup

Asked for in a Chrome Web Store review. Done.

  • A share row under the popup verdict. CSV of the answer's sources, copy as Markdown for the full story of the answer, ready to paste into a doc, Slack or an AI chat, and copy as JSON for the raw capture.

v1.0.2

21 July 2026live

Pick the right workspace, or get told

  • The popup's workspace chip is now a proper dropdown, so you can see where the next capture will save and switch in one click.
  • A wrong-workspace nudge. Every capture is scored against every workspace's own brand, and when an answer clearly belongs somewhere other than where it saved, one click moves the capture and switches the active workspace.

v1.0.1

21 July 2026live

Workspaces made properly self-contained

  • Settings now always save to the workspace you're editing, and every open surface (popup, side panel, dashboard tabs) stays in sync when you switch anywhere.
  • Deleting is scoped and it tells you what it's doing. Deleting a workspace removes its captures with it instead of moving them somewhere you didn't ask for, a new control clears one workspace's captures while its settings survive, and every deletion is double-confirmed.
  • Each workspace's library, conversation history and diff baseline are fully independent.

v1.0.0

10 July 2026live

First public release

  • FanoutFox approved and live on the Chrome Web Store, with the fan-out, sources, citations, mentions, the trail, shopping tiers, Reddit intel, workspaces, capture diffing and the Monday brief. All local, all free.
← Back to FanoutFox