Skip to content

v1.0.0-rc.2

Pre-release
Pre-release

Choose a tag to compare

@Greigh Greigh released this 23 Sep 04:34
· 53 commits to main since this release

Blockingmachine v1.0.0-rc.2

Second release candidate for Blockingmachine 1.0.

Highlights since RC 1

• Full Rule Precedence & DNS Exception Suppression:

  • Eliminated the DNS exception leakage bug across /etc/hosts, dnsmasq, and unbound where allowlisted domains were still sinkholed by active blocks.
  • Implemented resolveDnsPrecedence to automatically prune blocked domains when covered by allowlists (@@||domain^).
  • Added child subdomain exception unblocking directives (server=/sub.domain/# in dnsmasq, local-zone: ... transparent in unbound).
  • Standardized $important override mechanics: $important exceptions override $important blocks, and $important blocks override normal exceptions.
    • Canonical Section Ordering & Deterministic Output:
  • Adblock filter exports (adguard, abp) now enforce canonical section ordering:
    1. Header / Metadata
    2. Whitelist & Exception Rules (@@, #@#, #@%#, #@$#)
    3. Procedural Scriptlet Defusers (##+js, #%#, #$#)
    4. Cosmetic & Element Hiding Rules (##, #?#, $$)
    5. Network Blocking Rules (||, |, /regex/, 0.0.0.0)
  • Deterministic alphabetical sorting within sections ensures reproducible builds and zero arbitrary diff churn.
    • Scriptlet Classification & Deduplication Engine:
  • Procedural scriptlets (##+js(...), #%#//scriptlet(...), #$#...) now classify as "scriptlet" instead of generic "cosmetic".
  • In RuleDeduplicator, scriptlet arguments are stored separately in parts.scriptlet, preserving multiple distinct scriptlets on the same domain.
    • Unified Domain Evaluation Engine:
  • Shared evaluateDomainRules across Core, CLI (test, serve /v1/check), and Electron IPC (inspect-domain).
    • Multi-Vendor Anti-Adblock & Scriptlet Defusers:
  • Expanded radar and procedural scriptlets against Admiral, Google Funding Choices / Privacy Messaging, BlockThrough / PageFair, AdInPlay, Ezoic, NitroPay, and Snigel Ad Recovery.
    • Security & Memory Hardening:
  • SSRF Protection: Added IPv4-mapped IPv6 hex decoding (::ffff:x:y) to close loopback/metadata SSRF bypass vectors; verified IPv6 documentation and private subnets.
  • Memory Bounds: Added 25MB response streaming cap to Electron sinkhole HTTP client (sinkholeFetch.ts) to prevent remote OOM crashes.
  • Database Parity: Fixed DNS exception suppression across hosts, dnsmasq, unbound, named, privoxy, and shadowrocket in packages/database/scripts/update.js.
    • Complete Test Coverage:
  • Expanded test suite to 357 passing tests (100% pass rate) with 0 lint warnings and clean monorepo builds.

Feedback

Please report issues against this RC before 1.0.0 final.