on_the_money 0.3.0 → 0.3.1

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.3.1] — 2026-05-19
8
+
9
+ ### Fixed
10
+
11
+ - **README lint-stack tables** no longer refer to `eslint-plugin-otm` and `stylelint-plugin-otm` as if they were standalone packages. They ship bundled inside `on_the_money` via subpath exports; the rule-source columns now read "bundled in `on_the_money`". Anyone following the README literally was tempted to `npm install -D eslint-plugin-otm`, which 404s. (#49)
12
+
13
+ ### Changed
14
+
15
+ - **HTML-004 diagnostic** now hints toward `<dl>/<dt>/<dd>` for label/value patterns. The full message reads: "Naked strings in HTML are forbidden. Use data-i18n or wrap in a semantic tag (for label/value pairs, prefer `<dl>`/`<dt>`/`<dd>`)." Pushes consumers toward the semantically meaningful restructure rather than a cosmetic `<span>` wrap. (#50)
16
+
7
17
  ## [0.3.0] — 2026-05-18
8
18
 
9
19
  ### Breaking
package/README.md CHANGED
@@ -306,10 +306,12 @@ The framework reads existing attributes via `the(key)` without modification, so
306
306
 
307
307
  on_the_money ships a three-tool stack. Each layer covers what the others can't.
308
308
 
309
- ### 1. JavaScript — ESLint + `eslint-plugin-otm`
309
+ ### 1. JavaScript — ESLint + bundled plugin
310
+
311
+ The ESLint plugin and config ship inside `on_the_money` itself. No separate `eslint-plugin-otm` package — import via subpath.
310
312
 
311
313
  ```bash
312
- npm install -D eslint
314
+ npm install -D eslint eslint-plugin-no-unsanitized
313
315
  ```
314
316
 
315
317
  ```javascript
@@ -325,15 +327,17 @@ export default [
325
327
 
326
328
  | Rule | Source | Behavior |
327
329
  | --- | --- | --- |
328
- | `otm/prefer-on` | eslint-plugin-otm | Ban `addEventListener`; use `on()`. |
329
- | `otm/prefer-the-set` | eslint-plugin-otm | Ban `textContent`/`innerText`/`nodeValue` assignment. |
330
- | `otm/flat-state` | eslint-plugin-otm | Ban nested objects/arrays in `the()` calls. |
331
- | `otm/prefer-submit` | eslint-plugin-otm | Warn on `on(btn, "click", ...)` for form data. |
332
- | `otm/no-style-mutation` | eslint-plugin-otm | Ban `el.style.* = ...`. |
333
- | `no-unsanitized/no-inner-html` | external | Ban `innerHTML`/`outerHTML`. |
334
- | `no-unsanitized/method` | external | Ban `document.write`, `insertAdjacentHTML`. |
330
+ | `otm/prefer-on` | bundled in `on_the_money` | Ban `addEventListener`; use `on()`. |
331
+ | `otm/prefer-the-set` | bundled in `on_the_money` | Ban `textContent`/`innerText`/`nodeValue` assignment. |
332
+ | `otm/flat-state` | bundled in `on_the_money` | Ban nested objects/arrays in `the()` calls. |
333
+ | `otm/prefer-submit` | bundled in `on_the_money` | Warn on `on(btn, "click", ...)` for form data. |
334
+ | `otm/no-style-mutation` | bundled in `on_the_money` | Ban `el.style.* = ...`. |
335
+ | `no-unsanitized/no-inner-html` | `eslint-plugin-no-unsanitized` | Ban `innerHTML`/`outerHTML`. |
336
+ | `no-unsanitized/method` | `eslint-plugin-no-unsanitized` | Ban `document.write`, `insertAdjacentHTML`. |
337
+
338
+ ### 2. CSS — Stylelint + bundled plugin
335
339
 
336
- ### 2. CSS Stylelint + `stylelint-plugin-otm`
340
+ Same pattern: the Stylelint plugin and config ship inside `on_the_money`. No separate `stylelint-plugin-otm` package.
337
341
 
338
342
  ```bash
339
343
  npm install -D stylelint stylelint-config-standard
@@ -351,7 +355,7 @@ export default {
351
355
 
352
356
  | Rule | Source | Behavior |
353
357
  | --- | --- | --- |
354
- | `otm/prefer-attribute-selector` | stylelint-plugin-otm | Ban `.class` selectors; use `[data-state="..."]`. |
358
+ | `otm/prefer-attribute-selector` | bundled in `on_the_money` | Ban `.class` selectors; use `[data-state="..."]`. |
355
359
  | `declaration-no-important` | stylelint built-in | Ban `!important`. |
356
360
 
357
361
  ### 3. HTML / cross-file — `otm-lint`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on_the_money",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Opinionated, attribute-driven, standards-oriented modern framework. <2KB gzip. Native browser APIs only.",
5
5
  "type": "module",
6
6
  "main": "dist/on_the_money.min.js",
@@ -92,7 +92,7 @@ export default class Linter {
92
92
  file,
93
93
  { line: loc.startLine, column: loc.startCol },
94
94
  "HTML-004",
95
- "Naked strings in HTML are forbidden. Use data-i18n or wrap in a semantic tag.",
95
+ "Naked strings in HTML are forbidden. Use data-i18n or wrap in a semantic tag (for label/value pairs, prefer <dl>/<dt>/<dd>).",
96
96
  );
97
97
  }
98
98
  }