openpencil/packages/pen-core/src/__tests__
Fini 5755c8cd88 fix(pen-core): preserve cornerRadius on media-clipping frames
Codex stop-hook on the prior strip-nested-card-decoration commit
caught a regression: cornerRadius on a media-clipping frame
(`clipContent: true` wrapping an image / video, or roles like
`image-placeholder` / `thumbnail` / `cover-image`) is doing the
rounding work for the photo, not stacking card decoration. Blanket
stripping un-rounded the media against the user's clear intent —
typical pattern is

  card { cornerRadius: 16, clipContent: true }
   └─ image-placeholder { cornerRadius: 12, clipContent: true }
       └─ image

where the inner cornerRadius rounds the photo and the outer rounds
the card frame around it. After the prior pass the inner radius got
stripped (ancestor had cornerRadius too) → square corners on the
photo.

New `MEDIA_CLIP_ROLES` set + `isMediaClipper(node)` helper:
  - role match: image, image-card, image-placeholder, video,
    video-placeholder, media, media-thumbnail, thumbnail, cover,
    cover-image, gallery-item
  - shape match: clipContent: true AND has a direct image / video /
    media-roled child

Either signal preserves cornerRadius. Other decorations (stroke,
shadow) still get stripped — those ARE redundant card decoration
even on a media wrapper, since the photo's own outline + the
ancestor card already provide the visual frame.

Tests: 2 new cases — clipContent + image, and the role-only path
covering image-placeholder / thumbnail / cover-image / gallery-item.
2026-05-11 00:23:08 +08:00
..
activity-log-v1.test.ts Merge remote-tracking branch 'origin/v0.8.0' into v0.8.0 2026-05-08 22:33:12 +08:00
arc-path.test.ts
avatar-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
badge-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
body-text-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
bottom-nav-v1-icon-coerce.test.ts fix(ai): bottom-nav-v1 canonicalises wrong-glyph icons via title (Cart→shopping-cart) 2026-05-09 21:33:00 +08:00
card-row-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
chart-builders-visual-smoke.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
clip-card-image-corners.test.ts fix(ai): clean card-image corners + strip wrapper stroke/cornerRadius with fill 2026-05-09 21:42:00 +08:00
codegen-utils.test.ts
coerce-params.test.ts Merge remote-tracking branch 'origin/v0.8.0' into v0.8.0 2026-05-08 22:33:12 +08:00
convert-stacked-overlay-to-absolute.test.ts Merge branch 'v0.8.0' of github.com:ZSeven-W/openpencil into v0.8.0 2026-05-05 22:51:00 +08:00
design-md-parser.test.ts
divider-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-atoms.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-cjk-dispatch.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-composites.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-composition.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-edge-cases.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-layout.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-long-strings.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-no-css-padding.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-normalize-preservation.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-performance.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-post-process-idempotent.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-rows.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
element-builders-unicode-normalization.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
empty-chart-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
expand-overflowing-fixed-height-cards.test.ts Merge branch 'v0.8.0' of github.com:ZSeven-W/openpencil into v0.8.0 2026-05-05 22:51:00 +08:00
fallback-equivalence.test.ts Merge feat/rust-ification into v0.8.0 (Step 0 Rust workspace bootstrap) 2026-05-04 21:00:00 +08:00
font-utils.test.ts
heading-v1.test.ts Merge remote-tracking branch 'origin/v0.8.0' into v0.8.0 2026-05-08 22:33:12 +08:00
icon-label-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
inject-nav-surface-fill.test.ts Merge branch 'v0.8.0' of github.com:ZSeven-W/openpencil into v0.8.0 2026-05-05 22:51:00 +08:00
layout-engine.test.ts
member-row-v1.test.ts Merge remote-tracking branch 'origin/v0.8.0' into v0.8.0 2026-05-08 22:33:12 +08:00
merge-helpers.test.ts
modal-shell-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
node-diff.test.ts
node-helpers.test.ts
node-merge.test.ts
normalize-stroke-fill-schema.test.ts Merge branch 'v0.8.0' of github.com:ZSeven-W/openpencil into v0.8.0 2026-05-05 22:51:00 +08:00
normalize-tree-layout.test.ts
normalize.test.ts
p1-5-consumer-compat.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
path-anchors.test.ts
resolve-theme.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
resolve-variables-recursive.test.ts
semantic-palette.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
setting-row-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
strip-nested-card-decoration.test.ts fix(pen-core): preserve cornerRadius on media-clipping frames 2026-05-11 00:23:08 +08:00
strip-redundant-section-fills.test.ts fix(ai): clean card-image corners + strip wrapper stroke/cornerRadius with fill 2026-05-09 21:42:00 +08:00
text-measure.test.ts
toast-v1.test.ts Merge origin/v0.8.0 into feat/rust-ification 2026-05-03 21:00:00 +08:00
tree-utils.test.ts
unwrap-fake-phone-mockup.test.ts
variables.test.ts