New features
Dashboard
- Timeline annotations: pin notes on the overview chart, pick hour and minute, any emoji as icon (#1164, #1173, #1168)
- Saved segments: named, reusable filter sets in the Filter popover (#1165, #1166)
- Date selector overhaul: two-pane picker with typed dates/times, ten-preset rail with hotkeys, and a choice of comparison window (previous period, matching weekdays, same period last year) (#1148, #1151, #1152, #1167)
- Past-minutes navigation; period chart axes no longer end a bucket early (#1130)
- Optimistic dashboard edits, no waiting on save
- Identify User dialog: add, edit, remove user traits
- Dashboard embed: revoke the private embed link
- Frog avatars replace boring-avatars (#1127, #1128, #1138)
- Organizations table shows subscription source with icons
Bot detection
- Detection runs for every site even with blocking off; catches paced distributed crawlers (#1123)
- Site flood detection with per-site traffic baselines refreshed every 15 min
- Bots dashboard names the bot and splits AI crawlers from AI agents (#1147)
- New viewport and screen-dimension signals; single Bot Signal contract module (#1116)
API and auth
- Organization API usage endpoint and Usage cards; clearer rate-limit feedback
- Better Auth 1.7.3 with OAuth provider support
Fixes
- Goals honor page filters and first non-empty UTM attribution (#1177)
- list_sites 401 for org-owned API keys (#1172)
- Previous-period line aligned on week/month buckets (#1169)
- Sub-second event ordering preserved (#1144)
- Untitled pages included in pages table (#1143)
- Event names filtered at row level (#1096)
- Custom UTM traffic without referrer falls back to Referral, not Unknown (#1102)
- Replay click labels resolved per snapshot (#1146)
- Site access cache invalidated after creation (#1142)
- CARTO basemap replaced with OpenFreeMap (#1145)
- Long URLs no longer hide the timestamp (#1100)
- Empty region input in geo lookup; whitespace/non-finite strings preserved in query results
- GSC and PDF export ranges correct in past-minutes mode
- .well-known forwarded to backend in custom Nginx config (#1107)
Performance
- Cut mutation-driven parts-lock contention on the ClickHouse ingest path (#1131)