Measure cloud adoption, sync health and sharing, anonymously

Desktop 5.0 brings people to cloud, and what they do there decides what to
fix and, later, what a team plan is worth. ProductMetrics sends a handful
of anonymous events through AnalyticsService (off when analytics is off),
every property a fixed word or a bucket:

- cloud_sign_in / cloud_sign_up: method and outcome
- move_to_cloud: strategy or folder, size bucket, outcome
- local_library (desktop, at start) and cloud_library (desktop, once a
  session): library size buckets
- sync_conflict_shown / sync_conflict_resolved: how many, the reason code,
  the choice made
- sync_failed: changes the server refused for good, by reason code
- offline_session: how long, how it ended, changes waiting
- share_link_created / share_joined / share_membership: role and target
- live_visit: most other people present at once, and how long

Server reasons pass only as fixed codes; anything that looks like a message
is sent as "other".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e2425fca62Dara Adedeji committed on 10/20/2026, 2:47:46 AMparent11517c1

Checks

All checks passed
11 files changedLine totals unavailable