From 4de20daed6eae81ff402b4ed6dff96bad8a96ea9 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Thu, 1 Oct 2026 00:57:41 +0000 Subject: [PATCH] P assembly: the last census lines, stated neutrally The census on the assembled branches still found eleven comments that attributed a choice to a dated request, quoted it, or spoke in the first person: pplr-data-maps (geocoder, pin card, pin indicator, tree, families, religion, semantic trees), research-dashboard's ramp note, upg-100-list's funnel note, and two dated QA tags each in countries-map and research-map. Comments only; behaviour unchanged. --- plugin-designs/country-posters/countries-map.vue | 4 ++-- plugin-designs/doxa-research-map/research-map.vue | 4 ++-- plugin-designs/my-upg-100-list/upg-100-list.vue | 4 ++-- .../pplr-data-maps/src/components/MapboxGeocoder.vue | 4 ++-- .../pplr-data-maps/src/components/PinDetailCard.vue | 4 ++-- plugin-designs/pplr-data-maps/src/utils/pplrMap.js | 6 +++--- plugin-designs/pplr-data-maps/src/views/pplr-d3-tree.vue | 2 +- .../pplr-data-maps/src/views/pplr-language-families.vue | 4 ++-- plugin-designs/pplr-data-maps/src/views/pplr-religion.vue | 2 +- .../pplr-data-maps/src/views/pplr-semantic-trees.vue | 4 ++-- .../src/components/dashboards/DashboardMapPanel.vue | 6 +++--- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/plugin-designs/country-posters/countries-map.vue b/plugin-designs/country-posters/countries-map.vue index aee3f89d3..0814af716 100644 --- a/plugin-designs/country-posters/countries-map.vue +++ b/plugin-designs/country-posters/countries-map.vue @@ -192,7 +192,7 @@ useShadowStyles(` /* Geocoder column matches the SemanticTreeLegend's .stl-panel — 8px from the START edge (logical, so it moves right under ar with the legend; a physical left:8px kept it left), width:380px — so the search bar and the legend stack as one column at - the same x-edge (PPLR alignment, qa: 2026-05-02). */ + the same x-edge (PPLR alignment). */ /* Both engines' container class: MapLibre names it .maplibregl-ctrl-top-left, and with only the Mapbox selector the column got no position or width at all under MapLibre. */ .mapboxgl-ctrl-top-left, .maplibregl-ctrl-top-left { top:12px!important;inset-inline-start:8px!important;width:380px!important;max-width:380px!important;z-index:1200!important; } @@ -548,7 +548,7 @@ const geocoderRef = ref(null) // 'collapsed' on first visit). Replaces the iter-3 always-collapse-on- // switch behavior, which the user found jarring — they want returning // to a tab to restore whatever tier (collapsed / open / fullyOpen) they -// last had it at. qa: 2026-05-02. +// last had it at. const _tabLegendState = new Map() watch(() => activeTabId?.value, async (newTabId, oldTabId) => { if (oldTabId !== undefined && newTabId !== oldTabId) { diff --git a/plugin-designs/doxa-research-map/research-map.vue b/plugin-designs/doxa-research-map/research-map.vue index a48f8929b..9ebd31443 100644 --- a/plugin-designs/doxa-research-map/research-map.vue +++ b/plugin-designs/doxa-research-map/research-map.vue @@ -227,7 +227,7 @@ useShadowStyles(` / --map-font-sm CSS vars are set by applyContainerScale() below. ── */ /* Geocoder column matches the SemanticTreeLegend's .stl-panel — inset-inline-start:8px, width:380px — so the search bar and the legend stack as one column at - the same x-edge (PPLR alignment, qa: 2026-05-02). */ + the same x-edge (PPLR alignment). */ /* The search pill is exactly as wide as the legend below it: both follow --map-legend-width. */ /* ★ LOGICAL, so the search bar and the legend mirror TOGETHER (studio's legend sweep). This column exists to sit at the same x-edge as SemanticTreeLegend's .stl-panel — that is the @@ -682,7 +682,7 @@ const geocoderRef = ref(null) // 'collapsed' on first visit). Replaces the iter-3 always-collapse-on- // switch behavior, which the user found jarring — they want returning // to a tab to restore whatever tier (collapsed / open / fullyOpen) they -// last had it at. qa: 2026-05-02. +// last had it at. const _tabLegendState = new Map() watch(() => activeTabId?.value, async (newTabId, oldTabId) => { if (oldTabId !== undefined && newTabId !== oldTabId) { diff --git a/plugin-designs/my-upg-100-list/upg-100-list.vue b/plugin-designs/my-upg-100-list/upg-100-list.vue index f7ceb063b..9062398eb 100644 --- a/plugin-designs/my-upg-100-list/upg-100-list.vue +++ b/plugin-designs/my-upg-100-list/upg-100-list.vue @@ -1705,8 +1705,8 @@ async function packetFunnel() { // allLists(), and summing all 29 gives 2,209 against a total of 2,106, so the deaf lists OVERLAP // the geographic ones. They are a second, cross-cutting partition, which means "in no list" has no // single answer until someone says which partition is meant. - // A confident figure I cannot defend is exactly the defect class I have been removing from other - // surfaces all day; this one I put here myself. funnelPage already falls back to the + // A confident figure that cannot be defended is exactly the defect class removed from other + // surfaces; this one was introduced here. funnelPage already falls back to the // provenance-only footnote when unassigned is absent, so the page simply stops claiming it. // Carded as a product question: 27 geographic / 29 counting deaf, and whether "Central Asia + Pakistan" // (55 groups, contiguous, poster-walled as a real region) is a prayer list rather than a residual. diff --git a/plugin-designs/pplr-data-maps/src/components/MapboxGeocoder.vue b/plugin-designs/pplr-data-maps/src/components/MapboxGeocoder.vue index 7cb87e439..760cac8f5 100644 --- a/plugin-designs/pplr-data-maps/src/components/MapboxGeocoder.vue +++ b/plugin-designs/pplr-data-maps/src/components/MapboxGeocoder.vue @@ -82,7 +82,7 @@ function buildLocalGeocoder() { if (out.length >= props.localMax) break } // Sort priority: BROADER scope first (lower depth = bigger bucket), then - // prefix matches, then population/count desc. Per user 2026-05-02: + // prefix matches, then population/count desc. Found in QA: // searching "Arabic" was selecting the narrow "Arabic" language node // (depth 1) instead of the family "Arab (Arabic)" (depth 0) — only some // Arabic pins showed. Depth-first means picking the top result now @@ -137,7 +137,7 @@ function setup() { // Wrap entire setup in try/catch — a geocoder failure must NEVER bubble // out of onMounted, since Vue's "Unhandled error during execution of // mounted hook" cascades and can prevent sibling components (the map!) - // from mounting. Per user 2026-05-02: map went completely blank when + // from mounting. Without the guard the map went completely blank when // the geocoder threw on shadow-DOM addTo(). try { if (isMaplibre) { diff --git a/plugin-designs/pplr-data-maps/src/components/PinDetailCard.vue b/plugin-designs/pplr-data-maps/src/components/PinDetailCard.vue index c30409c65..8a4e96ed3 100644 --- a/plugin-designs/pplr-data-maps/src/components/PinDetailCard.vue +++ b/plugin-designs/pplr-data-maps/src/components/PinDetailCard.vue @@ -34,8 +34,8 @@ const instance = useInstance() const tr = usePplrT() // not `t`: the names table below is already called t const pinData = computed(() => props.pin || instance?.pinDetail.value || null) -// All 17 locale names for this PG (n_en, n_hi, n_bn, …). Per user 2026-05-02: -// the popup-style display couldn't show all 17, so we render them as their own +// All 17 locale names for this PG (n_en, n_hi, n_bn, …). The popup-style +// display couldn't show all 17, so they render as their own // scrollable section in the sidebar with "—" placeholders for missing locales. // The 17 names no longer ride on every pin (they were two-thirds of the 23 MB points file); they // load from pg-names.json the first time a card opens, keyed by PG code in LOCALES order. diff --git a/plugin-designs/pplr-data-maps/src/utils/pplrMap.js b/plugin-designs/pplr-data-maps/src/utils/pplrMap.js index 0e344f235..62960b181 100644 --- a/plugin-designs/pplr-data-maps/src/utils/pplrMap.js +++ b/plugin-designs/pplr-data-maps/src/utils/pplrMap.js @@ -247,9 +247,9 @@ export function bindFuzzyPinClick(map, layerId, handler, { tolerance = 8 } = {}) /** * Selected-pin indicator: a Mapbox marker with an SVG pin icon hovering over - * the clicked point. Mirrors the pattern DOXA's research-mfe uses ("the go - * indicator that shows which pin you actually selected" — user feedback - * 2026-05-02). Returns a controller object the profile holds onto. + * the clicked point. Mirrors the pattern DOXA's research-mfe uses (a go + * indicator that shows which pin is actually selected). + * Returns a controller object the profile holds onto. * * Usage: * const indicator = makePinIndicator() diff --git a/plugin-designs/pplr-data-maps/src/views/pplr-d3-tree.vue b/plugin-designs/pplr-data-maps/src/views/pplr-d3-tree.vue index 2a5fee138..88bfd9e59 100644 --- a/plugin-designs/pplr-data-maps/src/views/pplr-d3-tree.vue +++ b/plugin-designs/pplr-data-maps/src/views/pplr-d3-tree.vue @@ -4,7 +4,7 @@ import { usePplrT } from '../composables/usePplrT.js' /** * pplr-d3-tree.vue — ROP People-Affinity-Cluster sunburst. * - * Per user 2026-05-02: capped at depth-2 (Affinity Bloc + Cluster) instead + * Capped at depth-2 (Affinity Bloc + Cluster) instead * of including the 13k+ People Group leaves at depth 3. SVG sunbursts top * out around 1k arcs before scroll-zoom gets unresponsive; depth 2 is ~309 * arcs, which keeps wheel-zoom snappy. The PG-level data is still surfaced diff --git a/plugin-designs/pplr-data-maps/src/views/pplr-language-families.vue b/plugin-designs/pplr-data-maps/src/views/pplr-language-families.vue index 4b99b9e28..a7a854ae5 100644 --- a/plugin-designs/pplr-data-maps/src/views/pplr-language-families.vue +++ b/plugin-designs/pplr-data-maps/src/views/pplr-language-families.vue @@ -81,8 +81,8 @@ const familyColorMap = new Map(FAMILIES.map(f => [f.key, f.color])) function familyColor(fam) { return familyColorMap.get(fam) || familyColorMap.get('Other') } // LoadingGlobe stays mounted until pins are added to the map. Flips true after -// setupLayers + family aggregation completes. Per user 2026-05-02: don't drop -// the loader before pins populate. +// setupLayers + family aggregation completes: the loader must not drop +// before pins populate. const dataReady = ref(false) function reload() { window.location.reload() } diff --git a/plugin-designs/pplr-data-maps/src/views/pplr-religion.vue b/plugin-designs/pplr-data-maps/src/views/pplr-religion.vue index ec9510858..deefe4389 100644 --- a/plugin-designs/pplr-data-maps/src/views/pplr-religion.vue +++ b/plugin-designs/pplr-data-maps/src/views/pplr-religion.vue @@ -287,7 +287,7 @@ onMounted(async () => { pgData.value.features.forEach(f => { const g = f.properties.rg; counts[g] = (counts[g] || 0) + 1 }) religionCounts.value = counts const dominant = RELIGION_GROUPS.reduce((a, b) => (counts[a.key] || 0) > (counts[b.key] || 0) ? a : b) - // Per user 2026-05-02: drop the "Ready" prefix — it was unclear and chewed up width. + // No "Ready" prefix: it was unclear and chewed up width. status.value = t('pplr.status.readyReligion', { pins: pgData.value.features.length.toLocaleString(), religion: groupLabel(dominant), count: (counts[dominant.key]||0).toLocaleString() }) // keep the LoadingGlobe up until the pins are actually drawn, not merely added await whenGeojsonDrawn(map.value) diff --git a/plugin-designs/pplr-data-maps/src/views/pplr-semantic-trees.vue b/plugin-designs/pplr-data-maps/src/views/pplr-semantic-trees.vue index 85575f506..ce53d7a6c 100644 --- a/plugin-designs/pplr-data-maps/src/views/pplr-semantic-trees.vue +++ b/plugin-designs/pplr-data-maps/src/views/pplr-semantic-trees.vue @@ -287,7 +287,7 @@ onBeforeUnmount(() => resizeObs?.disconnect())