From d8107decbad76d9d71a19f10c7d9af9014fc6cd9 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Thu, 1 Oct 2026 00:44:38 +0000 Subject: [PATCH 1/2] Prayer Progress: comments state the reason, not who asked or when Comments only. Eleven comments in doxa-simple-map.vue carried an agent name, a "user request" / "user feedback" attribution, or a dated QA tag; each now keeps its reasoning and drops the attribution and the date. The built bundle changes only in the component's scope id (Vue derives it from the source in production builds); every other token is identical, so behaviour is unchanged. Source only: the assembler rebuilds. --- .../doxa-simple-map/doxa-simple-map.vue | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/plugin-designs/doxa-simple-map/doxa-simple-map.vue b/plugin-designs/doxa-simple-map/doxa-simple-map.vue index 400fc0977..57867f88d 100644 --- a/plugin-designs/doxa-simple-map/doxa-simple-map.vue +++ b/plugin-designs/doxa-simple-map/doxa-simple-map.vue @@ -180,7 +180,7 @@ useShadowStyles(` /* When the geocoder is disabled (FEATURES.geocoder=false), the legend reflows up to fill the freed top slot — matches the geocoder pill - position (top:10px) instead of clearing it (top:54px). qa: 2026-05-06. */ + position (top:10px) instead of clearing it (top:54px). */ .dsm-root.dsm-no-geocoder .legend-container, .dsm-root.dsm-no-geocoder .legend-container.collapsed { top: 10px !important; } .dsm-root.dsm-no-geocoder .stl-panel { top: 10px !important; } @@ -260,7 +260,7 @@ const isRTL = computed(() => RTL_LOCALES.has(locale.value)) // infoButton — "About this map" help modal trigger // overlapDensity — dim non-matched pins to 0.08 when a legend filter is // active (causes overlap-density bleed that can wash out -// orange pins). OFF here per feedback 2026-04-20. +// orange pins). OFF here. // darkPinBorder — dark stroke on active pins in light mode. Previously // needed to compensate for density bleed; irrelevant // without overlapDensity. @@ -269,14 +269,14 @@ const FEATURES = { infoButton: false, // before enabling: the help modal needs role="dialog" + aria-modal + Escape + focus trap/return (A11Y-AUDIT-PRAYER-PROGRESS-CONNECTIVITY.md) overlapDensity: false, darkPinBorder: false, - // Geocoder search bar feature-flagged OFF on simple-map per user request - // (qa: 2026-05-04 — research-map keeps its geocoder; only the simple-map - // pages on home/pray/adopt should NOT show search). Flip to true to - // restore. Wraps the in the template. + // Geocoder search bar feature-flagged OFF on simple-map: research-map keeps + // its geocoder; only the simple-map pages on home/pray/adopt should NOT show + // search. Flip to true to restore. Wraps the in the + // template. geocoder: false, // Disabled: no thicker stroke / enlarged radius / pulse animation when a // legend row is selected. Matched pins stay at base-layer style; non- - // matched pins dim via 'case' opacity (qa: 2026-05-06 user feedback). + // matched pins dim via 'case' opacity. activeOverlayEmphasis: false, } @@ -344,8 +344,8 @@ const mapId = (injectedInstanceId?.value || injectedInstanceId) || ('doxa-simple // Re-provide mapId so children (LegendComponent, etc.) can inject it for window event scoping provide('mapId', mapId) // Resolves the active tab's strategy → color for a given feature, used by -// useSelectedPin.js so the selection-pin matches the underlying dot color -// (qa: 2026-05-06 user feedback). simple-map tab strategyKeys are 'engagement', +// useSelectedPin.js so the selection-pin matches the underlying dot color. +// simple-map tab strategyKeys are 'engagement', // 'adoption', 'prayer' — mapping to COLOR_MODES below. provide('getActivePinColor', (properties) => { const sk = activeTab.value?.colorStrategy @@ -383,7 +383,7 @@ function _flatItemsToStlNodes(items) { } const legendNodes = computed(() => _flatItemsToStlNodes(flatLegend.items.value)) const legendTitle = computed(() => t('legend.titleBar.legend')) -// Prayer progress bar (header of the prayer legend; 2026-09-16). The payload +// Prayer progress bar (header of the prayer legend). The payload // is null on every non-prayer tab → no bar. Passed as a prop to the desktop STL // below AND provide()d so the MOBILE sheet's embedded // (LegendMobile.vue, untouched) picks it up via inject('legendProgress') — one @@ -511,7 +511,7 @@ const { map, isMapReady, initializeMap, destroy } = useMapInstance({ zoom: 1.8, pitch: profileConfig?.value?.pitch ?? mapDefaults.pitch, bearing: profileConfig?.value?.bearing ?? mapDefaults.bearing, - // Per-map zoom constraints (feedback #1 /pray): each map (simple, prayer) + // Per-map zoom constraints: each map (simple, prayer) // defines its own min/max in profile-config so users don't get lost zooming // too far, and precise locations stay obfuscated. Falls back to mapDefaults. minZoom: profileConfig?.value?.minZoom ?? mapDefaults.minZoom, @@ -663,7 +663,7 @@ const KEYLESS_NIGHT_PAINT = [ { layer: 'boundary_country_z0-4', prop: 'line-color', value: '#c95d74' }, { layer: 'boundary_country_z5-', prop: 'line-color', value: '#c95d74' }, // Crisp and opaque: at 0.75 over fiord's blur the rose read as a faint mauve (#5b4659 against - // the reference #934f66, rega's side-by-side). + // the reference #934f66, measured side by side). { layer: 'boundary_country_z0-4', prop: 'line-opacity', value: 1 }, { layer: 'boundary_country_z5-', prop: 'line-opacity', value: 1 }, { layer: 'boundary_country_z0-4', prop: 'line-blur', value: 0 }, @@ -690,8 +690,8 @@ function paintKeylessNight(m) { // reload → pins/glow never wiped, no flash, instant toggle. watch(() => uiStore.theme, () => mapTheme.applyTheme(map.value)) -// Theme-aware data-pin outline (qa: 2026-05-06 user feedback — Joshua Project -// uses a thin near-black outline that's barely visible; reverse-engineered). +// Theme-aware data-pin outline (Joshua Project uses a thin near-black outline +// that's barely visible; reverse-engineered). // In dark mode the outline goes white so pins stay visible against dark // basemaps. Boot style is light-v11, so the initial circle-stroke-color // in addLanguageFamilyLayer is already 'rgba(0,0,0,0.45)' — this watcher @@ -1323,7 +1323,7 @@ async function onMapReady(normalizedPeopleGroups) { // On a DARK boot the theme-watcher (immediate:false) hasn't run — apply the dark // ring (white colour + THICK width) now, else black pins are left with the light // hairline on the night basemap. _applyPinStroke handles both themes + the prayer - // exception. (coder 2026-06-25 reload fix, extended to ring width.) + // exception, and sets the ring width as well as the colour. _applyPinStroke() // SHELVED: idle preloader caused slow startup — re-enable when pray-tools API is active // and only for groups that have confirmed valid image URLs @@ -1388,8 +1388,8 @@ onMounted(async () => { // ★ A PANE RELEASED WHILE ITS MAP IS STILL STARTING IS A CANCEL, NOT A FAILURE. This map is a heavy // gallery tab: switching away empties its slot. initializeMap then returns SILENTLY (useMapInstance's // liveness checks) and leaves map.value null, which this reported as "Map failed to initialize — - // check token and container": a console ERROR blaming the token for a tab switch (measured - // 2026-09-29, a phone in Arabic, switched away 150 and 500 ms in: 2 runs in 10; 0 when the map was + // check token and container": a console ERROR blaming the token for a tab switch (measured on + // a phone in Arabic, switched away 150 and 500 ms in: 2 runs in 10; 0 when the map was // left to start). Nobody is waiting for this map any more, so return quietly. A mounted pane that // really fails still logs. const released = () => !mapContainer.value || !mapContainer.value.isConnected From 087e852c4ee56503188fde198cd72eabebd676ed Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Thu, 1 Oct 2026 00:49:02 +0000 Subject: [PATCH 2/2] Prayer Progress: the basemap-label comment states its reason without a pointer Comments only. The pointer named a document that is not in the repository; the reason is already stated in the sentence before it. --- plugin-designs/doxa-simple-map/doxa-simple-map.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin-designs/doxa-simple-map/doxa-simple-map.vue b/plugin-designs/doxa-simple-map/doxa-simple-map.vue index 57867f88d..9cac98238 100644 --- a/plugin-designs/doxa-simple-map/doxa-simple-map.vue +++ b/plugin-designs/doxa-simple-map/doxa-simple-map.vue @@ -222,7 +222,7 @@ const { t, te, locale } = useI18n() // On Mapbox Standard / Streets styles, common label layers carry per-locale // name fields (name_ar, name_de, name_en, name_fr, …). Setting the text-field // expression to `['get', 'name_' + locale]` switches country/place/state names -// without reloading the style. See documentation/feedback.md → Section A. +// without reloading the style. const MAPBOX_LABEL_LAYERS = [ 'country-label', 'state-label',