EPIC: Reimplement uBlock as a Star-Lang-native Nyxt Guard engine #1

Open
opened 2026-09-11 05:16:08 +00:00 by lost-rob0t · 0 comments
lost-rob0t commented 2026-09-11 05:16:08 +00:00 (Migrated from github.com)

Goal

Build nyxt-guard as a Star-Lang-native ad/tracker/content-blocking system for Nyxt, using uBlock-LLC/uBlock as the behavioral reference.

This is a black-box/behavioral port: preserve externally observable blocking semantics and user-facing capability, but the resulting blocking engine must be implemented in Star-Lang rather than embedding or depending on the upstream JavaScript runtime.

Upstream reference: https://github.com/uBlock-LLC/uBlock

Scope

  • Inventory the upstream blocking capabilities and map them to Star-Lang modules/contracts.
  • Reimplement the network/static filtering pipeline in Star-Lang.
  • Reimplement cosmetic filtering and page-side filtering hooks needed by Nyxt.
  • Reimplement dynamic/per-site rules and allow/block semantics.
  • Reimplement first-party/custom filter support and third-party filter subscriptions.
  • Preserve useful diagnostics/logging needed to explain why a request or element was blocked.
  • Expose a stable Nyxt-facing API so UI/modes do not depend on engine internals.
  • Keep the engine usable as a library rather than burying logic directly inside Nyxt UI code.

Constraints

  • No JS compatibility runtime as the core implementation.
  • Star-Lang is authoritative for blocking policy/evaluation.
  • Nyxt integration should be a thin adapter around the Star-Lang engine.
  • Preserve source/provenance documentation for behavior derived from upstream.
  • Preserve GPLv3 obligations for any adapted upstream material.

Ordered child issues

  1. #2 — define the engine contract and uBlock compatibility corpus.
  2. #6 — implement the core uBlock-compatible engine in Star-Lang.
  3. #3 — implement filter-list ingestion/subscriptions and compile lists into Star-Lang rules.
  4. #4 — integrate the engine with Nyxt request/document lifecycle.
  5. #5 — build the Nyxt Guard settings/configuration page.
  6. #7 — add the Nyxt Guard minor mode for runtime enable/disable control.
  7. #8 — add optional LISA expert-based advanced ad detection.

Deliverables

  • Architecture/capability map from upstream uBlock to Star-Lang components.
  • Star-Lang engine API and data model.
  • Compatibility fixtures that describe expected allow/block/cosmetic outcomes.
  • Full filter-list ingestion and custom-list support.
  • Nyxt integration, settings UI, minor mode, and optional expert detection.

Acceptance criteria

  • The repo has an explicit compatibility target rather than an underspecified 'ad blocker'.
  • Every major upstream capability is either mapped to a Star-Lang implementation issue or explicitly documented as deferred/non-applicable to Nyxt.
  • Nyxt-facing code can call the blocker through a stable interface without knowing the internal rule representation.
  • The resulting plan supports custom/ad-block filter lists, a settings page, a Nyxt minor mode, and a later LISA expert layer.
## Goal Build `nyxt-guard` as a Star-Lang-native ad/tracker/content-blocking system for Nyxt, using `uBlock-LLC/uBlock` as the behavioral reference. This is a **black-box/behavioral port**: preserve externally observable blocking semantics and user-facing capability, but the resulting blocking engine must be implemented in Star-Lang rather than embedding or depending on the upstream JavaScript runtime. Upstream reference: https://github.com/uBlock-LLC/uBlock ## Scope - Inventory the upstream blocking capabilities and map them to Star-Lang modules/contracts. - Reimplement the network/static filtering pipeline in Star-Lang. - Reimplement cosmetic filtering and page-side filtering hooks needed by Nyxt. - Reimplement dynamic/per-site rules and allow/block semantics. - Reimplement first-party/custom filter support and third-party filter subscriptions. - Preserve useful diagnostics/logging needed to explain why a request or element was blocked. - Expose a stable Nyxt-facing API so UI/modes do not depend on engine internals. - Keep the engine usable as a library rather than burying logic directly inside Nyxt UI code. ## Constraints - No JS compatibility runtime as the core implementation. - Star-Lang is authoritative for blocking policy/evaluation. - Nyxt integration should be a thin adapter around the Star-Lang engine. - Preserve source/provenance documentation for behavior derived from upstream. - Preserve GPLv3 obligations for any adapted upstream material. ## Ordered child issues 1. #2 — define the engine contract and uBlock compatibility corpus. 2. #6 — implement the core uBlock-compatible engine in Star-Lang. 3. #3 — implement filter-list ingestion/subscriptions and compile lists into Star-Lang rules. 4. #4 — integrate the engine with Nyxt request/document lifecycle. 5. #5 — build the Nyxt Guard settings/configuration page. 6. #7 — add the Nyxt Guard minor mode for runtime enable/disable control. 7. #8 — add optional LISA expert-based advanced ad detection. ## Deliverables - Architecture/capability map from upstream uBlock to Star-Lang components. - Star-Lang engine API and data model. - Compatibility fixtures that describe expected allow/block/cosmetic outcomes. - Full filter-list ingestion and custom-list support. - Nyxt integration, settings UI, minor mode, and optional expert detection. ## Acceptance criteria - The repo has an explicit compatibility target rather than an underspecified 'ad blocker'. - Every major upstream capability is either mapped to a Star-Lang implementation issue or explicitly documented as deferred/non-applicable to Nyxt. - Nyxt-facing code can call the blocker through a stable interface without knowing the internal rule representation. - The resulting plan supports custom/ad-block filter lists, a settings page, a Nyxt minor mode, and a later LISA expert layer.
Sign in to join this conversation.
No description provided.