From 747fc670c9d2f819d8eb3bc906dc8ada565ac5aa Mon Sep 17 00:00:00 2001 From: delchev Date: Sun, 9 Aug 2026 15:38:26 +0300 Subject: [PATCH 1/2] chore: pin the platform to dirigible 14.18.0 Retargets Gaia from 14.14.0 to 14.18.0 and adapts the edition to what the four releases in between removed or renamed. - **Olingo dropped.** `dirigible-dependencies` no longer manages `com.codbex.olingo:olingo-odata2-lib` (OData was extracted from the platform in 14.16.0), so the version-less declaration here fails at model-read time - the build cannot even reach `code-style`. Nothing in the Gaia dependency set uses OData, so the declaration goes. - **The AngularJS Dashboard shell is retired** (`resources-dashboard`, removed in 14.18.0). Its module is gone, so the dependency no longer resolves, and `DIRIGIBLE_HOME_URL=services/web/dashboard/` pointed `/` at a 404. Home is now the Home launchpad, which Gaia already ships (`resources-home`) and which is the platform default. The twelve `application-*` extension points the Dashboard used to declare moved to `resources-application`, which Gaia also ships, so the help menu's `application-menus` contribution keeps resolving. - **"My Work" became "Personal"** (`resources-my` -> `resources-personal`, `/services/web/my/` -> `/services/web/personal/`). - **The forked help menu's translations were dead.** `locales.js` scans `/i18n//` only; this fork had drifted to `translations/`, so neither catalog was ever served and the menu fell back to its hard-coded English labels. Renamed to `i18n/`, matching upstream. The AngularJS/TS application templates and `template-form-builder-angularjs` also went away in 14.16.0, but Gaia names no templates individually and pulls no template group, so it needs no change there. Verified on the assembled fat jar: 131 dirigible jars, all at 14.18.0, none of odata/olingo/angular/dashboard/resources-my; `/` redirects to `/services/web/home/`; `platform-shells` lists applicationShell, personalShell, partnerShell and adminShell, and each of those plus inbox/documents answers 200 (`/services/web/{dashboard,my}/` answer 404); the `menu-help` namespace now resolves through `locales.js`; unit tests and `formatter:validate` pass and the boot log is error-free. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 2 +- application/pom.xml | 6 +----- application/src/main/resources/dirigible.properties | 2 +- .../{translations => i18n}/bg-BG/translation.json | 0 .../{translations => i18n}/en-US/translation.json | 0 pom.xml | 9 +-------- 6 files changed, 4 insertions(+), 15 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 94b2451..928bac8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,7 +52,7 @@ Formatting is enforced; run this before committing Java changes. ## Module layout -- **application/** — the Spring Boot app. `GaiaApplication` (`@SpringBootApplication` scanning `com.codbex.gaia` + `org.eclipse.dirigible.components`) is the entry point. Its `pom.xml` is the real definition of the edition: the list of `dirigible-components-*` dependencies there determines which engines/APIs/UI resources are bundled (core, security basic/keycloak/cognito/snowflake, database, BPM flowable, CMS, dashboard, inbox, documents, the Harmonia app shells `resources-application`/`resources-my`/`resources-partner` served at `/services/web/{application,my,partner}/`, etc.). To add or remove a platform capability, edit this dependency list. Gaia cherry-picks individual artifacts rather than pulling Dirigible's `group-ui`/`group-ide` poms (which Atlas uses), because those groups also drag in Web IDE pieces and `dirigible-components-ui-menu-help` (replaced here by the custom `codbex-gaia-components-ui-menu-help`). When a `/services/web//` path 404s that works on Atlas, the fix is usually adding the matching `dirigible-components-resources-` (content jars ship `META-INF/dirigible//`); the shared webjars (alpinejs, @codbex/harmonia, lucide, pinecone-router, i18next) come transitively from `resources-application-core` in `group-resources-ui`. +- **application/** — the Spring Boot app. `GaiaApplication` (`@SpringBootApplication` scanning `com.codbex.gaia` + `org.eclipse.dirigible.components`) is the entry point. Its `pom.xml` is the real definition of the edition: the list of `dirigible-components-*` dependencies there determines which engines/APIs/UI resources are bundled (core, security basic/keycloak/cognito/snowflake, database, BPM flowable, CMS, inbox, documents, the Home launchpad `resources-home` served at `/services/web/home/` — the `/` target — and the Harmonia app shells `resources-application`/`resources-personal`/`resources-partner`/`resources-admin` served at `/services/web/{application,personal,partner,admin}/`, etc.). To add or remove a platform capability, edit this dependency list. Gaia cherry-picks individual artifacts rather than pulling Dirigible's `group-ui`/`group-ide` poms (which Atlas uses), because those groups also drag in Web IDE pieces and `dirigible-components-ui-menu-help` (replaced here by the custom `codbex-gaia-components-ui-menu-help`). When a `/services/web//` path 404s that works on Atlas, the fix is usually adding the matching `dirigible-components-resources-` (content jars ship `META-INF/dirigible//`); the shared webjars (alpinejs, @codbex/harmonia, lucide, pinecone-router, i18next) come transitively from `resources-application-core` in `group-resources-ui`. - **branding/** — logo/favicon and `project.json` packaged as a Dirigible content project under `META-INF/dirigible/gaia-branding/`. - **components/** — Gaia-specific Dirigible content components (currently only `ui/menu-help`). New custom UI/content lives here. - **integration-tests/** — UI/integration tests against the assembled platform. diff --git a/application/pom.xml b/application/pom.xml index bf94133..85cb32e 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -115,10 +115,6 @@ dirigible-components-group-resources-ui pom - - org.eclipse.dirigible - dirigible-components-resources-dashboard - org.eclipse.dirigible dirigible-components-resources-inbox @@ -133,7 +129,7 @@ org.eclipse.dirigible - dirigible-components-resources-my + dirigible-components-resources-personal org.eclipse.dirigible diff --git a/application/src/main/resources/dirigible.properties b/application/src/main/resources/dirigible.properties index e2c11ef..c7211ef 100644 --- a/application/src/main/resources/dirigible.properties +++ b/application/src/main/resources/dirigible.properties @@ -9,7 +9,7 @@ DIRIGIBLE_PRODUCT_TYPE=basis DIRIGIBLE_INSTANCE_NAME=gaia -DIRIGIBLE_HOME_URL=services/web/dashboard/ +DIRIGIBLE_HOME_URL=services/web/home/ DIRIGIBLE_BRANDING_NAME=Gaia DIRIGIBLE_BRANDING_BRAND=codbex 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/pom.xml b/pom.xml index 48fde57..cffc179 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.codbex.platform codbex-platform-parent - 14.14.0 + 14.18.0 codbex - gaia - parent @@ -143,13 +143,6 @@ org.webjars webjars-locator - - - - com.codbex.olingo - olingo-odata2-lib - pom - From a2e6c7e65ce9ece724ad0a47a145df6770a6cdc4 Mon Sep 17 00:00:00 2001 From: delchev Date: Sun, 9 Aug 2026 16:30:37 +0300 Subject: [PATCH 2/2] feat: add the Monitoring shell and the backends its pages read The operations surface at /services/web/monitoring/ - health, artefacts in error, failed jobs, process incidents, the JVM snapshot, the live log stream and the broker's queues - without opening a Web IDE this edition does not ship. It is pure Harmonia over the shared application-core runtime, gated to ADMINISTRATOR / OPERATOR / DEVELOPER, and registers itself in `platform-shells`, so it appears in the Home launchpad and in every shell's user-menu switcher. Its Overview, Jobs and Processes pages read core-healthcheck, core-base's artefact inventory, engine-jobs and engine-bpm-flowable, all of which the edition already bundles. The three that were missing are added alongside the shell, as one block, so the capability stays a single edit: ide-monitoring (JVM counts, metrics, threads), ide-logs (the log files) and ide-messaging-monitoring (the broker summary and queue browse, over the engine-listeners broker bean). Two pieces are less obvious: - **The `bpmn-visualization` webjar.** The Processes page renders the live BPMN diagram with the same visualizer the IDE uses, loading it version-less from /webjars/. Upstream supplies it through ui-perspective-processes - Web IDE content this edition does not bundle - so it is declared here directly. - **`org.eclipse.dirigible.commons` joins the component scan.** The Logs page's live stream is the platform logging appender's socket at /websockets/ide/console, published by `ConsoleWebsocketConfig`. That class sits in `org.eclipse.dirigible.commons`, and it is the ONLY Spring bean under modules/commons, so naming the package picks up exactly that one config. Upstream gets it for free because its application class sits in `org.eclipse.dirigible` and scans the whole tree; this edition names its packages, so it has to name that one too. Verified on the booted jar: exactly five new artifacts on the classpath (resources-monitoring, the three ide-* backends, bpmn-visualization 0.47.0) and nothing dragged in behind them; `monitoringShell` listed in `platform-shells`; the shell page and its assets serve; all eleven endpoints `ops.js` reads answer 200 with real payloads (metrics with runtime/cpu/memory/threads/gc, a live broker summary, three log files, 75 artefacts); the version-less webjar path serves the 981 KB library; and /websockets/ide/console completes the handshake with 101. Boot log error-free. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 3 +- application/pom.xml | 33 +++++++++++++++++++ .../java/com/codbex/gaia/GaiaApplication.java | 13 +++++++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 928bac8..10c925f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,7 +52,8 @@ Formatting is enforced; run this before committing Java changes. ## Module layout -- **application/** — the Spring Boot app. `GaiaApplication` (`@SpringBootApplication` scanning `com.codbex.gaia` + `org.eclipse.dirigible.components`) is the entry point. Its `pom.xml` is the real definition of the edition: the list of `dirigible-components-*` dependencies there determines which engines/APIs/UI resources are bundled (core, security basic/keycloak/cognito/snowflake, database, BPM flowable, CMS, inbox, documents, the Home launchpad `resources-home` served at `/services/web/home/` — the `/` target — and the Harmonia app shells `resources-application`/`resources-personal`/`resources-partner`/`resources-admin` served at `/services/web/{application,personal,partner,admin}/`, etc.). To add or remove a platform capability, edit this dependency list. Gaia cherry-picks individual artifacts rather than pulling Dirigible's `group-ui`/`group-ide` poms (which Atlas uses), because those groups also drag in Web IDE pieces and `dirigible-components-ui-menu-help` (replaced here by the custom `codbex-gaia-components-ui-menu-help`). When a `/services/web//` path 404s that works on Atlas, the fix is usually adding the matching `dirigible-components-resources-` (content jars ship `META-INF/dirigible//`); the shared webjars (alpinejs, @codbex/harmonia, lucide, pinecone-router, i18next) come transitively from `resources-application-core` in `group-resources-ui`. +- **application/** — the Spring Boot app. `GaiaApplication` (`@SpringBootApplication` scanning `com.codbex.gaia` + `org.eclipse.dirigible.components`) is the entry point. Its `pom.xml` is the real definition of the edition: the list of `dirigible-components-*` dependencies there determines which engines/APIs/UI resources are bundled (core, security basic/keycloak/cognito/snowflake, database, BPM flowable, CMS, inbox, documents, the Home launchpad `resources-home` served at `/services/web/home/` — the `/` target — and the Harmonia app shells `resources-application`/`resources-personal`/`resources-partner`/`resources-admin` served at `/services/web/{application,personal,partner,admin}/`, and the Monitoring shell, etc.). To add or remove a platform capability, edit this dependency list. Gaia cherry-picks individual artifacts rather than pulling Dirigible's `group-ui`/`group-ide` poms (which Atlas uses), because those groups also drag in Web IDE pieces and `dirigible-components-ui-menu-help` (replaced here by the custom `codbex-gaia-components-ui-menu-help`). When a `/services/web//` path 404s that works on Atlas, the fix is usually adding the matching `dirigible-components-resources-` (content jars ship `META-INF/dirigible//`); the shared webjars (alpinejs, @codbex/harmonia, lucide, pinecone-router, i18next) come transitively from `resources-application-core` in `group-resources-ui`. + The **Monitoring shell** (`/services/web/monitoring/`, ADMINISTRATOR/OPERATOR/DEVELOPER) is the one place where a `resources-*` shell needs backends that are otherwise Web IDE territory: its JVM, log-file and broker pages read `ide-monitoring`, `ide-logs` and `ide-messaging-monitoring`, so all four artifacts are declared as one block. Two non-obvious pieces come with it — the `bpmn-visualization` webjar for the live process diagram (upstream ships it via `ui-perspective-processes`, which this edition does not bundle, so it is declared directly), and `org.eclipse.dirigible.commons` in `GaiaApplication`'s `scanBasePackages`, whose single bean publishes the live log stream at `/websockets/ide/console`. - **branding/** — logo/favicon and `project.json` packaged as a Dirigible content project under `META-INF/dirigible/gaia-branding/`. - **components/** — Gaia-specific Dirigible content components (currently only `ui/menu-help`). New custom UI/content lives here. - **integration-tests/** — UI/integration tests against the assembled platform. diff --git a/application/pom.xml b/application/pom.xml index 85cb32e..e190f48 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -144,6 +144,39 @@ dirigible-components-resources-home + + + org.eclipse.dirigible + dirigible-components-resources-monitoring + + + org.eclipse.dirigible + dirigible-components-ide-monitoring + + + org.eclipse.dirigible + dirigible-components-ide-logs + + + org.eclipse.dirigible + dirigible-components-ide-messaging-monitoring + + + + org.webjars.npm + bpmn-visualization + 0.47.0 + + org.eclipse.dirigible diff --git a/application/src/main/java/com/codbex/gaia/GaiaApplication.java b/application/src/main/java/com/codbex/gaia/GaiaApplication.java index 0817824..1dd7f3a 100644 --- a/application/src/main/java/com/codbex/gaia/GaiaApplication.java +++ b/application/src/main/java/com/codbex/gaia/GaiaApplication.java @@ -16,9 +16,20 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.scheduling.annotation.EnableScheduling; +/** + * The Gaia edition's entry point. + * + *

+ * The scan covers {@code org.eclipse.dirigible.commons} for a single bean, + * {@code ConsoleWebsocketConfig}, which publishes the platform logging appender's stream at + * {@code /websockets/ide/console} - the live source behind the Monitoring shell's Logs page. + * Upstream picks it up because its application class sits in {@code org.eclipse.dirigible} and + * scans the whole tree; this edition names its packages, so it has to name that one too. + */ @EnableJpaAuditing @EnableJpaRepositories -@SpringBootApplication(scanBasePackages = {"com.codbex.gaia", "org.eclipse.dirigible.components", "org.eclipse.dirigible.engine"}) +@SpringBootApplication(scanBasePackages = {"com.codbex.gaia", "org.eclipse.dirigible.components", "org.eclipse.dirigible.engine", + "org.eclipse.dirigible.commons"}) @EnableScheduling public class GaiaApplication {