Release: merge development into beta#63
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ort from issue #61 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- access-control-authorisation: replaced custom AuditLogService with OpenRegister's built-in audit trail (CnAuditTrailTab) - catalog-purchase-management: removed custom CatalogImportService — CSV import provided by CnMassImportDialog - scheduling: removed auditLog schema property — audit trail is platform-provided per object, not a data field
Quality Report
Summary
PHP Quality
Vue Quality
Security
License Compliance
composer dependencies (100 total)
npm dependencies (215 total)
PHPUnit TestsPHPUnit tests were not enabled for this run. 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.
|
Bring repo-specific ADRs under openspec/architecture/ in line with hydra/CLAUDE.md ownership split (org-wide ADRs in hydra repo, project-specific ADRs in app repo).
chore(openspec): add architecture ADRs
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 215/215 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-04-25 15:11 UTC
Download the full PDF report from the workflow artifacts.
…asset only) (#68) The central Quality workflow (ConductionNL/.github#34) now publishes SBOMs exclusively as release assets — see SECURITY.md "Software Bill of Materials". This PR cleans up the per-app remnants: - delete .github/workflows/sbom.yml (the central job replaces it) - delete the checked-in sbom.cdx.json (release asset is the source of truth) - gitignore SBOM files so future generations don't accidentally land in repo Stable URL for clients: https://github.com/ConductionNL/shillinq/releases/latest/download/sbom.cdx.json Co-authored-by: SBOM Cleanup <ops@conduction.nl>
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 215/215 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-01 11:53 UTC
Download the full PDF report from the workflow artifacts.
…/nextcloud-vue
- Bump @conduction/nextcloud-vue ^0.1.0-beta.3 -> ^1.0.0-beta.31 (the
manifest renderer / useAppManifest land at beta.30+).
- Pin @nextcloud/axios ~2.5.2 (deps + overrides): 2.6.0 dropped the
`require` export condition, which breaks webpack 5 resolving
@nextcloud/vue's CJS bundle. Pin apexcharts 4.7.0 to match nc-vue's
transitive constraint.
- Add src/manifest.json (dashboard + settings pages, openregister
dependency) with $schema pointing at the published schema URL;
validates 0 errors against app-manifest.schema.json v1.3.0.
- Add tests/validate-manifest.js (Ajv-based schema validator, copied
from decidesk) + `npm run check:manifest` script; add ajv + ajv-formats
devDeps so the check is self-contained.
- Wire useAppManifest('shillinq', bundled) in src/main.js (Tier 1: the
hand-written vue-router config + App.vue/MainMenu still drive the UI).
build / lint / check:manifest all green; composer phpcs unchanged.
…/nextcloud-vue (#69) - Bump @conduction/nextcloud-vue ^0.1.0-beta.3 -> ^1.0.0-beta.31 (the manifest renderer / useAppManifest land at beta.30+). - Pin @nextcloud/axios ~2.5.2 (deps + overrides): 2.6.0 dropped the `require` export condition, which breaks webpack 5 resolving @nextcloud/vue's CJS bundle. Pin apexcharts 4.7.0 to match nc-vue's transitive constraint. - Add src/manifest.json (dashboard + settings pages, openregister dependency) with $schema pointing at the published schema URL; validates 0 errors against app-manifest.schema.json v1.3.0. - Add tests/validate-manifest.js (Ajv-based schema validator, copied from decidesk) + `npm run check:manifest` script; add ajv + ajv-formats devDeps so the check is self-contained. - Wire useAppManifest('shillinq', bundled) in src/main.js (Tier 1: the hand-written vue-router config + App.vue/MainMenu still drive the UI). build / lint / check:manifest all green; composer phpcs unchanged.
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-12 07:46 UTC
Download the full PDF report from the workflow artifacts.
…ectly (#70) The header navigation renders app.svg on a dark background and expects a white monochrome icon (matching stock Nextcloud apps). It was using fill="currentColor"/#222 which rendered as a black silhouette.
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-12 12:37 UTC
Download the full PDF report from the workflow artifacts.
Scaffold a Docusaurus documentation site and the journeydoc pattern
(ADR-030) for Shillinq:
- docs/ Docusaurus site (config, package.json/lock, sidebars, src/,
static/CNAME=shillinq.conduction.nl, logo, intro.md), English-only
i18n until a Dutch translation pass ships, adapted from pipelinq
- docs/tutorials/{user,admin}/ skeletons: 8 user-track + 3 admin-track
tutorial pages (TODO bodies) plus _category_.json files
- tests/e2e/docs-screenshots.spec.ts capture spec with one stub test
per tutorial story; playwright.config.ts with a docs-capture project
- .github/workflows/documentation.yml: cname shillinq.conduction.nl,
builds on development + documentation branches
- .gitignore: ignore docs/{node_modules,build,.docusaurus}, i18n/nl,
playwright outputs
Docs site builds clean (npm run ci). Tutorial prose and capture-spec
selectors are TODOs for /journeydoc-add-story + /journeydoc-instrument.
…uter/nav/dashboard
Migrates shillinq from the Tier-1 manifest adoption (useAppManifest only,
hand-written vue-router + MainMenu + Dashboard.vue + bespoke App.vue) to
the full Tier-4 ADR-024 shell, mirroring procest/decidesk:
- src/main.js: Tier-4 bootstrap — builds the router from manifest.pages,
registers library icons + translations, mounts App with manifest /
customComponents / pageTypes props. Drops the useAppManifest call.
- src/App.vue: thin <CnAppRoot> wrapper. CnAppRoot now owns the
dependency check ("OpenRegister required" empty state), the default
CnAppNav (manifest.menu) and per-route page dispatch (page.type →
Cn{Dashboard,Settings,…}Page) — so the bespoke NcEmptyContent /
router-view shell is gone.
- src/customComponents.js: new, empty registry (no custom-fallback pages).
- Deleted src/router/index.js, src/navigation/MainMenu.vue,
src/views/Dashboard.vue — the manifest is now the single source of
truth for pages + navigation.
- package.json: @conduction/nextcloud-vue ^1.0.0-beta.31 → ^1.0.0-beta.35;
add sass / sass-loader devDeps + .scss + image-asset webpack rules so
the monorepo-dev aliased library source builds.
- tests/validate-manifest.js: after schema validation, also assert the
manifest is internally consistent (unique page ids; every menu.route
points at an existing page) — the ADR-024/ADR-029 reachability gate.
Spec: openspec/changes/shillinq-manifest-tier4/{proposal,design,tasks}.md
Build: webpack compiles (benign asset-size + guarded leaflet/store
warnings, same as procest); eslint clean; manifest validates (schema
v1.5.0) + consistency check passes. Browser verification deferred —
shillinq is not currently mounted in the dev container.
beta.40 carries the CnIndexPage store-backed self-fetch (nc-vue #223), so the manifest type:"index" pages this PR introduces actually render their object collections — plus columns[].formatter / .widget / .aggregate and pages[].config.filter (#219/#221/#222).
# Conflicts: # package-lock.json # package.json # src/main.js # tests/validate-manifest.js
…empty-line-before)
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ❌ | ||||
| stylelint | ❌ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ❌ | ❌ | |||
| PHPUnit | ⏭️ | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ |
Quality workflow — 2026-05-12 21:20 UTC
Download the full PDF report from the workflow artifacts.
feat(manifest): adopt the Tier-4 CnAppRoot shell
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-12 21:26 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-12 22:17 UTC
Download the full PDF report from the workflow artifacts.
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-12 22:41 UTC
Download the full PDF report from the workflow artifacts.
… screenshots pending install+seed) (#76)
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ❌ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Quality workflow — 2026-05-13 05:56 UTC
Download the full PDF report from the workflow artifacts.
* chore(openspec): add docs-product-pages-conformance change artifacts Audit on 2026-05-13 (consolidated report at apps-extra/AUDIT-product- pages-2026-05-13.md) found shillinq's docs/ partially conformant to the canonical product-pages spec shipped at https://design-system.conduction.nl/preview/product-pages/. This change aligns docs/ structurally + Tier-2 config (folder taxonomy, Redocusaurus mount, nl locale, installation.md, em-dash cleanup) per ADR-030. Tier-3 content authoring is tracked separately: #78 UseCases/ + Integrations/ content #79 Dutch translation pass #80 static/oas/shillinq.json OpenAPI spec #81 remaining {{TODO}} cleanup (mostly resolved by #76) * docs: align with canonical product-pages structure Brings shillinq/docs/ in line with the canonical product-pages layout defined at https://design-system.conduction.nl/preview/product-pages/. Reference implementation: openregister/docs/. Structural (Tier-1) - Rename docs/tutorials/ → docs/user-guide/ (folder + screenshot path). - Move docs/FEATURES.md → docs/Features/index.md (em-dashes fixed). - Move docs/ARCHITECTURE.md → docs/Technical/architecture.md (em-dashes fixed, run-on intro paragraph split into normal prose). - Add empty canonical folders UseCases/ + Integrations/ with draft: true index stubs that point at issue #78. - New docs/installation.md with real Nextcloud install steps (prerequisites, app-store flow, register + chart-of-accounts setup, troubleshooting). - Internal links to ../../ARCHITECTURE.md updated to ../../Technical/architecture.md across 11 tutorial files. - _category_.json labels updated: "Tutorials" → "Guides". Em-dash sweep (REQ-002) - 147 em-dash hits replaced with commas across docs/ (mostly in the user-guide/ files filled in commit #76, plus intro/Architecture/ Features moves). `git grep -E '—' docs/` returns 0. Config (Tier-2) - redocusaurus@^2.0.0 added to docs/package.json (version matches openregister/docs/package.json). - Redocusaurus mounted at /api in docusaurus.config.js, fed by static/oas/shillinq.json. Placeholder OAS shipped so the build does not 404; the real spec lands via issue #80. - Navbar gets an "API Documentation" link to /api, positioned right of "Documentation". - i18n.locales: ['en'] → ['en', 'nl']. No NL markdown ships in this change; the locale dropdown is now available for translators starting work on issue #79. Reversible per ADR-030 escape hatch. Out of scope - No content rewrite of the existing 11 tutorial pages (filled by commit #76 upstream; em-dashes the only edit here). - No NL markdown translation (#79). - No real OpenAPI spec authoring (#80). - No real UseCases/ or Integrations/ content (#78). Build - cd docs && npm install --legacy-peer-deps && npm run build → 0. - Both en and nl locales build successfully. Warnings about /nl/privacy /nl/terms /nl/iso (footer links absent from nl locale) are pre-existing and tracked by #79.
Quality Report — ConductionNL/shillinq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-13 07:56 UTC
Download the full PDF report from the workflow artifacts.
Automated PR to sync development changes to beta for beta release.
Merging this PR will trigger the beta release workflow.