mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-14 23:26:39 +03:00
Detector architecture v2: static engine, benchmarks, lab, and visual contrast (#156)
* Add detector benchmark lab and visual contrast fallback * Expand visual contrast fixture coverage * Add browser visual contrast fallback * Show visual contrast overlays in detector lab * Fix detector lab short viewport layout * Fix detector lab visual overlays * Add visual contrast to browser scan overlays * Avoid browser scroll jumps during visual contrast scans * Resolve visual contrast lazily on scroll * Refresh detector lab visual counts lazily * Update pnpm lockfile for static parser deps * Address Bugbot detector API comments * Report extension visual contrast errors * Refactor detector into engine modules * Address Bugbot detector comments * Fix latest Bugbot detector notes * Fix visual contrast fixture labels * Refine detector lab fixtures * Fix stale detector overlay references * Fix detector lab fixture URLs * Fix typography lab fixture highlights * Fix typography lab page-level signal * Fix visual overlay lifecycle cleanup * Remove dead spotlight timer cleanup * Make browser async APIs reject consistently
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
* Single source of truth:
|
||||
* - skill/SKILL.md → skill frontmatter + body
|
||||
* - skill/reference/*.md → skill reference files
|
||||
* - cli/engine/detect-antipatterns.mjs → ANTIPATTERNS array (parsed)
|
||||
* - cli/engine/registry/antipatterns.mjs → ANTIPATTERNS registry
|
||||
* - site/content/skills/{id}.md → optional editorial wrapper
|
||||
* - site/content/tutorials/{slug}.md → full tutorial content
|
||||
*/
|
||||
@@ -14,6 +14,7 @@ import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { readSourceFiles, parseFrontmatter, replacePlaceholders } from './utils.js';
|
||||
import { ANTIPATTERNS } from '../../cli/engine/registry/antipatterns.mjs';
|
||||
import {
|
||||
DETECTION_LAYERS,
|
||||
VISUAL_EXAMPLES,
|
||||
@@ -137,19 +138,11 @@ export const COMMAND_RELATIONSHIPS = {
|
||||
};
|
||||
|
||||
/**
|
||||
* Parse the ANTIPATTERNS array out of cli/engine/detect-antipatterns.mjs.
|
||||
* Mirrors the trick in scripts/build.js validateAntipatternRules() so we
|
||||
* don't have to run the browser-only module.
|
||||
* Read the detector rule registry.
|
||||
*/
|
||||
export function readAntipatternRules(rootDir) {
|
||||
const detectPath = path.join(rootDir, 'cli/engine/detect-antipatterns.mjs');
|
||||
const src = fs.readFileSync(detectPath, 'utf-8');
|
||||
const match = src.match(/const ANTIPATTERNS = \[([\s\S]*?)\n\];/);
|
||||
if (!match) {
|
||||
throw new Error(`Could not extract ANTIPATTERNS from ${detectPath}`);
|
||||
}
|
||||
// eslint-disable-next-line no-new-func
|
||||
return new Function(`return [${match[1]}]`)();
|
||||
void rootDir;
|
||||
return ANTIPATTERNS.slice();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user