openpencil/tests/engine/render/canvas
Ed-Key 9b48e47329 feat(canvas): render arrow stroke caps on lines and open vectors
ARROW_LINES and ARROW_EQUILATERAL stroke caps were accepted by the schema
and round-tripped from .fig files, but the renderer mapped every cap to
Butt, so imported arrows lost their heads and arrows could not be drawn
locally.

Add a pure arrow-cap geometry module to scene-graph (open-endpoint
collection with per-vertex cap overrides, weight-scaled head geometry)
and draw heads in the stroke color for LINE nodes and open VECTOR
centerline strokes, including the dashed-centerline path. Fold the head
reach into strokeOverflow and the node picture margin so heads are not
cropped by visual bounds, caches, or culling. Round-trip per-vertex
stroke caps through the .fig vector style override table so one-ended
Figma arrows import correctly. Expose both caps in the stroke inspector
cap picker with localized labels, and cover the renderer with an
arrow-stroke-caps Playwright canvas snapshot.

Claude-Session: https://claude.ai/code/session_012zjEbyLSBYyPpJP4fu1XNB
2026-08-31 21:25:38 +03:00
..
chunks perf(canvas): rebuild navigation rendering (#591) 2026-08-31 13:39:40 +03:00
effects refactor(canvas): adopt immutable CanvasKit paths (#554) 2026-08-18 23:09:45 +03:00
guides feat(canvas): add Figma guide feedback parity 2026-08-20 14:02:33 +03:00
labels fix(canvas): edit section labels inline (#608) 2026-08-30 22:24:08 +03:00
tiles perf(canvas): rebuild navigation rendering (#591) 2026-08-31 13:39:40 +03:00
visual refactor(fig): own instance interpretation 2026-07-18 02:06:34 +03:00
arrow-heads-draw.test.ts feat(canvas): render arrow stroke caps on lines and open vectors 2026-08-31 21:25:38 +03:00
blend.test.ts feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00
boolean-visual.test.ts chore: format codebase 2026-05-24 12:15:29 +03:00
boolean.test.ts refactor(canvas): adopt immutable CanvasKit paths (#554) 2026-08-18 23:09:45 +03:00
cache.test.ts Merge remote-tracking branch 'joey/feature-overlapping-element-analysis-tool' into pr352-local-merge 2026-06-30 09:47:07 +03:00
component-label-text.test.ts
corner-smoothing.test.ts refactor(canvas): adopt immutable CanvasKit paths (#554) 2026-08-18 23:09:45 +03:00
culling.test.ts fix(fig): preserve component instance rendering 2026-08-10 04:30:06 -03:00
derived-text.test.ts feat(fig): support text on path 2026-08-17 12:00:01 +03:00
effect-raster-cache.test.ts perf(canvas): rebuild navigation rendering (#591) 2026-08-31 13:39:40 +03:00
effect-raster-integration.test.ts perf(canvas): rebuild navigation rendering (#591) 2026-08-31 13:39:40 +03:00
font-readiness.test.ts feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00
gradient.test.ts
image-fill.test.ts feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00
label-cache.test.ts
layout-grids.test.ts feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00
line.test.ts fix(fig): preserve imported hug container bounds 2026-05-18 04:20:22 +03:00
masks.test.ts feat: split SceneGraph and Pen packages 2026-06-30 10:54:32 +03:00
measurement.test.ts feat(canvas): measure distances between layers (#515) 2026-08-14 18:18:55 +03:00
picture-invalidation.test.ts perf(canvas): rebuild navigation rendering (#591) 2026-08-31 13:39:40 +03:00
raster-export.test.ts fix(fig): preserve component instance rendering 2026-08-10 04:30:06 -03:00
renderer-lifecycle.test.ts perf(canvas): rebuild navigation rendering (#591) 2026-08-31 13:39:40 +03:00
retained-backing.test.ts fix(fig): address instance rendering review 2026-08-10 05:09:03 -03:00
schema-fill-fallback.test.ts fix(fig): preserve multi-color vector fills 2026-07-28 11:45:58 +03:00
surface-replacement.test.ts perf(canvas): rebuild navigation rendering (#591) 2026-08-31 13:39:40 +03:00
text-font-variations.test.ts fix(canvas): render Figma leading trim 2026-05-26 16:23:59 +03:00
text.test.ts fix(text): finalize font readiness and label shaping (#593) 2026-08-30 14:33:32 +03:00
variable-modes.test.ts fix(fig): honor node-scoped variable modes 2026-07-21 00:23:00 +03:00