Library: Plugin Studio lists in the base team's plugin library

Its catalog entry was the raw build-manifest record: no category, no staging
page, and an embed that was an object of snippets instead of a staging path.
The library groups by category and opens the staging page, so it could not
list or open it. Now matches the catalog contract (same shape as doxa-maps-spa).
This commit is contained in:
doxa-maps publish 2026-09-25 03:22:36 +00:00
parent f361138adb
commit 553b6ff83a

View file

@ -9,8 +9,8 @@
{ {
"bundle": "all-people-groups", "bundle": "all-people-groups",
"category": "Missions", "category": "Missions",
"icon": "\ud83c\udf0d", "icon": "🌍",
"description": "All 12,379 people groups (peoplegroups.org) in four colors \u2014 reached,", "description": "All 12,379 people groups (peoplegroups.org) in four colors — reached,",
"output": "doxa-maps/all-people-groups/all-people-groups.js", "output": "doxa-maps/all-people-groups/all-people-groups.js",
"staging": "doxa-maps/all-people-groups/all-people-groups/index.html", "staging": "doxa-maps/all-people-groups/all-people-groups/index.html",
"elements": [ "elements": [
@ -23,7 +23,7 @@
"profile": "all-people-groups", "profile": "all-people-groups",
"file": "all-people-groups.iife.js", "file": "all-people-groups.iife.js",
"element": "all-people-groups", "element": "all-people-groups",
"description": "All 12,379 people groups (peoplegroups.org) in four colors \u2014 reached,", "description": "All 12,379 people groups (peoplegroups.org) in four colors — reached,",
"parameterized": false, "parameterized": false,
"embed": "doxa-maps/all-people-groups/all-people-groups/index.html", "embed": "doxa-maps/all-people-groups/all-people-groups/index.html",
"embedScript": "<script src=\"/doxa-maps/all-people-groups/all-people-groups.iife.js\"></script>\n<all-people-groups profile-config='{\"profile\":\"all-people-groups\"}'></all-people-groups>", "embedScript": "<script src=\"/doxa-maps/all-people-groups/all-people-groups.iife.js\"></script>\n<all-people-groups profile-config='{\"profile\":\"all-people-groups\"}'></all-people-groups>",
@ -35,7 +35,7 @@
{ {
"bundle": "big-picture", "bundle": "big-picture",
"category": "Missions", "category": "Missions",
"icon": "\ud83d\udcca", "icon": "📊",
"description": "The Cat-4 composite that PAIRS the two capability elements of the research page", "description": "The Cat-4 composite that PAIRS the two capability elements of the research page",
"output": "doxa-maps/big-picture/big-picture.js", "output": "doxa-maps/big-picture/big-picture.js",
"staging": "doxa-maps/big-picture/big-picture/index.html", "staging": "doxa-maps/big-picture/big-picture/index.html",
@ -63,7 +63,7 @@
{ {
"bundle": "cities-internet", "bundle": "cities-internet",
"category": "Missions", "category": "Missions",
"icon": "\ud83c\udfd9\ufe0f", "icon": "🏙️",
"description": "The doxa-maps \"cities-internet\" mission-mapping plugin.", "description": "The doxa-maps \"cities-internet\" mission-mapping plugin.",
"output": "doxa-maps/cities-internet/cities-internet.js", "output": "doxa-maps/cities-internet/cities-internet.js",
"staging": "doxa-maps/cities-internet/connectivity-list/index.html", "staging": "doxa-maps/cities-internet/connectivity-list/index.html",
@ -109,7 +109,7 @@
{ {
"bundle": "country-posters", "bundle": "country-posters",
"category": "Missions", "category": "Missions",
"icon": "\ud83d\uddfa\ufe0f", "icon": "🗺️",
"description": "The doxa-maps \"country-posters\" mission-mapping plugin.", "description": "The doxa-maps \"country-posters\" mission-mapping plugin.",
"output": "doxa-maps/country-posters/country-posters.js", "output": "doxa-maps/country-posters/country-posters.js",
"staging": "doxa-maps/country-posters/countries-map/index.html", "staging": "doxa-maps/country-posters/countries-map/index.html",
@ -145,7 +145,7 @@
{ {
"bundle": "demo-map", "bundle": "demo-map",
"category": "Demo", "category": "Demo",
"icon": "\ud83e\udded", "icon": "🧭",
"description": "Simple two-tab demo map. Tab 1 colors pins by religion (shared", "description": "Simple two-tab demo map. Tab 1 colors pins by religion (shared",
"output": "doxa-maps/demo-map/demo-map.js", "output": "doxa-maps/demo-map/demo-map.js",
"staging": "doxa-maps/demo-map/demo-map/index.html", "staging": "doxa-maps/demo-map/demo-map/index.html",
@ -171,8 +171,8 @@
{ {
"bundle": "doxa-maps-spa", "bundle": "doxa-maps-spa",
"category": "Doxa Maps", "category": "Doxa Maps",
"icon": "\ud83d\uddfa\ufe0f", "icon": "🗺️",
"description": "The Doxa Maps power app (Cat-5 plugin studio) \u2014 every map in one single-page application with a sidebar. The studio for browsing, previewing and embedding all Doxa map bundles.", "description": "The Doxa Maps power app (Cat-5 plugin studio) — every map in one single-page application with a sidebar. The studio for browsing, previewing and embedding all Doxa map bundles.",
"output": "doxa-maps/doxa-maps-spa/doxa-maps-spa.js", "output": "doxa-maps/doxa-maps-spa/doxa-maps-spa.js",
"staging": "doxa-maps/doxa-maps-spa/doxa-maps-spa/index.html", "staging": "doxa-maps/doxa-maps-spa/doxa-maps-spa/index.html",
"kind": "app", "kind": "app",
@ -202,8 +202,8 @@
"mount": "embedded", "mount": "embedded",
"locked": true, "locked": true,
"category": "Doxa Maps", "category": "Doxa Maps",
"icon": "\ud83e\uddea", "icon": "🧪",
"description": "Doxa Maps staging \u2014 every bundle and element on one page (language + profile switch). Preview and compare all the maps.", "description": "Doxa Maps staging — every bundle and element on one page (language + profile switch). Preview and compare all the maps.",
"kind": "app", "kind": "app",
"entry": "doxa-maps-staging/doxa-maps/index.html", "entry": "doxa-maps-staging/doxa-maps/index.html",
"staging": "the-source-repository-staging/doxa-maps/index.html", "staging": "the-source-repository-staging/doxa-maps/index.html",
@ -227,7 +227,7 @@
{ {
"bundle": "doxa-research-map", "bundle": "doxa-research-map",
"category": "Missions", "category": "Missions",
"icon": "\ud83d\udd2c", "icon": "🔬",
"description": "The doxa-maps \"doxa-research-map\" mission-mapping plugin.", "description": "The doxa-maps \"doxa-research-map\" mission-mapping plugin.",
"output": "doxa-maps/doxa-research-map/doxa-research-map.js", "output": "doxa-maps/doxa-research-map/doxa-research-map.js",
"staging": "doxa-maps/doxa-research-map/research-map/index.html", "staging": "doxa-maps/doxa-research-map/research-map/index.html",
@ -253,7 +253,7 @@
{ {
"bundle": "doxa-simple-map", "bundle": "doxa-simple-map",
"category": "Missions", "category": "Missions",
"icon": "\ud83d\udccd", "icon": "📍",
"description": "The doxa-maps \"doxa-simple-map\" mission-mapping plugin.", "description": "The doxa-maps \"doxa-simple-map\" mission-mapping plugin.",
"output": "doxa-maps/doxa-simple-map/doxa-simple-map.js", "output": "doxa-maps/doxa-simple-map/doxa-simple-map.js",
"staging": "doxa-maps/doxa-simple-map/doxa-simple-map/index.html", "staging": "doxa-maps/doxa-simple-map/doxa-simple-map/index.html",
@ -280,7 +280,7 @@
{ {
"bundle": "doxa-vision-card", "bundle": "doxa-vision-card",
"category": "Missions", "category": "Missions",
"icon": "\ud83c\udfb4", "icon": "🎴",
"description": "The Capability-1 example: ONE folder -> ONE bundle -> ONE element.", "description": "The Capability-1 example: ONE folder -> ONE bundle -> ONE element.",
"output": "doxa-maps/doxa-vision-card/doxa-vision-card.js", "output": "doxa-maps/doxa-vision-card/doxa-vision-card.js",
"staging": "doxa-maps/doxa-vision-card/doxa-vision-card/index.html", "staging": "doxa-maps/doxa-vision-card/doxa-vision-card/index.html",
@ -306,7 +306,7 @@
{ {
"bundle": "gospel-resources", "bundle": "gospel-resources",
"category": "Missions", "category": "Missions",
"icon": "\ud83d\udcd6", "icon": "📖",
"description": "The doxa-maps \"gospel-resources\" mission-mapping plugin.", "description": "The doxa-maps \"gospel-resources\" mission-mapping plugin.",
"output": "doxa-maps/gospel-resources/gospel-resources.js", "output": "doxa-maps/gospel-resources/gospel-resources.js",
"staging": "doxa-maps/gospel-resources/charts/index.html", "staging": "doxa-maps/gospel-resources/charts/index.html",
@ -362,7 +362,7 @@
{ {
"bundle": "my-upg-100-list", "bundle": "my-upg-100-list",
"category": "Prayer Mobilization", "category": "Prayer Mobilization",
"icon": "\ud83d\udcdc", "icon": "📜",
"description": "UPG-100 prayer list + poster wall.", "description": "UPG-100 prayer list + poster wall.",
"output": "doxa-maps/my-upg-100-list/my-upg-100-list.js", "output": "doxa-maps/my-upg-100-list/my-upg-100-list.js",
"staging": "the source org/my-upg-100-list/poster-wall/index.html", "staging": "the source org/my-upg-100-list/poster-wall/index.html",
@ -409,8 +409,8 @@
{ {
"bundle": "people-groups-grid", "bundle": "people-groups-grid",
"category": "Missions", "category": "Missions",
"icon": "\ud83d\uddc2\ufe0f", "icon": "🗂️",
"description": "People-groups grid \u2014 the tabular people-groups capability element used inside the Big Picture composite.", "description": "People-groups grid — the tabular people-groups capability element used inside the Big Picture composite.",
"output": "doxa-maps/people-groups-grid/people-groups-grid.js", "output": "doxa-maps/people-groups-grid/people-groups-grid.js",
"staging": "doxa-maps/people-groups-grid/people-groups-grid/index.html", "staging": "doxa-maps/people-groups-grid/people-groups-grid/index.html",
"elements": [ "elements": [
@ -434,52 +434,38 @@
}, },
{ {
"bundle": "plugin-studio", "bundle": "plugin-studio",
"scriptUrl": "doxa-maps/plugin-studio/plugin-studio.js", "category": "Doxa Maps",
"icon": "🧪",
"description": "Plugin Studio — preview every Doxa map in one place: all 7 production plugins and the Experimental shelf, organized by capability, each live and embeddable.",
"output": "doxa-maps/plugin-studio/plugin-studio.js", "output": "doxa-maps/plugin-studio/plugin-studio.js",
"integrity": "sha384-6Si+RjK5+xGytKBW4i/agiAGYXhaUXfjz5YWQRjhR5vG1RZc0oJGMRcseYTveHtK", "staging": "doxa-maps/plugin-studio/plugin-studio/index.html",
"kind": "app",
"elements": [ "elements": [
"plugin-studio" "plugin-studio"
], ],
"element": "plugin-studio",
"profileCount": 1,
"profiles": [ "profiles": [
{ {
"profile": "plugin-studio", "profile": "plugin-studio",
"file": "plugin-studio.vue", "file": "plugin-studio.vue",
"description": "",
"element": "plugin-studio", "element": "plugin-studio",
"iframeUrl": "doxa-maps/plugin-studio/plugin-studio/index.html", "kind": "app",
"scriptUrl": "./plugin-studio/plugin-studio.js", "parameterized": false,
"embed": { "description": "The developer studio: every plugin element, grouped by capability, mounted live.",
"iframe": "<iframe src=\"./plugin-studio/plugin-studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>", "embed": "doxa-maps/plugin-studio/plugin-studio/index.html",
"script": "<script src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-6Si+RjK5+xGytKBW4i/agiAGYXhaUXfjz5YWQRjhR5vG1RZc0oJGMRcseYTveHtK\" crossorigin=\"anonymous\"></script>\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\"}'></plugin-studio>" "embedScript": "<script src=\"/doxa-maps/plugin-studio/plugin-studio.js\" integrity=\"sha384-6Si+RjK5+xGytKBW4i/agiAGYXhaUXfjz5YWQRjhR5vG1RZc0oJGMRcseYTveHtK\" crossorigin=\"anonymous\"></script>\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\"}'></plugin-studio>",
},
"instances": [
{
"id": "studio",
"title": "Plugin Studio \u2014 every element by capability 5 -> 1 (developer studio)",
"apiBaseUrl": "",
"props": {
"profile": "plugin-studio",
"provider": "maplibre",
"instanceId": "plugin-studio",
"title": "Plugin Studio"
},
"element": "plugin-studio",
"iframeUrl": "./plugin-studio/plugin-studio/studio/index.html",
"embed": {
"iframe": "<iframe src=\"./plugin-studio/plugin-studio/studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>"
}
}
],
"type": "nested-mfe-spa" "type": "nested-mfe-spa"
} }
], ],
"integrity": "sha384-6Si+RjK5+xGytKBW4i/agiAGYXhaUXfjz5YWQRjhR5vG1RZc0oJGMRcseYTveHtK",
"type": "nested-mfe-spa" "type": "nested-mfe-spa"
}, },
{ {
"bundle": "quantum-forms-collect", "bundle": "quantum-forms-collect",
"category": "Forms", "category": "Forms",
"icon": "\ud83d\udccb", "icon": "📋",
"description": "Quantum Forms \u2014 Epicollect-migrated data collection (locked plugin, own PB, lobby-code access).", "description": "Quantum Forms — Epicollect-migrated data collection (locked plugin, own PB, lobby-code access).",
"output": "the source org/quantum-forms-collect/quantum-forms-collect.iife.js", "output": "the source org/quantum-forms-collect/quantum-forms-collect.iife.js",
"staging": "the source org/quantum-forms-collect/index.html", "staging": "the source org/quantum-forms-collect/index.html",
"elements": [ "elements": [
@ -505,8 +491,8 @@
{ {
"bundle": "quantum-forms-full", "bundle": "quantum-forms-full",
"category": "Forms", "category": "Forms",
"icon": "\ud83d\udccb", "icon": "📋",
"description": "Quantum Forms \u2014 the full Epicollect5 form-builder, migrated to a go-base locked plugin (identical UI, PocketBase backend via api-shim).", "description": "Quantum Forms — the full Epicollect5 form-builder, migrated to a go-base locked plugin (identical UI, PocketBase backend via api-shim).",
"output": "the source org/quantum-forms-full/quantum-forms.iife.js", "output": "the source org/quantum-forms-full/quantum-forms.iife.js",
"staging": "the source org/quantum-forms-full/index.html", "staging": "the source org/quantum-forms-full/index.html",
"elements": [ "elements": [
@ -532,8 +518,8 @@
{ {
"bundle": "research-dashboard", "bundle": "research-dashboard",
"category": "Research Maps", "category": "Research Maps",
"icon": "\ud83d\udcca", "icon": "📊",
"description": "Full research dashboard \u2014 globe + choropleth, faceted filters, KPIs, charts rail and a 2,106-row people-groups table. Collapsible/resizable panels.", "description": "Full research dashboard — globe + choropleth, faceted filters, KPIs, charts rail and a 2,106-row people-groups table. Collapsible/resizable panels.",
"output": "doxa-maps/research-dashboard/research-dashboard.js", "output": "doxa-maps/research-dashboard/research-dashboard.js",
"staging": "the source org/research-dashboard/research-dashboard/index.html", "staging": "the source org/research-dashboard/research-dashboard/index.html",
"elements": [ "elements": [
@ -561,8 +547,8 @@
{ {
"bundle": "template-bundle", "bundle": "template-bundle",
"category": "Developer Tools", "category": "Developer Tools",
"icon": "\ud83e\uddf0", "icon": "🧰",
"description": "Copy-me starter bundle \u2014 the pattern for new map plugins.", "description": "Copy-me starter bundle — the pattern for new map plugins.",
"output": "doxa-maps/template-bundle/template-bundle.js", "output": "doxa-maps/template-bundle/template-bundle.js",
"staging": "the source org/template-bundle/template-map-a/index.html", "staging": "the source org/template-bundle/template-map-a/index.html",
"elements": [ "elements": [
@ -575,7 +561,7 @@
"profile": "template-map-a", "profile": "template-map-a",
"file": "template-map-a.vue", "file": "template-map-a.vue",
"element": "template-bundle", "element": "template-bundle",
"description": "Minimal example profile A \u2014 a colored placeholder, no Mapbox or data.", "description": "Minimal example profile A — a colored placeholder, no Mapbox or data.",
"embed": "template-bundle/template-map-a/index.html", "embed": "template-bundle/template-map-a/index.html",
"embedScript": "<script src=\"/template-bundle/template-bundle.js\" integrity=\"sha384-4QsipLdtw9IIrA5qQdnhgmo70TH+33QMVdVZdYJFVTUp44Bvz9Y31g+DSKYInsTW\" crossorigin=\"anonymous\"></script>\n<template-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\"}'></template-bundle>", "embedScript": "<script src=\"/template-bundle/template-bundle.js\" integrity=\"sha384-4QsipLdtw9IIrA5qQdnhgmo70TH+33QMVdVZdYJFVTUp44Bvz9Y31g+DSKYInsTW\" crossorigin=\"anonymous\"></script>\n<template-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\"}'></template-bundle>",
"type": "single" "type": "single"
@ -584,7 +570,7 @@
"profile": "template-map-b", "profile": "template-map-b",
"file": "template-map-b.vue", "file": "template-map-b.vue",
"element": "template-bundle", "element": "template-bundle",
"description": "Minimal example profile B \u2014 a second profile in the same bundle.", "description": "Minimal example profile B — a second profile in the same bundle.",
"embed": "template-bundle/template-map-b/index.html", "embed": "template-bundle/template-map-b/index.html",
"embedScript": "<script src=\"/template-bundle/template-bundle.js\" integrity=\"sha384-4QsipLdtw9IIrA5qQdnhgmo70TH+33QMVdVZdYJFVTUp44Bvz9Y31g+DSKYInsTW\" crossorigin=\"anonymous\"></script>\n<template-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\"}'></template-bundle>", "embedScript": "<script src=\"/template-bundle/template-bundle.js\" integrity=\"sha384-4QsipLdtw9IIrA5qQdnhgmo70TH+33QMVdVZdYJFVTUp44Bvz9Y31g+DSKYInsTW\" crossorigin=\"anonymous\"></script>\n<template-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\"}'></template-bundle>",
"type": "single" "type": "single"