From b1565579748a6fb544c96063f98928098acf7d59 Mon Sep 17 00:00:00 2001 From: delchev Date: Sat, 8 Aug 2026 11:14:16 +0300 Subject: [PATCH] feat: Dirigible 14.17.0, full Java support, IDE as home Helios is the pro-code edition. It gains the complete Java development stack next to JavaScript, and its users land in the Workbench rather than on the platform's Home launchpad. Version - codbex-platform-parent 13.6.0 -> 14.17.0 (parents track Dirigible releases 1:1). Full Java support - engine-java (in-process javac + the bean container), data-store-java (Java @Entity -> Hibernate), the api-modules-java SDK, ide-java-lsp (JDT.LS), ide-java-debug (the DAP bridge) and the Java / Java Debug views. - Note: the SDK exposes org.eclipse.dirigible.sdk.bpm, so api-modules-java -> api-bpm -> engine-bpm-flowable puts the BPM engine on the classpath; this edition ships none of the BPM tooling. No Intent Driven tooling - There is no engine-intent, so resources-builder (the conversational Builder shell, new in group-ui at 14.16.0) is excluded rather than shipped with nothing behind it. resources-inbox is excluded for the same reason: the BPM task inbox has no BPM surface. Home is the Workbench - DIRIGIBLE_HOME_URL=services/web/shell-ide/, overriding the 14.16.0+ default of services/web/home/. The launchpad stays reachable at /services/web/home/; only the / redirect changes. - Consequence: upstream's HomepageRedirectIT asserts the platform default and cannot pass here, so it leaves the common suite. The edition's own HomePageIT (Workbench welcome view on /) guards the override, unchanged. UI overrides (forks of upstream files, drifted) - menu-help: port to the current module shape (ESM + the conditional OpenAPI entry) and move translations/ to i18n/, the only folder locales.js scans - the Bulgarian help-menu catalog had been dead. - view-welcome: fix the misspelled `require` form-item flag and use the BlimpKit theme variables instead of the retired --fdAvatar* ones. Verified: quick-build, formatter:validate and unit tests green; every dirigible jar in the fat jar resolves at 14.17.0. On a running instance / answers 302 to /services/web/shell-ide/, the Java debugger config and Debug view answer 200, and the intent endpoints, the Builder shell and the Inbox all 404. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 12 ++ application/pom.xml | 40 ++++++ .../src/main/resources/dirigible.properties | 4 + .../dirigible/menu-help/configs/help.js | 132 ++++++++++-------- .../bg-BG/translation.json | 0 .../en-US/translation.json | 0 .../dirigible/view-welcome/js/welcome.js | 2 +- .../dirigible/view-welcome/welcome.html | 4 +- .../tests/DirigibleCommonTestSuiteIT.java | 1 - pom.xml | 2 +- 10 files changed, 133 insertions(+), 64 deletions(-) rename components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/{translations => i18n}/bg-BG/translation.json (100%) rename components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/{translations => i18n}/en-US/translation.json (100%) diff --git a/CLAUDE.md b/CLAUDE.md index ca560e3..9785ab4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -22,6 +22,18 @@ security, and extensions — but deliberately *without* the heavier engines such That scoping is expressed entirely through the dependency set in `application/pom.xml` — the same lever you use to add or drop a component here. +**Three deliberate departures from the platform defaults**, all in the edition's own configuration: + +- **Full Java support alongside JavaScript.** `engine-java` (in-process `javac` + the bean container), `data-store-java` (Java `@Entity` -> Hibernate), the `api-modules-java` SDK, `ide-java-lsp` (JDT.LS), `ide-java-debug` (the DAP bridge) and the Java / Java Debug views. Note that the SDK exposes `org.eclipse.dirigible.sdk.bpm`, so `api-modules-java` -> `api-bpm` -> `engine-bpm-flowable` puts the BPM engine on the classpath; this edition ships none of the BPM tooling. +- **No Intent Driven tooling.** There is no `engine-intent`, so `resources-builder` (the conversational Builder shell) is excluded from `group-ui` rather than shipped with nothing behind it. `resources-inbox` is excluded for the same reason - the BPM task inbox has no BPM surface here. +- **Home is the Workbench IDE.** `DIRIGIBLE_HOME_URL=services/web/shell-ide/` in `dirigible.properties`, overriding the platform's 14.16.0+ default of `services/web/home/`. The launchpad stays reachable at `/services/web/home/`; only the `/` redirect changes. Consequence: upstream's `HomepageRedirectIT` asserts the platform default and cannot run here - it was dropped from the common suite, and the edition's own `HomePageIT` (Workbench welcome view on `/`) guards the override. + +## Dirigible version + +The version is pinned by `codbex-platform-parent` through its `dirigible.version` property; parent releases track Dirigible releases 1:1 (parent 14.17.0 -> Dirigible 14.17.0), so bumping the edition means bumping the parent. Bumps are not mechanical - Dirigible removes things: the OData engine was extracted in 14.16.0 (un-managing `com.codbex.olingo:olingo-odata2-lib`, which fails a version-less declaration at model-read time) and the AngularJS/TypeScript application templates went with it. + +**The UI overrides under `components/ui/` are forks of upstream files** - diff them against the matching Dirigible module on every bump; they drift silently (translations must live in `i18n//*.json`, the only folder `platform-core/extension-services/locales.js` scans). + ## Build & run There is no Maven wrapper; use a system `mvn` (Java 21 / Amazon Corretto 21 per the Dockerfile). diff --git a/application/pom.xml b/application/pom.xml index b46c0a3..b5f36c4 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -53,6 +53,36 @@ org.eclipse.dirigible dirigible-components-engine-cms-s3 + + + + org.eclipse.dirigible + dirigible-components-engine-java + + + org.eclipse.dirigible + dirigible-components-data-store-java + + + org.eclipse.dirigible + dirigible-components-api-modules-java + + + org.eclipse.dirigible + dirigible-components-ide-java-lsp + + + org.eclipse.dirigible + dirigible-components-ide-java-debug + + + org.eclipse.dirigible + dirigible-components-ui-view-java + + + org.eclipse.dirigible + dirigible-components-ui-view-java-debug + org.eclipse.dirigible dirigible-components-api-cms @@ -151,6 +181,16 @@ org.eclipse.dirigible dirigible-components-ui-menu-help + + + org.eclipse.dirigible + dirigible-components-resources-builder + + + + org.eclipse.dirigible + dirigible-components-resources-inbox + diff --git a/application/src/main/resources/dirigible.properties b/application/src/main/resources/dirigible.properties index 31addfb..58a4890 100644 --- a/application/src/main/resources/dirigible.properties +++ b/application/src/main/resources/dirigible.properties @@ -1,6 +1,10 @@ # General DIRIGIBLE_MULTI_TENANT_MODE=false +# Land on the Workbench IDE, not on the platform's Home launchpad (the 14.16.0+ default is +# services/web/home/). This is a tooling edition, so the IDE is home. +DIRIGIBLE_HOME_URL=services/web/shell-ide/ + DIRIGIBLE_PRODUCT_NAME=${project.title} DIRIGIBLE_PRODUCT_VERSION=${project.version} DIRIGIBLE_PRODUCT_COMMIT_ID=${git.commit.id} diff --git a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js index b3c3507..4d4d756 100644 --- a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js +++ b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js @@ -9,69 +9,83 @@ * SPDX-FileCopyrightText: 2022 codbex or an codbex affiliate company and contributors * SPDX-License-Identifier: EPL-2.0 */ -exports.getMenu = () => ({ - systemMenu: true, - id: 'help', - menu: { - translation: { - key: 'common:help', - }, - label: 'Help', - items: [ - { - translation: { - key: 'menu-help:portal', - }, - label: 'Help Portal', - action: 'open', - link: 'https://www.codbex.com/documentation/tooling/', - separator: false +import { repository } from "sdk/platform"; + +export function getMenu() { + const hasOpenApi = repository.getResource('/registry/public/view-swagger/project.json').exists(); + const config = { + systemMenu: true, + id: 'help', + menu: { + translation: { + key: 'common:help', }, - { - translation: { - key: 'menu-help:support', + label: 'Help', + items: [ + { + translation: { + key: 'menu-help:portal', + }, + label: 'Help Portal', + action: 'open', + link: 'https://www.codbex.com/documentation/tooling/', + separator: false }, - label: 'Contact Support', - action: 'open', - link: 'https://www.codbex.com/contact/', - separator: false - }, - { - translation: { - key: 'menu-help:pricing', + { + translation: { + key: 'menu-help:support', + }, + label: 'Contact Support', + action: 'open', + link: 'https://www.codbex.com/contact/', + separator: false }, - label: 'Pricing Plans', - action: 'open', - link: 'https://www.codbex.com/pricing/', - separator: false - }, - { - translation: { - key: 'menu-help:whatsNew', + { + translation: { + key: 'menu-help:pricing', + }, + label: 'Pricing Plans', + action: 'open', + link: 'https://www.codbex.com/pricing/', + separator: false }, - label: 'What\'s New', - action: 'open', - link: 'https://www.codbex.com/technology', - separator: false - }, - { - translation: { - key: 'menu-help:updates', + { + translation: { + key: 'menu-help:whatsNew', + }, + label: 'What\'s New', + action: 'open', + link: 'https://www.codbex.com/technology', + separator: false }, - label: 'Check for Updates', - action: 'open', - link: 'https://www.codbex.com/products/', - separator: true - }, - { - id: 'about', - translation: { - key: 'menu-help:about', + { + translation: { + key: 'menu-help:updates', + }, + label: 'Check for Updates', + action: 'open', + link: 'https://www.codbex.com/products/', + separator: true }, - label: 'About', - action: 'openWindow', - separator: false - } - ] + { + id: 'about', + translation: { + key: 'menu-help:about', + }, + label: 'About', + action: 'openWindow', + separator: false + } + ] + } + }; + if (hasOpenApi) { + config.menu.items.splice(5, 0, { + label: 'OpenAPI', + action: 'open', + link: '/services/web/view-swagger/ui/', + separator: true + }); } -}); \ No newline at end of file + return config; +}; diff --git a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/bg-BG/translation.json b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/bg-BG/translation.json similarity index 100% rename from components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/bg-BG/translation.json rename to components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/bg-BG/translation.json diff --git a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/en-US/translation.json b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/en-US/translation.json similarity index 100% rename from components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/en-US/translation.json rename to components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/en-US/translation.json diff --git a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js index 41f0d27..689820f 100644 --- a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js +++ b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js @@ -65,7 +65,7 @@ welcome.controller('WelcomeController', ($scope, $http, WorkspaceService, Templa controlType: 'input', type: 'text', label: template.parameters[i].label, - require: true, + required: template.parameters[i].required === true, }; } return form; diff --git a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html index 25bc84f..0d7aa7a 100644 --- a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html +++ b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html @@ -12,8 +12,8 @@ diff --git a/integration-tests/src/test/java/com/codbex/helios/integration/tests/DirigibleCommonTestSuiteIT.java b/integration-tests/src/test/java/com/codbex/helios/integration/tests/DirigibleCommonTestSuiteIT.java index f061f57..6b5c290 100644 --- a/integration-tests/src/test/java/com/codbex/helios/integration/tests/DirigibleCommonTestSuiteIT.java +++ b/integration-tests/src/test/java/com/codbex/helios/integration/tests/DirigibleCommonTestSuiteIT.java @@ -22,7 +22,6 @@ CustomSecurityIT.class, // DatabasePerspectiveIT.class, // GitPerspectiveIT.class, // - HomepageRedirectIT.class, // MailIT.class, // MessagingFacadeIT.class, // SecurityIT.class, // diff --git a/pom.xml b/pom.xml index 9bb9bd2..253f94b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.codbex.platform codbex-platform-parent - 13.6.0 + 14.17.0 codbex-helios-parent