build: add ESLint to script/lint and containerize linting (closes #152)
This commit was merged in pull request #286.
This commit is contained in:
34
TODO.md
34
TODO.md
@@ -32,17 +32,15 @@ The backlog lives on the
|
||||
[Gitea tracker](https://git.eeqj.de/sneak/AutistMask/issues), which is
|
||||
authoritative; this file does not duplicate it. Full policy file set present.
|
||||
Real-browser end-to-end suites (`make test-e2e` for Chrome,
|
||||
`make test-e2e-firefox` for Firefox) now sit alongside `make check`, which
|
||||
cannot see a runtime `ReferenceError` in a popup view, and
|
||||
`.gitea/workflows/e2e.yml` runs both of them on every push.
|
||||
`make test-e2e-firefox` for Firefox) sit alongside `make check`, which now does
|
||||
static analysis as well as formatting, and `.gitea/workflows/e2e.yml` runs both
|
||||
of them on every push.
|
||||
|
||||
# Next Step
|
||||
|
||||
Land [#152](https://git.eeqj.de/sneak/AutistMask/issues/152): add ESLint to
|
||||
`script/lint`. `make check` is `prettier --check` only today and cannot catch
|
||||
undefined identifiers, which is how
|
||||
[#150](https://git.eeqj.de/sneak/AutistMask/issues/150) and
|
||||
[#151](https://git.eeqj.de/sneak/AutistMask/issues/151) shipped.
|
||||
Pre-1.0 security review of the extension (key handling, DEBUG mode policy, RPC
|
||||
input validation) before any 1.0rc tag. Individual filed issues are parts of it,
|
||||
but the review is broader than any of them.
|
||||
|
||||
# Completed Steps
|
||||
|
||||
@@ -143,6 +141,23 @@ undefined identifiers, which is how
|
||||
on the real clipboard, read back after a sentinel write. Each of the four was
|
||||
demonstrated failing against a deliberately broken build
|
||||
([#188](https://git.eeqj.de/sneak/AutistMask/issues/188)).
|
||||
- 2026-08-14: `make check` does static analysis. `script/lint` ran
|
||||
`prettier --check .`, byte-identical to `script/fmt-check`, so a wallet with
|
||||
two shipped used-but-not-imported crashes behind it was green. ESLint is now
|
||||
pinned in `package.json` with `@eslint/js` recommended as the base, flat
|
||||
config in `eslint.config.js`, `no-undef` and `no-unused-vars` error-level, and
|
||||
globals declared per tree — browser for the popup and content scripts, service
|
||||
worker for `src/background/` and `src/shared/`, jest for `tests/`, node for
|
||||
`build.js`. It found 41 unused bindings and 53 undefined identifiers; all are
|
||||
fixed, and dropping a call to an unimported `foo()` into any `src/` file fails
|
||||
`make lint`. Linting is also containerized now: `script/lint` builds the
|
||||
Dockerfile's new `lint` stage, so the ESLint that decides whether this repo is
|
||||
green is the pinned one and not the host's. The lint stage roughly doubles the
|
||||
image build, so `script/test`'s hard timeout is now a bound on a hung suite
|
||||
rather than a wall-clock budget: 30s on the host, where the suite runs in
|
||||
about 8s, and `AUTISTMASK_TEST_TIMEOUT` raises it inside the image, where a
|
||||
cold build pays install and contention costs the policy budget never described
|
||||
([#152](https://git.eeqj.de/sneak/AutistMask/issues/152)).
|
||||
- 2026-08-14: CI runs the browser end-to-end suites. `.gitea/workflows/e2e.yml`
|
||||
runs `script/test-e2e` and `script/test-e2e-firefox` as two jobs on every
|
||||
push, separate from `check`, so `make check` and its 20-second `make test` cap
|
||||
@@ -481,8 +496,5 @@ undefined identifiers, which is how
|
||||
Only work that has no issue of its own belongs here; everything else is on the
|
||||
tracker.
|
||||
|
||||
- Pre-1.0 security review of the extension (key handling, DEBUG mode policy, RPC
|
||||
input validation) before any 1.0rc tag. Individual filed issues are parts of
|
||||
it, but the review is broader than any of them.
|
||||
- Cut 1.0.0 once the milestone is empty, then continue tagging as milestones
|
||||
land.
|
||||
|
||||
Reference in New Issue
Block a user