Release Notes

What's new in FitShield.

The full release history, rendered straight from the extension's changelog markdown — one source of truth, never a hand-kept copy.

Fitshield Version: 0.53 (Android Expansion) Latest

Fitshield Version: 0.53 (Android Expansion)

Released 2026-07-02 — view this release on GitHub.

Version 0.53 is a whole new beast. FitShield now supports Android and Firefox (approved on Mozilla)!

The android build required some partial re-architecture of the 0.52 build. FitShield now operates on a platform agnostic engine instead of just blocklist rules, we had this kind of forming in previous releases but now that we are going multiplatform, we need that tooling for portability. The new android build uses the built in android vpn service to expose the hostname SNI and block accordingly. it also identifies app's ID data to block the same 2500+ domains as the extension. everything is still local only.

While having android is Incredibly hype, its not truely at 0.54 level yet. FitShield android works as a preview but still has alot of backend refinement before a play store version can be released. but it still has everything you've come to expect from Usha Corporation.

The new Firefox build is available on: https://addons.mozilla.org/en-US/firefox/addon/fitshield/

List of changes:

Android (detailed):

1. Native app (WebView + Kotlin): the extension's actual web UI runs in a WebView behind a fitshield.* platform abstraction (browser-shim.js / android-shim.js) — dashboard, stats, recipes, currency, themes, ambient background, all 83 locales, verbatim. One product, two platforms, zero forks (audit-enforced). 2. Website blocking (TLS-SNI/HTTP-Host connection filter): a local VpnService resets blocked connections and relays everything else untouched. Works with strict Private DNS/NextDNS on; never touches DNS, never decrypts HTTPS, tunnels nothing anywhere. 3. App blocking (opt-in AccessibilityService): opening a blocked food app shows a native pause screen — branding, block reason, category-aware messaging + matched veg/meat recipes, schedule status, stats, 60s reflection timer, temporary unlock, localized buttons, "Learn more" → fitshield.net. Reads only the foreground package name; survives process kills; wins the foreground race against already-running apps. 4. 870 verified app→package mappings (from 33): every ID confirmed against official Google Play listings, never guessed; ~1,712 stay needs_review by design. New additive datasets + generator/validator/porter tooling with determinism and drift checks. 5. Optional hardening, all off by default: overlay permission flow, "extra reliability" keep-alive service, battery-optimization guidance — with live status indicators and plain-language privacy copy. 6. Edge-to-edge One UI styling: transparent status/nav bars over the gradient.

Extension

1. Block page now honors prefers-reduced-motion.

Docs/cleanup

1. docs/ANDROID.md fully reconciled with reality (old DNS-sinkhole framing removed, intentional Android↔extension deviations documented), README updated, dead pre-WebView UI resources deleted.

Next steps:

0.52: above

0.53: full Android support with native application. ongoing refinements to engine and blocklists.

0.54: play store release build (tooling already inside 0.53 just need to finish the paperwork), another data driven release, and cleanup of repo to serperate engine from builds better.

1.0: enough holding off, 1.0 time

Thank you for Choosing FitShield! Peace,

Eesh Garg

FitShield 0.52 — Data expansion, insights & documentation infrastructure

FitShield 0.52 — Data expansion, insights & documentation infrastructure

Released: 2026-06-29

Overview

0.52's mission was better data creates better decisions. Rather than redesign anything, it strengthens the foundation future releases build on: richer personal insights, a more complete backup, validated curated data, and — for the first time — a permanent, version-controlled documentation system for the project's history and direction.

