fix(release): include Tasks and complete Git-installable module composition

This commit is contained in:
2026-09-08 02:06:35 +02:00
parent 32c70a4657
commit c209b3c27d
5 changed files with 46 additions and 24 deletions
+9
View File
@@ -95,6 +95,15 @@ package entry. Keep one committed full-product release lockfile at
`webui/package.release.json` in a clean release workspace. Development
`package-lock.json` may continue to point at local `file:` dependencies.
The default WebUI build discovers every declared, installed module package,
including Tasks and its Work page, dashboard widget, and Quick Access tool.
Discovery still respects enabled backend modules and user permissions; adding
a package never grants access. `GOVOPLAN_WEBUI_MODULE_PACKAGES` selects an
explicit smaller build when set, and an explicitly empty value selects
core-only. The prebuild interface check compares the default descriptor list
with the package manifest so explicit permutation tests cannot conceal a
module accidentally omitted from the ordinary build.
Frontend module permutations are regression-tested through
`GOVOPLAN_WEBUI_MODULE_PACKAGES` and temporary build output, not through
committed lockfiles for every possible combination. If a smaller composition
+12 -12
View File
@@ -139,7 +139,7 @@
},
"../../govoplan-approvals/webui": {
"name": "@govoplan/approvals-webui",
"version": "0.1.20",
"version": "0.1.21",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -344,7 +344,7 @@
},
"../../govoplan-encryption/webui": {
"name": "@govoplan/encryption-webui",
"version": "0.1.19",
"version": "0.1.20",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -378,7 +378,7 @@
},
"../../govoplan-forms-runtime/webui": {
"name": "@govoplan/forms-runtime-webui",
"version": "0.1.20",
"version": "0.1.21",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -394,7 +394,7 @@
},
"../../govoplan-forms/webui": {
"name": "@govoplan/forms-webui",
"version": "0.1.22",
"version": "0.1.23",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -426,7 +426,7 @@
},
"../../govoplan-identity-trust/webui": {
"name": "@govoplan/identity-trust-webui",
"version": "0.1.20",
"version": "0.1.21",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -441,7 +441,7 @@
},
"../../govoplan-identity/webui": {
"name": "@govoplan/identity-webui",
"version": "0.1.20",
"version": "0.1.21",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -551,7 +551,7 @@
},
"../../govoplan-payments/webui": {
"name": "@govoplan/payments-webui",
"version": "0.1.21",
"version": "0.1.22",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -583,7 +583,7 @@
},
"../../govoplan-portal/webui": {
"name": "@govoplan/portal-webui",
"version": "0.1.21",
"version": "0.1.22",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -599,7 +599,7 @@
},
"../../govoplan-postbox/webui": {
"name": "@govoplan/postbox-webui",
"version": "0.1.22",
"version": "0.1.23",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -615,7 +615,7 @@
},
"../../govoplan-projects/webui": {
"name": "@govoplan/projects-webui",
"version": "0.1.19",
"version": "0.1.20",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -631,7 +631,7 @@
},
"../../govoplan-quick-access/webui": {
"name": "@govoplan/quick-access-webui",
"version": "0.1.20",
"version": "0.1.21",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
@@ -647,7 +647,7 @@
},
"../../govoplan-records/webui": {
"name": "@govoplan/records-webui",
"version": "0.1.23",
"version": "0.1.24",
"peerDependencies": {
"@govoplan/core-webui": "^0.1.18",
"lucide-react": "^1.23.0",
+12 -12
View File
@@ -37,7 +37,7 @@
"@govoplan/access-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-access.git#v0.1.25",
"@govoplan/addresses-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-addresses.git#v0.1.22",
"@govoplan/admin-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-admin.git#v0.1.23",
"@govoplan/approvals-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-approvals.git#v0.1.20",
"@govoplan/approvals-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-approvals.git#v0.1.21",
"@govoplan/audit-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-audit.git#v0.1.20",
"@govoplan/calendar-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-calendar.git#v0.1.23",
"@govoplan/campaign-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-campaign.git#v0.1.28",
@@ -49,25 +49,25 @@
"@govoplan/datasources-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-datasources.git#v0.1.25",
"@govoplan/dist-lists-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-dist-lists.git#v0.1.21",
"@govoplan/docs-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-docs.git#v0.1.23",
"@govoplan/encryption-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-encryption.git#v0.1.19",
"@govoplan/encryption-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-encryption.git#v0.1.20",
"@govoplan/files-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-files.git#v0.1.26",
"@govoplan/forms-runtime-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-forms-runtime.git#v0.1.20",
"@govoplan/forms-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-forms.git#v0.1.22",
"@govoplan/forms-runtime-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-forms-runtime.git#v0.1.21",
"@govoplan/forms-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-forms.git#v0.1.23",
"@govoplan/helpdesk-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-helpdesk.git#v0.1.21",
"@govoplan/identity-trust-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-identity-trust.git#v0.1.20",
"@govoplan/identity-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-identity.git#v0.1.20",
"@govoplan/identity-trust-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-identity-trust.git#v0.1.21",
"@govoplan/identity-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-identity.git#v0.1.21",
"@govoplan/idm-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-idm.git#v0.1.25",
"@govoplan/mail-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-mail.git#v0.1.27",
"@govoplan/notifications-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-notifications.git#v0.1.20",
"@govoplan/ops-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-ops.git#v0.1.22",
"@govoplan/organizations-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-organizations.git#v0.1.21",
"@govoplan/payments-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-payments.git#v0.1.21",
"@govoplan/payments-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-payments.git#v0.1.22",
"@govoplan/policy-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-policy.git#v0.1.23",
"@govoplan/portal-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-portal.git#v0.1.21",
"@govoplan/postbox-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-postbox.git#v0.1.22",
"@govoplan/projects-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-projects.git#v0.1.19",
"@govoplan/quick-access-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-quick-access.git#v0.1.20",
"@govoplan/records-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-records.git#v0.1.23",
"@govoplan/portal-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-portal.git#v0.1.22",
"@govoplan/postbox-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-postbox.git#v0.1.23",
"@govoplan/projects-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-projects.git#v0.1.20",
"@govoplan/quick-access-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-quick-access.git#v0.1.21",
"@govoplan/records-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-records.git#v0.1.24",
"@govoplan/reporting-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-reporting.git#v0.1.21",
"@govoplan/risk-compliance-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-risk-compliance.git#v0.1.21",
"@govoplan/scheduling-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-scheduling.git#v0.1.22",
@@ -39,6 +39,18 @@ const layoutStyles = read("src/styles/layout.css");
const authGateStyles = read("src/styles/auth-gate.css");
const viteConfig = read("vite.config.ts");
const packageManifest = JSON.parse(read("package.json"));
const defaultModulePackages = [...(viteConfig.match(/const defaultWebModulePackages = \[([\s\S]*?)\];/)?.[1] ?? "")
.matchAll(/"([^"]+)"/g)].map((match) => match[1]);
const declaredModulePackages = Object.keys(packageManifest.dependencies)
.filter((name) => name.startsWith("@govoplan/")).sort();
assert.deepEqual([...defaultModulePackages].sort(), declaredModulePackages,
"every declared module must be discoverable in the default build, including Tasks; explicit permutations cannot hide an omitted descriptor");
assert.match(viteConfig, /if \(configured === undefined\) return defaultWebModulePackages;/,
"only an absent override selects the full default composition");
assert.match(viteConfig, /return configured\.split\(","\)\.map\([\s\S]*?\.filter\(Boolean\)/,
"an explicit empty override still supports a core-only build");
assert.match(viteConfig, /return configuredWebModulePackages\(\)\.filter\(packageInstalled\)/,
"declared modules remain optional when their package is not installed");
// Component presence alone cannot detect a collection toolbar in a left pane.
await import("./test-workspace-collection-actions.mjs");
+1
View File
@@ -51,6 +51,7 @@ const defaultWebModulePackages = [
"@govoplan/risk-compliance-webui",
"@govoplan/scheduling-webui",
"@govoplan/search-webui",
"@govoplan/tasks-webui",
"@govoplan/tenancy-webui",
"@govoplan/templates-webui",
"@govoplan/tickets-webui",