Is your feature request related to a problem? Please describe.
aem up serves DA-cloned content directly from content/, which holds raw, unprocessed HTML (the same format DA stores). helix-html-pipeline's rewrite-icons.js converts :icon-name: text to <span class="icon icon-name"> server-side for all content, but helix-cli has no local equivalent. So :icon-name: shows as literal text when previewing DA content locally, instead of the icon it renders as in production.
Describe the solution you'd like
Add a serve-time transform in HelixServer.js, alongside the existing page-metadata handling (content-metadata-html.js): :icon-name: → <span class="icon icon-name">.
Prefer reusing @adobe/helix-html-pipeline's src/steps/rewrite-icons.js directly (small, pure HAST-in/HAST-out function) rather than hand-porting the regex. Not part of the package's public API, so this is an internal import; worth asking html-pipeline to export it officially.
Describe alternatives you've considered
Doing this in da-admin or as a pre-push processing step: rejected, since content/ should stay a byte-for-byte mirror of DA storage (confirmed via da-api.js, and DA's own prose2aem.js, which only applies this transform in its own livePreview mode).
Related: #2756 (same gap for section-metadata blocks).
Is your feature request related to a problem? Please describe.
aem upserves DA-cloned content directly fromcontent/, which holds raw, unprocessed HTML (the same format DA stores).helix-html-pipeline'srewrite-icons.jsconverts:icon-name:text to<span class="icon icon-name">server-side for all content, but helix-cli has no local equivalent. So:icon-name:shows as literal text when previewing DA content locally, instead of the icon it renders as in production.Describe the solution you'd like
Add a serve-time transform in
HelixServer.js, alongside the existing page-metadata handling (content-metadata-html.js)::icon-name:→<span class="icon icon-name">.Prefer reusing
@adobe/helix-html-pipeline'ssrc/steps/rewrite-icons.jsdirectly (small, pure HAST-in/HAST-out function) rather than hand-porting the regex. Not part of the package's public API, so this is an internal import; worth asking html-pipeline to export it officially.Describe alternatives you've considered
Doing this in
da-adminor as a pre-pushprocessing step: rejected, sincecontent/should stay a byte-for-byte mirror of DA storage (confirmed viada-api.js, and DA's ownprose2aem.js, which only applies this transform in its ownlivePreviewmode).Related: #2756 (same gap for
section-metadatablocks).