- Use invisible fallback path (M0 0 L0 0) instead of dot for empty d attr
- Track __sourceD on path objects to detect d changes requiring recreation
- Generalize textRecreated to objectRecreated for path recreation support
- Tighten isBadgeLikeFrame: max height 40px, max 3 children, 1 icon max,
exclude explicit button names, width cap 260px, CJK label limit 10 chars
- Use full capsule radius (height/2) instead of clamped range for badges