Skip to content

Release: merge development into beta#45

Open
github-actions[bot] wants to merge 324 commits into
betafrom
development
Open

Release: merge development into beta#45
github-actions[bot] wants to merge 324 commits into
betafrom
development

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated PR to sync development changes to beta for beta release.

Merging this PR will trigger the beta release workflow.

Reminder: Add a major, minor, or patch label to this PR to control the version bump. Default is patch.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report

Repository ConductionNL/nldesign
Commit 796c4ee
Branch 45/merge
Event pull_request
Generated 2026-03-19 19:05 UTC
Workflow Run https://github.com/ConductionNL/nldesign/actions/runs/23312024709

Summary

Group Result
PHP Quality PASS
Vue Quality PASS
Security PASS
License PASS
PHPUnit PASS
Newman SKIP

PHP Quality

Tool Result
lint PASS
phpcs PASS
phpmd PASS
psalm PASS
phpstan PASS
phpmetrics PASS

Vue Quality

Tool Result
eslint PASS
stylelint PASS

Security

Ecosystem Result
composer PASS
npm PASS

License Compliance

Ecosystem Result
composer PASS
npm PASS

composer dependencies (100 total)

Metric Count
Approved (allowlist) 100
Approved (override) 0
Denied 0

npm dependencies (7 total)

Metric Count
Approved (allowlist) 5
Approved (override) 2
Denied 0

PHPUnit Tests

PHP Nextcloud Result
Overall PASS

Code coverage: 0% (0 / 24 statements)

Integration Tests (Newman)

Newman integration tests were not enabled for this run.


Generated automatically by the Quality workflow.

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report

Repository ConductionNL/nldesign
Commit 452ede8
Branch 45/merge
Event pull_request
Generated 2026-03-19 21:37 UTC
Workflow Run https://github.com/ConductionNL/nldesign/actions/runs/23318045149

Summary

Group Result
PHP Quality PASS
Vue Quality PASS
Security PASS
License PASS
PHPUnit PASS
Newman SKIP

PHP Quality

Tool Result
lint PASS
phpcs PASS
phpmd PASS
psalm PASS
phpstan PASS
phpmetrics PASS

Vue Quality

Tool Result
eslint PASS
stylelint PASS

Security

Ecosystem Result
composer PASS
npm PASS

License Compliance

Ecosystem Result
composer PASS
npm PASS

composer dependencies (100 total)

Metric Count
Approved (allowlist) 100
Approved (override) 0
Denied 0

npm dependencies (7 total)

Metric Count
Approved (allowlist) 5
Approved (override) 2
Denied 0

PHPUnit Tests

PHP Nextcloud Result
Overall PASS

Code coverage: 0% (0 / 24 statements)

Integration Tests (Newman)

Newman integration tests were not enabled for this run.


Generated automatically by the Quality workflow.

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report

Repository ConductionNL/nldesign
Commit 1652e7f
Branch 45/merge
Event pull_request
Generated 2026-03-23 21:38 UTC
Workflow Run https://github.com/ConductionNL/nldesign/actions/runs/23461372774

Summary

Group Result
PHP Quality PASS
Vue Quality PASS
Security PASS
License PASS
PHPUnit PASS
Newman SKIP

PHP Quality

Tool Result
lint PASS
phpcs PASS
phpmd PASS
psalm PASS
phpstan PASS
phpmetrics PASS

Vue Quality

Tool Result
eslint PASS
stylelint PASS

Security

Ecosystem Result
composer PASS
npm PASS

License Compliance

Ecosystem Result
composer PASS
npm PASS

composer dependencies (100 total)

Metric Count
Approved (allowlist) 100
Approved (override) 0
Denied 0

npm dependencies (7 total)

Metric Count
Approved (allowlist) 5
Approved (override) 2
Denied 0

PHPUnit Tests

PHP Nextcloud Result
Overall PASS

Code coverage: 0% (0 / 24 statements)

Integration Tests (Newman)

Newman integration tests were not enabled for this run.


Generated automatically by the Quality workflow.

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented Apr 9, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report

Repository ConductionNL/nldesign
Commit acbb095
Branch 45/merge
Event pull_request
Generated 2026-04-09 09:48 UTC
Workflow Run https://github.com/ConductionNL/nldesign/actions/runs/24183659733

Summary

Group Result
PHP Quality PASS
Vue Quality PASS
Security PASS
License PASS
PHPUnit PASS
Newman SKIP
Playwright SKIP

PHP Quality

Tool Result
lint PASS
phpcs PASS
phpmd PASS
psalm PASS
phpstan PASS
phpmetrics PASS

Vue Quality

