Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,11 @@
background: var(--candidate-soft);
}

.detail-review[data-kind='cross-family-candidate'] .detail-finding {
color: var(--text-muted);
background: var(--hover);
}

.detail-review[data-kind='insufficient'] .detail-finding {
color: var(--text-muted);
background: var(--hover);
Expand Down Expand Up @@ -585,6 +590,9 @@ <h2>明确排除</h2>
const reviewCandidates = candidates.filter((d) => d.requiresReview);
const stableCandidates = candidates.filter((d) => !d.requiresReview);
const overviews = report.details.filter((d) => d.kind === 'overview');
const crossFamilyCandidates = report.details.filter(
(d) => d.kind === 'cross-family-candidate'
);
const jitters = report.details.filter((d) => d.kind === 'jitter');
const insufficient = report.details.filter((d) => d.kind === 'insufficient');
const measurementModels = report.details.filter((d) => d.kind === 'measurement-model');
Expand Down Expand Up @@ -725,6 +733,12 @@ <h2>明确排除</h2>
['overview', '整体视图', overviews.length, null],
['jitter', '亚像素抖动', jitters.length, 'dot--candidate'],
['measurement-model', '测量模型分歧', measurementModels.length, 'dot--candidate'],
[
'cross-family-candidate',
'跨行族候选轨',
crossFamilyCandidates.length,
'dot--insufficient',
],
['insufficient', '证据不足', insufficient.length, 'dot--insufficient'],
['stable', '稳定候选轨', stableCandidates.length, 'dot--candidate'],
];
Expand Down Expand Up @@ -956,13 +970,15 @@ <h2>明确排除</h2>
? '候选轨与偏移'
: detail.kind === 'overview'
? '候选轨总览'
: detail.kind === 'jitter'
? '亚像素抖动'
: detail.kind === 'measurement-model'
? '测量模型分歧'
: detail.kind === 'insufficient'
? '证据不足'
: '失败语义线';
: detail.kind === 'cross-family-candidate'
? '跨行族候选轨'
: detail.kind === 'jitter'
? '亚像素抖动'
: detail.kind === 'measurement-model'
? '测量模型分歧'
: detail.kind === 'insufficient'
? '证据不足'
: '失败语义线';
const figures = [
['原始界面', detail.images.clean, `${detail.title} 原始局部截图`],
[annotatedLabel, detail.images.annotated, `${detail.title} ${annotatedLabel}局部截图`],
Expand Down
10 changes: 8 additions & 2 deletions packages/components/src/lib/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,14 @@ Production layout stays ordinary Flex/Grid with stable geometry data markers onl
columns are never props or wrapper DOM. Fixture and gate share one spec. `?geometry=1` adds
the overlay, alignment lines and spacing diagnostics; dev only.

- Explicit control boxes: repeated slots share an X line across rows, icon/text controls
in one row a Y instance.
- Explicit control boxes: repeated slots share an X line across rows.
- A Y rail's row is GEOMETRIC: `assignGeometricRows` puts an extent on the line whose MEDIAN
band it overlaps by half — to that band, never neighbour to neighbour, or a ladder of
half-overlaps chains two lines of different heights into one, as chaining intermediate
coordinates would merge two indentation levels. The DOM row is a PRIOR setting the EVIDENCE
BAR, never eligibility, which as a gate hid every cross-structural line by construction.
An atom no row accepted is measured on Y under its own row id, or the DOM would still gate
a layer earlier; alone in that row, it can only reach the cross-family bar.
- Cross-font rows compare ink centres — a cap-height band from a fixed reference glyph,
transformed SVG path bounds, a painted CSS shape's box; baselines compare text only
([tests/e2e/support](../../tests/e2e/support/AGENTS.md)). The overlay and the capture take
Expand Down
Loading
Loading