- Vimeo regex now rejects URLs like vimeo.com/123abc that were
silently truncated to ID 123 and produced broken iframes. Negative
lookahead (?![A-Za-z0-9]) ensures the captured digits are not
followed by alphanumerics. Two false-positive test cases added.
- Spec corrected: HtmlInline nodes ARE filtered regardless of
insertion path; the implementation uses a dedicated MediaEmbedNode
+ renderer to bypass the filter only for trusted programmatic embeds.
Components list updated to include the two extra files.
- Plan Task 6 regex updated for consistency.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Task 4 implementer discovered that # delimiter conflicts with literal #
inside [/?#] and [&#] character classes (PHP PCRE terminates the regex
early). Same patterns repeat in Task 5; pre-update so a re-execution
does not hit the same bug. Vimeo regex in Task 6 is unaffected (no
literal # in pattern body).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Plan breaks the work into 9 TDD tasks: scaffold resolver, video
detection, audio detection, YouTube URL detection, YouTube timestamps,
Vimeo detection, listener+extension wiring, integration tests, full
test suite verification.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>