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
+
+
+
[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