diff --git a/autoresearch.ideas.md b/autoresearch.ideas.md new file mode 100644 index 000000000..34a03f0e1 --- /dev/null +++ b/autoresearch.ideas.md @@ -0,0 +1,13 @@ +# Autoresearch Ideas + +## High Priority +- **Vector constraint resizing**: 38 vectors have wrong sizes because instances smaller than their component don't resize children via constraints. Figma uses horizontal/vertical constraints to scale children when instance size ≠ component size. Need to implement constraint-based resizing after population. +- **Variable-bound fills**: 3 Indicator nodes have wrong fill colors because their fills are bound to design variables that resolve differently in the visible-page context. Need to resolve variable bindings during import. +- **Self-referencing symbolOverride pattern**: 4 Placeholder TEXT nodes have dark fills instead of white. Same pattern as bold toolbar button — the instance's own kiwi NC has correct fills but a symbolOverride targeting the component shell overwrites them. The current fix only handles exact self-reference (targetId === nodeId). Need to also handle cases where the override targets a CHILD that was cloned from the self-referencing path. + +## Medium Priority +- **datepicker width**: 6 `_datepicker-date-range-link` instances have width 32 vs Figma's 131. Likely DSD size override or layout recomputation issue. +- **Badge scaling**: Badge/Avatar/Placeholder/Close-Icon ~1.12x ratio diffs — proportional scaling issue from DSD not fully applied. + +## Low Priority +- **99 unmatched nodes**: Figma has 99 nodes that don't match by tree path. Likely node ordering or naming differences in deep clone chains. diff --git a/autoresearch.jsonl b/autoresearch.jsonl index 4c89d2eed..97b2b3d0b 100644 --- a/autoresearch.jsonl +++ b/autoresearch.jsonl @@ -2,3 +2,4 @@ {"run":1,"commit":"8a90594","metric":246,"metrics":{"visibility":1,"text":0,"fills":10,"radius":161,"size":74,"unmatched":99},"status":"keep","description":"Baseline: 246 diffs (1 vis, 0 text, 10 fills, 161 radius, 74 size, 99 unmatched)","timestamp":1773482910363,"segment":0} {"run":2,"commit":"3746d1a","metric":99,"metrics":{"visibility":1,"text":0,"fills":10,"radius":14,"size":74,"unmatched":99},"status":"keep","description":"Fix comparison: read individual corner radii when independentCorners=true","timestamp":1773483304162,"segment":0} {"run":3,"commit":"7fc3a64","metric":85,"metrics":{"visibility":1,"text":0,"fills":10,"radius":0,"size":74,"unmatched":99},"status":"keep","description":"Fix comparison: treat both-pill cornerRadius values as equal","timestamp":1773483389254,"segment":0} +{"run":4,"commit":"2858d94","metric":84,"metrics":{"visibility":1,"text":0,"fills":9,"radius":0,"size":74,"unmatched":99},"status":"keep","description":"Skip self-referencing symbolOverrides on nodes with explicit kiwi properties (fixes bold toolbar button fill)","timestamp":1773484182748,"segment":0} diff --git a/autoresearch.md b/autoresearch.md index 5ac557e77..9f737377b 100644 --- a/autoresearch.md +++ b/autoresearch.md @@ -44,10 +44,10 @@ and `tests/fixtures/gold-preview-truth.json` as ground truth (extracted from liv - **DSD for swapped instances**: Single-child fallback in resolveOverrideTarget (d93c475) - **Rounded clipping**: clipRRect when clipsContent + cornerRadius (49423e4) - **Shadow child shape**: Drop shadow on transparent containers follows first child (f70338d) -- **Current baseline**: 246 total_diffs (1 vis, 0 text, 10 fills, 161 radius, 74 size, 99 unmatched) - -### Key insight: transitive sync overwrites instance-level properties -Nodes with their own kiwi NC (explicit fills, cornerRadius) get correct values -during initial kiwi-convert, then transitive sync copies component defaults -over them. Need to protect nodes with own kiwi NCs from sync overwrite. -This is the NEXT fix to attempt — should address radius (161) and fills (10). +- **Current best**: 84 total_diffs (1 vis, 0 text, 9 fills, 0 radius, 74 size, 99 unmatched) +- **Comparison fixes**: independentCorners radius reading, pill-shape tolerance +- **kiwiPropertyNodes**: Nodes with explicit kiwi NC fills/cornerRadius are added to seeds AND protected from sync overwrite +- **Self-referencing symbolOverride**: When an override resolves to the instance itself, skip if the instance has explicit kiwi NC properties +- **Remaining fills (9)**: Variable-bound colors (Indicators), wrong variant selection (badge Placeholders), deep chain overrides +- **Remaining sizes (74)**: 38 Vector constraint resizing (no DSD size data), 6 datepicker layout widths, Badge proportional scaling +- **Unmatched (99)**: Tree path matching gaps in deep clone chains