Adom Wiki
Public Made by Adomby adom
How the Adom Wiki (wiki.adom.inc) works and how to drive it with the adom-wiki CLI: the two storage layers (git page repo vs package registry), hosting source by pushing files (not a tarball), making
/blob serves .html (and .svg, #38) as application/octet-stream + attachment, so repo HTML cannot be iframed in a readme.html
Summary
/blob/<type>/<slug>/<file>.html (and other text/interactive assets) are served with Content-Type: application/octet-stream + Content-Disposition: attachment + X-Content-Type-Options: nosniff. As a result a repo-hosted .html file cannot be rendered or iframed — the browser downloads it instead. This blocks embedding interactive viewers (or any HTML partial) inside a custom readme.html.
Repro
- Push an HTML file to a page repo, e.g.
adom/stm32f103c8t6/board-3d.html. curl -sI https://wiki.adom.inc/blob/component/stm32f103c8t6/board-3d.html
content-type: application/octet-stream
content-disposition: attachment
x-content-type-options: nosniff
- In a
readme.html,<iframe src="/blob/component/stm32f103c8t6/board-3d.html">renders blank (the response is an attachment download, and nosniff prevents treating it as HTML).
Confirmed live: on adom/stm32f103c8t6 a readme.html embedding three sibling viewer iframes (symbol/footprint/3D, each self-contained) all came up blank for this reason.
Impact
The readme.html custom-page feature (great, and shipped) can only show inline HTML/CSS/JS. It cannot compose the interactive viewers (SymView / FpView / 3D) that live as separate HTML files, because they cannot be framed. Today the only interactive viewers on a component page are the native ones, and a custom readme cannot embed a different interactive scene (e.g. a chip-on-board 3D distinct from model_3d). This is the main ceiling on rich custom component pages.
Related: adom/wiki issue #38 (SVGs served as application/octet-stream) is the same content-type bug for a different extension.
Ask
Serve repo blobs with the correct content-type by extension (.html -> text/html, .svg -> image/svg+xml, .css, .js, ...) and inline (not attachment) for renderable types, at least for same-page framing. A safer subset: allow .html/.svg from a page repo to render inline when framed by that same page. That unlocks composing interactive viewers in readme.html.