Skip to content

Release: merge development into beta - #3169

Merged
rubenvdlinde merged 23 commits into
betafrom
development
Aug 31, 2026
Merged

Release: merge development into beta#3169
rubenvdlinde merged 23 commits into
betafrom
development

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Automated promotion. development holds 2 commit(s) beta does not.

github-actions Bot and others added 11 commits August 30, 2026 19:10
The 2.0.3-beta.20260830190904 release bumped the version on beta. Without this,
development stays behind beta and the next development -> beta promotion
conflicts on the version file.

Version files resolve to development's side, which is the higher line,
so this never moves a version backwards.
…0260830191210

chore(sync): carry beta back into development
Bumps [css-loader](https://github.com/webpack/css-loader) from 7.1.4 to 7.1.5.
- [Release notes](https://github.com/webpack/css-loader/releases)
- [Changelog](https://github.com/webpack/css-loader/blob/main/CHANGELOG.md)
- [Commits](webpack/css-loader@v7.1.4...v7.1.5)

---
updated-dependencies:
- dependency-name: css-loader
  dependency-version: 7.1.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [web-token/jwt-library](https://github.com/web-token/jwt-library) from 4.1.9 to 4.2.1.
- [Commits](web-token/jwt-library@4.1.9...4.2.1)

---
updated-dependencies:
- dependency-name: web-token/jwt-library
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…3159)

Bumps [phpcsstandards/phpcsextra](https://github.com/PHPCSStandards/PHPCSExtra) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/PHPCSStandards/PHPCSExtra/releases)
- [Changelog](https://github.com/PHPCSStandards/PHPCSExtra/blob/develop/CHANGELOG.md)
- [Commits](PHPCSStandards/PHPCSExtra@1.5.0...1.5.1)

---
updated-dependencies:
- dependency-name: phpcsstandards/phpcsextra
  dependency-version: 1.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 7.4.1 to 7.5.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/main/CHANGELOG.md)
- [Commits](nextcloud-libraries/nextcloud-dialogs@v7.4.1...v7.5.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/dialogs"
  dependency-version: 7.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vue-router](https://github.com/vuejs/router) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](vuejs/router@v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: vue-router
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [vue](https://github.com/vuejs/core) from 3.5.41 to 3.5.42.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](vuejs/core@v3.5.41...v3.5.42)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.42
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
vue-router 5 peers `vite: ^7.3.0 || ^8.0.0` and expects a Vite toolchain. These
apps build with webpack, which cannot resolve it at all: the build dies on
`Can't resolve 'vue-router'` from src and from @nextcloud/vue's own chunks.
Adopting it is a Vite migration, not a version bump.

Dependabot proposed it across 8 repositories in a single run, and merging any
one of them takes that app's build from green to red with no code change that
can fix it.

versioniq already builds with Vite and is the natural pilot if the fleet does
move. Lift this when an app's toolchain can actually take it.
#3173)

The comment claimed these apps "cannot resolve it at all". That is not what the
evidence shows, and a comment that overstates its case is worse than none: the
next person reads it, tries vue-router 5 somewhere it works, and stops trusting
the file.

Measured across four apps: integriq and zaakafhandelapp fail their build on
`Can't resolve 'vue-router'`, while openregister and learniq build clean on
5.3.0. The holdback still stands, for the honest reason rather than the
overstated one: a major that breaks some apps and not others cannot be merged
unattended, and the difference between them is not yet understood.

No behaviour change. The ignore rule is unchanged; only the reasoning is.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 7905806

Check PHP Vue Security License Tests
lint ⏭️
phpcs ⏭️
phpmd ⏭️
psalm ⏭️
phpstan ⏭️
phpmetrics ⏭️
eslint ⏭️
stylelint ⏭️
build ⏭️
composer ⏭️ ⏭️
npm ⏭️ ⏭️
app:check-code ⏭️
info.xml ⏭️
REUSE ⏭️
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-30 22:52 UTC

Download the full PDF report from the workflow artifacts.

…#3158)

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.67.0 to 8.68.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.68.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.68.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 1fc44e4

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 541/541
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 00:03 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 015223a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 00:44 UTC

Download the full PDF report from the workflow artifacts.

Two implementations of the organisation boundary had drifted. The list path
builds it with the query builder in MagicOrganizationHandler; the aggregation's
native fast path carried a flattened copy — a bare `_organisation = :activeOrg`.

SQL `=` never matches NULL, so every object with no organisation was invisible
to the aggregation API while the list API returned it. Measured on
decidiq/meeting: four meetings listed, exactly one org-less, `count` answered
3, and `filter[lifecycle]=closed` answered 0 for a meeting that plainly exists.
Every KPI tile in the fleet reads that endpoint, so each one silently
under-reported — a dashboard number that is confidently wrong.

The rule now has ONE home. `resolveOrganizationScope()` returns a DECISION
(`all` / `none` / `null-only` / `in` / `in-or-null`) and both callers render it:
the list path as query-builder expressions, the aggregation as raw SQL. A mode
the SQL cannot express is a refusal — `return null`, falling back to the PHP
path that goes through MagicMapper — never an approximation.

`in-or-null` is the case that was lost: an admin scoped to an organisation also
sees org-less rows. Non-admins are unchanged and still cannot, so this widens
nothing for a tenant.

Verified live after the change: the same endpoint answers 4 and 1, matching the
list endpoint exactly. New MagicOrganizationHandlerScopeTest covers all five
modes; its regression case was checked to fail against the old flattened rule.
The 12 AggregationRunner test files gain the new collaborator, mocked to the
single-org scope their fixtures already seed.

phpcs, phpmd, psalm and phpstan clean; Db (1483) and Aggregation (313) suites
green. The complexity suppressions moved from applyOrganizationFilter to
resolveOrganizationScope with the code they were written for.
…3182)

2.25.x makes the canonical KPI card flat and horizontal, so dashboards stop
drawing a grey box inside the white card CnWidgetWrapper already draws, and
2.25.1 fixes the narrow-tile step-down that 2.25.0 shipped inert (a source-order
bug left KPI values clipped on a three-column tile).

The caret range already allowed both; only the lockfile pinned this app back.
Lockfile only.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 370e196

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 01:44 UTC

Download the full PDF report from the workflow artifacts.

…not a tenant (#3183)

Consuming apps want their partner organisations here, and a ketenpartner
obviously IS an organisation: dossiq's partnerOrganization schema is name, slug,
oin, contactEmail, groupId, isActive — every field of which Organisation already
has. What stopped it was that this table is also the tenant table.
Organisation's own docblock says every row "is still a full organisation and
still a valid tenant", and `type` cannot carry the distinction because ADR-002
keeps it out of authorization deliberately.

🔴 THE GAP IS DESTRUCTIVE, NOT COSMETIC. Three background jobs enumerate
organisations and each selects on `status` alone: TenantUsageSyncJob meters,
TenantDeprovisionJob tears down, and TenantPurgeJob PERMANENTLY DELETES THE ROW.
So an archived ketenpartner would be indistinguishable from an archived tenant
and deleted with it, while the job reported a successful purge.

This change therefore leads with tests, not code. TenantJobsScopeTest was
written against the OLD behaviour and TWO of its assertions failed when the
distinction landed — which is the only evidence that it pins anything.

- `isLocalTenant` on Organisation, defaulting to TRUE so every existing row
  keeps exactly today's meaning. Unlike `type`, this one IS consulted.
- `remoteInstanceUrl` — the peer instance a counterparty is a tenant of, the
  same value FederatedShare.remoteInstanceUrl carries, so a share and the
  organisation it is with resolve to each other.
- `OrganisationMapper::findLocalTenants()`, used by all three jobs. A named
  method rather than one more filter each caller must remember, because
  forgetting it is what deletes a partner.

🔴 A NULL COUNTS AS A TENANT, and that detail is the whole migration. The column
arrives by migration, so every pre-existing row holds NULL; a plain
`= true` would have made EVERY EXISTING TENANT invisible to all three jobs at
once — tenants would silently stop being deprovisioned, purged and metered, and
each job would report success over an empty list. Asserted against a real
database in OrganisationTenantScopeIntegrationTest, because a mocked mapper
cannot show it.

findAll() is deliberately NOT narrowed: an organisation list that hid
counterparties would hide the ketenpartners the federation exists to work with.
That is asserted too.

Unblocks moving dossiq's partnerOrganization, which could not start until a
counterparty could be told from a tenant.

Verified: 17787 unit tests pass, PHPCS back to its 46-finding baseline on the
touched files (none of them mine), PHPMD and PHPStan clean.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 26a87ba

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 02:36 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ e374b5c

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 03:02 UTC

Download the full PDF report from the workflow artifacts.

dependabot Bot and others added 2 commits August 31, 2026 05:53
Bumps [minishlink/web-push](https://github.com/web-push-libs/web-push-php) from 9.0.4 to 11.0.0.
- [Release notes](https://github.com/web-push-libs/web-push-php/releases)
- [Commits](web-push-libs/web-push-php@v9.0.4...v11.0.0)

---
updated-dependencies:
- dependency-name: minishlink/web-push
  dependency-version: 11.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ADR-065 Decision 6 states this and states why it is not a matter of taste: the
fleet built decision tables TWICE, independently, six weeks apart, and neither
implementation knew the other existed.

  openbuild  DecisionTableEvaluator   422 lines   any collect first PRIORITY unique   2026-06-05
  dossiq     Service/Dmn/*          ~1,070 lines  collect first unique                2026-07-15

The newer one is the LESS capable. dossiq's archived change references
OpenRegister only as object storage and never mentions openbuild's evaluator,
which had been shipping for six weeks. Measured again before writing anything:
OpenRegister still had no decision-table service, so nothing had changed.

The ADR warned this "must reconcile two dialects rather than simply relocate
one". Three places where that was the actual work:

THE GRAMMAR IS MOVED, NOT REWRITTEN. UnaryTestEvaluator is dossiq's
ExpressionEvaluator, ported verbatim apart from namespace and name. It is the
stronger dialect — typed coercion, inclusive and exclusive ranges, set
membership, and the quoted-literal escape that lets a rule match a literal "-"
instead of reading it as the wildcard. Retyping it would have been a third
implementation. Renamed because it does not evaluate expressions in the general
sense; it decides whether a value satisfies one unary test, and the old name
invited someone to reach for it as a general evaluator.

PRIORITY IS OPENBUILD'S, and leaving it out would have made this a capability
REGRESSION dressed as a consolidation — openbuild's tables can already use it.
The hit-policy list is the union of the two, not the intersection.

ANY MEANT DIFFERENT THINGS, AND NEITHER WAS DMN'S. openbuild treated it as
`collect` and returned a LIST: a different answer of a different shape. DMN says
a table declaring ANY asserts its overlapping rules produce the same output, so
a disagreement is a fault in the table. Implemented that way, and the test fails
if it degrades to `first`.

Retiring either app's copy is deliberately out of scope. Each adopts this in its
own change with parity tests over its own shipped tables — openbuild's `any`
tables in particular change shape. Deleting a working evaluator on the strength
of a new one that has not yet run its data would be the same mistake in the
other direction.

One thing worth recording: porting the grammar file initially made phpmd fire
ExcessiveClassComplexity on code nobody had changed a line of. The cause was
that the new class docblock was inserted ABOVE the original, detaching its
@SuppressWarnings from the class. The tag is now folded into the single
docblock, with a note saying why.

Verified: 17800 unit tests pass, PHPCS/PHPMD/PHPStan clean on all three files.
Mutation-checked: dropping PRIORITY, degrading ANY to FIRST, and making the
priority tie non-deterministic each turn the suite red.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 65d6ea1

Check PHP Vue Security License Tests
lint ⏭️
phpcs ⏭️
phpmd ⏭️
psalm ⏭️
phpstan ⏭️
phpmetrics ⏭️
eslint ⏭️
stylelint ⏭️
build ⏭️
composer ⏭️ ⏭️
npm ⏭️ ⏭️
app:check-code ⏭️
info.xml ⏭️
REUSE ⏭️
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 03:55 UTC

Download the full PDF report from the workflow artifacts.

dependabot Bot added 2 commits August 31, 2026 06:07
…3167)

Bumps [jest-environment-jsdom](https://github.com/jestjs/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.7.0 to 30.5.0.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v30.5.0/packages/jest-environment-jsdom)

---
updated-dependencies:
- dependency-name: jest-environment-jsdom
  dependency-version: 30.5.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.43 to 26.4.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 26.4.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ e895f30

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 04:08 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 32b381a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 04:25 UTC

Download the full PDF report from the workflow artifacts.

…#3191)

* fix(dmn): alias the declared column types onto the evaluator's vocabulary

The fleet's decision tables were authored against two type vocabularies.
openbuild's shipped credit table declares `integer`, which is not one of
VALID_TYPES, so it fell back to `string`.

Measured, that fallback costs nothing for numbers or dates: the unary-test
grammar parses its operand and compares numerically, so `>=18` against 25
matches under either type. The numeric and date aliases here are alignment,
not a bug fix, and are labelled as such.

The boolean alias is a bug fix. A real PHP `true` coerced to a string becomes
"1", which does not match a cell reading `true`, so a column declaring `bool`
rather than `boolean` silently stopped matching. The added test fails without
the alias and passes with it; the numeric case deliberately has no test of its
own, because a test that passes either way would be evidence of nothing.

Groundwork for buildiq and dossiq consuming this evaluator.

* test(dmn): bring the unary-test grammar matrix with the evaluator

#3186 moved dossiq's ExpressionEvaluator into OpenRegister as
UnaryTestEvaluator but left its 31 grammar tests behind in dossiq. That was
fine while dossiq still had its own copy of the class. It stops being fine the
moment dossiq deletes that copy: the coverage would leave the fleet entirely,
and the shared evaluator would be left with only the indirect exercise it gets
through DecisionTableEvaluatorTest.

So the tests travel first, and dossiq deletes second. The port is mechanical —
namespace and class name — because the two classes differ only in docblocks.

47 tests, 86 assertions, all green.
….0.3-beta.20260830190904

chore(release): sync beta back into development
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ c9931c9

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 05:33 UTC

Download the full PDF report from the workflow artifacts.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 632b4b6

Check PHP Vue Security License Tests
lint ⏭️
phpcs ⏭️
phpmd ⏭️
psalm ⏭️
phpstan ⏭️
phpmetrics ⏭️
eslint ⏭️
stylelint ⏭️
build ⏭️
composer ⏭️ ⏭️
npm ⏭️ ⏭️
app:check-code ⏭️
info.xml ⏭️
REUSE ⏭️
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 05:39 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ 849fdcc

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 06:18 UTC

Download the full PDF report from the workflow artifacts.

Carries the two KPI-card fixes this dashboard reads: the canonical card is flat
and horizontal (no grey box inside the white card CnWidgetWrapper already
draws), and a calendar-aligned date range follows the reader's calendar rather
than UTC — "Current month" previously showed a To of 1 September in CEST on
31 August.

The caret range already allowed it; only the lockfile pinned this app back.
Lockfile only, and npm pruned nothing.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/openregister @ ab129f6

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-specs
test-l10n
test-l10n-parity
format
check-schema-l10n
check-l10n-js
composer ✅ 174/174
npm ✅ 542/542
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman
Playwright
Hydra gates

Quality workflow — 2026-08-31 08:40 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 172b8ef into beta Aug 31, 2026
97 checks passed
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.

1 participant