Skip to content

Contributing

Amir edited this page Sep 1, 2026 · 2 revisions

Language: English · فارسی

Contributing

The most valuable contribution is a report that a category stopped blurring after a Bale update, and the one-line selector fix that follows.

Reporting

Use the issue forms:

  • A category stopped blurring — asks for the diagnostics table, which tells us exactly which anchor died
  • Something private is still visible — for a leak the categories were supposed to cover
  • Bug — anything else
  • Feature request

Both diagnostic tools (Log selector diagnostics and tools/leak-scan.js) print counts and DOM paths only. Message text, image URLs and tooltips are replaced with a «N chars» placeholder before anything is printed, so reports are safe to attach.

Please include your browser version and the extension version (shown at the bottom of the options page).

Working on the code

git clone https://github.com/amiranmanesh/bale-privacy-extension.git
cd bale-privacy-extension
npm install
npm run dev        # watch build for Chrome
npm run verify     # what CI runs: format, lint, typecheck, test, build

Load dist/chrome unpacked and open web.bale.ai. See Installation.

For selector work there is a driven browser with the extension already loaded and a persistent login:

npm run browser                                  # log in once
node scripts/browser.mjs eval tools/leak-scan.js
node scripts/browser.mjs shot out.png

Ground rules

  • No runtime dependencies. Everything ships to users' browsers; the bundle stays auditable. Dev dependencies are fine.
  • No new permissions without discussing it first. storage plus one content script is a feature, not an accident.
  • No network requests. The privacy policy is a promise the code has to keep.
  • Keep the blur in CSS. If something looks like it needs per-element JavaScript, open an issue before building it. The one exception in the codebase — suppressing native tooltips — exists because CSS genuinely cannot reach them.
  • Nothing that logs message content, not even behind a debug flag.

Pull requests

  • One logical change per commit, conventional commit prefixes (feat:, fix:, docs:, test:, build:, ci:, chore:)
  • npm run verify passes
  • Tests for anything in src/common/ or src/content/engine/
  • Selector changes say which Bale build they were verified against — the class names are per-build hashes, so "works for me" needs a date attached
  • Update CHANGELOG.md under Unreleased

CI runs format, lint, typecheck, tests and both builds on every pull request, and regenerates the icons to check they are reproducible.

Clone this wiki locally