From 755ccab2a1d171647e9351f05cd86d5ce6d42a13 Mon Sep 17 00:00:00 2001 From: Sanne de Vries Date: Fri, 3 Apr 2026 09:44:31 +0200 Subject: [PATCH 1/3] Fix top pages comparison tooltip missing date labels - The `/pages` endpoint was using `Map.merge` on a `Jason.OrderedObject`, which silently drops any merged keys during JSON encoding. Convert to a plain map first so date range labels are included in the response. --- lib/plausible_web/controllers/api/stats_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/plausible_web/controllers/api/stats_controller.ex b/lib/plausible_web/controllers/api/stats_controller.ex index de7b72b5ea1d..68b8e22d6de6 100644 --- a/lib/plausible_web/controllers/api/stats_controller.ex +++ b/lib/plausible_web/controllers/api/stats_controller.ex @@ -723,7 +723,7 @@ defmodule PlausibleWeb.Api.StatsController do else json(conn, %{ results: pages, - meta: Map.merge(meta, Stats.Breakdown.formatted_date_ranges(query)), + meta: Map.new(meta.values) |> Map.merge(Stats.Breakdown.formatted_date_ranges(query)), skip_imported_reason: meta[:imports_skip_reason] }) end From 28db1d3907878e78a6dee5878fccac898dadeb47 Mon Sep 17 00:00:00 2001 From: Sanne de Vries Date: Fri, 3 Apr 2026 09:51:37 +0200 Subject: [PATCH 2/3] Add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9938709b34d8..49269ef0e8f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ All notable changes to this project will be documented in this file. - Fixed Stats API timeseries returning time buckets falling outside the queried range - Fixed issue with all non-interactive events being counted as interactive - Fixed countries map countries staying highlighted on Chrome +- Fixed comparison tooltip in the top pages report missing date labels ## v3.2.0 - 2026-01-16 From 3e937f2e9f7bf6f483dc20e8846110f6a8ea82d7 Mon Sep 17 00:00:00 2001 From: Sanne de Vries Date: Mon, 6 Apr 2026 11:33:12 +0200 Subject: [PATCH 3/3] Add meta assertions to pages controller tests --- .../controllers/api/stats_controller/pages_test.exs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/plausible_web/controllers/api/stats_controller/pages_test.exs b/test/plausible_web/controllers/api/stats_controller/pages_test.exs index 748d378c3fc5..5220a1b93915 100644 --- a/test/plausible_web/controllers/api/stats_controller/pages_test.exs +++ b/test/plausible_web/controllers/api/stats_controller/pages_test.exs @@ -657,6 +657,8 @@ defmodule PlausibleWeb.Api.StatsController.PagesTest do "percentage" => 100.0 } ] + + assert json_response(conn, 200)["meta"] == %{"date_range_label" => "1 Jan 2021"} end test "returns top pages with :not_member filter on custom pageview props including (none) value", @@ -2212,6 +2214,11 @@ defmodule PlausibleWeb.Api.StatsController.PagesTest do } } ] + + assert json_response(conn, 200)["meta"] == %{ + "date_range_label" => "2 Jan 2021", + "comparison_date_range_label" => "1 Jan 2021" + } end on_ee do