diff --git a/CLAUDE.md b/CLAUDE.md index 8d9f4ef..27cd5f9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,9 +4,11 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## What this is -Rhea ([codbex.com/products](https://www.codbex.com/products/)) is a **codbex "Edition"** — a thin distribution that packages [Eclipse Dirigible](https://github.com/eclipse/dirigible) into a runnable Spring Boot application. It contains almost no business logic of its own; it assembles Dirigible components via Maven dependencies and applies codbex branding plus a few UI overrides. Rhea's focus is **Entities, Forms and Reports modeling** for Model Driven Architecture development — the curated set of components in `application/pom.xml` (entity/forms/reports editors, the IDE, engines, and templates) reflects that focus. +Rhea ([codbex.com/products](https://www.codbex.com/products/)) is a **codbex "Edition"** — a thin distribution that packages [Eclipse Dirigible](https://github.com/eclipse/dirigible) into a runnable Spring Boot application. It contains almost no business logic of its own; it assembles Dirigible components via Maven dependencies and applies codbex branding plus a few UI overrides. Rhea's focus is **Modeling and Applications** — Entities, Forms and Reports modeling for Model Driven Architecture development, plus the **Intent Driven** techniques and tools (the `app.intent` engine, the Intent Editor and the conversational Builder shell). The curated set of components in `application/pom.xml` reflects that focus. -Inheritance chain: `codbex-platform-parent` (the `com.codbex.platform` parent POM, currently 12.89.0) → `codbex-rhea-parent` (root `pom.xml`) → modules. Most build behavior, Maven profiles, plugin config, and dependency versions live in the **parent POM, not this repo** — when a build profile or plugin isn't defined here, it is inherited from the platform parent. +Inheritance chain: `codbex-platform-parent` (the `com.codbex.platform` parent POM, currently 14.14.0) → `codbex-rhea-parent` (root `pom.xml`) → modules. Most build behavior, Maven profiles, plugin config, and dependency versions live in the **parent POM, not this repo** — when a build profile or plugin isn't defined here, it is inherited from the platform parent. + +**Dirigible version.** The platform parent pins it through the `dirigible.version` property (parent releases track Dirigible releases 1:1). The root `pom.xml` currently **overrides** it to `14.16.0`, because parent 14.14.0 is the newest published one and Rhea needs 14.16.0 for the Intent Driven components (Builder shell, Monitoring shell, the Personal shell rename) and for the removal of the AngularJS/TypeScript application templates. Delete the override once `codbex-platform-parent` 14.16.0 or later is published. ## Build & run @@ -55,10 +57,23 @@ The app activates `common,app-default` by default (`application.properties`). To - **`application/`** — the deliverable. `RheaApplication.java` is the Spring Boot entrypoint; it scans `org.eclipse.dirigible` and disables the default JDBC/JPA autoconfiguration (Dirigible manages its own datasources). The bulk of `application/pom.xml` is a curated list of `dirigible-components-*` dependencies that selects exactly which engines, editors, IDE views, menus, perspectives, and templates ship in this edition. **Adding/removing a platform feature = adding/removing a dependency here**, often paired with an `` to swap a Dirigible default for a codbex override (see below). - **`branding/`** — codbex branding resources (logo, favicon) served as a Dirigible project under `rhea-branding`. Branding values are wired in `application/src/main/resources/dirigible.properties`. -- **`components/ui/`** — local overrides of stock Dirigible UI components, currently `menu-help` and `view-welcome`. The pattern: the application POM **excludes** the upstream component (e.g. `dirigible-components-ui-menu-help`, `dirigible-components-ui-view-welcome`) and depends on the codbex-rhea replacement instead. These are Dirigible "projects" (resources under `META-INF/dirigible//`) using `.extension` files that hook into platform extension points like `platform-menus`. +- **`components/ui/`** — local overrides of stock Dirigible UI components, currently `menu-help` and `view-welcome`. The pattern: the application POM **excludes** the upstream component (e.g. `dirigible-components-ui-menu-help`, `dirigible-components-ui-view-welcome`) and depends on the codbex-rhea replacement instead. These are Dirigible "projects" (resources under `META-INF/dirigible//`) using `.extension` files that hook into platform extension points like `platform-menus`. Because they are **forks of upstream files**, diff them against the matching Dirigible module on every version bump — they drift silently (translations must live in `i18n//*.json`, which is the only folder `platform-core/extension-services/locales.js` scans). - **`integration-tests/`** — browser-based integration tests extending `UserInterfaceIntegrationTest` from `dirigible-tests-framework`. Test classes end in `IT` and drive the running IDE via the `ide`/`browser` helpers. - **`helm/otc/`** — Helm chart for Kubernetes deployment (versioned separately from the app). +## What this edition ships (the parts that matter) + +Pulled either explicitly or through the `dirigible-components-group-*` aggregators (`group-core`, `group-database`, `group-engines-core`, `group-api-platform`, `group-resources-ui`, `group-ide`, `group-ui`): + +- **Modeling** — the Entity Data Modeler (`.edm`/`.model`), Form Designer (`.form`), Report editor, Database Schema Modeler, CSVIM, BPMN editor. +- **Intent Driven** — `engine-intent` (the `app.intent` parse / generate / AI agent endpoints), the Intent Editor (`ui-editor-intent`, via `group-ide`) and the conversational **Builder shell** (`resources-builder`, via `group-ui`). +- **The single application stack** — Harmonia UI + client Java: `template-application-schema`, `-dao-java`, `-rest-java`, `-ui-harmonia-java`, `-events-java` and `template-form-builder-harmonia`. There is no AngularJS or TypeScript application stack any more (removed from Dirigible in 14.16.0), and the generated apps run on the Harmonia SPA shells (`resources-application`, `application-core`). +- **Client Java runtime** — `engine-java` + `data-store-java` + `api-modules-java` (the `org.eclipse.dirigible.sdk.*` SDK the generated code compiles against). +- **Document output** — `engine-document` (`.print` → XSL-FO → PDF) and `engine-numbering` (`.numbers` document numbering). +- **Shells and operations** — Home launchpad, Application, Personal, Partner, Administration, **Monitoring**, Inbox and Documents shells (all via `group-ui`), plus the Workbench IDE. + +Deliberately not included (add a dependency if an edition needs it): Camel/integrations engine, FTP/SFTP, Python, native apps, the S3/SharePoint CMS backends, `data-processes` (schema import/export processes) and the JS/TS starter templates. + ## How customization works (the mental model) There is no application Java code to edit for most feature work. To change what the platform does, you operate at the **packaging layer**: diff --git a/README.md b/README.md index ebe9b24..ee514d8 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,10 @@ [![Eclipse License](https://img.shields.io/badge/License-EPL%202.0-brightgreen.svg)](https://github.com/codbex/codbex-rhea/blob/main/LICENSE) [![Maven Central](https://img.shields.io/maven-central/v/com.codbex.rhea/codbex-rhea-application.svg)](https://central.sonatype.com/namespace/com.codbex.rhea) -Rhea Edition contains entity and forms modeling standard components. +Rhea Edition is the codbex vertical stack for **Modeling and Applications**. It contains the entity, forms and reports +modeling components, the Intent Driven development techniques and tools (the `app.intent` engine, the Intent Editor and +the conversational Builder shell), and the single application stack the generated applications run on - Harmonia UI on a +client Java backend. It is good for Model Driven Architecture related development models. diff --git a/application/pom.xml b/application/pom.xml index 1fc9be4..80063e1 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -62,6 +62,16 @@ dirigible-components-group-database pom + + + org.eclipse.dirigible + dirigible-components-data-store + + + + org.eclipse.dirigible + dirigible-components-data-store-java + @@ -122,6 +132,26 @@ org.eclipse.dirigible dirigible-components-engine-cms-internal + + + org.eclipse.dirigible + dirigible-components-engine-intent + + + + org.eclipse.dirigible + dirigible-components-engine-java + + + + org.eclipse.dirigible + dirigible-components-engine-document + + + + org.eclipse.dirigible + dirigible-components-engine-numbering + @@ -156,6 +186,11 @@ org.eclipse.dirigible dirigible-components-api-cms + + + org.eclipse.dirigible + dirigible-components-api-modules-java + @@ -534,41 +569,34 @@ org.eclipse.dirigible dirigible-components-template-websocket + org.eclipse.dirigible - dirigible-components-template-application-angular - - - org.eclipse.dirigible - dirigible-components-template-application-dao - - - org.eclipse.dirigible - dirigible-components-template-application-data + dirigible-components-template-application-schema org.eclipse.dirigible - dirigible-components-template-application-feed + dirigible-components-template-application-dao-java org.eclipse.dirigible - dirigible-components-template-application-odata + dirigible-components-template-application-rest-java org.eclipse.dirigible - dirigible-components-template-application-rest + dirigible-components-template-application-ui-harmonia-java org.eclipse.dirigible - dirigible-components-template-application-schema + dirigible-components-template-application-events-java org.eclipse.dirigible - dirigible-components-template-application-ui-angular + dirigible-components-template-form org.eclipse.dirigible - dirigible-components-template-form-builder-angularjs + dirigible-components-template-form-builder-harmonia 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 b44b88e..2120fd5 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 @@ @@ -59,7 +59,7 @@

