Skip to content

Prepare for Matomo 6 - #465

Merged
sgiehl merged 15 commits into
6.x-devfrom
prepare6x
Aug 10, 2026
Merged

Prepare for Matomo 6#465
sgiehl merged 15 commits into
6.x-devfrom
prepare6x

Conversation

@sgiehl

@sgiehl sgiehl commented Aug 9, 2026

Copy link
Copy Markdown
Member

Description

Prepares LoginLdap for Matomo 6.

This branch existed before 6.x-dev did, so it has been restacked: 6.x-dev was created in parity with 5.x-dev, and the eight existing preparation commits were rebased onto it. The branch now carries the 28 5.x-dev commits it previously missed — including the password hash logic change (#AS-649), synchronising LDAP users by the resolved Matomo login (#AS-633) and the password-confirmation default (#PG-5346).

On top of the restack:

  • plugin.json6.0.0, requiring >=6.0.0-b1,<7.0.0-b1. The -b1 lower bound matters: a plain >=6.0.0 sorts above 6.0.0-b1 and would disable the plugin against a beta core.
  • Test workflow — the PHP matrix, the UI/JS jobs and the upload-artifacts condition now use the matomo6_min_php / matomo6_max_php aliases instead of pinned literals, so they track core rather than drifting. The generator comment in the header was updated to match.
  • phpstan.neonphpVersion raised to 80100, and the excludePaths pruned. PHPStan 2 (bundled with Matomo 6) fails hard on an excludePaths entry that matches nothing, so on the previous config it refused to run at all. The absent vendor/ entry was dropped and github-action-tests/ marked optional with (?) — it does not exist in the repo but checkout_matomo.sh creates it during a CI run.
  • CHANGELOG.md — a 6.0.0 entry, following the undated shape this repository used for the 5.0.0 major-preparation entry.
  • PHPUnit 9assertRegExp()assertMatchesRegularExpression().
  • Ldap\Client::$connectionResource — docblock corrected to \LDAP\Connection|false|null. PHP 8.1 changed ldap_connect() from returning a resource to an LDAP\Connection object; the stale @var resource produced nine false PHPStan errors once phpVersion was raised.
  • vue/dist — rebuilt from the restacked sources, so the minified bundle matches the merged vue/src.

Notes for review

  • The Vue build reports no TypeScript errors, and the code-compatibility sweep against the Matomo 6 breaking-changes catalogue found nothing beyond the PHPUnit assertion rename. Controller extends Login\Controller, which has no #[JsonResponse] actions, so the new controller contract does not apply here.
  • PHPStan reports 21 pre-existing errors, down from 24 before this branch. None are new. This repository has no PHPStan CI workflow, so these are not gated here — Add PHPStan CI check and pre-push hook, PG-4897 [no_release] #457 adds that check against 5.x-dev separately.
  • Local verification: PHPCS clean (63 sniffs, 0 errors), vue:build clean, plugin:activate succeeds, core:update reports no pending migrations. The integration suite was not run locally — it needs a running slapd, which setup_ldap.sh provides in CI.
  • Every commit is marked [ignore_release]: none of this changes plugin behaviour, and nothing can be released for Matomo 6 until core ships.
  • PRs Login redesign #461 and Update the confirm password screenshots for the refreshed login layout #462 target prepare6x as their base and were rebased under; their diffs will have recomputed.

Checklist

  • [✔] I have understood, reviewed, and tested all AI outputs before use
  • [✔] All AI instructions respect security, IP, and privacy rules

sgiehl and others added 15 commits August 9, 2026 17:03
Bump plugin version to 6.0.0 and require Matomo >=6.0.0-b1,<7.0.0-b1.
…violations (#439)

* Rebuild Vue dist files with the Vite build for Matomo 6

* Rebuild Vue dist files for Vue 3.5

* Export LoginLdap state interfaces for declaration emit (TS4082)
* Run plugin tests against MySQL 8.0 and MariaDB 10.6

The workflow inherited the shared action's MySQL 5.7 default, which is below
Matomo's new minimum. Pin the database-backed jobs to the supported floor:
PluginTests now runs a MySQL 8.0 + MariaDB 10.6 matrix, and the UI/JS jobs run
on MySQL 8.0.

* Only upload plugin test artifacts for the MySQL matrix leg

PluginTests runs a MySQL + MariaDB matrix; the upload-artifacts condition
matched both legs and uploaded twice. Restrict the upload to the MySQL leg.
… Puppeteer 24) (#447)

* Update expected UI screenshots for the new headless Chrome (Node 24 / Puppeteer 24)

* Run the plugin UI tests on Node 24

Match the Node 24 / Puppeteer 24 screenshot-testing stack; the UI job was still pinned to Node 16.
Core PR "Prune dead and deprecated LESS variables" (matomo-org/matomo#24925)
deletes plugins/Login/stylesheets/variables.less. Registering a file that no
longer exists makes stylesheet merging throw "The ui asset with 'href' = ...
is not readable", which broke every view- or email-rendering test of this
plugin. Nothing here used @login-section-background, so the line can simply go.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Teal brand screenshots on 6.x-dev plugin base; synced from matomo-org/matomo run 30405694397.
Matomo's Vue build no longer emits <Plugin>.umd.js. Only the minified
LoginLdap.umd.min.js is ever served: PluginUmdAssetFetcher looks exclusively for
.umd.min.js, and development mode uses the .development.umd.js produced by
vue:build --watch.

The unminified bundle was a leftover from Vue CLI, whose lib build emitted it
alongside the minified one for free. See matomo-org/matomo#25027.
@sgiehl
sgiehl requested a review from a team August 9, 2026 15:30
Comment thread phpstan.neon
@sgiehl
sgiehl merged commit f598699 into 6.x-dev Aug 10, 2026
12 checks passed
@sgiehl
sgiehl deleted the prepare6x branch August 10, 2026 06:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants