Skip to content

Prepare for Matomo 6 - #639

Open
sgiehl wants to merge 13 commits into
6.x-devfrom
prepare6x
Open

Prepare for Matomo 6#639
sgiehl wants to merge 13 commits into
6.x-devfrom
prepare6x

Conversation

@sgiehl

@sgiehl sgiehl commented Aug 11, 2026

Copy link
Copy Markdown
Member

Description

Matomo 6 compatibility for GoogleAnalyticsImporter. One change would have been a fatal error, not a deprecation: the Monolog 3 processor signature.

What changed

  • Metadata — version 5.2.16.0.0, require.matomo >=6.0.0-b1,<7.0.0-b1, composer.json PHP >=7.2.5>=8.1.0, changelog entry.
  • CImatomo6_* aliases, MySQL 8.0 / MariaDB 10.6 matrix, UI job Node 16 → 24. phpstan.yml/phpcs.yml already ran at or above 8.1 and are unchanged.
  • PHPStanphpVersion80100; github-action-tests marked (?). Under PHPStan 2 an excludePaths entry matching nothing aborts the whole analysis, so this check was not actually running before.
  • Vue under Vite — 22 TypeScript errors, now zero (unexported interfaces, a bare Array prop making every row unknown, valueless href).
  • @color-orange-brand was dropped from Morpheus; replaced with its literal #f57c00. A missing Less variable breaks stylesheet merging outright.
  • UI test — added a wait for real page content; the suite previously captured before the page had height.

Worth a look — Monolog 3

LogToSingleFileProcessor::__invoke() took array $record and mutated it. Monolog 3 passes an immutable LogRecord, so this would have been a fatal error rather than a deprecation warning. Rewritten to core's own shape (cf. Monolog/Processor/SprintfProcessor), using $record->with(message: …).

⚠️ Separately: 6.x-dev is 2 non-test commits behind 5.x-dev (dependency security advisories, a translation). Needs a backport — not part of this PR.

All commits are [ignore_release]: compatibility only.

Checklist

  • [✔] Tested locally or on demo2/demo3?
  • [NA] New test case added/updated?
  • [NA] Are all newly added texts included via translation?
  • [NA] Are text sanitized properly? (Eg use of v-text v/s v-html for vue)
  • [✔] Version bumped?
  • [✔] I have understood, reviewed, and tested all AI outputs before use
  • [✔] All AI instructions respect security, IP, and privacy rules
  • [NA] Documentation updated?

@sgiehl
sgiehl requested a review from a team August 11, 2026 17:26
sgiehl and others added 2 commits August 12, 2026 08:23
Adapting the processor to Monolog 3 introduced a use of Monolog\LogRecord,
which this test asserts the full list of.
Six screenshots differ only by the Matomo 6 accent colour, synced from
the CI artifacts of run 31569840370. The two GA4 import screenshots are
deliberately not synced: on Matomo 6 the import form fails with a
missing propertyId, which needs fixing first.
snake14 and others added 6 commits August 13, 2026 19:59
Vue's v-model does not receive jQuery's synthetic .val().change(), so on
Matomo 6 the form submitted with an empty propertyId and no import was
ever scheduled; the later spec steps failed on the missing import row.
Programmatically set values do not reach the Vue model even with native
input/change events dispatched, while trusted typed input does (same
pattern as the FormAnalytics specs).
The multituple scope select's option values still use the string:
prefixed keys, and the radio needs waiting for before Vue mounts it.
…hots

There has been no importer selection radio since GA3 was removed — the
jQuery empty-set click just masked it, which is also why load_ga4 always
equalled load. The six lifecycle screenshots are synced from the first
run where the import flow actually executes on Matomo 6, each verified
to show the correct import state.
Update the UI expected screenshots and specs for Matomo 6
…ignore_release]

Submitting the form navigates, and .pageWrap is present before anything is
rendered into it, so the capture was an empty 21px strip.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants