ultra11y 5.10.0 → 5.10.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.
@@ -10,7 +10,7 @@
10
10
  "name": "ultra11y",
11
11
  "source": "./",
12
12
  "description": "Automatic accessibility review of the code under change before every commit, push and pull request, plus full WCAG 2.2 AA / RGAA audits and conformance deliverables on demand.",
13
- "version": "5.10.0",
13
+ "version": "5.10.1",
14
14
  "author": { "name": "maxgfr" },
15
15
  "homepage": "https://github.com/maxgfr/ultra11y",
16
16
  "repository": "https://github.com/maxgfr/ultra11y",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ultra11y",
3
3
  "description": "Accessibility for WCAG 2.2 AA and country standards (RGAA…): an automatic review of the code under change before every commit, push and pull request, plus full audits and conformance deliverables on demand.",
4
- "version": "5.10.0",
4
+ "version": "5.10.1",
5
5
  "author": { "name": "maxgfr" },
6
6
  "homepage": "https://github.com/maxgfr/ultra11y",
7
7
  "repository": "https://github.com/maxgfr/ultra11y",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ultra11y",
3
3
  "description": "Accessibility for WCAG 2.2 AA and country standards (RGAA…): an automatic review of the code under change before every commit, push and pull request, plus full audits and conformance deliverables on demand.",
4
- "version": "5.10.0",
4
+ "version": "5.10.1",
5
5
  "author": { "name": "maxgfr", "url": "https://github.com/maxgfr" },
6
6
  "homepage": "https://github.com/maxgfr/ultra11y",
7
7
  "repository": "https://github.com/maxgfr/ultra11y",
@@ -27,7 +27,7 @@ import { fileURLToPath } from "node:url";
27
27
  // Ownership marker: `ultra11y install --opencode` refuses to overwrite a plugin file that
28
28
  // does not carry it, so a user's own ultra11y.js is never clobbered.
29
29
  const ULTRA11Y_OPENCODE_PLUGIN = "ULTRA11Y_OPENCODE_PLUGIN";
30
- const ULTRA11Y_PLUGIN_VERSION = "5.10.0";
30
+ const ULTRA11Y_PLUGIN_VERSION = "5.10.1";
31
31
 
32
32
  const here = dirname(fileURLToPath(import.meta.url));
33
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultra11y",
3
- "version": "5.10.0",
3
+ "version": "5.10.1",
4
4
  "description": "Audit HTML/CSS/JSX against WCAG 2.2 AA and produce a dated compliance report, or author/review accessible markup (native-HTML-first). A skills.sh agent skill: an install-free static engine (bundled, no npm install) plus the agent's judgment, with check/verify gates against hallucinated non-conformities, and pluggable in-repo standards packs (RGAA France first; Section 508 & EN 301 549 next).",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.33.0",
@@ -6,7 +6,7 @@ import { join as join51, relative as relative5, resolve as resolve16, sep as sep
6
6
  import { fileURLToPath as fileURLToPath5, pathToFileURL as pathToFileURL3 } from "url";
7
7
 
8
8
  // src/types.ts
9
- var VERSION = "5.10.0";
9
+ var VERSION = "5.10.1";
10
10
  var SCHEMA_VERSION = 2;
11
11
 
12
12
  // src/audit.ts
@@ -58208,10 +58208,16 @@ function writeAdjudication(items, outDir, opts) {
58208
58208
  return { todoPath, mdPath, verdictsPath, itemsDir, count: items.length };
58209
58209
  }
58210
58210
  var PREFILLED_CITATIONS = 3;
58211
+ var CITATION_SNIPPET_MAX = 120;
58211
58212
  function slimAdjudicationItems(items) {
58212
58213
  return items.map((it) => {
58213
58214
  const { evidence: _evidence, evidenceTruncated: _truncated, ...rest } = it;
58214
- const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({ ...e }));
58215
+ const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({
58216
+ file: e.file,
58217
+ line: e.line,
58218
+ ...e.selector ? { selector: e.selector } : {},
58219
+ ...e.snippet ? { snippet: e.snippet.slice(0, CITATION_SNIPPET_MAX) } : {}
58220
+ }));
58215
58221
  return { ...rest, evidence: [], ...citations.length ? { citations } : {} };
58216
58222
  });
58217
58223
  }
@@ -5,7 +5,7 @@ when_to_use: "Invoke WITHOUT being asked whenever changed front-end code should
5
5
  allowed-tools: Bash(node ${CLAUDE_SKILL_DIR}/scripts/ultra11y.mjs *), Read, Grep, Glob
6
6
  license: MIT
7
7
  metadata:
8
- version: 5.10.0
8
+ version: 5.10.1
9
9
  ---
10
10
 
11
11
  # review-a11y — accessibility review of changed code
@@ -6,7 +6,7 @@ import { join as join51, relative as relative5, resolve as resolve16, sep as sep
6
6
  import { fileURLToPath as fileURLToPath5, pathToFileURL as pathToFileURL3 } from "url";
7
7
 
8
8
  // src/types.ts
9
- var VERSION = "5.10.0";
9
+ var VERSION = "5.10.1";
10
10
  var SCHEMA_VERSION = 2;
11
11
 
12
12
  // src/audit.ts
@@ -58208,10 +58208,16 @@ function writeAdjudication(items, outDir, opts) {
58208
58208
  return { todoPath, mdPath, verdictsPath, itemsDir, count: items.length };
58209
58209
  }
58210
58210
  var PREFILLED_CITATIONS = 3;
58211
+ var CITATION_SNIPPET_MAX = 120;
58211
58212
  function slimAdjudicationItems(items) {
58212
58213
  return items.map((it) => {
58213
58214
  const { evidence: _evidence, evidenceTruncated: _truncated, ...rest } = it;
58214
- const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({ ...e }));
58215
+ const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({
58216
+ file: e.file,
58217
+ line: e.line,
58218
+ ...e.selector ? { selector: e.selector } : {},
58219
+ ...e.snippet ? { snippet: e.snippet.slice(0, CITATION_SNIPPET_MAX) } : {}
58220
+ }));
58215
58221
  return { ...rest, evidence: [], ...citations.length ? { citations } : {} };
58216
58222
  });
