@theglitchking/gimme-the-lint 1.2.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.claude-plugin/marketplace.json +11 -7
  2. package/.claude-plugin/plugin.json +10 -6
  3. package/CHANGELOG.md +88 -0
  4. package/README.md +215 -319
  5. package/bin/gimme-the-lint.js +96 -29
  6. package/commands/lint-baseline.md +27 -17
  7. package/commands/lint-status.md +18 -15
  8. package/commands/lint.md +34 -26
  9. package/lib/adapters/adapter.js +192 -0
  10. package/lib/adapters/biome.js +103 -0
  11. package/lib/adapters/clippy.js +109 -0
  12. package/lib/adapters/eslint.js +100 -0
  13. package/lib/adapters/golangci-lint.js +100 -0
  14. package/lib/adapters/index.js +67 -0
  15. package/lib/adapters/ruff.js +86 -0
  16. package/lib/adapters/tflint.js +138 -0
  17. package/lib/baseline-store.js +119 -0
  18. package/lib/baseline.js +125 -0
  19. package/lib/check.js +137 -0
  20. package/lib/config-manager.js +1 -2
  21. package/lib/dashboard.js +67 -0
  22. package/lib/diff-engine.js +109 -0
  23. package/lib/drift.js +140 -0
  24. package/lib/fingerprint.js +45 -0
  25. package/lib/gtl-manifest.js +90 -0
  26. package/lib/index.js +31 -0
  27. package/lib/installer.js +77 -3
  28. package/lib/linter-configs.js +130 -0
  29. package/lib/migrate.js +108 -0
  30. package/lib/project-model.js +155 -0
  31. package/lib/report.js +114 -0
  32. package/lib/toolchain.js +71 -0
  33. package/lib/units.js +87 -0
  34. package/lib/violation.js +60 -0
  35. package/package.json +16 -7
  36. package/scripts/dashboard.sh +10 -186
  37. package/scripts/eslint-baseline.sh +11 -244
  38. package/scripts/ruff-baseline.sh +10 -243
  39. package/scripts/run-checks.sh +10 -310
  40. package/templates/.gitleaks.template.toml +12 -0
  41. package/templates/.golangci.template.yml +81 -0
  42. package/templates/.prettierrc.template.json +14 -0
  43. package/templates/.tflint.template.hcl +32 -0
  44. package/templates/biome.template.json +90 -0
  45. package/templates/clippy-cargo-lints.template.toml +21 -0
  46. package/templates/clippy.template.toml +23 -0
  47. package/templates/eslint.config.template.js +23 -1
  48. package/templates/pyproject.template.toml +10 -0
  49. package/uninstall.sh +1 -2
  50. package/README.backup.md +0 -310
@@ -5,14 +5,14 @@
5
5
  "email": "theglitchking@users.noreply.github.com"
6
6
  },
7
7
  "metadata": {
8
- "description": "Official marketplace for gimme-the-lint - Progressive linting with directory-chunked baselines and drift detection",
9
- "version": "1.2.0"
8
+ "description": "Official marketplace for gimme-the-lint - polyglot progressive linting with per-app baselines and drift detection",
9
+ "version": "2.1.0"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "gimme-the-lint",
14
- "description": "Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS)",
15
- "version": "1.2.0",
14
+ "description": "Polyglot progressive linting for monorepos — adapter-driven baselines, per-app drift detection, and idempotent skips across JavaScript/TypeScript, Python, Go, Rust, and Terraform.",
15
+ "version": "2.1.0",
16
16
  "author": {
17
17
  "name": "TheGlitchKing"
18
18
  },
@@ -22,12 +22,16 @@
22
22
  "keywords": [
23
23
  "linting",
24
24
  "progressive-linting",
25
- "eslint",
26
- "ruff",
27
- "python",
25
+ "polyglot",
28
26
  "monorepo",
29
27
  "git-hooks",
30
28
  "drift-detection",
29
+ "eslint",
30
+ "ruff",
31
+ "golangci-lint",
32
+ "clippy",
33
+ "tflint",
34
+ "terraform",
31
35
  "claude-code"
32
36
  ],
33
37
  "category": "productivity",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gimme-the-lint",
3
- "description": "Progressive linting system with directory-chunked baselines, drift detection, and auto-healing for monorepo projects (Python + JS/TS)",
4
- "version": "1.2.0",
3
+ "description": "Polyglot progressive linting for monorepos — adapter-driven baselines, per-app drift detection, and idempotent skips across JavaScript/TypeScript, Python, Go, Rust, and Terraform.",
4
+ "version": "2.1.0",
5
5
  "author": {
6
6
  "name": "TheGlitchKing",
7
7
  "email": "theglitchking@users.noreply.github.com"
@@ -12,11 +12,15 @@
12
12
  "keywords": [
13
13
  "linting",
14
14
  "progressive-linting",
15
- "eslint",
16
- "ruff",
17
- "python",
15
+ "polyglot",
18
16
  "monorepo",
19
17
  "git-hooks",
20
- "drift-detection"
18
+ "drift-detection",
19
+ "eslint",
20
+ "ruff",
21
+ "golangci-lint",
22
+ "clippy",
23
+ "tflint",
24
+ "terraform"
21
25
  ]
22
26
  }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,94 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.1.0] - 2026-05-17
