The gallery is going onto the DX-life research page, and nothing had tried it on a page it didn't generate. From a second origin, a bare <script> + <doxa-maps-spa> drew over the host's header, and 8 of 13 tabs showed an error card. Three causes, each fixed in the shell: - No :host box. The layout root is position:absolute, so it anchored to the viewport instead of the element. :host is now a positioned block with a default height the host can override. - A foreign page sets none of the globals a leaf page bakes. Every data call hit the host's own origin and got HTML back. The manifest now publishes a `runtime` block (apiBaseUrl + the public token every leaf already carries). The shell fills window.MAP_APP_API_URL / window.MAP_TOKEN only when the page hasn't set them, and forwards tk in profile-config. - Nested elements resolved assets to <tree>/../assets, a sibling pool the publisher doesn't ship (404 live). The shell now forwards an absolute <tree>/assets. This also fixes the iframe mode, where Cities with Internet and Gospel Resources were failing the same way. Also adds a `tab` attribute (plus ?tab=) to deep-link into one map, and a `tab-change` event for the host. check:gallery-embed drives every tab in both modes from a second origin. It passes here and fails on the previous tree (7 findings). EMBED.md documents the contract. The Traefik template now sends CORS for the whole tree: live manifest.json answers without Access-Control-Allow-Origin. |
||
|---|---|---|
| .. | ||
| app-wrappers.md | ||
| color-strategies.md | ||
| components.md | ||
| data-sources.md | ||
| embeddability.md | ||
| file-map.md | ||
| i18n.md | ||
| patterns-and-provenance.md | ||
| poster-generation.md | ||
| README.md | ||
documentation/architecture/ — the deep end
Everything complex lives here, on purpose. The rest of the docs stay simple ("what it does"); when a simple doc says "full contract in architecture/…", this is where it points.
| Doc | What it holds |
|---|---|
| file-map.md | every file, one line each, with the gotcha each carries |
| data-sources.md | the api/ seam — connection contract + add-a-source checklist |
| color-strategies.md | the color-strategy contract + legend wiring |
| components.md | shared component catalog + shadow-DOM conventions |
| i18n.md | the locale contract + add-a-language checklist |
| embeddability.md | the generated per-map pages + manifest that make every map embeddable by default |
| app-wrappers.md | the SPA shell: nav.js + PROFILES contracts, bun run shell pipeline |
| poster-generation.md | the poster/preview generator pipeline |
| patterns-and-provenance.md | the two multi-map patterns in depth + where the design comes from |
Simple docs: ../why.md · ../tutorial.md · ../how-to.md · ../reference.md · ../explanation.md