Skip to content

CHORE: No linting or formatting tooling configured — zero automated code-quality enforcement #68

Description

@devinoldenburg

Summary

The project has no linter or code formatter configured — no ESLint, Prettier, Biome, or any other tooling. Combined with checkJs: false in tsconfig.json, this means zero automated code-quality enforcement exists anywhere in the repo.

Current State

  • tsconfig.json:10: "checkJs": false — TypeScript provides zero type checking on .js and .tsx files.
  • tsconfig.json:16: "types": [] — disables automatic type acquisition, so even implicit @types/node are unavailable.
  • No ESLint config: No .eslintrc.*, eslint.config.*, or ESLint dependency.
  • No Prettier config: No .prettierrc, .prettierrc.*, or Prettier dependency.
  • No CI lint step: .github/workflows/ci.yml runs node --test and npm pack --dry-run but no linting or format-checking.

Impact

  1. Style drift. With no enforced formatting, code style diverges across contributors and files.
  2. Type errors hide. checkJs: false means typos in property names, wrong argument counts, and incorrect types are never caught until runtime.
  3. No PR quality gate. CI doesn't block PRs that introduce style violations, unused variables, or obvious bugs that a linter would catch.
  4. The .tsx adapter is completely unvalidated. plugins/tps-meter.tsx imports solid-js and @opentui/solid — no tool checks that these imports resolve, that JSX is valid, or that hook calls are correct.

Why this matters

The codebase files are well-written and follow consistent manual conventions, but this is entirely dependent on author discipline. A single PR from a new contributor could introduce:

  • Mixed tabs/spaces indentation
  • var instead of const/let
  • Unused imports and variables
  • == instead of === comparisons
  • Missing try/catch in async handlers

And no automated tool would flag it.

Suggestion

Minimal tier — ESLint with @eslint/js + eslint:recommended rules:

{
  "devDependencies": {
    "eslint": "^9.0.0",
    "@eslint/js": "^9.0.0"
  },
  "scripts": {
    "lint": "eslint plugins/ tools/ scripts/ tests/"
  }
}

Better tier — Add Prettier for formatting:

{
  "devDependencies": {
    "prettier": "^3.0.0"
  },
  "scripts": {
    "lint": "eslint plugins/ tools/ scripts/ tests/",
    "format": "prettier --check .",
    "format:fix": "prettier --write ."
  }
}

Then add a CI step:

- name: Lint
  run: npm run lint

- name: Format check
  run: npm run format

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions