Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
c87f74e
feat: add shared product analytics contract
richiemcilroy Jul 12, 2026
ca35887
feat: add first-party web analytics
richiemcilroy Jul 12, 2026
2e481d6
feat: add first-party desktop analytics
richiemcilroy Jul 12, 2026
a2b4a01
feat: add Tinybird analytics infrastructure
richiemcilroy Jul 12, 2026
9d7b695
fix: secure product analytics ingestion
richiemcilroy Jul 12, 2026
557abd1
fix: harden analytics deployment tooling
richiemcilroy Jul 12, 2026
5540c9e
fix: require trusted analytics origins
richiemcilroy Jul 12, 2026
ac73bd8
fix: mount Tinybird CLI config safely
richiemcilroy Jul 12, 2026
ce87b26
fix: require browser fetch metadata
richiemcilroy Jul 12, 2026
6355ec7
fix: give Tinybird resources unique names
richiemcilroy Jul 12, 2026
e08bc0a
fix: sign anonymous analytics requests
richiemcilroy Jul 12, 2026
f8820d9
fix: make analytics TTL compatible
richiemcilroy Jul 12, 2026
9fa6e12
fix: type analytics health parameters
richiemcilroy Jul 12, 2026
dc25da4
fix: align analytics health fixture
richiemcilroy Jul 12, 2026
552b9e0
fix: contain anonymous analytics ingestion
richiemcilroy Jul 12, 2026
fee7c3a
fix: parse Tinybird workspace identity
richiemcilroy Jul 12, 2026
8c94da0
Merge remote-tracking branch 'origin/main' into codex/first-party-ana…
richiemcilroy Jul 24, 2026
bd2039a
refactor: remove PostHog analytics
richiemcilroy Jul 24, 2026
bd28a25
fix: restore devtools effect import
richiemcilroy Jul 24, 2026
5aefe3d
Merge main into first-party analytics
richiemcilroy Jul 31, 2026
d986b6c
fix(mobile): align React Native with Expo
richiemcilroy Jul 31, 2026
28e2967
fix: parse Tinybird workspace table
richiemcilroy Jul 31, 2026
5e0dc42
fix: support scoped Tinybird deploy tokens
richiemcilroy Jul 31, 2026
1938917
fix: allow current Vercel preview analytics
richiemcilroy Jul 31, 2026
84b6b3b
fix: normalize Tinybird health query timestamps
richiemcilroy Jul 31, 2026
b445429
feat: enforce typed first-party analytics events
richiemcilroy Jul 31, 2026
f8a610f
feat: make critical analytics delivery durable
richiemcilroy Jul 31, 2026
e030c95
feat: add exact analytics decision views
richiemcilroy Jul 31, 2026
fc802e4
ci: prove analytics in isolated staging
richiemcilroy Jul 31, 2026
729f28c
fix: avoid nested Tinybird aggregate aliases
richiemcilroy Jul 31, 2026
c4a3b9c
fix: disambiguate traffic engagement aggregates
richiemcilroy Jul 31, 2026
094f838
fix: use supported Tinybird copy commands
richiemcilroy Jul 31, 2026
3852628
fix: prove exact analytics decisions
richiemcilroy Jul 31, 2026
4ff7e41
fix: reconcile authoritative analytics facts
richiemcilroy Jul 31, 2026
7d85e4f
fix: fail closed on analytics privacy boundaries
richiemcilroy Jul 31, 2026
1b257a0
fix: harden analytics collectors and outbox
richiemcilroy Jul 31, 2026
93e488f
fix: verify copied Tinybird endpoints locally
richiemcilroy Jul 31, 2026
d43593d
fix: bound browser analytics activity
richiemcilroy Jul 31, 2026
835a60d
fix: fail closed in analytics staging
richiemcilroy Jul 31, 2026
11c8261
fix: reject sensitive analytics payloads
richiemcilroy Jul 31, 2026
a6cb613
fix: use scoped Tinybird local tokens
richiemcilroy Jul 31, 2026
4fd055c
fix: reconcile Stripe analytics events
richiemcilroy Jul 31, 2026
b54c723
fix: verify bounded analytics helpers
richiemcilroy Jul 31, 2026
364c888
fix: authenticate Tinybird local token discovery
richiemcilroy Jul 31, 2026
5739a36
feat: harden analytics delivery and business facts
richiemcilroy Jul 31, 2026
89d3e7b
feat: materialize analytics decision views
richiemcilroy Jul 31, 2026
2715d98
ci: prove exact-sha analytics staging
richiemcilroy Jul 31, 2026
178e2f8
test: type analytics performance scheduler
richiemcilroy Jul 31, 2026
6b2a979
chore: format analytics recovery tests
richiemcilroy Jul 31, 2026
298f9d9
test: isolate Tinybird local fixtures
richiemcilroy Jul 31, 2026
42e7fef
fix: preserve analytics delivery recovery
richiemcilroy Jul 31, 2026
a1895a1
ci: retire legacy staging analytics resources
richiemcilroy Jul 31, 2026
56d0e8b
fix: keep analytics recovery durable
richiemcilroy Aug 1, 2026
0054d58
fix: evolve exact analytics aggregates safely
richiemcilroy Aug 1, 2026
0b74725
fix: close analytics recovery abuse gaps
richiemcilroy Aug 1, 2026
7b1f97a
test: bound Tinybird local copy threads
richiemcilroy Aug 1, 2026
ad881ea
fix: keep analytics keys in the OS keyring
richiemcilroy Aug 1, 2026
2f915b4
ci: install dependencies for staging assertions
richiemcilroy Aug 1, 2026
c5a464f
fix: migrate durable analytics outbox keys
richiemcilroy Aug 1, 2026
20ff135
ci: scope analytics staging operators
richiemcilroy Aug 1, 2026
e561dfb
fix: adopt concurrent analytics outbox keys
richiemcilroy Aug 1, 2026
47a75d6
fix: bound analytics privacy scans
richiemcilroy Aug 1, 2026
b02f04b
ci: discard failed staging before cleanup
richiemcilroy Aug 1, 2026
fc31804
ci: accept exact no-op Tinybird deployments
richiemcilroy Aug 1, 2026
da61fb7
ci: require explicit Tinybird no-op proof
richiemcilroy Aug 1, 2026
3437e9f
ci: run Tinybird copies with scoped API
richiemcilroy Aug 1, 2026
b3a5956
ci: target live Tinybird copies directly
richiemcilroy Aug 1, 2026
be8cdd3
fix: bind analytics limits to trusted networks
richiemcilroy Aug 1, 2026
59397b9
ci: poll Tinybird copies with staging deploy token
richiemcilroy Aug 1, 2026
32c9b38
ci: prove Tinybird copies from aggregate state
richiemcilroy Aug 1, 2026
b58f419
ci: preserve analytics candidate through cleanup
richiemcilroy Aug 1, 2026
ac90129
ci: clean partial analytics seeds
richiemcilroy Aug 1, 2026
4570483
ci: reconcile interrupted analytics runs
richiemcilroy Aug 1, 2026
c32fd9b
fix: inline analytics copy assertion parameter
richiemcilroy Aug 1, 2026
62e6dbf
ci: bind analytics staging lifecycle to deployment
richiemcilroy Aug 1, 2026
794a23f
ci: authorize candidate analytics copies
richiemcilroy Aug 1, 2026
600bbcd
feat: harden analytics contracts and business events
richiemcilroy Aug 1, 2026
1723c7e
fix: make analytics delivery and erasure durable
richiemcilroy Aug 1, 2026
d351872
feat: add exact Tinybird decision aggregates
richiemcilroy Aug 1, 2026
d2a45c6
ci: prove analytics against exact staging deployments
richiemcilroy Aug 1, 2026
8039996
ci: compile desktop analytics before staging
richiemcilroy Aug 1, 2026
26217fd
ci: prepare native deps for analytics Rust gate
richiemcilroy Aug 1, 2026
af3a0cb
feat: enforce typed analytics delivery contracts
richiemcilroy Aug 1, 2026
5b45cd1
feat: make analytics delivery and erasure durable
richiemcilroy Aug 1, 2026
d7d80a9
feat: harden analytics decision aggregates
richiemcilroy Aug 1, 2026
c6101c8
ci: prove analytics staging at the exact SHA
richiemcilroy Aug 1, 2026
409d18a
fix: use a valid analytics workflow path glob
richiemcilroy Aug 1, 2026
340e03e
fix: keep analytics workflow runtime portable
richiemcilroy Aug 1, 2026
c707ffc
fix: prevent Tinybird resource node collisions
richiemcilroy Aug 1, 2026
23e6ae9
fix: harden analytics event admission
richiemcilroy Aug 1, 2026
c3788de
fix: expose durable analytics health
richiemcilroy Aug 1, 2026
1dd669f
ci: harden Tinybird staging lifecycle
richiemcilroy Aug 1, 2026
a183e23
docs: tighten analytics rollout contract
richiemcilroy Aug 1, 2026
131b29b
fix: make Tinybird staging aggregates executable
richiemcilroy Aug 1, 2026
ea74b61
ci: authorize protected analytics previews
richiemcilroy Aug 1, 2026
9be8862
fix: attest branch-scoped analytics previews
richiemcilroy Aug 1, 2026
cde2ccc
fix: restrict staging analytics by preview host
richiemcilroy Aug 1, 2026
f357201
fix: trust scoped analytics preview marker
richiemcilroy Aug 1, 2026
f55226b
fix: accept Vercel deployment routing host
richiemcilroy Aug 1, 2026
d8c622c
fix: gate staging analytics by branch marker
richiemcilroy Aug 1, 2026
224c011
fix: sign staging analytics requests
richiemcilroy Aug 1, 2026
8838813
fix: bootstrap protected analytics preview
richiemcilroy Aug 1, 2026
217a95d
fix: route analytics staging subpaths
richiemcilroy Aug 1, 2026
c9e8b67
improve: report staging credential drift
richiemcilroy Aug 1, 2026
65a968e
fix: harden analytics staging recovery
richiemcilroy Aug 1, 2026
e560be9
fix: seed analytics after staging promotion
richiemcilroy Aug 1, 2026
7a2b9e2
fix: attest analytics copy jobs before erasure
richiemcilroy Aug 1, 2026
078f69e
fix: harden Tinybird staging token boundaries
richiemcilroy Aug 1, 2026
8001bc9
fix: mint scoped JWT for local analytics checks
richiemcilroy Aug 1, 2026
3c92e69
fix: isolate local analytics read token
richiemcilroy Aug 1, 2026
ebdb814
fix: scope Tinybird Local verification at build
richiemcilroy Aug 1, 2026
5389076
fix: retire superseded Tinybird staging deployments
richiemcilroy Aug 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
740 changes: 740 additions & 0 deletions .github/workflows/analytics.yml

Large diffs are not rendered by default.

8 changes: 0 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,6 @@ jobs:
echo "CAP_DESKTOP_SENTRY_URL=https://6a3b6a09e6ae976c2ad6fff710e88748@o4506859771527168.ingest.us.sentry.io/4508330917101568" >> .env
echo "NEXT_PUBLIC_WEB_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}" >> .env
echo 'NEXTAUTH_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}' >> .env
echo 'NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}' >> .env
echo 'NEXT_PUBLIC_POSTHOG_HOST=${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}' >> .env
echo 'VITE_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}' >> .env
echo 'VITE_POSTHOG_HOST=${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}' >> .env
echo 'VITE_SERVER_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}' >> .env

cat .env >> $GITHUB_ENV
Expand Down Expand Up @@ -222,10 +218,6 @@ jobs:
echo "CAP_DESKTOP_SENTRY_URL=https://6a3b6a09e6ae976c2ad6fff710e88748@o4506859771527168.ingest.us.sentry.io/4508330917101568" >> .env
echo "NEXT_PUBLIC_WEB_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}" >> .env
echo 'NEXTAUTH_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}' >> .env
echo 'NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}' >> .env
echo 'NEXT_PUBLIC_POSTHOG_HOST=${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}' >> .env
echo 'VITE_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}' >> .env
echo 'VITE_POSTHOG_HOST=${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}' >> .env
echo 'VITE_SERVER_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}' >> .env

- name: Copy .env to apps/desktop
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/desktop-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,6 @@ jobs:
echo "CAP_DESKTOP_SENTRY_URL=https://6a3b6a09e6ae976c2ad6fff710e88748@o4506859771527168.ingest.us.sentry.io/4508330917101568"
echo "NEXT_PUBLIC_WEB_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}"
echo 'NEXTAUTH_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}'
echo 'VITE_POSTHOG_KEY=${{ secrets.VITE_POSTHOG_KEY }}'
echo 'VITE_POSTHOG_HOST=${{ secrets.VITE_POSTHOG_HOST }}'
echo 'VITE_SERVER_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}'
echo 'RUST_TARGET_TRIPLE=${{ matrix.settings.target }}'
} >> .env
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ tauri.linux.conf.json
# Cursor
.cursor
.env*.local
scripts/analytics/tinybird/fixtures/product_events_v1.local.ndjson
scripts/analytics/tinybird/fixtures/local-dates.json
.docs/
.claude/
.claude/settings.local.json
Expand Down
Loading
Loading