From 56454a1c88abff87ce6053edf3b9eacf99bb5341 Mon Sep 17 00:00:00 2001 From: eldk Date: Sun, 26 Jul 2026 00:09:02 +0200 Subject: [PATCH 1/2] Apply Google-GeminiNotebook update --- .github/workflows/apply-gemini-notebook.yml | 52 +++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/apply-gemini-notebook.yml diff --git a/.github/workflows/apply-gemini-notebook.yml b/.github/workflows/apply-gemini-notebook.yml new file mode 100644 index 0000000..aed8923 --- /dev/null +++ b/.github/workflows/apply-gemini-notebook.yml @@ -0,0 +1,52 @@ +name: Apply Google GeminiNotebook update + +on: + push: + branches: + - agent/add-google-gemini-notebook + +permissions: + contents: write + +jobs: + apply-change: + runs-on: ubuntu-latest + steps: + - name: Check out branch + uses: actions/checkout@v4 + with: + ref: agent/add-google-gemini-notebook + + - name: Update AI bot detection and tests + run: | + python3 - <<'PY' + from pathlib import Path + + tracker = Path('MatomoTracker.php') + tracker_text = tracker.read_text() + tracker_old = """ 'Perplexity-User',\n 'Google-NotebookLM',\n""" + tracker_new = """ 'Perplexity-User',\n 'Google-GeminiNotebook',\n 'Google-NotebookLM',\n""" + if tracker_old not in tracker_text: + raise SystemExit('Expected MatomoTracker.php block not found') + tracker.write_text(tracker_text.replace(tracker_old, tracker_new, 1)) + + tests = Path('tests/Unit/MatomoTrackerTest.php') + tests_text = tests.read_text() + tests_old = """ ['Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)', true],\n ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36; Devin/1.0; +devin.ai', false],\n""" + tests_new = """ ['Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)', true],\n ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 (compatible; Google-GeminiNotebook; +https://developers.google.com/crawling/docs/crawlers-fetchers/google-gemininotebook)', true],\n ['Google-NotebookLM/1.0', true],\n ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36; Devin/1.0; +devin.ai', false],\n""" + if tests_old not in tests_text: + raise SystemExit('Expected MatomoTrackerTest.php block not found') + tests.write_text(tests_text.replace(tests_old, tests_new, 1)) + PY + + - name: Remove temporary workflow + run: rm .github/workflows/apply-gemini-notebook.yml + + - name: Commit updated files + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add MatomoTracker.php tests/Unit/MatomoTrackerTest.php .github/workflows/apply-gemini-notebook.yml + git diff --cached --check + git commit -m "Detect Google-GeminiNotebook user agent" + git push origin HEAD:agent/add-google-gemini-notebook From 2e05bca6f861d561896bc0ce61687f205f7ff4ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 25 Jul 2026 22:09:13 +0000 Subject: [PATCH 2/2] Detect Google-GeminiNotebook user agent --- .github/workflows/apply-gemini-notebook.yml | 52 --------------------- MatomoTracker.php | 1 + tests/Unit/MatomoTrackerTest.php | 2 + 3 files changed, 3 insertions(+), 52 deletions(-) delete mode 100644 .github/workflows/apply-gemini-notebook.yml diff --git a/.github/workflows/apply-gemini-notebook.yml b/.github/workflows/apply-gemini-notebook.yml deleted file mode 100644 index aed8923..0000000 --- a/.github/workflows/apply-gemini-notebook.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Apply Google GeminiNotebook update - -on: - push: - branches: - - agent/add-google-gemini-notebook - -permissions: - contents: write - -jobs: - apply-change: - runs-on: ubuntu-latest - steps: - - name: Check out branch - uses: actions/checkout@v4 - with: - ref: agent/add-google-gemini-notebook - - - name: Update AI bot detection and tests - run: | - python3 - <<'PY' - from pathlib import Path - - tracker = Path('MatomoTracker.php') - tracker_text = tracker.read_text() - tracker_old = """ 'Perplexity-User',\n 'Google-NotebookLM',\n""" - tracker_new = """ 'Perplexity-User',\n 'Google-GeminiNotebook',\n 'Google-NotebookLM',\n""" - if tracker_old not in tracker_text: - raise SystemExit('Expected MatomoTracker.php block not found') - tracker.write_text(tracker_text.replace(tracker_old, tracker_new, 1)) - - tests = Path('tests/Unit/MatomoTrackerTest.php') - tests_text = tests.read_text() - tests_old = """ ['Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)', true],\n ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36; Devin/1.0; +devin.ai', false],\n""" - tests_new = """ ['Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)', true],\n ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 (compatible; Google-GeminiNotebook; +https://developers.google.com/crawling/docs/crawlers-fetchers/google-gemininotebook)', true],\n ['Google-NotebookLM/1.0', true],\n ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36; Devin/1.0; +devin.ai', false],\n""" - if tests_old not in tests_text: - raise SystemExit('Expected MatomoTrackerTest.php block not found') - tests.write_text(tests_text.replace(tests_old, tests_new, 1)) - PY - - - name: Remove temporary workflow - run: rm .github/workflows/apply-gemini-notebook.yml - - - name: Commit updated files - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add MatomoTracker.php tests/Unit/MatomoTrackerTest.php .github/workflows/apply-gemini-notebook.yml - git diff --cached --check - git commit -m "Detect Google-GeminiNotebook user agent" - git push origin HEAD:agent/add-google-gemini-notebook diff --git a/MatomoTracker.php b/MatomoTracker.php index 26f5a28..f77dcbc 100644 --- a/MatomoTracker.php +++ b/MatomoTracker.php @@ -40,6 +40,7 @@ class MatomoTracker 'Gemini-Deep-Research', 'Claude-User', 'Perplexity-User', + 'Google-GeminiNotebook', 'Google-NotebookLM', ]; diff --git a/tests/Unit/MatomoTrackerTest.php b/tests/Unit/MatomoTrackerTest.php index 670fe19..de2057a 100644 --- a/tests/Unit/MatomoTrackerTest.php +++ b/tests/Unit/MatomoTrackerTest.php @@ -181,6 +181,8 @@ public static function getTestDataForIsUserAgentAIBot(): array ['Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Gemini-Deep-Research; +https://gemini.google/overview/deep-research/) Chrome/135.0.0.0 Safari/537.36', true], ['Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-User/1.0; +Claude-User@anthropic.com)', true], ['Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Perplexity-User/1.0; +https://perplexity.ai/perplexity-user)', true], + ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 (compatible; Google-GeminiNotebook; +https://developers.google.com/crawling/docs/crawlers-fetchers/google-gemininotebook)', true], + ['Google-NotebookLM/1.0', true], ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36; Devin/1.0; +devin.ai', false], ]; }