diff --git a/lang/en.json b/lang/en.json index ad60dd48cea..967bc7b1327 100644 --- a/lang/en.json +++ b/lang/en.json @@ -2,6 +2,7 @@ "General": { "12HourClock": "12-hour clock", "24HourClock": "24-hour clock", + "AIAssistants": "AI Assistants", "API": "API", "AbandonedCarts": "Abandoned Carts", "AboutPiwikX": "About Matomo %s", diff --git a/plugins/AIAgents/Categories/AIAgentsOverviewSubcategory.php b/plugins/AIAgents/Categories/AIAgentsOverviewSubcategory.php new file mode 100644 index 00000000000..1d2114cc1cc --- /dev/null +++ b/plugins/AIAgents/Categories/AIAgentsOverviewSubcategory.php @@ -0,0 +1,30 @@ +%1$s

', + Piwik::translate('AIAgents_AIAgentsOverviewSubcategoryDescription') + ); + } +} diff --git a/plugins/AIAgents/Categories/AIAssistantsOverviewSubcategory.php b/plugins/AIAgents/Categories/AIAssistantsOverviewSubcategory.php deleted file mode 100644 index 682defe12e7..00000000000 --- a/plugins/AIAgents/Categories/AIAssistantsOverviewSubcategory.php +++ /dev/null @@ -1,32 +0,0 @@ -%1$s

%2$s

%3$s

', - Piwik::translate('AIAgents_AIAssistantsOverviewHelp1'), - Piwik::translate('AIAgents_AIAssistantsOverviewHelp2'), - Piwik::translate('AIAgents_AIAssistantsOverviewHelp3') - ); - } -} diff --git a/plugins/AIAgents/Reports/Get.php b/plugins/AIAgents/Reports/Get.php index 73a912d751b..145de78685e 100644 --- a/plugins/AIAgents/Reports/Get.php +++ b/plugins/AIAgents/Reports/Get.php @@ -31,8 +31,8 @@ protected function init() parent::init(); $this->name = Piwik::translate('AIAgents_AIAgentVisits'); - $this->categoryId = 'AIAgents_AIAssistants'; - $this->subcategoryId = 'General_Overview'; + $this->categoryId = 'General_AIAssistants'; + $this->subcategoryId = 'AIAgents_AIAgentsOverview'; $this->order = 10; $this->processedMetrics = [ diff --git a/plugins/AIAgents/lang/en.json b/plugins/AIAgents/lang/en.json index ce1b56ab425..1acac348aa8 100644 --- a/plugins/AIAgents/lang/en.json +++ b/plugins/AIAgents/lang/en.json @@ -1,9 +1,10 @@ { "AIAgents": { "AIAgentName": "AI Agent Name", + "AIAgentsOverview": "AI Agents Overview", "AIAgentVisits": "AI Agent Visits", "AIAgentVisitsDocumentation": "This is an overview of AI Agent visits. AI agent traffic only includes visits where an AI opens your site in a real browser and behaves like a human visitor. It does not include background requests from ChatGPT or other AI tools that fetch your pages without using a browser.", - "AIAssistants": "AI Assistants", + "AIAgentsOverviewSubcategoryDescription": "Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.", "AIAssistantsOverviewHelp1": "The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.", "AIAssistantsOverviewHelp2": "It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.", "AIAssistantsOverviewHelp3": "Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.", diff --git a/plugins/AIAgents/tests/UI/AIAgents_spec.js b/plugins/AIAgents/tests/UI/AIAgents_spec.js index 86b466b4184..6aa3437b14f 100644 --- a/plugins/AIAgents/tests/UI/AIAgents_spec.js +++ b/plugins/AIAgents/tests/UI/AIAgents_spec.js @@ -10,7 +10,7 @@ describe('AIAgents', function () { this.fixture = 'Piwik\\Plugins\\AIAgents\\tests\\Fixtures\\AIAgents'; - const url = '?module=CoreHome&action=index&category=AIAgents_AIAssistants&subcategory=General_Overview&idSite=1&period=day&date=2025-07-20'; + const url = '?module=CoreHome&action=index&category=General_AIAssistants&subcategory=AIAgents_AIAgentsOverview&idSite=1&period=day&date=2025-07-20'; it('should display the AI agents overview', async function () { await page.goto(url); diff --git a/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png b/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png index 6ccc58670e8..0ef57c5da9c 100644 Binary files a/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png and b/plugins/AIAgents/tests/UI/expected-ui-screenshots/AIAgents_menu.png differ diff --git a/plugins/AIAgents/Categories/AIAssistantsCategory.php b/plugins/CoreHome/Categories/AIAssistantsCategory.php similarity index 78% rename from plugins/AIAgents/Categories/AIAssistantsCategory.php rename to plugins/CoreHome/Categories/AIAssistantsCategory.php index 72789aae04e..5b64fccf728 100644 --- a/plugins/AIAgents/Categories/AIAssistantsCategory.php +++ b/plugins/CoreHome/Categories/AIAssistantsCategory.php @@ -9,13 +9,13 @@ declare(strict_types=1); -namespace Piwik\Plugins\AIAgents\Categories; +namespace Piwik\Plugins\CoreHome\Categories; use Piwik\Category\Category; class AIAssistantsCategory extends Category { - protected $id = 'AIAgents_AIAssistants'; + protected $id = 'General_AIAssistants'; protected $order = 80; protected $icon = 'icon-admin-platform'; } diff --git a/tests/PHPUnit/Integration/Category/CategoryListTest.php b/tests/PHPUnit/Integration/Category/CategoryListTest.php index 248d22a613d..01ad72b041d 100644 --- a/tests/PHPUnit/Integration/Category/CategoryListTest.php +++ b/tests/PHPUnit/Integration/Category/CategoryListTest.php @@ -35,6 +35,7 @@ public function testGetAllCategoriesWithSubcategoriesShouldFindCategories() $list = CategoryList::get(); $this->assertSame(array( + 'General_AIAssistants', 'General_Actions', 'General_KpiMetric', 'General_Visitors', @@ -55,7 +56,6 @@ public function testGetAllCategoriesWithSubcategoriesShouldFindCategories() 'ProfessionalServices_PromoHeatmaps', 'ProfessionalServices_PromoMediaAnalytics', 'ProfessionalServices_PromoSessionRecording', - 'AIAgents_AIAssistants', 'ExampleUI_UiFramework', 'CustomVariables_CustomVariables', ), array_keys($list->getCategories())); diff --git a/tests/PHPUnit/Integration/WidgetsListTest.php b/tests/PHPUnit/Integration/WidgetsListTest.php index e46ffa40b69..f937643f24d 100644 --- a/tests/PHPUnit/Integration/WidgetsListTest.php +++ b/tests/PHPUnit/Integration/WidgetsListTest.php @@ -52,7 +52,7 @@ public function testGet() 'Referrers_Referrers' => 11, 'About Matomo' => 11, 'Marketplace_Marketplace' => 3, - 'AIAgents_AIAssistants' => 2, + 'General_AIAssistants' => 2, // widgets provided by Professional Services plugin for plugin promos 'ProfessionalServices_PromoAbTesting' => 1, diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml index c596128c45b..e9a271b382b 100644 --- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml +++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml @@ -3546,7 +3546,7 @@ AI Assistants - Overview + AI Agents Overview AI Agent Visits AIAgents get diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml index 368430b7169..1c02b485649 100644 --- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml +++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml @@ -1,5 +1,56 @@ + + General_AIAssistants.AIAgents_AIAgentsOverview + + General_AIAssistants + AI Assistants + 80 + icon-admin-platform + + + + + AIAgents_AIAgentsOverview + AI Agents Overview + 10 + <p>Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.</p> + + + + AI Agents Over Time + AIAgents + getEvolutionGraph + 1 + + 1 + graphEvolution + AIAgents + getEvolutionGraph + + widgetAIAgentsgetEvolutionGraphforceView1viewDataTablegraphEvolution + 0 + graphEvolution + 1 + + + AI Agent Overview + AIAgents + get + 2 + + 1 + sparklines + AIAgents + get + + widgetAIAgentsgetforceView1viewDataTablesparklines + 0 + sparklines + 1 + + + General_Actions.VisitorInterest_Engagement @@ -6713,57 +6764,6 @@ - - AIAgents_AIAssistants.General_Overview - - AIAgents_AIAssistants - AI Assistants - 80 - icon-admin-platform - - - - - General_Overview - Overview - 10 - <p>The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.</p><p>It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.</p><p>Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.</p> - - - - AI Agents Over Time - AIAgents - getEvolutionGraph - 1 - - 1 - graphEvolution - AIAgents - getEvolutionGraph - - widgetAIAgentsgetEvolutionGraphforceView1viewDataTablegraphEvolution - 0 - graphEvolution - 1 - - - AI Agent Overview - AIAgents - get - 2 - - 1 - sparklines - AIAgents - get - - widgetAIAgentsgetforceView1viewDataTablesparklines - 0 - sparklines - 1 - - - ExampleUI_UiFramework.ExampleUI_GetTemperaturesDataTable diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml index 3b4a0bbf891..2fd3456b920 100644 --- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml +++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml @@ -3651,7 +3651,7 @@ AI Agents Over Time - AIAgents_AIAssistants + General_AIAssistants AI Assistants 80 icon-admin-platform @@ -3659,10 +3659,10 @@ - General_Overview - Overview + AIAgents_AIAgentsOverview + AI Agents Overview 10 - <p>The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.</p><p>It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.</p><p>Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.</p> + <p>Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.</p> AIAgents getEvolutionGraph @@ -3681,7 +3681,7 @@ AI Agent Overview - AIAgents_AIAssistants + General_AIAssistants AI Assistants 80 icon-admin-platform @@ -3689,10 +3689,10 @@ - General_Overview - Overview + AIAgents_AIAgentsOverview + AI Agents Overview 10 - <p>The AI Assistant Overview page provide insights into website traffic originating from AI Assistants such as ChatGPT and other large language model–based assistants. These reports track key metrics including the number of requests made by these bots, the pages and documents they access, and any errors encountered. They also offer detailed breakdowns showing which bots visit specific page URLs, helping you understand how AI assistants interact with your content and identify opportunities to improve visibility and accessibility for AI-driven users.</p><p>It’s important to note that none of these pages were actually viewed by humans in the traditional way — all requests originate from AI assistants fetching content automatically.</p><p>Currently, these reports exclusively include requests from AI bots that do not execute JavaScript. They do not include traffic from AI crawlers used for training AI models or from AI agents capable of executing JavaScript.</p> + <p>Review how AI agents and human visitors engage with your site at a glance. This overview surfaces combined metrics and trends so you can quickly spot changes before exploring detailed reports.</p> AIAgents get diff --git a/tests/UI/expected-screenshots/QuickAccess_search_1.png b/tests/UI/expected-screenshots/QuickAccess_search_1.png index d849c15de72..0291b784027 100644 --- a/tests/UI/expected-screenshots/QuickAccess_search_1.png +++ b/tests/UI/expected-screenshots/QuickAccess_search_1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b966d5020a61e51a76f2094111e404ee2cfd0b562ef195d204b5f1ea6bff4dfc -size 96879 +oid sha256:77b991f7a35b16ded1329a70e3fa23cd628fd645e09f7b5917b518a920fc5d40 +size 97591 diff --git a/tests/UI/expected-screenshots/QuickAccess_search_2.png b/tests/UI/expected-screenshots/QuickAccess_search_2.png index 76ca638567f..b28006afd68 100644 --- a/tests/UI/expected-screenshots/QuickAccess_search_2.png +++ b/tests/UI/expected-screenshots/QuickAccess_search_2.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b455fce95e8019d85d7d352fdfcfd98d9e7048a4f7d1c4d8e114e62660d928f6 -size 18495 +oid sha256:3ce4aa38db7ceb808b715ced83babee0730f8ede4bd763dbd6210c4760860b2b +size 19242 diff --git a/tests/UI/expected-screenshots/QuickAccess_search_sites.png b/tests/UI/expected-screenshots/QuickAccess_search_sites.png index 4f3f54b1295..28a12316c2b 100644 --- a/tests/UI/expected-screenshots/QuickAccess_search_sites.png +++ b/tests/UI/expected-screenshots/QuickAccess_search_sites.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3b109bc1403da25515df7bff6cabdb71d114efb6345473d09697f3ede383431c -size 46366 +oid sha256:5476a5327898026334999ca2a4a6bdcb8def7a48a062d7accc6c7e7c52686c19 +size 47079