Major features

  • Most blocked sites, categories, and countries. Your Stats now shows a
  • private, on-device breakdown of what you block most: your top sites (e.g. DoorDash, Uber Eats), top food categories (pizza, coffee, chicken …), and top countries. The lists update live as you go and stay hidden until there's something to show. - Still privacy-first. Only aggregate counts of the curated brands you already block are kept — keyed by apex domain, food category, and primary operating country. No URLs, page paths, timestamps, or browsing history are ever stored. The plain blocked-visits counter remains a single integer; this richer breakdown is recorded by a separate, dedicated path so the original privacy guarantee is preserved (and unit-tested). - Most blocked countries counts the primary market. A block counts only the brand's primary (first-listed) operating country, not every country it operates in. This keeps a single block of a global brand (e.g. McDonald's, ~50 markets) from inflating the whole list, and uses only curated brand metadata — never the user's real location. See the design note below. - Category and country names are localized to your display language.

Improvements

  • Import / Export is now "Data & Settings." The buttons are renamed to
  • Export Data & Settings / Import Data & Settings to reflect what they've always done: a single file already carries your settings, statistics, dashboard card order, favorites, recipe selections, meal averages, currency preference, custom blocklists, and whitelist (disabled-site keys).

  • Versioned backups. The backup file now records a schema version alongside
  • the app version and export timestamp, so future restores can migrate older files reliably.

  • Resets cover the new stats. "Reset recipes & preferences" and the factory
  • reset now also clear the most-blocked breakdowns.

  • Fully offline. The Settings "Buy me a coffee" button previously loaded its
  • image from a third-party server on every open; it is now rendered locally. The extension makes no network requests at all — the donation link only opens when you click it. This matches FitShield's "nothing is uploaded" promise and was confirmed by a release-candidate audit.

  • Consistent category names. The country/category picker and the most-blocked
  • stats now share one localized, cleanly title-cased category label (e.g. fast_casual → "Fast Casual"), so categories read the same everywhere.

Curated data

  • Fast-food country coverage expanded from 14 to 56 countries. The
  • globally dominant brands were badly under-covered (McDonald's listed 5 countries, KFC 4); 27 unmistakably global chains were expanded to their major, publicly-known operating markets — e.g. McDonald's 5 → 50, KFC 4 → 40, Burger King 4 → 30, Starbucks 4 → 30, Subway / Domino's 4 → 21, Pizza Hut 3 → 25. Countries are listed primary market first (the most-blocked-countries heuristic relies on this), and region tags are recomputed from the country list for consistency. No countries were invented — only confident major markets were added.

  • Aliases added for matching accuracy: bk.com (Burger King), nandos.com
  • (Nando's), wingstop.co.uk (Wingstop). Alias integrity is validated (no duplicates, no collisions with primary domains).

  • Specialty metadata enriched for coffee/bakery/dessert/pizza brands so a
  • brand's secondary nature is searchable (e.g. Starbucks → coffee, espresso, tea, pastries, breakfast, sandwiches; Dunkin' / Tim Hortons → coffee, donuts, bakery, breakfast). Categories remain single-valued for blocking (see design note); specialties carries the multi-category richness.

  • Validated every entry in both datasets: **0 duplicate domains, 0 malformed
  • country codes, 0 unknown region tags, 0 missing required fields, 0 alias issues** across 2,121 fast-food and 576 delivery entries.

  • Documented the previously-undocumented aliases field in the dataset schema.
  • Tightened the schema field docs: country codes are specified as ISO 3166-1
  • alpha-2, and the region tag set is enumerated (NA, EU, AS, SA, AF, OC, AN).

  • Bumped both datasets to _version 1.1.

> Approach: correctness over quantity. The fast-food set was already > comprehensive at the brand level (virtually every well-known chain is present > — In-N-Out, Shake Shack, Panera, Whataburger, Gong Cha, Chatime, etc.), so > the 0.52 pass deepened country coverage and metadata quality on the brands > that needed it rather than bulk-adding entries.

Design notes

  • Single category, not multi-category. Brands keep one primary category
  • (used by the blocking engine and the category picker) plus a searchable specialties array for everything else. Making category multi-valued would change blocking behavior (a brand would block under several categories at once) and the storage/stat shape — that is feature work, deliberately out of scope for a data-refinement release. The single-primary + specialties model captures "a coffee shop is also a bakery" without a schema change.

  • Most blocked countries = primary market. Counting every operating country
  • was acceptable when brands listed a few countries, but after the coverage expansion a single global-brand block would have incremented dozens of countries. Switching to the primary (first-listed) market is a strictly local heuristic — it reads only curated metadata and never the user's location or any browsing data — so privacy is preserved while precision improves.

Architectural changes

  • New background message recordBlockedBrand aggregates the local
  • most-blocked breakdown independently of recordBlockedVisit, keeping the integer-only visit counter (and its privacy test) untouched.

  • Stats rendering resolves blocked apex domains to brand labels from the loaded
  • blocklist and localizes country names with Intl.DisplayNames.

Repository changes

  • New changelog/ folder — the canonical, permanent release history, one
  • markdown file per release, plus this index.

  • New changelog/ROADMAP.md — living documentation of the
  • current version, next planned work, future ideas, long-term vision, and completed milestones.

  • Established markdown as the single source of truth for release history and
  • roadmap; GitHub Releases and the in-extension What's New are summaries of it.

  • New tools/ validation suite (developer-only, never bundled): dataset,
  • alias, country, category, locale-parity, documentation, and build-asset audits behind npm run validate. Each is independently runnable and produces human-readable output, with a shared ISO-country / region map and an IDN-aware apex-domain check.

  • Build is now validation-gated. node build.js runs every audit first and
  • aborts on any error, so broken datasets, locales, docs, or missing assets can never be packaged. The audits also run under npm test.

  • New CONTRIBUTING.md — how to add brands, countries,
  • categories, recipes, and locales; how to validate, build, and cut a release.

Localization

  • Added the new stats labels (Most blocked sites / categories / countries and
  • an empty-state line) and the renamed Data & Settings buttons — translated across all supported display languages (exact key parity with English, enforced by the locale test suite).

  • Localized food-category display names. The most blocked categories list
  • now shows a localized, properly title-cased category name. Core food categories (Burger, Pizza, Chicken, Coffee, Tea, Dessert, Bakery, Sandwich, Mexican, Asian, Seafood, Smoothie, Korean Food, Fast Casual, Grocery, Catering, Restaurant) are translated for 28 widely-spoken languages; every other locale and any niche/infrastructure category falls back to a clean title-cased English term (e.g. fast_casual → "Fast Casual") via a render prettifier — never a raw identifier.

  • Internal category identifiers are unchanged; only displayed text is localized,
  • through the existing chrome.i18n system (no second localization system).

  • Brand names remain untranslated by design.

Browser compatibility

  • No changes. Firefox (Gecko ≥ 140; Android ≥ 142) and Chromium (Chrome, Brave,
  • Edge), Manifest V3.

Licensing changes

  • None.

Known issues

  • Food-category display names are translated for 28 languages; the remaining
  • locales show clean English category terms (via the prettifier) pending native translation. UI strings (stats labels, Data & Settings) are fully translated across all locales.

  • Fast-food country coverage targets the major global brands; it is intentionally
  • not exhaustive per brand, and smaller regional chains keep their existing (correct) limited country lists.

FitShield 0.51 — Stats, Firefox & a wider dashboard

FitShield 0.51 — Stats, Firefox & a wider dashboard

Released: 2026-06-27

Overview

0.51 was a milestone release. FitShield gained a private, on-device stats panel, learned to run on Firefox alongside Chromium, got a redesigned and more spacious Settings page, and picked up onboarding, local backup & restore, and a proper extension icon — all while keeping everything local-first.

Major features

  • Your Stats (local-only). A private, on-device panel showing blocked
  • visits, estimated money saved, and calories avoided, with a configurable average meal cost and average meal calories. No browsing history is ever stored.

  • Currency-aware savings. Money saved is shown in your language's currency
  • (₹, ¥, €, $ …), auto-picked from your language with a country-aware default meal cost and calorie estimate, plus a manual currency override.

  • Recipe choice logging. On the block page, picking a suggested recipe with
  • "I'll make this instead" logs the calories you avoided into your stats.

  • Block-reason explanation. The block page explains exactly why a site was
  • blocked: the domain, the rule type, the food category, and the countries the brand operates in.

  • Firefox support. FitShield now runs on Firefox and installs cleanly on
  • Chromium browsers (Chrome, Brave, Edge) from a single source tree.

  • A real extension icon.

Improvements

  • Redesigned Settings. Cards reflow into columns on wide screens and stack
  • cleanly on narrow windows.

  • Onboarding & What's New. A first-run welcome tour and an update screen.
  • Local Backup & Restore. Export and import settings as a single local JSON
  • file — nothing is uploaded.

  • Living background. Soft color fields drift on their own, vary subtly on
  • each open, gain gentle parallax on scroll, and slowly shift hue; titles and the savings figure carry an animated gradient. Reduced-motion is respected.

  • Reset options with confirmation dialogs (custom-site removal, partial resets,
  • and a full factory reset).

  • Published the Chrome Web Store listing.

Architectural changes

  • Single source tree, two packages. Manifest V3 background handling differs
  • by engine: Chromium supports only background.service_worker, while Firefox uses background.scripts (an event page). The committed manifest.json is the clean Chromium form; build.js derives the Firefox manifest by adding background.scripts and produces a store-ready zip for each engine, with no background.scripts manifest warning on either.

  • A small built-in ZIP writer guarantees forward-slash archive paths (Windows'
  • Compress-Archive stores backslashes, which breaks extension resource loading and AMO validation).

Repository changes

  • Consolidated branding assets into a Branding/ folder and cleaned up the
  • repository.

Licensing changes

  • Separated the data and branding licenses (DATA_LICENSE.md,
  • BRANDING_LICENSE.md) from the GPL-licensed code.

Browser compatibility

  • New: Firefox (Gecko ≥ 140; Android ≥ 142) and Chromium (Chrome, Brave,
  • Edge), Manifest V3.

Localization

  • Translated the new 0.51 screens (stats, reset, welcome tour, What's New, block
  • reasons, recipe choices) across every supported language, and added German as a new display language.

Known issues

  • Stats were aggregate totals only; there was no per-site/category/country
  • breakdown yet (added in 0.52).

FitShield 0.50 — Recipe suggestions & blocking fixes

FitShield 0.50 — Recipe suggestions & blocking fixes

Released: 2026-06-26

Overview

0.50 turned the block screen from a simple stop sign into a helpful nudge, and fixed a serious blocking regression. When you hit a blocked ordering page, the screen now offers a couple of quick home-cooked alternatives — and a data bug that could silently switch all blocking off was tracked down and fixed.

Major features

  • Recipe suggestions on the block page. The block screen suggests one
  • vegetarian and one meat/protein recipe chosen from a local catalog, based on the category of the site you blocked.

Improvements

  • The block screen now reliably shows which brand triggered it, so the pause
  • feels intentional rather than mysterious.

Fixes

  • **Fixed an international domain in the blocklist that was silently disabling
  • all blocking.** A single invalid declarativeNetRequest rule makes the browser reject the entire dynamic-rule batch; one malformed entry therefore took down blocking everywhere. The offending entry was corrected and the rule-building path hardened.

  • Made the block screen appear dependably.

Architectural changes

  • Recipe selection logic (recipes.js + data/recipes.json) is shared between
  • the browser and Node tests, and is deterministic for a given site so the same block always suggests the same pair.

Repository changes

  • Added the local recipe catalog under data/.

Licensing changes

  • None.

Browser compatibility

  • Chromium-based browsers (Chrome, Brave, Edge), Manifest V3.

Known issues

  • Recipe content shipped in English; localization of recipe text is future work.
FitShield 0.49 — Localization

FitShield 0.49 — Localization

Released: 2026-06-25

Overview

0.49 made FitShield speak the user's language. All interface text moved into the standard browser localization system, and the extension gained a large set of display languages with an in-app picker — laying the groundwork every later release builds its UI on.

Major features

  • 80+ display languages. A searchable language picker in Settings lets you
  • choose the language FitShield uses for its own screens (popup, settings, and block screen), independent of your browser language.

  • Manual language override. Pin a specific language, or choose *System
  • default* to follow the browser. The choice persists locally and applies at runtime without a reload.

Improvements

  • Consistent, translatable copy across every surface.
  • Searchable picker so long language lists stay manageable.

Architectural changes

  • Adopted the standard Chrome/Google chrome.i18n system backed by
  • _locales/<lang>/messages.json, with a lightweight runtime helper (i18n.js) that supports a manual override locale, an English fallback for any missing key, and live re-localization when the language changes.

  • Markup is localized declaratively via data-i18n* attributes; scripts use
  • FitShieldI18n.t(key, subs) with positional $1..$9 substitutions.

Repository changes

  • Introduced the _locales/ tree as the home for all translatable strings.

Licensing changes

  • None.

Browser compatibility

  • Chromium-based browsers (Chrome, Brave, Edge), Manifest V3.

Known issues

  • New UI strings introduced in later releases rely on the English fallback until
  • translated across every locale.

Source: the changelog/ folder in the extension repository. See also the roadmap.