Tool Result
eslint PASS
stylelint PASS

Security

Ecosystem Result
composer PASS
npm PASS

License Compliance

Ecosystem Result
composer PASS
npm PASS

composer dependencies (100 total)

Metric Count
Approved (allowlist) 100
Approved (override) 0
Denied 0

npm dependencies (7 total)

Metric Count
Approved (allowlist) 5
Approved (override) 2
Denied 0

PHPUnit Tests

PHP Nextcloud Result
Overall PASS

Code coverage: 0% (0 / 24 statements)

Integration Tests (Newman)

Newman integration tests were not enabled for this run.

E2E Tests (Playwright)

Playwright E2E tests were not enabled for this run.


Generated automatically by the Quality workflow.

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ e0b6c18

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-01 11:51 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 33bfd61

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-07 20:51 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ e5323e2

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-07 21:25 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 13c6474

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-12 22:09 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ b568281

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-12 22:29 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 6622f07

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-13 09:26 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 9aca552

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-17 07:45 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ f546205

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-18 18:09 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 772217c

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-18 18:54 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ b606ba3

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-18 19:16 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ b935b19

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-18 20:47 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 8ccab3a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-18 20:59 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 7cc0b80

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-18 21:17 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 6caa0b5

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 02:56 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ ec8228b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 03:08 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 6d9de7e

Check PHP Vue Security License Tests
lint ⏭️
phpcs ⏭️
phpmd ⏭️
psalm ⏭️
phpstan ⏭️
phpmetrics ⏭️
eslint ⏭️
stylelint ⏭️
composer ⏭️ ⏭️
npm ⏭️ ⏭️
PHPUnit
Newman
Playwright

Quality workflow — 2026-05-19 05:05 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 9d39dfa

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 05:07 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ d0a0f90

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-19 05:21 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ e4f5c54

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 05:24 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 0d0d51a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 07:42 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ fd9e665

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 08:13 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ c4f612c

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 08:23 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ e222d87

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit
Newman ⏭️
Playwright ⏭️

Coverage: 0% (0/24 statements)


Quality workflow — 2026-05-19 08:35 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ f369153

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 7/7
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-21 20:32 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 503fc89

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer
npm ✅ 7/7
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-22 07:13 UTC

Download the full PDF report from the workflow artifacts.

@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 84a13c0

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer
npm ✅ 7/7
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-05-23 07:26 UTC

Download the full PDF report from the workflow artifacts.

…-completeness

docs(openspec): archive lasuite-token-completeness
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 4be90e9

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-25 08:33 UTC

Download the full PDF report from the workflow artifacts.

Conduction Release Bot and others added 3 commits July 25, 2026 10:45
…dpoints

Adds nldesign's side of the app-token-set-selection contract: a read-only,
non-admin token-set catalogue for a leaf app's own picker, a shared WCAG
contrast-evaluation endpoint generalising ContrastService beyond its two
fixed pairs, and the published (not implemented) scoped-application contract
a shared nextcloud-vue applier will target.

