F-18 imperative islands. 3Dmol lazy script-tag inject (vendored copy only; the deleted-CDN comment is kept next to the tag), image annotator, dock Viewer / versions, app-origin Ketcher /ketcher iframe (embeddable headers, no sandbox), and inert PDF / initial HTML preview iframes. HTML can run scripts after a scoped grant on the verified alternate loopback origin. Does not edit stores/ or compat/window-exports.ts above the lane-additions marker.
| File | Responsibility |
|---|---|
annot.ts |
Image annotator, pin status, composer chip (app.js:8965-8993, 9149-9429). |
annot.test.ts |
annotationStatus mapping; held pins; openAnnotations. |
dom.ts |
el / $ / lucide subset / ghostIconBtn. |
frames.ts |
Inert iframe policy, verified loopback origin and grant path checks; app-origin Ketcher + clipboard allow. |
frames.test.ts |
iframe sandbox attributes, the derived loopback origin, grant path checks, and app-origin Ketcher. |
host.ts |
isReady window calls; t() fallback. |
index.ts |
bootIslands / installIslands. Overwrites F-05 stubs. |
install.test.ts |
Contract names pass isReady after install. |
ketcher.ts |
openKetcher iframe onto /ketcher (app.js:10834). |
locator.ts |
PDF / HTML locator comments (app.js:10835-10897). |
mol.ts |
_molTeardown + molecule lazy inject (app.js:9610-9673). |
mol.test.ts |
No static 3Dmol import; no live CDN URL; vendored src. |
viewer.ts |
Dock Viewer chrome, editor, versions (app.js:9430-9609). |
viewer.test.ts |
isTextEditable extension / content-type gate. |