Skip to content
This repository was archived by the owner on Aug 4, 2026. It is now read-only.

fix(quality): clean development to 0 failing CI checks - #20

Merged
rubenvdlinde merged 3 commits into
developmentfrom
chore/quality-gates-fix
May 19, 2026
Merged

fix(quality): clean development to 0 failing CI checks#20
rubenvdlinde merged 3 commits into
developmentfrom
chore/quality-gates-fix

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Summary

Brings development from 6 failing required CI jobs (lint-check, phpcs, Vue eslint, Vue stylelint, npm Security, npm License) to 0 failures, so the 3 open PRs that rebase onto development can also clear quality gates.

Job Before After
Lint Check / lint-check ERESOLVE on npm ci green
Code Quality / phpcs 7 errors green
Code Quality / Vue eslint ERESOLVE on npm ci green
Code Quality / Vue stylelint ERESOLVE on npm ci green
Code Quality / npm Security ERESOLVE on npm ci green
Code Quality / npm License ERESOLVE on npm ci green

Root causes

  1. package-lock.json out of sync with peer-dep requirements. vue-apexcharts@1.7.0 requires apexcharts@>=4 while the app pins apexcharts@^3.54.1 for Vue 2. npm ci hit ERESOLVE on every PR, breaking 5 jobs that need node_modules.
  2. Missing transitive devDeps — @nextcloud/eslint-config and @nextcloud/stylelint-config declare these as peerDeps, but legacy-peer-deps mode means they were never installed: eslint-plugin-import, eslint-plugin-n, eslint-plugin-jsdoc, eslint-plugin-promise, eslint-config-standard, postcss-html, stylelint-config-recommended-{scss,vue}, typescript, @babel/core, @babel/eslint-parser, @vue/eslint-config-typescript, eslint-import-resolver-exports, @nextcloud/eslint-plugin.
  3. eslint import/named trips on exports-map subpaths inside @conduction/nextcloud-vue's nested @nextcloud/vue install. Disabled to match the other import/* rules already off in this config.
  4. phpcs: 7 violations in lib/Service/SettingsService.php (equals-align + one inline IF). 6 auto-fixed via phpcbf; the inline IF was expanded into a 4-line if/else.
  5. Auto-fixable lint: 12 key-spacing + 1 max-attributes-per-line errors across DetailPageWrapper/IndexPageWrapper/KnowledgeTab, fixed via eslint --fix.

Verification

  • npm ci --dry-run: up to date in 3s
  • npm run lint: 0 errors (0 warnings)
  • npm run stylelint: 0 errors (2 deprecation warnings)
  • vendor/bin/phpcs --standard=phpcs.xml: 12/12 files clean

Test plan

  • CI: all 6 previously-red jobs go green
  • After merge: 3 open PRs rebased on top will see the same 6 CI checks turn green

Follow-up

The pre-existing 39 vulnerabilities on default branch + EBADENGINE warnings against npm 11/Node 22 are unrelated to this PR.

Brings development from 6 failing required CI jobs (lint-check,
phpcs, Vue eslint, Vue stylelint, npm Security, npm License) to 0
failures, so the open PRs that rebase onto development can also
clear quality gates.

## Root causes

1. **package-lock.json out of sync** with peer-dep requirements.
   vue-apexcharts@1.7.0 requires apexcharts@>=4 while the app pins
   apexcharts@^3.54.1 for Vue 2. npm ci hit ERESOLVE on every PR,
   breaking 5 jobs that need node_modules.
2. **Missing transitive devDeps** — @nextcloud/eslint-config and
   @nextcloud/stylelint-config declare these as peerDeps, but
   legacy-peer-deps mode means they were never installed:
   eslint-plugin-import, eslint-plugin-n, eslint-plugin-jsdoc,
   eslint-plugin-promise, eslint-config-standard, postcss-html,
   stylelint-config-recommended-{scss,vue}, typescript, @babel/core,
   @babel/eslint-parser, @vue/eslint-config-typescript,
   eslint-import-resolver-exports, @nextcloud/eslint-plugin.
3. **eslint import/named** trips on exports-map subpaths inside
   @conduction/nextcloud-vue's nested @nextcloud/vue install.
   Disabled to match the other import/* rules already off.
4. **phpcs**: 7 violations in lib/Service/SettingsService.php
   (equals-align + one inline IF). 6 auto-fixed via phpcbf; the
   inline IF was expanded into a 4-line if/else.
5. **Auto-fixable lint**: 12 key-spacing + 1 max-attributes-per-line
   errors across DetailPageWrapper/IndexPageWrapper/KnowledgeTab,
   fixed via eslint --fix.

## What changed

- .npmrc: legacy-peer-deps=true with rationale comment
- package.json: 14 added devDeps
- package-lock.json: regenerated on Node 20 / npm 11
- eslint.config.js: import/named off
- lib/Service/SettingsService.php: phpcbf fixes + inline IF expansion
- 3 src/views/*.vue: eslint --fix

## Verification

- npm ci --dry-run: up to date in 3s
- npm run lint: 0 errors (0 warnings)
- npm run stylelint: 0 errors (2 deprecation warnings)
- vendor/bin/phpcs --standard=phpcs.xml: 12/12 files clean
Per ConductionNL convention: main is the protected production branch,
all feature/build work goes through development. Open dependabot PRs
that targeted main (e.g. #11) will need manual retarget; future PRs
will be raised against development.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/deskdesk @ 1d2cd8c

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

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

Download the full PDF report from the workflow artifacts.

pako (MIT AND Zlib) and sha.js (MIT AND BSD-3-Clause) are
transitive deps via webpack/babel toolchain — both component
licenses are on the default allowlist but the compound 'AND'
expression isn't parsed by the license-checker. Same pattern as
pipelinq and zaakafhandelapp.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/deskdesk @ 5119c8c

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

❌ Denied npm licenses

Package Version License
pako 1.0.11 (MIT AND Zlib)
sha.js 2.4.12 (MIT AND BSD-3-Clause)

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

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 4909cf2 into development May 19, 2026
14 checks passed
@rubenvdlinde
rubenvdlinde deleted the chore/quality-gates-fix branch May 19, 2026 04:03
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/deskdesk @ 497aab7

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

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

Download the full PDF report from the workflow artifacts.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant