fix(analytics): external-only metrics, person exclusions, ASC retries#1100
fix(analytics): external-only metrics, person exclusions, ASC retries#1100IgorGanapolsky merged 13 commits intodevelopfrom
Conversation
|
Merging to
After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here |
|
Important Installation incomplete: to start using Gemini Code Assist, please ask the organization owner(s) to visit the Gemini Code Assist Admin Console and sign the Terms of Services. |
| .onLongPressGesture { | ||
| proManager.unlockProForDebug() | ||
| } |
There was a problem hiding this comment.
Bug: A debug long-press gesture on the 'PRO' label that unlocks pro features is exposed in production builds, allowing users to bypass payment.
Severity: CRITICAL
Suggested Fix
Wrap the code that adds the long-press gesture recognizer and its handler in an #if DEBUG block. This ensures the debug functionality is only compiled into debug builds and is excluded from production builds.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: native-ios/RandomTimer/Sources/UI/Screens/TimerSetupScreen.swift#L53-L55
Potential issue: A long-press gesture on the 'PRO' label, intended for debugging,
unlocks pro features. This functionality was not wrapped in a conditional compilation
block like `#if DEBUG`. Consequently, this debug feature is included in production
builds, allowing any user to bypass payment and access pro features for free.
Did we get this right? 👍 / 👎 to inform future reviews.
native-android/app/src/main/java/com/iganapolsky/randomtimer/analytics/AnalyticsService.kt
Show resolved
Hide resolved
07f0174 to
95d76db
Compare
|
❌ CI Some checks failed
|
|
❌ CI Some checks failed
|
|
❌ CI Some checks failed
|
|
❌ CI Some checks failed
|
|
❌ CI Some checks failed
|
- Tag distribution_channel on iOS (TestFlight vs App Store) and Android (Play vs non-Play) - Mark TestFlight and non-Play installs internal; HogQL excludes listed distribution channels - Align LIVE_EVENTS_PREDICATE across store snapshot, north star, attribution, posthog dashboard - POSTHOG_EXECUTIVE_EXCLUDE_PERSON_IDS in executive snapshot + CI workflow secret wiring - Redact excluded person UUIDs from committed executive_metrics.json audience_sql - ASC API retries with longer timeout; marketing/data README for operators - Tests: Android install channel, iOS DistributionChannelResolver, executive redaction Made-with: Cursor
PR #1073 hid lock icons and disabled paywall taps before first timer completion. This broke the freemium UX — new users couldn't see what Pro offers. All Pro features now always show lock icons and tap to show paywall regardless of first timer state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Every Pro feature MUST show a lock icon to free users on fresh install. These tests will fail if anyone hides Pro locks behind any condition. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Made-with: Cursor
Made-with: Cursor
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…sumable UI Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
1d6a4e2 to
3bf4520
Compare
Made-with: Cursor
|
❌ CI Some checks failed
|
Made-with: Cursor
|
|
❌ CI Some checks failed
|
|
❌ CI Some checks failed
|



Summary
distribution_channel+ internal tagging (TestFlight, non-Play installs)distribution_channeldenylist in LIVE_EVENTS_PREDICATE / pragmatic dashboardsPOSTHOG_EXECUTIVE_EXCLUDE_PERSON_IDSin executive snapshot + CI workflow secret (set on repo)audience_sqlin committed JSON (UUIDs not stored in git)marketing/data/README.md; docsEvidence
Commit:
7989c6540onfix/ios-pro-unlock-longpressNote: Branch name reflects prior iOS work; this commit is analytics-focused.
Made with Cursor