9
+
10
+ ### Added
11
+ - **Terraform / OpenTofu support** via a new `tflint` linter adapter. tflint
12
+ plugs into the same progressive-lint engine as every other linter: baselines
13
+ are captured into `.gtl/apps/<app>/baseline.json` under a `tflint` section,
14
+ fingerprinted by `file + rule + message`, and only new violations block.
15
+ - Runs `tflint --format=json`, module-scoped (executes inside the module
16
+ directory for compatibility with tflint versions predating `--chdir`).
17
+ - Parses both `issues` and `errors` — broken HCL surfaces as a blocking
18
+ error rather than slipping through as zero issues.
19
+ - Supports `--fix`; tracks config drift on `.tflint.hcl`.
20
+ - **Extension-based app discovery** for Terraform: a directory containing
21
+ `*.tf` / `*.tofu` source is auto-discovered and bound to `tflint`. Terraform
22
+ has no manifest file, so it is discovered by extension rather than by a
23
+ manifest like `package.json` or `go.mod`. In the root-module layout (`.tf`
24
+ at the repo root *and* in `modules/*/`), the root is treated as a workspace
25
+ root — bind `.` explicitly in `gimme-the-lint.config.js` to lint it. See the
26
+ installation guide.
27
+ - **Best-practice config templates** for every supported codebase. `install`
28
+ now seeds each discovered app with a curated, "recommended tier" config for
29
+ its linter — `eslint.config.js` + `.prettierrc.json`, `biome.json`,
30
+ `pyproject.toml` `[tool.ruff]`, `.golangci.yml` (golangci-lint v2 format),
31
+ `clippy.toml` + `Cargo.toml` `[lints.clippy]`, `.tflint.hcl`. Every write is
32
+ create-if-absent — an existing config is never overwritten (`--force`
33
+ replaces). New module `lib/linter-configs.js`.
34
+ - **Security lint rules** across every codebase. gitleaks remains the universal
35
+ secret scanner (passwords, SSL/private keys, tokens — always blocks, never
36
+ baselined) and its template now also flags PEM private keys and hardcoded
37
+ password assignments. Per-linter security layers are enabled in the shipped
38
+ configs: `gosec` (Go), Ruff `S` / flake8-bandit (Python),
39
+ `eslint-plugin-security` + `eslint-plugin-no-secrets` (JS/TS), and Biome's
40
+ `security` rule group.
41
+ - **Prettier support** — a `.prettierrc.json` template is seeded for ESLint
42
+ apps, and the ESLint config now applies `eslint-config-prettier` so the two
43
+ do not fight over formatting. The ESLint template refresh is additive: every
44
+ pre-existing rule (architecture import guards, `no-cycle`, unused-vars) is
45
+ retained.
46
+ - **New documentation** — `.documentation/lint-rules-guide.md` documents every
47
+ supported codebase, its baseline rules, the security layers, and how/where to
48
+ adjust them.
49
+
50
+ ## [2.0.0] - 2026-05-17
51
+
52
+ A ground-up rearchitecture: gimme-the-lint is now a language-agnostic
53
+ progressive-lint engine that owns its own baseline diffing, driven by
54
+ per-directory linter adapters.
55
+
56
+ ### Breaking Changes
57
+ - **Baseline layout moved** from `frontend/.lttf/` + `backend/.lttf-ruff/` to a
58
+ single per-app tree, `.gtl/apps/<app>/baseline.json`, plus a global
59
+ `.gtl/manifest.json`. Run `gimme-the-lint migrate` to convert (it backs up
60
+ the legacy directories and re-baselines).
61
+ - **Baseline file format changed** to a linter-agnostic fingerprint map.
62
+ - **Config schema changed**: the `frontend`/`backend` model is replaced by an
63
+ optional `apps` map binding directories to linters; `skipPatterns` added.
64
+ `lttfDir`/`ruffBaselineDir` keys removed.
65
+ - **`check` flags removed**: `--frontend-only`, `--backend-only`, `--verbose`.
66
+ - **GitHub Action inputs changed**: `frontend`/`backend` removed (linting is
67
+ now polyglot auto-detect); `strict` added. Pin `@v2`.
68
+ - The `lint-to-the-future` dependency is gone — gimme-the-lint no longer shells
69
+ out to it; ESLint progressivity is handled by the in-house engine.
70
+
71
+ ### Added
72
+ - In-house progressive-diff engine: line/column-independent violation
73
+ fingerprints, so baselined violations survive code shifting in a file.
74
+ - Linter adapter interface — each linter is a self-contained adapter.
75
+ - **Go** support via `golangci-lint` and **Rust** support via `cargo clippy`,
76
+ alongside ESLint and **Biome** (JS/TS) and Ruff (Python).
77
+ - **Biome** adapter: a `biome.json` binds an app to Biome and supersedes the
78
+ default ESLint binding for that app.
79
+ - Polyglot project model: apps auto-discovered by walking for package
80
+ manifests; monorepo workspaces handled; `_template-*` dirs skipped.
81
+ - Per-app drift detection (app add/remove, config, linter version, age) —
82
+ a change in one app never churns unrelated baselines.
83
+ - Idempotent skips: an app with code but no installed linter is warn-skipped
84
+ (never blocks), or fails loudly under `--strict`.
85
+ - `--offline` install for air-gapped environments (no npm/pip fetches; fails
86
+ loudly on a missing toolchain).
87
+ - `--no-baseline` greenfield install / `baseline --empty` — "strict from day
88
+ one" with nothing grandfathered.
89
+ - `gimme-the-lint migrate` — one-shot v1 → v2 migration.
90
+
91
+ ### Changed
92
+ - `run-checks.sh`, `eslint-baseline.sh`, `ruff-baseline.sh`, `dashboard.sh` are
93
+ now thin shims over the Node engine.
94
+ - The dashboard renders from `.gtl/manifest.json` with per-app drift.
95
+
8
96
  ## [1.1.2] - 2026-04-11
9
97
 
10
98
  ### Fixed