Welcome to Rhea

You can create server-side scripting services by using the Enterprise Javascript API or just design your web pages in HTML5 by using your favorite client-side framework.
- All source code is licensed under the Eclipse Public License - v 2.0 and maintained at Eclipse Public License - v 2.0 and maintained at GitHub.

diff --git a/integration-tests/src/test/java/com/codbex/rhea/integration/tests/HomePageIT.java b/integration-tests/src/test/java/com/codbex/rhea/integration/tests/HomePageIT.java index ebed414..216ef08 100644 --- a/integration-tests/src/test/java/com/codbex/rhea/integration/tests/HomePageIT.java +++ b/integration-tests/src/test/java/com/codbex/rhea/integration/tests/HomePageIT.java @@ -15,11 +15,27 @@ class HomePageIT extends RheaIntegrationTest { + /** + * Static copy on the Home landing page - deterministic, unlike the user-dependent greeting. + */ + private static final String HOME_LANDING_TAGLINE = "Everything starts here. Pick where you want to work today."; + + /** + * The root path lands on the Home launchpad, which carries no IDE perspectives - the Workbench + * welcome view is asserted separately. + */ @Test - void testOpenHomepage() { + void testOpenHomePage() { ide.openHomePage(); browser.assertElementExistsByTypeAndText(HtmlElementType.SPAN, "Rhea"); + browser.assertElementExistsByTypeAndText(HtmlElementType.PARAGRAPH, HOME_LANDING_TAGLINE); + } + + @Test + void testOpenWorkbench() { + ide.openIde(); + browser.assertElementExistsByTypeAndText(HtmlElementType.HEADER3, "Welcome to Rhea"); } } diff --git a/pom.xml b/pom.xml index 6c8e44b..23bfe57 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.codbex.platform codbex-platform-parent - 13.6.0 + 14.14.0 codbex - rhea - parent @@ -61,6 +61,13 @@ Rhea by codbex none + + 14.17.0 @@ -160,13 +167,6 @@ com.h2database h2 - - - - com.codbex.olingo - olingo-odata2-lib - pom -