Skip to content

Experiment: Enable analytics by default with clear opt-out - #570

Merged
parsakhaz merged 4 commits into
mainfrom
analytics-opt-out-default
Aug 31, 2026
Merged

Experiment: Enable analytics by default with clear opt-out#570
parsakhaz merged 4 commits into
mainfrom
analytics-opt-out-default

Conversation

@parsakhaz

@parsakhaz parsakhaz commented Aug 31, 2026

Copy link
Copy Markdown
Member

Analytics-default experiment

Summary

  • enable product analytics by default for new and previously undecided installs
  • preserve every explicit legacy choice: opted-out users stay out and opted-in users stay in
  • remove the blocking first-run consent modal without replacing it with another startup interruption
  • disclose the default-on behavior directly in Privacy Settings beside the visible opt-out toggle, and stop SDK capture plus discard queued usage immediately after opt-out
  • document the default-on model, event ordering, identity requirements, and choice-preservation invariant

Regression investigation

The reported inability to opt in is not reproducible on the current head. Before this change, AnalyticsConsentDialog.tsx still rendered an enabled Enable analytics button wired to handleAccept, and the focused Playwright flow clicked it and observed analytics_opted_in. Git history shows the dialog action itself had not been removed by the latest UI changes.

The fragile part was the startup architecture: undecided users could opt in only through a mandatory modal, while onboarding, welcome, support, and resume flows were gated on that modal closing. A suppressed, obscured, or failed modal therefore left no first-run path to opt in. This change removes that blocking dependency entirely.

Measurement

90-day baseline supplied for this experiment:

  • 3,247 consent_dialog_shown
  • 565 analytics_opted_in
  • 1,858 analytics_opted_out
  • approximately 17% opted in

Event mapping:

  • consent_dialog_shown -> analytics_settings_disclosure_viewed
  • implicit default-on choice -> analytics_default_enabled
  • explicit Settings choices remain analytics_opted_in / analytics_opted_out

All new experiment markers include experiment: analytics_default_on. Parsa will annotate PostHog when this ships. As the opted-in floor approaches true usage, measured usage is expected to trend up approximately 5-6x; this PR does not claim that increase as product growth.

Data protection

This deliberately changes product analytics from opt-in to default-on. The tradeoff is documented rather than hidden: telemetry begins enabled for new/undecided installs, and Privacy Settings states that default clearly beside the opt-out toggle. It also discloses that usage may be associated with locally available GitHub or Git account details such as a username or email. The repository contains no legal or privacy statement requiring boot-time disclosure, so the experiment avoids a dedicated first-run interruption. Pane continues to exclude prompts, code, and file paths. Explicit prior opt-outs are never flipped, and after a new opt-out Pane sends only the choice marker directly, opts the SDK out, and discards queued usage.

Verification

  • pnpm lint (passes; five pre-existing non-blocking ESLint warnings in main/src/services/skillCacheManager.ts)
  • pnpm typecheck
  • pnpm --filter main test -- configManager.test.ts (91 files passed, 893 tests passed, 2 skipped; Vitest's command selected the full main suite)
  • pnpm test -- tests/analytics-consent.spec.ts (2 passed)
  • pnpm build (electron-builder --publish never; notarization disabled)
  • pnpm --filter frontend build (rerun after removing the startup notice)

Workflow lane: light, with an implementation review and a focused E2E verification pass.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 31, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-31T20:53:17.745125Z 42cf0b7 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 56f7e7b.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 42cf0b7f84

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread frontend/src/components/AnalyticsNotice.tsx Outdated
Comment thread frontend/src/App.tsx Outdated
Replace the blocking opt-in dialog with a disclosed default-on experiment for new and undecided installs while preserving every explicit existing choice.
@parsakhaz parsakhaz changed the title [Experiment: analytics-default] Default telemetry on with opt-out Experiment: Enable analytics by default with clear opt-out Aug 31, 2026
@parsakhaz
parsakhaz force-pushed the analytics-opt-out-default branch from 254cfea to fd112b3 Compare August 31, 2026 21:53
Comment thread frontend/src/App.tsx
Comment thread frontend/src/App.tsx
Comment thread frontend/src/App.tsx
Comment thread frontend/src/App.tsx
@parsakhaz
parsakhaz merged commit 3b2de86 into main Aug 31, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant