COMMAND LINE · YOUR MACHINE · YOUR REPOSITORY

The engine runs where your browsers are.

BhashaFix opens real browsers, renders every selected locale at every declared viewport, measures what breaks and writes the evidence beside your code. Source, credentials and repair operations stay inside your environment; the report bundle is the part you share.

One command, in your project

pnpm bhashafix scan --url http://localhost:3000 --locales en-GB,de-DE,ar-SA,ja-JP

Runs from the repository today. Clone-and-run and packed-tarball installation are both exercised by the release checks below; no unpublished registry command is presented as usable.

Two working routes

  1. 1 · Clone and run

    Works today, with no package registry involved.

    git clone https://github.com/vaibhav4046/bhashafix
    cd bhashafix
    pnpm install
    pnpm exec playwright install chromium
    pnpm bhashafix scan --url https://example.com
  2. 2 · Pack a tarball and install it

    Produces the same executable a published package would. `pnpm pack:verify` runs exactly this into a clean temporary consumer outside the repository.

    pnpm --filter @bhashafix/cli build
    cd packages/cli
    pnpm pack --pack-destination ../../artifacts
    npm install -g ../../artifacts/bhashafix-cli-0.2.0.tgz
    bhashafix scan --url http://localhost:3000 --locales en-GB,de-DE,ar-SA,ja-JP

What the local run adds

CapabilityHosted browser quick scanLocal CLI
Real HTTP responses, metadata, static translation signalsyesyes
Chromium rendering per locale and viewportyesyes
Full-page screenshotsyesyes
Layout overflow and clipping measurementyesyes
axe accessibility executionyesyes
Console errors and failed requestsyesyes
Full route × locale × viewport matrixnoyes
Authenticated routesnoyes
Bounded source repair and rerunnoyes

Repair and prove

pnpm bhashafix repair --project .          # dry run: writes the diff, changes nothing
pnpm bhashafix repair --project . --apply  # applies only allowlisted paths
pnpm bhashafix verify --project .          # reruns the identical predicates

A repair needs an explicit scan ID, explicit issue IDs and an exact path allowlist. The dry run is the default, and an applied change is checked with git apply --check before it lands.

What a run writes

scan.json
the scan record: config, routes discovered, locales tested, every issue with its measurement and the predicate it failed
renders.json
one row per render: route, locale, viewport, theme, HTTP status, duration, elements measured, console errors, failed requests, axe violations
screenshots/
one PNG per render, referenced by every issue measured in it
report.json · report.html · report.sarif · junit.xml · issues.csv
portable exports of the same scan
repair.patch
the unified diff a repair proposes, confined to the allowlist
repair-proof.json
the proof capsule: baseline blocking, final blocking, source-locale regression, and which fields were not measured

Exit codes: 0 passed · 1 blocking · 2 invalid config · 3 unavailable · 4 runtime · 5 provider unavailable.

Honest limits