From 4a2770c133f59e21f74c6641f4e20d9374685fda Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 12 May 2026 11:52:13 +0200 Subject: [PATCH 1/2] feat: adopt the Features & Roadmap menu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surfaces the in-product Features & Roadmap page (powered by OpenRegister's github-issue-proxy, UI from @conduction/nextcloud-vue) from the Settings section of the nav. - src/views/FeaturesRoadmap.vue — thin wrapper around CnFeaturesAndRoadmapView (repo / features / disabled from loadState() with fallbacks) - customComponents.js — register it as the `FeaturesRoadmap` custom component - manifest.json — add the `FeaturesRoadmap` custom page (route /features-roadmap) + a `FeaturesRoadmapMenu` entry in the settings section - bump @conduction/nextcloud-vue to ^1.0.0-beta.35 (ships the Cn* roadmap family) Refs: ConductionNL/hydra#251 --- package.json | 2 +- src/customComponents.js | 8 ++++++++ src/manifest.json | 10 ++++++++- src/views/FeaturesRoadmap.vue | 38 +++++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/views/FeaturesRoadmap.vue diff --git a/package.json b/package.json index ac334ffc..703c39cf 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "extends @nextcloud/browserslist-config" ], "dependencies": { - "@conduction/nextcloud-vue": "^1.0.0-beta.29", + "@conduction/nextcloud-vue": "^1.0.0-beta.35", "@nextcloud/auth": "^2.6.0", "@nextcloud/axios": "~2.5.2", "@nextcloud/dialogs": "^3.2.0", diff --git a/src/customComponents.js b/src/customComponents.js index cfd2bb9e..c621376c 100644 --- a/src/customComponents.js +++ b/src/customComponents.js @@ -47,6 +47,11 @@ import VisualWorkflowEditor from './components/workflow/VisualWorkflowEditor.vue // MAY reference it by string name. See openspec/changes/map-component/. import MapComponent from './components/map/MapComponent.vue' +// --- Features & Roadmap page — thin wrapper around the lib's +// CnFeaturesAndRoadmapView (the in-product roadmap surface powered by +// OpenRegister's github-issue-proxy). See ConductionNL/hydra#251. --- +import FeaturesRoadmapView from './views/FeaturesRoadmap.vue' + export default { // --- Genuine exceptions: no abstract analogue. --- MyWorkView, // bespoke 4-tab filter UI mixing case + task entities @@ -76,4 +81,7 @@ export default { // --- Shared map surface — referenceable from manifest pages. --- MapComponent, + + // --- Features & Roadmap page (lib's CnFeaturesAndRoadmapView). --- + FeaturesRoadmap: FeaturesRoadmapView, } diff --git a/src/manifest.json b/src/manifest.json index 3316a1cc..ea13f558 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -31,7 +31,8 @@ { "id": "LhsRecommendationsMenu", "label": "LHS Recommendations", "icon": "icon-comment", "route": "LhsRecommendations", "section": "settings", "order": 97 }, { "id": "LocationsMenu", "label": "Case locations", "icon": "icon-address", "route": "Locations", "section": "settings", "order": 98, "permission": "admin" }, { "id": "BezwaarCommitteesMenu", "label": "Bezwaaradviescommissies", "icon": "icon-group", "route": "BezwaarCommittees", "section": "settings", "order": 99 }, - { "id": "SettingsMenu", "label": "Settings", "icon": "icon-settings", "route": "Settings", "section": "settings", "order": 99 } + { "id": "SettingsMenu", "label": "Settings", "icon": "icon-settings", "route": "Settings", "section": "settings", "order": 99 }, + { "id": "FeaturesRoadmapMenu", "label": "Features & roadmap", "icon": "icon-toggle", "route": "FeaturesRoadmap", "section": "settings", "order": 100 } ], "pages": [ { @@ -924,6 +925,13 @@ { "id": "audit", "label": "Audit trail", "icon": "icon-history", "widgets": [{ "type": "audit-trail" }], "order": 90 } ] } + }, + { + "id": "FeaturesRoadmap", + "route": "/features-roadmap", + "type": "custom", + "title": "Features & roadmap", + "component": "FeaturesRoadmap" } ] } diff --git a/src/views/FeaturesRoadmap.vue b/src/views/FeaturesRoadmap.vue new file mode 100644 index 00000000..2515c6e1 --- /dev/null +++ b/src/views/FeaturesRoadmap.vue @@ -0,0 +1,38 @@ + + + From ac4abd9c8e94df5844a99d358e10c147006bc279 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Tue, 12 May 2026 12:15:31 +0200 Subject: [PATCH 2/2] chore: refresh package-lock.json for the @conduction/nextcloud-vue ^1.0.0-beta.35 bump --- package-lock.json | 57 ++++++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12dd6d79..d55112c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "license": "EUPL-1.2", "dependencies": { - "@conduction/nextcloud-vue": "^1.0.0-beta.29", + "@conduction/nextcloud-vue": "^1.0.0-beta.35", "@nextcloud/auth": "^2.6.0", "@nextcloud/axios": "~2.5.2", "@nextcloud/dialogs": "^3.2.0", @@ -502,9 +502,9 @@ } }, "node_modules/@conduction/nextcloud-vue": { - "version": "1.0.0-beta.29", - "resolved": "https://registry.npmjs.org/@conduction/nextcloud-vue/-/nextcloud-vue-1.0.0-beta.29.tgz", - "integrity": "sha512-gFnC9I9z2v76HutB7klBvZ52k7ep7VvCsYlM0iyK4R8yIOIb7bKTBV4OBMG51Epfg5hkVoKwayDxUnju+lUerg==", + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@conduction/nextcloud-vue/-/nextcloud-vue-1.0.0-beta.35.tgz", + "integrity": "sha512-T80Y6z+m/ni2z1yCNVrXAjzacv2WdXFNQcfZYfXHHmtCbJOjdFWLwALZ/WCrGO1FQIQMnjq01G0gBdMXXKQimg==", "license": "EUPL-1.2", "dependencies": { "@codemirror/autocomplete": "^6.0.0", @@ -517,13 +517,14 @@ "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", - "@nextcloud/capabilities": "^1.2.1", + "@microsoft/fetch-event-source": "^2.0.1", "@nextcloud/dialogs": "^7.3.0", "@nextcloud/notify_push": "^1.0.0", "@uiw/codemirror-theme-github": "^4.25.8", "@vueuse/core": "^10.0.0", "apexcharts": "^4.7.0", "codemirror": "^6.0.0", + "dompurify": "^3.0.0", "gridstack": "^10.3.1", "leaflet": "^1.9.0", "lodash": "^4.17.21", @@ -535,7 +536,9 @@ "vue-template-compiler": "^2.7.16" }, "peerDependencies": { + "@nextcloud/auth": "^2.0.0 || ^3.0.0", "@nextcloud/axios": "^2.0.0", + "@nextcloud/capabilities": "^1.2.1", "@nextcloud/l10n": "^2.0.0 || ^3.0.0", "@nextcloud/router": "^2.0.0 || ^3.0.0", "@nextcloud/vue": "^8.0.0", @@ -2030,6 +2033,12 @@ "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==", "license": "Apache-2.0" }, + "node_modules/@microsoft/fetch-event-source": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", + "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==", + "license": "MIT" + }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", @@ -3285,9 +3294,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3302,9 +3308,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3319,9 +3322,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3336,9 +3336,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3353,9 +3350,6 @@ "riscv64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -3370,9 +3364,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3387,9 +3378,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -3404,9 +3392,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -16038,9 +16023,9 @@ } }, "@conduction/nextcloud-vue": { - "version": "1.0.0-beta.29", - "resolved": "https://registry.npmjs.org/@conduction/nextcloud-vue/-/nextcloud-vue-1.0.0-beta.29.tgz", - "integrity": "sha512-gFnC9I9z2v76HutB7klBvZ52k7ep7VvCsYlM0iyK4R8yIOIb7bKTBV4OBMG51Epfg5hkVoKwayDxUnju+lUerg==", + "version": "1.0.0-beta.35", + "resolved": "https://registry.npmjs.org/@conduction/nextcloud-vue/-/nextcloud-vue-1.0.0-beta.35.tgz", + "integrity": "sha512-T80Y6z+m/ni2z1yCNVrXAjzacv2WdXFNQcfZYfXHHmtCbJOjdFWLwALZ/WCrGO1FQIQMnjq01G0gBdMXXKQimg==", "requires": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", @@ -16052,13 +16037,14 @@ "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", - "@nextcloud/capabilities": "^1.2.1", + "@microsoft/fetch-event-source": "^2.0.1", "@nextcloud/dialogs": "^7.3.0", "@nextcloud/notify_push": "^1.0.0", "@uiw/codemirror-theme-github": "^4.25.8", "@vueuse/core": "^10.0.0", "apexcharts": "^4.7.0", "codemirror": "^6.0.0", + "dompurify": "^3.0.0", "gridstack": "^10.3.1", "leaflet": "^1.9.0", "lodash": "^4.17.21", @@ -17062,6 +17048,11 @@ "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.4.47.tgz", "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==" }, + "@microsoft/fetch-event-source": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", + "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==" + }, "@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",