From 28d8b126902a20ae87275db7c364cd2a710d0bf3 Mon Sep 17 00:00:00 2001 From: appdevelopsk Date: Sat, 7 Nov 2026 00:43:59 +0900 Subject: [PATCH 1/2] feat(analytics): attribute allowlisted editorial-guide visits to catalog results --- apps.html | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps.html b/apps.html index aaf7512..ecc4486 100644 --- a/apps.html +++ b/apps.html @@ -1500,7 +1500,14 @@

Chaos - Stranger Missions

app_slug: app, source: 'apps_catalog' }); })); - render(); + const initialResults = render(); + // Track editorial-guide arrivals separately from manual category choices. + // Only the allowlisted category and count are sent; no search terms. + if (goal !== 'all') { + fire('catalog_filter_landing', { + goal, results: initialResults, source: 'editorial_guide' + }); + } })(); From f96eed6b56090f57878e4ff4227d874ed0e9509b Mon Sep 17 00:00:00 2001 From: appdevelopsk Date: Sat, 7 Nov 2026 00:44:18 +0900 Subject: [PATCH 2/2] test(analytics): keep guide arrival measurement separate and privacy safe --- scripts/test_guide_catalog_links.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/test_guide_catalog_links.py b/scripts/test_guide_catalog_links.py index d0a7e63..77d6531 100644 --- a/scripts/test_guide_catalog_links.py +++ b/scripts/test_guide_catalog_links.py @@ -34,6 +34,14 @@ def test_catalog_filter_buttons_cover_guides(self): with self.subTest(goal=goal): self.assertIn(f'data-goal="{goal}"', catalog) + def test_guide_landing_has_separate_privacy_safe_event(self): + catalog = (ROOT / "apps.html").read_text(encoding="utf-8") + self.assertIn("const initialResults = render();", catalog) + self.assertIn("if (goal !== 'all')", catalog) + self.assertIn("fire('catalog_filter_landing'", catalog) + self.assertIn("goal, results: initialResults, source: 'editorial_guide'", catalog) + self.assertNotIn("query: input.value", catalog) + def test_catalog_cards_and_details_preserved(self): catalog = (ROOT / "apps.html").read_text(encoding="utf-8") self.assertEqual(len(re.findall(r'class="app-card"', catalog)), 92)