How meistyr/winnower-adblock works
winnower is a Chromium content blocker. A page load is handled by the extension service worker and content scripts: network rules block requests, while page-side cosmetic rules and site fixes hide unwanted content; a separate popup guard handles popunders. Users manage site and list switches and inspect diagnostics in the toolbar popup. The README documents capabilities beyond the sampled code; those branches are shown at the documented subsystem level. Arrows use README statements or source excerpts/index references; unsampled implementation details are not inferred.
Main entry points: sw.ts Service worker · popup.ts Toolbar popup · content.ts Content script · collapse.ts Empty-box collapser
Components 19
Extension control
- Service worker
src/sw.ts - Toolbar popup
src/popup.ts - Site and list settings
src/sw.ts
Page filtering
- Content script
src/content.ts - Cosmetic rules
src/sw.ts - Network rulesets
src/sw.ts - Site fixes
src/sw.ts - Empty-box collapser
src/collapse.ts
Popup blocking
- Popup guard
src/popup-guard.ts
Diagnostics
- Page reporter
src/report.ts - Diagnostic log
src/shared/log.ts - Session log storage
src/sw.ts
Shared runtime
- Collapse judgement
src/shared/collapse-match.ts - Popup matcher
src/shared/popup-match.ts - Message protocol
src/shared/messages.ts - Ruleset catalogue
src/shared/catalogue.ts
Other components
- Browser user
- Chromium browser
- GitHub releases API
Connections 20
- Browser user → Toolbar popup: opens and controls
README.md - Chromium browser → Service worker: runs extension
README.md - Chromium browser → Content script: injects on pages
src/content.ts - Toolbar popup → Service worker: sends commands
src/popup.ts - Content script → Service worker: requests selectors
src/content.ts - Service worker → Cosmetic rules: serves selectors
src/sw.ts - Service worker → Network rulesets: controls rule sets
README.md - Service worker → Site fixes: registers fixes
README.md - Content script → Empty-box collapser: starts
src/content.ts - Empty-box collapser → Collapse judgement: judges boxes
src/collapse.ts - Content script → Page reporter: records decisions
src/content.ts - Empty-box collapser → Page reporter: reports outcomes
src/collapse.ts - Page reporter → Service worker: sends log batches
src/report.ts - Service worker → Session log storage: persists session log
src/sw.ts - Toolbar popup → Diagnostic log: formats diagnostics
src/popup.ts - Toolbar popup → Popup guard: manages popup settings
- Popup guard → Popup matcher: matches popup hosts
src/popup-guard.ts - Service worker → Ruleset catalogue: uses ruleset types
src/sw.ts - Toolbar popup → Ruleset catalogue: renders list controls
src/popup.ts - Service worker → GitHub releases API: checks releases
src/sw.ts