Changes per week, oldest to newest, last 2 weeks.
2026-W42300 changes
- Show update progress below the version status
- Add minute, hour and day views to the visitor chart
- Default base URL to Supermetry Cloud
- Default host to Supermetry Cloud
- Default host to Supermetry Cloud
- Default to Supermetry Cloud when no host is set
- Enable hourly charts for 30 days
- Restore hourly chart on short ranges
- Show update history below the update card
- Include recent update jobs in the update status
- Show update steps, an estimate and the offline warning
- Check free disk space during preflight
- Back up before stopping and poll health faster
- Keep the new version directory enterable by the service
- Drop version typing from the update confirmation
- Allow update jobs without a manifest digest
- Stage Node SDK releases for approval
- Publish Node SDK from local archive
- Check for updates on demand
- Offer an existing .env as the install configuration
- Show source, countries and cities on each tracking pixel page
- Keep country, city and GitHub-or-other source for pixel views
- Count image-proxy hits on the tracking pixel
- Tracking pixels as a list with a dedicated page for each
- Tracking pixel CRUD and per-tag stats
- Managed tracking pixels, counted only for registered tags
- Harden Node package artifacts
- Copyable badges on the tracking pixel tab
- Serve a total or stats badge at the email pixel's ID
- In-memory site totals for the tracking pixel badge
- Dedicated stats page for each tracking pixel campaign tag
- Select a campaign tag to see only its pixel stats
- Filter tracking pixel stats by campaign tag
- Period cards and day/week/month grouping on the tracking pixel tab
- Period summary in the tracking pixel stats API
- Pixel period cards, range and day/week/month grouping
- Period summary in the project stats API
- Stats badge with total, today and a 30-day sparkline
- Do not count dashboard badge previews
- Refresh pixels periodically and validate badge labels
- Keep all-time badge totals across retention and restarts
- Stop idle proxy keys from sharing one rate bucket
- Bound cold total loads and keep persisted totals
- Allow editing pixel projects without hosts
- Keep pixel views for forever-retention projects
- Include project kind in account sites
- Serve open counter badges, stats page and cleanup
- Count proxied badge views per GitHub key
- Add open counter tables and configuration
- Hide web-only navigation for pixel projects
- Add pixel project dashboard with snippets and badges
- Ask what to measure when creating a project
- Add radio group component
- Purge pixel views past project retention
- Serve pixel images and management API
- Render view-count badges with optional branding
- Add in-memory pixel registry and total cache
- Add pixel store and buffered view recorder
- Count image-proxy views with a dedicated limiter
- Carry project kind through store, registry and create API
- Add project kind, pixels and daily pixel views
- Send top_bot_rules as [] when a site has no bot hits
- Suggest the public URL from the listen address
- Detect Raspberry Pi architectures
- Recognize Raspberry Pi artifacts
- Recover ambiguous dispatches
- Sign update artifacts and images
- Support Windows free-space checks
- Run the privileged updater helper
- Require backup verification tools
- Verify Docker schema health
- Apply and monitor admin updates
- Wait for Docker readiness
- Enable managed deployment controls
- Reconcile helper progress
- Query helper job status
- Provision the privileged updater
- Apply pinned Docker releases
- Apply verified binary releases
- Add authenticated apply endpoint
- Expose durable job state
- Classify verified rollback outcomes
- Add narrow helper socket client
- Add crash-safe helper protocol and state
- Fetch and validate release artifacts
- Verify signed release manifests
- Create verified database archives
- Create idempotent admin jobs
- Add durable update jobs
- Add system update status page
- Show available updates in the header
- Query admin update status
- Localize system update status
- Expose admin update status
- Check official release availability
- Persist Docker data at the runtime path
- Build the versioned deployment image
- Count the last 30 minutes from pageviews and events, not engagement beacons
- Build site links from the slug and edit it in site settings
- Return the site slug and accept it on site update
- Load, derive and change the site slug
- Give every site a unique per-organization slug
- Open the last visited site by default after sign in
- Default the after-sign-in page to the last visited site
- Overview no longer fails for time zone names the database does not know
- Retention reads recordings as playback does, so a damaged tail no longer fails the job
- Stop printing the live-count explanation on the Realtime page
- Allow the base URL hostname and extra hosts in the Vite host check
- Forward the client Host to Vite, listen on loopback, tighten the dev CSP
- Serve the UI through the Go server on :8787 by proxying Vite
- Stop redirect loops for proxied paths and harden the dev redirect
- Redirect :8787 pages to the Vite UI, print a banner, check for bun
- Offer Bengali in the picker and accept it on the server
- Add the Bengali catalogues
- Fail when Vite cannot bind, detect renames, anchor proxy paths
- Serve the UI through Vite and proxy Go paths
- Make dev restarts the server on Go changes
- Ignore re-selecting the current language in the header menu
- Add a language menu to the app header
- Retry a failed palette load only on the next open and keep commands while it closes
- Contain palette chunk load failures, retry on next open, ignore Ctrl/Cmd K over the help dialog
- Open the command palette from the header and Ctrl/Cmd K
- Filter the command palette on visible text only and keep focus with the caller after a command runs
- Add the command palette on cmdk 1.1.1
- Make palette links carry the same search as the sidebar links
- Derive command palette entries from the sidebar's own gating
- Support Ctrl/Cmd chords in useShortcuts
- Keep one main landmark and PageHeader on onboarding, no-org and landing screens
- Render account, admin and every /app route inside one app shell
- Add the account sidebar for pages outside an organization
- Give the pending cross-breakdown skeleton a status role
- Let the sticky inspector clear the filter row's measured height
- Keep dashboard main at one tree position and measure the container before first paint
- Add Inspect to Where countries and Weekly rhythm cells
- Add Inspect to breakdown rows, separate from the filter click
- Push when the inspector opens and replace when it closes so Back never reopens it
- Render the dashboard as main panel plus inspector driven by the inspect param
- Add the inspector body built from existing stats and breakdown queries
- Fall back to the sheet when the container cannot fit main plus the inspector, and cover the breakpoints
- Add DashboardPanels with a resizable side inspector and sheet fallbacks
- Add inspector width storage and the shadcn resizable primitive
- Add a validated inspect search param to the dashboard route
- Move dashboard filters into one sticky row and Export into the header actions
- List every keyboard shortcut in the help dialog
- Keep the collapsed sidebar rail scrollable and its switcher icon in bounds
- Start the sidebar on the icon rail at tablet widths
- Extract AppHeader as the single 44px sticky bar and drop project tabs
- Move settings and account from the header into the sidebar
- Resolve site crumbs by any site alias, tighten breadcrumb a11y and migrate remaining h1s to PageHeader
- Show breadcrumbs in the app header
- Link the site settings crumb to its default tab
- Derive breadcrumbs from the route
- Adopt PageHeader and PageContainer on the dashboard
- Add PageContainer and PageHeader frame primitives
- Fall back to SUPERMETRY_ROUTE_HITS when the config leaves it empty
- Add a design-token package that generates dashboard, site and chart outputs
- Translate the new auth error messages into Spanish and German
- One ApiProblem error model with specific auth and setup messages
- Listen on :8787 by default and keep one bad event from stalling ingest
- Restyle the dashboard shell, charts, stat cards, toolbar and auth screens
- Add framework, server and mobile SDKs
- Log the cause of unexpected private API failures
- Keep the API reference endpoint column compact at wide widths
- Contain the API reference navigation, add endpoint search and deep links
- Stop the hidden links table from stretching the page, readable scrollable diagram on phones
- Bound journey anchor path length and correct the journey contract text
- Journey carries path ids and counts visitors on integer keys
- Readable flow nodes without overlap, localized labels
- Add journey page messages in en, es and de
- Run the API benchmark against closed days with a fixed clock
- Add a step that closes loaded days before benchmarking
- Thin x-axis labels on narrow charts
- Make the phone replay overlay full-screen so the player uses the available width
- Explain an empty visitors-per-minute chart and give the Live now card more room
- Crop Antarctica from the world map and keep country actions pinned above the safe area
- Make horizontally scrollable tables and snippets keyboard focusable
- Readable active nav links, admin table overflow, status role on loading placeholders
- Darken muted text and destructive tokens in light theme for contrast
- Add Spanish and German translations for the ui catalogues
- Add the ui catalogue for dashboard cards and account pages
- Translate the full report button in Spanish and German
- Read sidebar labels when rendering so they follow the active language
- Add the Spanish dashboard editor catalogue
- Add the Spanish catalogue
- Add the German dashboard editor catalogue
- Add the German catalogue
- Open the full report from breakdown cards, lazy-loaded
- Add the searchable, sortable full report dialog with column choice and CSV/JSON export
- Add strings for the full report dialog
- Add paged JSON export helper and share the stats query body builder
- Wire Spanish and German catalogues with a parity test
- Add an interface language picker to the profile page
- Follow the active language in number, date and relative-time formatting and the calendar week
- Load the active language before the first render and register message catalogues
- Add a typed catalogue overlay, message formatting, pseudo-locale and Intl helpers
- Store an interface language preference
- Reset widget size and id when the kind changes in the add dialog, keep slot titles readable
- Read ZIP entries in name order so duplicate handling is deterministic
- Open the dashboard editor from the dashboard route
- Add the dashboard editor components with live preview
- Add dashboard editor mutations, conflict mapping and strings
- Add the dashboard editor layout model with limits, packing and templates
- Add Mixpanel and Amplitude providers to the imports page
- Accept Mixpanel and Amplitude uploads for import and preview
- Parse Mixpanel and Amplitude event exports
- Show Search Console CTR as a percentage
- Add the viewer and switcher to the site dashboard
- Render each widget kind with the existing cards
- Add saved dashboard list hook and layout helpers
- Add the site settings integrations route and tab
- Add integrations page and Search Console report components
- Add integrations API hooks and strings
- Add a GA4 provider with file preview and undo to the imports page
- Redirect the OAuth callback to the dashboard settings route
- Percent-encode the colon in Search Console property paths
- Add OAuth, disconnect, backfill and top-queries API with spec
- Add GA4 import source and a dry-run preview endpoint
- Serialize per-site writes with a two-key advisory lock
- Add provider interface, service, scheduler jobs and Search Console provider
- Add connection, oauth state and search console tables
- Add a GA4 CSV importer with row errors, dedupe and preview
- Scope every dashboard operation to the site in the path
- Serve dashboard management endpoints
- Validate layouts and store saved dashboards
- Define the dashboard layout model and endpoints in the contract
- Add the dashboards table
- Add the Cohorts page with a condition builder and power users
- Save, rename, duplicate and delete cohorts
- Evaluate cohorts on demand and rank power users
- Add the cohort and power user contract
- Add links and pixels pages with QR codes and statistics
- Serve short links, pixel and link management endpoints
- Add links.manage action for editors and above
- Tabbed install recipes with copy buttons and a verify-installation check
- Let the app shell content column shrink so wide content scrolls inside its own box
- Generate install recipes for browser frameworks and server code
- Add short link and tracking pixel storage, redirect and pixel handlers
- Add breakdown, attribution and customers to the revenue page
- Add revenue report strings
- Add revenue report and customers query hooks
- Serve the revenue endpoints from the query engine
- Load orders, touches and customers for the revenue report
- Aggregate revenue by dimension with first and last click attribution
- Define the revenue report and customers endpoints
- Route /app/admin for instance admins and link it from the account menu
- Add admin users, organizations, sites, settings and security pages
- Add instance admin API hooks and strings
- Enable profiles on new projects and document the defaults
- Default tracking mode to identified and drop the upgrade guard
- Add the instance admin API, audited mutations and two-factor enforcement
- Add admin schema with reserved organization slugs and two-factor policy state
- Add notification history and template editor
- Record delivery history and render per-channel templates
- Build responsive triage views
- Add triage client state
- Add filtered replay listing and saves
- Persist user saved recordings
- Build responsive traffic overview
- Add sites overview aggregates
- Persist dashboard preferences
- Record the innermost matched route for nested routers
- Add per-route API performance harness
- Show FCP and TTFB on the vitals page, with tests
- Collect FCP and TTFB in the vitals module
- Store, validate, query and expose FCP and TTFB
- Redirect legacy onboarding path
- Strengthen analytics hierarchy
- Polish responsive analytics controls
- Document installer flags and examples
- Add safe planning and compatibility checks
- Renumber the last-event migration to avoid a duplicate version
- Show live tracker health
- Expose current install status
- Update last-event state per batch
- Add compact last-event projection
- Add API route inventory generator
- Record matched routes during tests
- Clone migrated template databases
- Tune production chunk boundaries
- Defer below-fold dashboard content and start the main chart early
- Lazy-load heavy site routes
- Split auth and organisation route modules
- Add share composer and public report
- Expose configured share queries
- Enforce locked share scope
- Add persisted share configuration
- Fill modal and page player layouts
- Resize recordings with the player stage
- Add viewport contain-fit geometry
- Add live accuracy observation
- Explain live visitor counting
- Document the live visitor contract
- Count exact accepted-event visitors
- Improve dashboard accessibility and layout
- Make sessions responsive
- Split optional features into modules and cover navigation in a real browser
- Harden security headers and cookies per route class
- Close five verified UI and security defects from the live audit
- Add geography and weekly rhythm cards, remove the map page
- Add traffic grid and country details
2026-W41405 changes
- Add weekday-hour traffic breakdown
- Add interactive installer command
- Add cross-platform release installers
- Support Windows disk space checks
- Lower minimum password length to six
- Bound the restart query from the oldest live session
- Show the MaxMind credit as a short link like the DB-IP one
- Credit the geolocation provider that is in use in the footer
- Report the active geolocation provider in the public config
- Send the Origin header on the soak benchmark's private requests
- Compare each metric the way its product defines it
- Make the A/B traffic and queries match what a real tracker would send
- Poll one cheap query per product while waiting for ingestion to settle
- Treat Plausible Community Edition's missing revenue metric as a known difference
- Do not count a single-page-app navigation to the current page as a pageview
- Let a second scenario continue the visitor numbering of the first
- Add three-way accuracy comparison
- Make the A/B stack bring-up work against the real products
- Add Supermetry soak benchmark
- Add accuracy A/B volume sender
- Add browser-driven accuracy A/B fixture
- Add accuracy A/B stack lifecycle
- Add accuracy truth model
- Add deterministic accuracy scenarios
- Hint at the bundled-db profile when the postgres host is not found
- Use SUPERMETRY_DATABASE_URL when set, else the bundled PostgreSQL with separate credentials
- Build the database URL from separate host, user and password settings
- Warn when the bundled PostgreSQL falls back to the default password
- Default the bundled PostgreSQL user, password and database to supermetry
- Create the bundled PostgreSQL role and database from SUPERMETRY_DATABASE_URL
- Serve when no command is given and add --help
- Read settings from the repository root .env in Compose
- Make plain docker compose up use SUPERMETRY_DATABASE_URL
- Choose a bundled or external PostgreSQL with a Compose profile
- Add a Delete stored traffic card to tracking settings
- Request and list data purges for a site
- Delete stored traffic by date range, source and country
- Add instance admins and limits on organizations per user and sites per organization
- Restorable deletion for sites and organizations, with notice emails and org rename (#6)
- Send signed-in users away from the login and signup pages (#3)
- Harden operator-facing request controls
- Add expiring share links
- Harden password changes and TOTP verification
- Forward POST /api/private/orgs to the platform handler
- Show per-site dropped traffic
- Protect shared dimension dictionary capacity
- Add opt-in site traffic protections
- Add an Add organization option to the switcher and a page to create one
- Add POST /api/private/orgs so a signed-in user can create an organization
- Show the brand name beside the logo and merge project and organization switching into one dropdown
- Make the restore dump check work with pg_restore 18
- Allow a single address up to a tenth of the process ceiling
- Bind property keys and cap filter complexity
- Keep one session row per session and shorten the reservation lock
- Isolate per-site day closing and refresh closed days after profile erasure
- Correct overlap and local-day aggregation
- Lock partition creation per schema so parallel test packages do not queue
- Isolate collection rate limits
- Correct deployment defaults and readiness checks
- Hand PostgreSQL a time zone name it knows for hourly charts and retention
- Store real paths on an identified instance regardless of site profiles
- Resolve the site start day in Go so unknown database time zone aliases cannot stop the close job
- Route range gaps and catch up missed closes
- Prevent ingest data loss for attribution and metadata
- Bound dimension dictionary cardinality
- Serve the logo and favicons as files
- Bound and collect CSS blobs
- Restore clean-checkout gate
- Fail closed on full-only options
- Validate dumps before restore cleanup
- Serve full script for hash routing
- Rename key labels to supermetry/... and add migrate-labels
- Configure replay S3 storage with a single SUPERMETRY_REPLAY_S3_URL
- Correct funnel, goal and filter metrics
- Security batch 2
- Durable, restart-safe profile deletion
- Collection reliability, part 1
- Bind 2FA confirmation to the validated secret and allow long import uploads
- Server timeouts and browser security headers
- Revoke access to deleted organizations
- Two-factor setup, disable and recovery-code screens
- Secure the two-factor lifecycle
- Store pending 2FA enrollment and the last used TOTP step
- Read replay day as a date so the blob key check ignores the database time zone
- Read replay day as a date so the blob key check ignores the database time zone
- Render percentile trend chart
- Add daily percentile trends
- Honor funnel match modes
- Add sign out other devices action
- Expose bulk session revocation
- Revoke other user sessions
- Configure Telegram notification channels
- Deliver notifications through Telegram
- Store Telegram channel configuration securely
- Place realtime before replays
- Derive restore compatibility from embedded migrations
- Preserve journeys across closed storage
- Expose Web Vitals diagnostic breakdowns
- Reserve writer capacity before session mutation
- Make replay erasure retryable
- Hide enabled replay recording banner
- Separate replay history visibility from recording status
- Keep anonymous dashboards within supported query scope
- Gate analytics navigation by instance privacy policy
- Include instance tracking policy in site bootstrap
- Preserve account device labels alongside browser metadata
- Show account sign-in details and local session activity
- Capture account metadata and distinguish session polling
- Add nullable account session sign-in metadata
- Reject saturated event intake before enrichment
- Expose non-reserving event capacity preflight
- Distinguish unavailable goal revenue from zero
- Match revenue rows to site-scoped event goals
- Wire tracking rollout checks and document enforcement boundaries
- Expose effective privacy settings and constrained replay controls
- Restrict identity history and enforce project privacy ceilings
- Enforce independent replay permission and tracker consent
- Enforce identity policy at intake and queued persistence
- Parse tracking mode and define anonymous payload sanitization
- Add inert tracking and privacy policy primitives
- Remove duplicate sidebar account identity
- Add account menus and coordinated session logout
- Hide billing controls in the open-source interface
- Scope account sessions independently of organizations
- Route issued invitation links to the application
- Establish organization authorization foundation
- Return an empty rollup breakdown when no closed block covers the range
- Count profile and replay results
- Count session and event results
- Define paginated result totals
- Paginate events and profiles
- Paginate sessions and replays
- Add shared list pager
- Open list replays from URL state
- Add session replay overlay
- Expose replay session IDs in event timelines
- Invalidate cached results on import and isolate shared query cancellation
- Cache closed-range results
- Set-based Web Vitals filters
- Set-based hot-tier aggregation and timezone-independent date ranges
- Serve browser, OS and device icons as static files
- Add visitor details to replays and events
- Show visitor details in dashboard tables
- Live visitor badge on every site page and 30-minute count on realtime
- Realtime summary endpoint for the live badge
- Size the replay player to its card
- Play replays even when a stylesheet cannot be fetched
- Open the replay player instead of staying on the replay list
- Send replay session IDs as strings so the browser keeps all 64 bits
- Accept chunks across client-side navigations and after dropped chunks
- Send events to the Panel host the per-site script was loaded from
- Explain that session replay needs the per-site tracker snippet
- Show the replay switch as read-only status and skip locked fields on save
- Make PANEL_REPLAY_ENABLED the only replay switch
- Send empty URL pattern lists as arrays and tolerate null in the settings form
- Align the Replays sidebar item and place it after Sessions
- Rehydrate player styles with generated client
- Erase profile-linked session recordings
- Wire storage lifecycle jobs
- Mount stylesheet upload routes
- Restrict replay settings changes to site owners and admins
- Share one blob store across replay services and dedupe merged declarations
- Show rollup backfill progress and document automatic upgrades
- Run rollup backfill from serve and report progress in data health
- Backfill closed-day rollups when the rollup layout changes
- Add rollup_state table for rollup layout and backfill progress
- Allow jobs to run once at startup
- Wire retention and erasure hooks
- Guard recording on low disk space
- Enforce retention and storage quotas
- Send has_replay as a boolean query parameter
- Wire dashboard blob storage
- Add dashboard replay endpoints
- Expose replay availability in analytics
- Rehydrate deduplicated stylesheets
- Deduplicate snapshot stylesheets
- Add deduplicated CSS upload handler
- Wire replay upload services
- Add bounded replay upload handlers
- Load replay settings into registries
- Add deterministic session sampling
- Wire dashboard routes and replay links
- Add replay list and lazy player
- Add replay settings interfaces
- Add dashboard API boundary
- Add resumable blob migration
- Add S3 blob storage and spill files
- Add batching replay index writer
- Add disk blob store and tolerant gzip reader
- Add replay_sessions index table with monthly partitions
- Embed and serve replay script
- Load session replay recording
- Add browser recording bundle
- Run the minute rollup job and read stored minutes in realtime
- Keep stored minutes whose raw events have expired during catch-up
- Dictionary-encode raw utm_source in bulk loader
- Exclude untagged utm_medium and utm_campaign from breakdowns
- Version, screen size, language and hostname breakdowns
- Renumber the visitors_per_minute migration to 0023
- Pass the minute source to the realtime handlers
- Roll closed minutes up from raw events with catch-up
- Merge stored closed minutes into the visitors-per-minute chart
- Add visitors_per_minute table
- Browser and OS version, screen size, language and hostname dimensions
- Resolve effective replay settings
- Parse replay site settings
- Add replay instance settings migration
- Parse replay environment settings
- Store browser and OS versions, screen size, language and hostname
- Channels tab and channel filter
- Channel grouping derived from source and medium
- Scroll-depth goals in the goal editor
- Scroll-depth goals and server-side goal evaluation
- Add UTM Source tab and export raw utm_source in CSV
- Protect /metrics with a bearer token or loopback-only access
- Query utm_source from the raw tag instead of the blended source
- Carry raw utm_source through sessions, writer, closer and rehydrate
- Add utm_source_id columns to events, sessions and closed tables
- Count privacy-signal drops separately from 503 drops
- Drop engagement and Web Vitals pings that arrive after the session ended
- Let background pings join a live session without starting one
- Time on page and exit rate columns
- Recompute-rollups command for new rollup counters
- Count exits for page-filter queries without a page dimension
- Exit rate and time on page
- Privacy signal toggle and opt-out install docs
- Respect_privacy_signals setting and heatmap snippet attribute
- Drop events carrying GPC or DNT when the site respects them
- Visitor opt-out and opt-in heatmap capture
- Account profile page with a danger zone
- Expose account self-service routes
- Add account self-service to the auth service
- Add email change tokens and soft-deleted users
- Make public signup invite-only by default
- Count spike visitors from the in-memory session store and wire integrity checks at startup
- Reject duplicate files, replace atomically, fail interrupted imports
- Suppress erased identities at intake and flush
- Add profile tombstones and import file hashes
- Tracker settings and country block rules
- Docker image, release build and installer, Apache-2.0 license
- Per-site generated script
- World map view for the countries card
- Tracking settings and blocked countries
- 28-day, 91-day and 6-month periods
- Panel backup and restore
- Create scoped, site-limited and expiring API keys from the dashboard
- Add checkbox and select components
- Tracker settings type for the per-site script
- Link organization settings from the sidebar
- Add the API key scope picker
- Publish the API key management contract
- Expose public API key management
- Enforce delegated API key boundaries
- Add the sessions page with a timeline drawer
- Regenerate the API client for sessions
- Bounded session exploration queries
- Session list and timeline endpoints
- Keep session start and profile in the closed tier
- Add the generated TypeScript client package
- Expose the reference in organization settings
- Add the interactive API reference page
- Build the OpenAPI reference model
- Events explorer page
- Add-filter picker with value suggestions
- Events, properties and suggestions endpoints
- Scoped public writes for annotations and segments
- Raw event, property and suggestion queries
- Document event exploration and scoped write endpoints
- Harden favicon discovery
- Manual-mode engagement, same-URL dedupe, consent queue and relative URLs
- Form submit and class-tagged events
- Reject favicon responses larger than the size limit
- Consent mode with an in-memory queue
- Hash routing, manual pageviews and a beforeSend hook
- Build the full script from marked blocks
- Show and refresh site icons
- Tracker wrapper for npm
- Discover and refresh site favicons
- Forward GET /me/ip so "Add my current IP" works
- Show what each feature needs on the installation page
- Choose between the full and core tracker on the installation page
- Label the realtime counter as live in the last 5 minutes
- Add visitors_last_30m to the realtime response
- Count live visitors over the last 5 minutes
- Send heatmap clicks directly instead of patching JSON.stringify
- Stop treating the WhatsApp in-app browser as a crawler
- Show annotation markers on the dashboard chart and MCP setup guide
- Add MCP endpoint for analytics tools
- Add chart annotations table and CRUD API
- Add journeys and retention report pages
- Add journey and within-day retention report endpoints
- Add notifications and alerts settings tabs
- Expose alert and notification channel endpoints
- Add alert rules, notification channels and evaluator
- Add the dashboard CSV export menu
- Full stats API with date ranges, metrics, filters, comparison and streamed CSV export
- Apply, save, rename and delete segments from the filter bar
- Add saved segment endpoints
- Add segments table and shared filter validation
- Show revenue on goals and send revenue from the tracker
- Add total and average revenue metrics and revenue goals
- Accept and store revenue on custom events
- Replace full database walk with constant-cost check at startup
- Add region and city tabs and drop the invalid referrer tab
- Add region and city dimensions and filters
- Store region and city for events and sessions
- Add the Exclusions settings tab
- Store and validate exclusion rules, add current-IP endpoint
- Drop events from excluded IP ranges and paths per site
- Offer the full tracker and custom click help in the install guide
- Add full tracker with outbound, download, 404 and attribute click tracking
- Log country and bot-drop reason in the diagnostics
- Stop treating VPN, proxy and hosting networks as bots
- Optional address-resolution diagnostics and a startup log line
- Show country flag and name in the countries breakdown
- Persistent SPA application shell with dark auth screens
- Use the nearest public address from X-Forwarded-For
- Trust IPv4 proxies on dual-stack listeners
- Add automatic MaxMind database updates
- Serve the real tracking snippet and copy it on plain http
- Add dashboard site management
- Add configurable public signup
- Add embedded browser tracker
- Normalize traffic source attribution
- Always mark cookies Secure on https deployments
- Mark cookies Secure only over HTTPS
- Read .env automatically
- Stabilize real-binary dashboard end-to-end tests
- Serve the embedded dashboard for non-API paths
- Add platform user flows
- Wire application services
- Add first-site onboarding
- Add shared dashboard view
- Add settings and health routes
- Add secure settings controls
- Add goal management page
- Add realtime analytics page
- Add funnel builder and results
- Add panel load for bulk NDJSON ingestion
- Keep an empty site restriction from granting all sites
- Add accessible dashboard trend chart
- Add dashboard stats strip
- Wire dashboard breakdown filters
- Add dashboard breakdown cards
- Publish platform resource contracts
- Add authorized application routes
- Avoid replaying in-flight batches on shutdown
- Add authenticated dashboard shell
- Give the API the site registry for org-scoped access
- Expose serve lifecycle with golden verification
- Assemble panel runtime services
- Resolve platform request credentials
- Add dashboard state controls
- Add analytics query hooks
- Add dashboard URL state
- Implement invitation lifecycle
- Add invitation persistence
- Carry the owning organization into the site registry
- Cache goal and funnel definitions
- Add site management and registry
- Send reports only to members who still have access
- Embed and serve dashboard assets
- Scaffold dashboard SPA and API client
- Send scheduled analytics summaries
- Persist email subscriptions
- Add shared dashboard access
- Persist shared dashboard links
- Scope site access to the caller's organization
- Add API key lifecycle
- Add API key persistence
- Implement platform authentication flows
- Add platform user and session persistence
- Add authenticated analytics HTTP API
- Add transactional membership management
- Define authorization policy
- Add ordered funnels and route equivalence coverage
- Add exact tiered query planning
- Add mail and transaction foundations
- Add cryptographic primitives
- Add platform schema and configuration
- Expire partitions and erase sites
- Close site days into analytics tiers
- Add closer rollup aggregation primitives
- Scope the migration lock to the target schema
- Add validated event intake
- Add trusted proxy networks
- Cache closed-range query results
- Validate and guard analytics queries
- Add bounded PostgreSQL batch persistence
- Restore durable open sessions
- Expose operational metrics
- Report five-minute active sessions
- Add generated analytics API contract
- Add metric definitions and formulas
- Add advisory-locked job runner
- Add the sharded in-memory store
- Define the live session store contract
- Add JSON-backed site registry
- Add client enrichment and bot filtering
- Add cached integer dictionaries
- Add random daily visitor salts
- Add closed-tier and rollup schema
- Partition hot tier by retention class
- Add PostgreSQL migration foundation
- Add repository skeleton, config, and CI