Web Device Markdown directive — not an AUP primitive; not a theme/site layout component.
Sample contract
| Field | Value |
|---|---|
| Purpose | Embed a supported external or same-site URL in content Markdown |
| Boundaries | Providers limited (YouTube, X/Twitter status, validated same-site); not a general iframe API |
| Author entry | ::embed{url=…} or standalone recognized URL |
| Surface | Web Device document (partial frame path) |
| Public status | released |
| Fallback / failure | Unrecognized or refused URL → ordinary link / no embed descriptor |
| Verification | Routes below · arc --version = 2.0.0-beta.28 |
Sample
Source:
::embed{url="https://youtu.be/jNQXAC9IVRw"}Rendered:
The current renderer turns this supported URL into a responsive, lazy-loaded, sandboxed third-party iframe. Unrecognized URLs stay ordinary links.
Failure and limits
| Situation | Expected result |
|---|---|
| Unrecognized host / URL shape | Ordinary link; no embed chrome |
| Expecting arbitrary iframe with full privileges | Out of contract (allowSameOrigin / whitelist rules apply elsewhere) |
| Same-site path not validated | Refused or link fallback |
Verification evidence
| Item | Value |
|---|---|
| Baseline | 2026-08-09 · arc --version → 2.0.0-beta.28 |
| Capability row | docs/aup/capability-matrix.md §6 · ::embed · widget frame |
| Implementation | content-reader.ts · content-embed.ts (youtube / twitter / internal) · renderer/primitives/frame.ts |
| Public routes | /en/docs/web-device/markdown/embed/ · /zh/docs/web-device/markdown/embed/ |
| Local run | arc service start --blocklet blocklets/arcblock --port 4900 · open routes; refuse path stays link |
| Accept | Supported URL embeds; unsupported stays link; no general iframe claim |
Related
- Markdown hub — navigation only
- Historical multi-unit hub: markdown-embeds