- GET /api/token-sets (#[NoAdminRequired]) - TokenSetService::getPublicCatalogue()
  projects getAvailableTokenSets() to a closed 5-field shape; wcagLevel reuses
  ShippedTokenSetAuditService::auditSet() via a new computeCachedWcagLevel()
  helper, sharing Capabilities' own nldesign_wcag_level ICache namespace.
- POST /api/contrast/evaluate (#[NoAdminRequired]) - ContrastService::evaluate()
  generalises check() to arbitrary candidate/role pairs against a caller
  background; never returns a blocked/allowed/verdict field.
- Regression test (TokenCssShapeTest) proving every shipped css/tokens/*.css
  (excluding dark/) is flat :root-only - the invariant the scoped applier
  contract depends on.
- Cross-referenced the resulting warn-only selection policy from
  custom-token-sets and token-set-contrast-audit specs.
- Docs: docs/reference/app-token-scope-contract.md.

Capabilities.php is unchanged; TokenSetService/ContrastService gain new
methods only, existing behaviour (check(), getAvailableTokenSets()) is
untouched.
…set-selection

# Conflicts:
#	openspec/specs/app-token-set-selection/spec.md
feat(token-sets): non-admin catalogue + shared contrast evaluation endpoints
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 604de9b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-25 08:51 UTC

Download the full PDF report from the workflow artifacts.

Conduction Release Bot and others added 2 commits July 25, 2026 11:05
…cknowledgement

Marianne is the official typeface of the French State, reserved for French
State administrations. This bundles the 8 DSFR Marianne woff2 weights
self-hosted under css/systems/lasuite/fonts/marianne/ (Etalab-2.0), but
keeps them inert by default: the real @font-face declarations live in a
separate css/systems/lasuite/marianne.css, emitted by CssInjectionService
only when the lasuite design system is active AND an admin has ticked the
"our organisation is a French State agency" acknowledgement gate
(marianne_enabled app config, default '0'). With the gate off, no Marianne
byte is ever requested and the lasuite set renders Inter.

Adds the admin settings toggle + unmissable restriction notice (translated
en/nl/fr), MARIANNE-LICENCE.md, AGREEMENT-MARIANNE.md, LICENSES/Etalab-2.0.txt,
and .license-overrides.json attribution, and updates the lasuite-stack and
claim-accuracy specs/tests that previously asserted Marianne was never
bundled.

Tests: 475 PHPUnit (via nextcloud:34 container, excl. pre-existing
OC\Mail\EMailTemplate harness gap), 60 vitest, composer check:strict green.
feat(lasuite): bundle Marianne font gated behind admin French-state acknowledgement
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 3590cbb

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-25 09:11 UTC

Download the full PDF report from the workflow artifacts.

Conduction Release Bot and others added 2 commits July 25, 2026 11:18
Built (#187), merged, live-verified: gate default-OFF injects no marianne.css
(zero Marianne bytes fetched, Inter renders); enabling it (admin affirming
French-state eligibility) + lasuite injects the self-hosted woff2. 8 DSFR
Marianne woff2 (Etalab-2.0), repo user agreement + licence + unmissable
notice. 505 PHPUnit green, check:strict green.
docs(openspec): archive marianne-font-restricted
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ b1a3bba

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-25 09:20 UTC

Download the full PDF report from the workflow artifacts.

Conduction Release Bot and others added 3 commits July 25, 2026 11:24
…ack resolver

Adds an optional icon_pack field to design-systems.json (nldesign -> the
existing rvo/open-gemeenten/den-haag packs, lasuite -> dsfr), materializes
the French-government DSFR icon set (1038 SVGs, Etalab-2.0, via
@gouvfr/dsfr) into img/icons/dsfr/, and adds a DesignSystemService
resolver (getIconPacks/resolveActiveIconPacks/resolveIconPath) so the
bundled icon pack an app resolves through nldesign travels with the
active design system instead of being hardcoded. Resolution honors an
appconfig icon_pack admin override and is exposed on the public
capability as iconPacks; a read-only admin indicator surfaces the
active pack and its source. Existing Dutch icon URLs and the
imagePath('nldesign', 'icons/{set}/{key}.svg') contract are unchanged
(purely additive).

Tests: 478 PHPUnit tests / 3546 assertions green (in-container run,
excluding the pre-existing OC\Mail\EMailTemplate harness limitation);
55 vitest tests green; composer check:strict green.
…chable-iconography

# Conflicts:
#	.license-overrides.json
#	README.md
#	js/admin.js
#	l10n/be.json
#	l10n/bg.json
#	l10n/bs.json
#	l10n/ca.json
#	l10n/cs.json
#	l10n/da.json
#	l10n/de.json
#	l10n/el.json
#	l10n/en.json
#	l10n/es.json
#	l10n/et.json
#	l10n/fi.json
#	l10n/fr.json
#	l10n/ga.json
#	l10n/hr.json
#	l10n/hu.json
#	l10n/is.json
#	l10n/it.json
#	l10n/lb.json
#	l10n/lt.json
#	l10n/lv.json
#	l10n/mk.json
#	l10n/mt.json
#	l10n/nb.json
#	l10n/nl.json
#	l10n/pl.json
#	l10n/pt.json
#	l10n/rm.json
#	l10n/ro.json
#	l10n/ru.json
#	l10n/sk.json
#	l10n/sl.json
#	l10n/sq.json
#	l10n/sr.json
#	l10n/sv.json
#	l10n/tr.json
#	l10n/uk.json
#	templates/settings/admin.php
…raphy

feat: theme-switchable iconography — DSFR pack + design-system icon-pack resolver
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 56fc1a2

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-25 09:42 UTC

Download the full PDF report from the workflow artifacts.

Conduction Release Bot and others added 2 commits July 25, 2026 12:24
Live verification caught it: rijkshuisstijl (and the ~33 Dutch municipality
sets) omit design_system in token-sets.json — they carry id/name/description/
theming and rely on the app-wide 'nldesign' default that
getAvailableTokenSets()/Capabilities apply. resolveActiveIconPacks() did NOT
apply that default, so every Dutch-government set resolved to NO icon pack —
silently breaking the 'Dutch government → Dutch icons' promise this wave is
about.

Fix distinguishes a KNOWN set that omits the field (→ nldesign default →
Dutch packs) from an UNKNOWN token set id (empty meta → no pack). The
existing 'NldesignDefault' test set design_system explicitly so it never
exercised the real omitted-field case; added a regression test with a set
that omits it.

Verified live: rijkshuisstijl→[rvo,open-gemeenten,den-haag], lasuite→[dsfr],
summer-breeze→[], unknown→[]. 527 PHPUnit, check:strict green.
…n-system

fix(icons): Dutch-government sets resolve Dutch icons (default missing design_system)
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 1a76c4f

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-25 10:25 UTC

Download the full PDF report from the workflow artifacts.

Conduction Release Bot and others added 2 commits July 25, 2026 12:26
Built (#189), merged, live-verified per-government icon resolution:
lasuite→[dsfr] (French gov icons), rijkshuisstijl→[rvo,open-gemeenten,
den-haag] (Dutch), summer-breeze→[] (non-gov), unknown→[]. 1038 DSFR icons
(Etalab-2.0) materialized; capability exposes iconPacks. Includes the
missing-design_system default fix (#190). Archive header aligned to the
canonical 'nc-vue Icon Packs' name (broadened to cover the DSFR pack).
docs(openspec): archive theme-switchable-iconography
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 9b859b0

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-25 10:28 UTC

Download the full PDF report from the workflow artifacts.

… hover, brand-050 text

A local computed-style comparison of the lasuite theme against La Suite's own
shipped Cunningham CSS (the authentic violet :root build) exposed that our
primary button filled brand-650 (#4844ad) at rest — which is La Suite's HOVER
step, one shade too dark. La Suite's .c__button--brand--primary fills brand-550
(#5e5cd0) at REST and brand-650 on hover, with brand-050 (#eef1fa) text, not
pure white.

- element-overrides.css: primary fill/border brand-650→brand-550 (rest),
  hover brand-750→brand-650, text gray-000→brand-050; color selector made
  symmetric with the fill selector (button[class*="primary"]).
- bridge.css: --color-primary-element→brand-550, -hover→brand-650,
  -element-text→brand-050.
- generate-lasuite-tokens.mjs: emit the --lasuite-color-brand-550 short alias
  the bridge now consumes; defaults.css regenerated (drift guard green).
- lasuite-parity.spec.ts: assert the corrected button reference values.

Verified: primary button now an exact match (bg #5e5cd0, text #eef1fa,
radius 4px) on both La Suite and the nldesign lasuite theme.
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ 700ab6f

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-26 07:38 UTC

Download the full PDF report from the workflow artifacts.

…onfig) (#192)

* feat(config): NL Design theme as a shareable config type (federated-config)

Contributes NL Design's theme configuration to OpenRegister's federated-config
engine, so a theme can be published to and installed from GitHub over the fleet's
one sharing mechanism — the proof that the standard is storage-agnostic, since NL
Design config lives in Nextcloud's IConfig, not in OpenRegister objects.

- NlDesignThemeShareableConfigType implements OCA\OpenRegister\Service\Config\
  IShareableConfigType, wrapping the existing ConfigBundleService export()/import()
  as the (de)serialiser. serialise() ignores its selection (a theme is the
  instance's one theme config); no secrets (theming carries none).
- ShareableConfigTypeListener registers it on RegisterShareableConfigTypesEvent,
  guarded on the event class existing (boots fine without OpenRegister).
- Application::register() now include_once's the app's composer autoloader so the
  cross-app listener is resolvable process-wide — the same mechanism hermiq uses
  to contribute flow nodes to OpenRegister.

Follows the identical cross-app contribution pattern hermiq uses (guarded event
listener + vendor-autoload include). OpenRegister-side, the federated-config
standard and its first two consumers (flows, registers/schemas) are merged and
e2e-verified (openregister#2134, #2135). Live round-trip verification of this
theme type on the shared dev instance is pending a clean deploy — the listener is
correct but its cross-app autoload did not activate on that instance; opened for
review rather than merged unverified.

* fix(config): correct namespace case + lazy bundle service — theme type now registers

The shareable theme type was written under OCA\NlDesign\ but this app's PSR-4
prefix is OCA\NLDesign\ (capital NL). PHP namespaces are case-sensitive, so the
server container's PSR-4 autoloader could not find the listener/type when
OpenRegister's dispatcher constructed them cross-app — the classmap could (why a
manual require worked), which masked it. Corrected the namespace to OCA\NLDesign\
throughout and regenerated the autoloader.

Also resolve ConfigBundleService lazily (via the container) instead of injecting
it: the type is constructed on every shareable-type catalogue read, but the
bundle service's deep theming chain is only needed when a theme is actually
serialised/installed.

Live-verified on 8080 end to end: nldesign.theme now appears in OpenRegister's
/api/federated-config/types cross-app over HTTP; bundling exports the real theme
config (token set, footer, overrides); installing it back returns
installed=["nldesign-theme"]. The storage-agnostic claim holds — theme config
lives in IConfig, shared over the same mechanism as flows and registers.

---------

Co-authored-by: Conduction Release Bot <release-bot@conduction.nl>
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ bd2aa44

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-26 09:05 UTC

Download the full PDF report from the workflow artifacts.

The lasuite theme matched La Suite only on the brand ramp. A computed-style
comparison against La Suite's own deployed Cunningham build showed the whole
rest of the colour system was off: our neutrals were the plain npm base greys
while La Suite tints its gray/white/black ramps violet, and our semantic
palettes were the npm defaults while La Suite ships its own vivid hues
(success true-green, warning orange, info brighter blue). 539 of 593 :root
tokens differed.

Rather than change defaults.css — which is SHARED with the `cunningham` design
system and must stay on the published blue base — this expands the lasuite-only
brand-override.css from a hand-authored brand+logo layer into the full deployed
colour delta, generated reproducibly:

- Vendor La Suite's deployed violet Cunningham build (suitenumerique/docs
  @61c2183, MIT) as scripts/sources/lasuite-deployed-cunningham-tokens.css.
- generate-lasuite-tokens.mjs --override diffs that deployed :root against the
  blue npm base and emits brand-override.css: 331 colour tokens (brand ramp +
  violet-tinted neutrals + La Suite's semantic palettes + logo). Scope is
  globals--colors + text-differing contextuals; structural globals
  (spacing/font/breakpoints) and unconsumed Cunningham components--* are
  excluded so the delta never moves layout. New drift guard:
  npm run test:lasuite-override.
- element-overrides.css: style NC secondary buttons from La Suite's
  brand-secondary contextuals (pale brand-100 fill, brand-600 text, no border),
  which our theme previously left as NC's default grey.

defaults.css is byte-unchanged except its header (regenerated); the cunningham
theme stays blue. Verified: a local computed-style comparison now matches La
Suite exactly on heading text, brand, logo, primary + secondary buttons, input
border and the tinted neutrals (only the Inter-Variable font-stack notation
differs — same rendered face). La Suite's deployed semantic -550 fills all meet
WCAG AA on white (5.35–5.38:1).

Guards: test:lasuite-tokens + test:lasuite-override drift, bridge-coverage,
stylelint, 73 vitest (incl 32 generator unit tests), phpcs, and
LasuiteDesignStackTest (22 tests) all green.
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ b8dc03c

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-26 10:04 UTC

Download the full PDF report from the workflow artifacts.

…ntract stubs

The NL Design theme shareable-config type (#192) references OpenRegister's
IShareableConfigType interface and RegisterShareableConfigTypesEvent — a SOFT
runtime dependency (registered behind a class_exists guard, so the instance
boots without OpenRegister). During static analysis OpenRegister is absent, so
phpstan and psalm could not resolve the contract, producing 4 phpstan + 3 psalm
errors (implements/extends unknown interface, unknown class, InvalidTemplateParam
on the listener's IEventListener<Event> generic, and a knock-on registerEventListener
type error in Application.php). "implements unknown interface" is a category
phpstan refuses to ignoreErrors, so a baseline entry was rejected outright.

Fix at the root with declaration-only analysis stubs of the two contract
classes (stubs/openregister-config.php, signatures mirrored verbatim from
openregister/lib/Service/Config/), wired into phpstan.neon `scanDirectories`
and psalm.xml `<stubs>`. Never autoloaded at runtime (PSR-4 maps only
OCA\NLDesign\ → lib/, and the file sits outside the test suite), so the real
OpenRegister classes are used whenever it is enabled — the "share the contract"
pattern, not a blanket excludePaths. Also drops the now-dead, non-ignorable
`implements unknown interface` ignoreErrors line, and suppresses the
interface-mandated unused $selection param (PHPMD, same convention as
UpstreamFreshnessJob).

In-container (PHP 8.4): phpstan/psalm/phpmd/phpcs all clean, phpunit 527/527.
@github-actions

Copy link
Copy Markdown
Contributor Author

Quality Report — ConductionNL/nldesign @ c621178

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm
PHPUnit ⏭️
Newman ⏭️
Playwright ⏭️

Quality workflow — 2026-07-26 19:13 UTC

Download the full PDF report from the workflow artifacts.

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