Freebuff Ad Block v1.3.0

Chrome · Edge · Brave · Firefox

The ads stop.
The build keeps streaming.

A site-scoped extension for freebuff.com only. It blocks ad requests before they leave your browser, then clears out the slots that get injected while the platform is thinking — the ones that appear mid-build and never fire a separate request.

How it works

Three layers, in the order they fire

01

Network rules

A declarativeNetRequest ruleset blocks known ad and tracker hosts before the request leaves the tab. Every rule is scoped to requests initiated by freebuff.com, so it never follows you to other sites.

02

Mid-build cleanup

Slots rendered client-side never make a separate ad request, so a blocklist cannot see them. A content script watches the DOM and removes the ones inserted while the platform is thinking, then collapses the empty space they leave behind.

The same layer covers freebuff.com's own in-product promo cards — the ones with a literal AD chip next to CodeRabbit or Baseten. Those are first-party, so only reading the page can remove them. They are matched on the badge text and never on page text alone, and nothing holding a link-free paragraph, a code block or an editor is ever touched.

03

One switch

The toolbar popup pauses blocking for the whole site in one click and shows what was hidden on the current tab. The setting syncs through chrome.storage — no account, no dashboard.

It also carries the escape hatch: Hide an element on the page. Click it, click an ad nothing recognised, and the rule sticks on every future visit. That is the part no heuristic can replace — a blocker only finds what it was taught, and the picker is how you teach it.

The part that matters

It cannot break your build stream

Your build and thinking progress arrives over XHR and WebSocket from freebuff.com itself. A single mis-scoped rule would cut that off. So the ruleset carries a priority-100 allow rule for freebuff.com's own traffic that every block rule — all priority 1 — has to lose against. Path-based rules are slash-anchored so /load and /headers can never match, and the content script refuses to hide any element that still holds real content.

Install

Load it unpacked — about a minute

Neither Chromium nor Firefox will install an unsigned extension from a link, so until a store listing is live the path is loading the extracted folder as a developer extension. It behaves exactly like an installed one — in Chromium it persists, in Firefox a temporary add-on lasts until the browser restarts.

  1. 1

    Download and extract

    Grab the zip and unpack it somewhere permanent. If you move the folder later, Chrome will report the extension as unloaded and you will need to point it at the new path again.

    /downloads/freebuff-adblock-1.3.0.zip
  2. 2

    Open the extensions page

    Visit chrome://extensions — or edge://extensions / brave://extensions — and switch on Developer mode in the top right corner.

  3. 3

    Choose Load unpacked

    Press Load unpacked and select the extracted freebuff-adblock folder — the one containing manifest.json. The toolbar icon appears and you are done.

  4. 4

    Reload your open freebuff.com tabs

    Content scripts only attach to pages loaded after the extension is enabled. Reload any tab that was already open, then check the popup — the hidden-element counter starts climbing.

Firefox

Firefox has no Manifest V3 service worker, so it runs the background as an event page. That key is Manifest V2 as far as Chromium is concerned: ignored, but reported as a warning on the extensions page. Rather than make every package carry it, the build writes a Firefox variant with the key added. Everything else is shared — the same ruleset, the same content script, the same popup.

Download the Firefox package, then open about:debugging#/runtime/this-firefox, choose Load Temporary Add-on, and select manifest.json from the folder you extracted. A temporary add-on lasts until Firefox restarts — a build signed on addons.mozilla.org is the persistent route.

What a listing changes

A store listing removes every step above: one click, and the store handles updates. It is also the only route that survives a restart without reloading anything by hand.

Two packages are built for submission, both with manifest.json at the archive root, which is what the stores require: one for the Chrome Web Store and Edge Add-ons, and one for addons.mozilla.org.

Safari is the exception. It needs a separate build wrapped in a native app and a paid Apple developer account, so browsers that detect as Safari get no button at all — better a missing button than one that leads nowhere.

Auto-updates

What the update feed does, and does not, do

Unpacked extensions do not auto-update

This is the honest part. Chrome only checks an update.xml feed for extensions that were installed from that feed. A folder you loaded unpacked is treated as local source: Chrome will never poll for a newer version of it, and none of the files on this site can change that.

To update, download the new zip, extract it, and hit the refresh button on the extension card in chrome://extensions.

The feed is built and ready

The build regenerates update.xml alongside every package, with the matching version and codebase URL. Wire it up when you want automatic updates, by either route:

  • Managed policy — set ExtensionInstallForcelist on your own machine, pointing at the feed. Chrome then installs, updates and reloads it for you.
  • Chrome Web Store — publish it and the store handles distribution and rollouts entirely.

Both require the placeholder app ID in update.xml to be replaced with the packed extension's real ID, and a signed CRX rather than a zip.

Scope

This covers the web version of freebuff.com only. The desktop application is a separate binary with no extension surface, so nothing here applies to it — a browser extension can only reach pages Chromium renders.