From b4256b4fbd54c203cd9b438b16a3fee2e635c655 Mon Sep 17 00:00:00 2001 From: KUSHALCODER123 Date: Sun, 10 May 2026 19:10:21 +0530 Subject: [PATCH 1/2] docs: add osalt.dev badge to README --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 42bc6ef81c92..2a9a574b0649 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,9 @@ Docs | Contributing

+ + Featured on osalt.dev +

[Plausible Analytics](https://plausible.io/) is an open source, privacy-first web analytics tool. Lightweight, cookie-free [alternative to Google Analytics](https://plausible.io/blog/remove-google-analytics). Available in managed cloud or self-hosted community edition. From 76469a3fe1e53344bc3bd23458f219434bc8f144 Mon Sep 17 00:00:00 2001 From: KUSHALCODER123 Date: Sun, 10 May 2026 19:31:43 +0530 Subject: [PATCH 2/2] Fix dashboard data inconsistency by propagating event:page filter to sessions --- lib/plausible/stats/query_optimizer.ex | 13 ++++++------- lib/plausible/stats/sql/where_builder.ex | 6 +++++- lib/plausible/stats/table_decider.ex | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/plausible/stats/query_optimizer.ex b/lib/plausible/stats/query_optimizer.ex index 27a9452c45eb..d4061b167126 100644 --- a/lib/plausible/stats/query_optimizer.ex +++ b/lib/plausible/stats/query_optimizer.ex @@ -159,6 +159,9 @@ defmodule Plausible.Stats.QueryOptimizer do Enum.find(query.dimensions, &Time.time_dimension?/1) end + + + defp build_split_query(:events, metrics, query) do { :events, @@ -178,13 +181,9 @@ defmodule Plausible.Stats.QueryOptimizer do end) filters = - if "event:page" in query.dimensions do - Filters.rename_dimensions_used_in_filter(query.filters, %{ - "event:page" => "visit:entry_page" - }) - else - query.filters - end + Filters.rename_dimensions_used_in_filter(query.filters, %{ + "event:page" => "visit:entry_page" + }) { :sessions, diff --git a/lib/plausible/stats/sql/where_builder.ex b/lib/plausible/stats/sql/where_builder.ex index 18353d34cba0..bf855c5aefc5 100644 --- a/lib/plausible/stats/sql/where_builder.ex +++ b/lib/plausible/stats/sql/where_builder.ex @@ -200,8 +200,12 @@ defmodule Plausible.Stats.SQL.WhereBuilder do filter_field(db_field_name(key), filter) end + defp add_filter(:sessions, query, [op, "event:page" | rest] = _filter) do + add_filter(:sessions, query, [op, "visit:entry_page" | rest]) + end + defp add_filter(:sessions, _query, [_, "event:" <> _ | _rest]) do - # Cannot apply sessions filters directly on session query where clause. + # Cannot apply other event filters directly on session query where clause. true end diff --git a/lib/plausible/stats/table_decider.ex b/lib/plausible/stats/table_decider.ex index dcce1d8f5cae..102b78aedd46 100644 --- a/lib/plausible/stats/table_decider.ex +++ b/lib/plausible/stats/table_decider.ex @@ -51,7 +51,7 @@ defmodule Plausible.Stats.TableDecider do conflicting_event_metrics = event_only_metrics -- @revenue_metrics cond do - # event:page is a special case handled in QueryOptimizer.split_sessions_query + # event:page is a special case handled in QueryOptimizer.build_split_query event_only_dimensions == ["event:page"] -> :ok