58217
58223
  }
@@ -4,7 +4,7 @@ description: "Use to AUDIT existing HTML/CSS/JSX against WCAG 2.2 AA accessibili
4
4
  when_to_use: "Invoke when the user asks for an accessibility AUDIT or a formal deliverable: audit a repo, site or page against WCAG 2.2 AA or a country standard (RGAA, Section 508, EN 301 549); produce a dated conformance report, a criterion grid, a PRD backlog, or tickets (GitHub/GitLab/Jira); author accessible markup from scratch; wire the repo gate (init --hook/--ci) or a rendered-DOM capture pipeline. For a review of the code UNDER CHANGE (diff, branch, PR), use the `review-a11y` skill instead."
5
5
  license: MIT
6
6
  metadata:
7
- version: 5.10.0
7
+ version: 5.10.1
8
8
  ---
9
9
 
10
10
  # ultra11y — audit WCAG 2.2 AA and write accessible markup
@@ -6,7 +6,7 @@ import { join as join51, relative as relative5, resolve as resolve16, sep as sep
6
6
  import { fileURLToPath as fileURLToPath5, pathToFileURL as pathToFileURL3 } from "url";
7
7
 
8
8
  // src/types.ts
9
- var VERSION = "5.10.0";
9
+ var VERSION = "5.10.1";
10
10
  var SCHEMA_VERSION = 2;
11
11
 
12
12
  // src/audit.ts
@@ -58208,10 +58208,16 @@ function writeAdjudication(items, outDir, opts) {
58208
58208
  return { todoPath, mdPath, verdictsPath, itemsDir, count: items.length };
58209
58209
  }
58210
58210
  var PREFILLED_CITATIONS = 3;
58211
+ var CITATION_SNIPPET_MAX = 120;
58211
58212
  function slimAdjudicationItems(items) {
58212
58213
  return items.map((it) => {
58213
58214
  const { evidence: _evidence, evidenceTruncated: _truncated, ...rest } = it;
58214
- const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({ ...e }));
58215
+ const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({
58216
+ file: e.file,
58217
+ line: e.line,
58218
+ ...e.selector ? { selector: e.selector } : {},
58219
+ ...e.snippet ? { snippet: e.snippet.slice(0, CITATION_SNIPPET_MAX) } : {}
58220
+ }));
58215
58221
  return { ...rest, evidence: [], ...citations.length ? { citations } : {} };
58216
58222
  });
58217
58223
  }
package/src/adjudicate.ts CHANGED
@@ -1450,6 +1450,10 @@ export function writeAdjudication(
1450
1450
  * for the population; the whole set is in the brief, and `occurrences` travels with each. */
1451
1451
  const PREFILLED_CITATIONS = 3;
1452
1452
 
1453
+ /** Characters of the snippet a pre-filled citation carries. Enough to identify the element to
1454
+ * a reader of the diff; the grounding matches on the anchor, not on the length. */
1455
+ const CITATION_SNIPPET_MAX = 120;
1456
+
1453
1457
  export function slimAdjudicationItems(items: AdjudicationItem[]): AdjudicationItem[] {
1454
1458
  return items.map((it) => {
1455
1459
  const { evidence: _evidence, evidenceTruncated: _truncated, ...rest } = it;
@@ -1471,7 +1475,18 @@ export function slimAdjudicationItems(items: AdjudicationItem[]): AdjudicationIt
1471
1475
  // `population` and `evidenceComplete` are kept for the same reason they always were: they
1472
1476
  // are two numbers, not bulk, and they tell the adjudicator how much of the subject it is
1473
1477
  // actually looking at.
1474
- const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({ ...e }));
1478
+ // MINIMAL, and that is not a detail: the first cut of this pre-filled the whole Evidence
1479
+ // object, `alsoAt` included — 167 sibling anchors on one criterion — and turned the file
1480
+ // the prompt calls "the small one to write" into 367 KB. Measured: the adjudicator stopped
1481
+ // after 22 turns of a 228 budget, filled nothing, and every criterion came back
1482
+ // `unadjudicated`. A citation only ever needs to say WHICH element; the population, the
1483
+ // siblings and the note belong to the brief, which is the file to READ.
1484
+ const citations = it.evidence.slice(0, PREFILLED_CITATIONS).map((e) => ({
1485
+ file: e.file,
1486
+ line: e.line,
1487
+ ...(e.selector ? { selector: e.selector } : {}),
1488
+ ...(e.snippet ? { snippet: e.snippet.slice(0, CITATION_SNIPPET_MAX) } : {}),
1489
+ }));
1475
1490
  return { ...rest, evidence: [], ...(citations.length ? { citations } : {}) } as AdjudicationItem;
1476
1491
  });
1477
1492
  }
package/src/types.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  // Single source of truth for shared types + the embedded version. sync-version.mjs
2
2
  // rewrites VERSION at release time (kept in lockstep with package.json + SKILL.md).
3
- export const VERSION = "5.10.0";
3
+ export const VERSION = "5.10.1";
4
4
  export const SCHEMA_VERSION = 2;
5
5
 
6
6
  // Lang = the UI FRAME's language — the `L` localization tables each module (report,