chore(deps): pin @conduction/nextcloud-vue to 2.1.0-vue3.16 - #96
Merged
Conversation
Aligns this app on the current nc-vue release and pins it EXACTLY — no
caret. A caret on a prerelease is how the fleet previously drifted onto a
proprietary `vue3-apexcharts`, so the range operator is removed rather
than merely retargeted.
Verified from the LOCKFILE (not package.json):
- `@conduction/nextcloud-vue` resolves to exactly `2.1.0-vue3.16`,
a single instance, no nested duplicate.
- `vue3-apexcharts` resolves to `1.8.0` — below the 1.9.0 boundary at
which that package became proprietary and stopped permitting
sublicensing, which our EUPL-1.2 apps require. nc-vue itself pins it
as a direct `~1.8.0` dependency, so the tilde cannot reach 1.9.0.
No licence override was added: core `apexcharts` is MIT and reports
an identical `Custom: <url>` symptom, so an override would mask the
real signal.
Install sequence: `rm -rf package-lock.json node_modules`, then
`npm install` (npm 11), `npm install --package-lock-only` (npm 10),
`npm ci` (npm 10).
Opt-ins evaluated (applied only where the app actually has the pattern):
- `@nextcloud/initial-state` `overrides` entry — NOT PRESENT in this
app, so nothing to drop. vue3.16 relaxes that peer to
`^2.2.0 || ^3.0.0`; this app already declared `^2.2.0`, which
satisfied the old peer too.
- local `vue/no-multiple-template-root: 'off'` — NOT PRESENT in this
app; the shared preset now disables it.
- e2e base-URL resolver — this app's resolver already refuses to
default to `localhost:8080`, so switching to nc-vue's shared one
would be churn without behaviour change. Left alone.
Contributor
Quality Report — ConductionNL/openbuild @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 662/662 | |||
| PHPUnit | ✅ | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ |
Coverage: 89.4% (17/19 statements)
Quality workflow — 2026-08-02 18:57 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the fleet sweep bringing the already-migrated Vue 3 apps onto the current
nc-vue release. This is a version alignment, not a migration — the app was
already on Vue 3.
What changed
@conduction/nextcloud-vue→2.1.0-vue3.16, pinned exactly, no caret.Verified from the lockfile, not
package.json@conduction/nextcloud-vue2.1.0-vue3.16, single instance, no nested duplicatevue3-apexcharts1.8.0— below the 1.9.0 proprietary boundaryvue3-apexchartsbecame proprietary at 1.9.0 and forbids sublicensing, which ourEUPL-1.2 apps require. nc-vue pins it as a direct
~1.8.0dependency, so thetilde cannot reach 1.9.0. No licence override was added — core
apexchartsis MIT and reports an identical
Custom: <url>symptom, so an override wouldmask the real signal rather than encode it.
Install sequence used:
rm -rf package-lock.json node_modules→npm install(npm 11) →
npm install --package-lock-only(npm 10) →npm ci(npm 10). Bothremovals matter: with a stale
node_modules, npm ERESOLVEs while blamingvue@3.5.40, which points the reader at entirely the wrong dependency.Opt-ins
Applied only where the app actually has the pattern.
@nextcloud/initial-stateoverridesentry — not present in this app, sonothing to drop. vue3.16 relaxes that peer from
^2.2.0to^2.2.0 || ^3.0.0; this app already declared^2.2.0, which satisfied theold peer too, so it never needed the override that vue3.16 makes unnecessary.
vue/no-multiple-template-root: 'off'— not present in this app.default to
localhost:8080(the shared dev container), so adopting nc-vue'sshared resolver would be churn with no behaviour change.
Gates, each with a positive control
A green run means nothing without a control that can go red.
.vueprobe using$listenersand adestroyed()hook was linted and correctly producedvue/no-deprecated-dollar-listeners-apiandvue/no-deprecated-destroyed-lifecycleerrors, proving the Vue-3 deprecationrules are actually live. A
.jsprobe would not have proven this — it neverengages
vue-eslint-parser. Probe removed; lint returns clean.by failing test name, never by count. Equal counts routinely hide a swap.
CI ref audit
Checked for the embedded-ref trap (a
uses:-org-ref fix does not cover refsembedded in workflow inputs). This app's
additional-appsentries and everyreusable-workflow
uses:were resolved against the API with?ref=, alongside adeliberate 404 as a negative control. All resolve. No wrong-org refs.
unit detail — one PRE-EXISTING failure, unchanged by this PR
Baseline (merge base, nc-vue
2.1.0-vue3.15): 140 files / 1364 tests,1 failed.
After the bump (nc-vue
2.1.0-vue3.16): 140 files / 1364 tests, 1 failed.Compared by failing test name, not by count — the sets are identical:
It is a real assertion failure, not a flake:
expected [] to deeply equal [{ slug: 'permit-pack', isSeeded: false }]—existingTemplatesis emptywhere the test expects one entry. It reproduces deterministically when run in
isolation under low machine load, so it is not load-induced.
It is not caused by this PR — it fails identically on the unmodified merge
base. It is deliberately not fixed here: a version-alignment PR is the wrong
place for a behavioural fix, and neither
.skip, a weakened assertion, nor araised timeout was used to make the number move.
Worth flagging separately: this failure is invisible to CI. The shared
ConductionNL/.githubquality.ymlruns PHPUnit but contains novitest/npm test/test:unitinvocation, and openbuild's own workflows do not addone — so the JS unit suite is currently an unenforced gate fleet-wide.