From 02ba97ac3182b537df8e0e5a85dc4ff435065aac Mon Sep 17 00:00:00 2001 From: appdevelopsk Date: Sat, 7 Nov 2026 18:25:49 +0900 Subject: [PATCH 1/6] fix(analytics): include quick-games Play clicks in unified download funnel --- guides/quick-games/index.html | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/guides/quick-games/index.html b/guides/quick-games/index.html index f2158b5..6af3fd8 100644 --- a/guides/quick-games/index.html +++ b/guides/quick-games/index.html @@ -45,7 +45,17 @@

Quick mobile games for a short break

Already know what you want? Search all published apps or explore daily habits.

- + + From 5e41745069aba95d7587ed791933d0db2bcd5376 Mon Sep 17 00:00:00 2001 From: appdevelopsk Date: Sat, 7 Nov 2026 18:26:04 +0900 Subject: [PATCH 4/6] fix(analytics): include ai-tools Play clicks in unified download funnel --- guides/ai-tools/index.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/guides/ai-tools/index.html b/guides/ai-tools/index.html index 8c9d81d..24785f7 100644 --- a/guides/ai-tools/index.html +++ b/guides/ai-tools/index.html @@ -81,8 +81,14 @@

Apps to explore

Links open Google Play. Features, pricing and availability may change by region and app version. The page does not claim any download or ranking performance.
From 1bae4d735b90dc44d48dcc02736bc6da35d9e37a Mon Sep 17 00:00:00 2001 From: appdevelopsk Date: Sat, 7 Nov 2026 18:26:36 +0900 Subject: [PATCH 5/6] test(analytics): execute four guide store handlers in Node VM --- scripts/test_guide_store_events.cjs | 66 +++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 scripts/test_guide_store_events.cjs diff --git a/scripts/test_guide_store_events.cjs b/scripts/test_guide_store_events.cjs new file mode 100644 index 0000000..2c68a19 --- /dev/null +++ b/scripts/test_guide_store_events.cjs @@ -0,0 +1,66 @@ +'use strict'; +// Run from repository checkout: node --test scripts/test_guide_store_events.cjs +const test = require('node:test'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); +const vm = require('node:vm'); + +const GUIDES = { + 'quick-games': 'a.store', + 'daily-habits': 'a.store', + 'decision-helpers': 'a.play', + 'ai-tools': 'a.play', +}; + +function exercise(guide, withGtag = true) { + const html = fs.readFileSync( + path.join(__dirname, '..', 'guides', guide, 'index.html'), 'utf8' + ); + const scripts = [...html.matchAll(/