{
  "_note": "Runtime tool filter for the sharevb IT-Tools fork. Bind-mounted READ-ONLY over the image's placeholder file (which ships as {}). No rebuild needed; the app reads it at load.",
  "_semantics": "Read from the shipped bundle (tools.store-*.js), not assumed: each value becomes new RegExp(value, 'i') -- case-insensitive and UNANCHORED. Tool regexes test the route path ('/slug'); category regexes test the DISPLAY name. An include match SHORT-CIRCUITS to visible and beats any exclude. An empty string compiles to null (inert).",
  "_anchoring": "Every alternative is anchored ^/(...)$ by hand because the match is unanchored -- a bare 'dns-query' would otherwise also swallow 'dns-queries'. All 32 slugs were validated against the 469 real path literals in the bundle.",
  "_excluded": "Group 1 sends user data off-box (CORS proxy, ipinfo, cloudflare-dns, public DoH, explainshell, wiktionary, iana, ipify, registry credentials). Group 2 needs a self-hosted companion backend we deliberately do not run, so the UI would only ever error. Group 3 is novelty. Asset-only fetchers (HuggingFace/jsDelivr/schemastore models and templates) are KEPT -- they download assets, they do not upload your input.",

  "excludeCategoryFilterRegex": "^(Gaming)$",
  "includeCategoryFilterRegex": "",

  "excludeToolsFilterRegex": "^/(short-urls-expander|ip-geo-location|dnsbl-checker|dns-queries|dns-query|explainshell|online-wiktionary|iana-whois-checker|my-ip|docker-image-downloader|dns-tester|dns-propagation-tester|https-tester|html-to-pdf|tcp-udp-port-tester|pomodoro-timer|dead-pixel|bmi-calculator|tip-calculator|running-pace-calculator|zalgo|rsvp-reader|keyboard-tester|mic-tester|countdown|time-alarm|cron-alarm|fortune-wheel|which-day|card-picker|coin-flipper|dice-roller)$",

  "includeToolsFilterRegex": ""
}
