fix(release): include Tasks and complete Git-installable module composition
This commit is contained in:
@@ -95,6 +95,15 @@ package entry. Keep one committed full-product release lockfile at
|
|||||||
`webui/package.release.json` in a clean release workspace. Development
|
`webui/package.release.json` in a clean release workspace. Development
|
||||||
`package-lock.json` may continue to point at local `file:` dependencies.
|
`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
|
Frontend module permutations are regression-tested through
|
||||||
`GOVOPLAN_WEBUI_MODULE_PACKAGES` and temporary build output, not through
|
`GOVOPLAN_WEBUI_MODULE_PACKAGES` and temporary build output, not through
|
||||||
committed lockfiles for every possible combination. If a smaller composition
|
committed lockfiles for every possible combination. If a smaller composition
|
||||||
|
|||||||
Generated
+12
-12
@@ -139,7 +139,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-approvals/webui": {
|
"../../govoplan-approvals/webui": {
|
||||||
"name": "@govoplan/approvals-webui",
|
"name": "@govoplan/approvals-webui",
|
||||||
"version": "0.1.20",
|
"version": "0.1.21",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -344,7 +344,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-encryption/webui": {
|
"../../govoplan-encryption/webui": {
|
||||||
"name": "@govoplan/encryption-webui",
|
"name": "@govoplan/encryption-webui",
|
||||||
"version": "0.1.19",
|
"version": "0.1.20",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -378,7 +378,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-forms-runtime/webui": {
|
"../../govoplan-forms-runtime/webui": {
|
||||||
"name": "@govoplan/forms-runtime-webui",
|
"name": "@govoplan/forms-runtime-webui",
|
||||||
"version": "0.1.20",
|
"version": "0.1.21",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -394,7 +394,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-forms/webui": {
|
"../../govoplan-forms/webui": {
|
||||||
"name": "@govoplan/forms-webui",
|
"name": "@govoplan/forms-webui",
|
||||||
"version": "0.1.22",
|
"version": "0.1.23",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -426,7 +426,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-identity-trust/webui": {
|
"../../govoplan-identity-trust/webui": {
|
||||||
"name": "@govoplan/identity-trust-webui",
|
"name": "@govoplan/identity-trust-webui",
|
||||||
"version": "0.1.20",
|
"version": "0.1.21",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -441,7 +441,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-identity/webui": {
|
"../../govoplan-identity/webui": {
|
||||||
"name": "@govoplan/identity-webui",
|
"name": "@govoplan/identity-webui",
|
||||||
"version": "0.1.20",
|
"version": "0.1.21",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -551,7 +551,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-payments/webui": {
|
"../../govoplan-payments/webui": {
|
||||||
"name": "@govoplan/payments-webui",
|
"name": "@govoplan/payments-webui",
|
||||||
"version": "0.1.21",
|
"version": "0.1.22",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -583,7 +583,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-portal/webui": {
|
"../../govoplan-portal/webui": {
|
||||||
"name": "@govoplan/portal-webui",
|
"name": "@govoplan/portal-webui",
|
||||||
"version": "0.1.21",
|
"version": "0.1.22",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -599,7 +599,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-postbox/webui": {
|
"../../govoplan-postbox/webui": {
|
||||||
"name": "@govoplan/postbox-webui",
|
"name": "@govoplan/postbox-webui",
|
||||||
"version": "0.1.22",
|
"version": "0.1.23",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -615,7 +615,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-projects/webui": {
|
"../../govoplan-projects/webui": {
|
||||||
"name": "@govoplan/projects-webui",
|
"name": "@govoplan/projects-webui",
|
||||||
"version": "0.1.19",
|
"version": "0.1.20",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -631,7 +631,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-quick-access/webui": {
|
"../../govoplan-quick-access/webui": {
|
||||||
"name": "@govoplan/quick-access-webui",
|
"name": "@govoplan/quick-access-webui",
|
||||||
"version": "0.1.20",
|
"version": "0.1.21",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
@@ -647,7 +647,7 @@
|
|||||||
},
|
},
|
||||||
"../../govoplan-records/webui": {
|
"../../govoplan-records/webui": {
|
||||||
"name": "@govoplan/records-webui",
|
"name": "@govoplan/records-webui",
|
||||||
"version": "0.1.23",
|
"version": "0.1.24",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@govoplan/core-webui": "^0.1.18",
|
"@govoplan/core-webui": "^0.1.18",
|
||||||
"lucide-react": "^1.23.0",
|
"lucide-react": "^1.23.0",
|
||||||
|
|||||||
+12
-12
@@ -37,7 +37,7 @@
|
|||||||
"@govoplan/access-webui": "git+ssh://git@git.add-ideas.de/GovOPlaN/govoplan-access.git#v0.1.25",
|
"@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/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/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/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/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",
|
"@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/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/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/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/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-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.22",
|
"@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/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-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.20",
|
"@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/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/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/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/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/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/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/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.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.19",
|
"@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.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.23",
|
"@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/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/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",
|
"@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 authGateStyles = read("src/styles/auth-gate.css");
|
||||||
const viteConfig = read("vite.config.ts");
|
const viteConfig = read("vite.config.ts");
|
||||||
const packageManifest = JSON.parse(read("package.json"));
|
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.
|
// Component presence alone cannot detect a collection toolbar in a left pane.
|
||||||
await import("./test-workspace-collection-actions.mjs");
|
await import("./test-workspace-collection-actions.mjs");
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ const defaultWebModulePackages = [
|
|||||||
"@govoplan/risk-compliance-webui",
|
"@govoplan/risk-compliance-webui",
|
||||||
"@govoplan/scheduling-webui",
|
"@govoplan/scheduling-webui",
|
||||||
"@govoplan/search-webui",
|
"@govoplan/search-webui",
|
||||||
|
"@govoplan/tasks-webui",
|
||||||
"@govoplan/tenancy-webui",
|
"@govoplan/tenancy-webui",
|
||||||
"@govoplan/templates-webui",
|
"@govoplan/templates-webui",
|
||||||
"@govoplan/tickets-webui",
|
"@govoplan/tickets-webui",
|
||||||
|
|||||||
Reference in New Issue
Block a user