From 9844f72eaf9937fb52be7c174128f2a7765fec73 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Sat, 26 Sep 2026 01:58:04 +0000 Subject: [PATCH] Wall of People Groups: nothing leaks onto the host page (no Font Awesome, no window.d3) The critic fact-check (CRITIC-9) found the Wall injecting Font Awesome 6.5.1 into the HOST page's (global .fa-* rules that can restyle a partner's own icons) and loading d3@7 (a floating range, no SRI) as window.d3, overwriting a host's own d3. - The card's heart / comment / share icons are now plain SVG paths in the card itself, not Font Awesome tags in three foreignObject/xhtml divs per card (~6,300 on the wall: lighter too). The dialog hearts are inline SVG; the source-picker info icons are a text glyph. No Font Awesome stylesheet is injected anywhere. - src/wallD3.js loads d3@7.9.0 exactly, with integrity + crossorigin, keeps it in the module (wallD3()) and puts the host's window.d3 back (or leaves none). - The heart used `self.$store`; `self` is the browser's window, so a prayer made in this session never lit it. It now reads this.$store. Headless proof: a stubbed-DOM test of the d3 loader, 6/6 (the host's d3 restored, none leaked, exact version + integrity + crossorigin, a failure rejects). The bundle builds and contains 0 Font Awesome references. needs eyes: the Wall: hearts, comments and share icons render on the cards; a card whose group has prayers shows a red heart; a host page with its own d3 or Font Awesome is unaffected. (cherry picked from commit 28575d60138de3e61cbae6b062aba8596593ea7c) --- .../src/components/PeopleGroupsWall.vue | 129 ++++++------------ .../src/components/PrayerDialog.vue | 4 +- .../src/components/SourceSelector.vue | 6 +- .../wall-of-people-groups/src/wallD3.js | 40 ++++++ .../wall-of-people-groups.vue | 26 +--- 5 files changed, 88 insertions(+), 117 deletions(-) create mode 100644 plugin-designs/wall-of-people-groups/src/wallD3.js diff --git a/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue b/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue index 2a4b39cce..a670835f3 100644 --- a/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue +++ b/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue @@ -34,6 +34,7 @@