Skip to content

Basic vue support (beta)#58

Merged
marioserrano09 merged 62 commits intomainfrom
vue-support
Apr 9, 2026
Merged

Basic vue support (beta)#58
marioserrano09 merged 62 commits intomainfrom
vue-support

Conversation

@marioserrano09
Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI and others added 30 commits March 12, 2026 16:21
Framework-agnostic TypeScript library providing the view/viewer/renderer
core for Dynamia Platform with zero DOM dependencies and zero Vue/React
imports.

Includes:
- ViewType open-extension interface with built-in ViewTypes constants
- Abstract View base class with event emitter support
- Concrete views: FormView, TableView, CrudView, TreeView, ConfigView, EntityPickerView
- Viewer universal host (resolves ViewType → View)
- ViewRendererRegistry for mapping ViewType to renderers and factories
- ViewRenderer / FieldRenderer interfaces for framework adapters
- FieldResolver and LayoutEngine for descriptor → grid layout computation
- ActionResolver for entity action filtering
- Built-in converters (currency, decimal, date) and validators (required, constraint)
- All types imported from @dynamia-tools/sdk, never redefined

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace em dash with standard hyphen in Viewer error message
- Remove redundant conditional in _resolveDescriptor (descriptor
  already checked at start of method)
- Clarify FieldComponent comment: external modules define their own
  constants rather than extending the const object
- Clarify ViewType JSDoc: external modules create their own ViewType
  objects and register them independently

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Vue-reactive view classes (VueFormView, VueTableView, VueCrudView,
  VueTreeView, VueConfigView, VueEntityPickerView, VueViewer, VueView)
  extending ui-core views with Vue refs and computed properties
- Vue renderer implementations (VueFormRenderer, VueTableRenderer,
  VueCrudRenderer, VueFieldRenderer)
- Composables: useViewer, useView, useForm, useTable, useCrud,
  useEntityPicker, useNavigation
- Vue components: Viewer, Form, Table, Crud, Field, Actions,
  NavMenu, NavBreadcrumb
- Field components: Textbox, Intbox, Spinner, Combobox, Datebox,
  Checkbox, EntityPicker, EntityRefPicker, EntityRefLabel, CoolLabel, Link
- DynamiaVue plugin that registers all renderers, factories and
  global components
- Added 'vue' to pnpm workspace packages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: marioserrano09 <5221275+marioserrano09@users.noreply.github.com>
… packages

Co-authored-by: marioserrano09 <5221275+marioserrano09@users.noreply.github.com>
feat: add @dynamia-tools/ui-core and @dynamia-tools/vue packages
…ollections, refactor CRUD views to utilize DataSetView for table and tree representations
…dicated form descriptor for improved form rendering
…-tools/reports-sdk, and @dynamia-tools/saas-sdk
Copilot AI review requested due to automatic review settings April 9, 2026 12:45
@marioserrano09 marioserrano09 merged commit 313d774 into main Apr 9, 2026
1 check passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Introduces the first “headless UI” building blocks needed for Vue integration (beta) by adding a framework-agnostic UI core package, enhancing the TypeScript SDK to better match new backend metadata/action semantics, and updating backend serialization/action interfaces to support richer frontend clients.

Changes:

  • Added @dynamia-tools/ui-core with view models (CRUD/Form/Table/Config/Entity Picker), registries, and resolvers.
  • Updated @dynamia-tools/sdk metadata/actions APIs (view caching, navigation shape, action execution routing, CORS mode) and moved extension APIs into standalone SDK packages (reports/files/saas).
  • Updated Java backend metadata/action models & endpoints (remote vs local actions, entity references endpoints, JSON include/order tweaks) and bumped platform versions.

Reviewed changes

Copilot reviewed 198 out of 282 changed files in this pull request and generated 21 comments.

Show a summary per file
File Description
platform/packages/ui-core/src/view/TableView.ts New headless table view model (paging/sort/search).
platform/packages/ui-core/src/view/FormView.ts New headless form view model (layout/validation).
platform/packages/ui-core/src/view/EntityPickerView.ts New headless entity picker model (search/select).
platform/packages/ui-core/src/view/DataSetViewRegistry.ts Registry for dataset view factories (table/tree).
platform/packages/ui-core/src/view/DataSetView.ts Abstract dataset view base & narrowing helpers.
platform/packages/ui-core/src/view/CrudView.ts Headless CRUD orchestrator (form + dataset + actions).
platform/packages/ui-core/src/view/ConfigView.ts Headless config parameters view model.
platform/packages/ui-core/src/utils/validators.ts Built-in validators registry.
platform/packages/ui-core/src/utils/converters.ts Built-in converters registry.
platform/packages/ui-core/src/types/validators.ts Validator types.
platform/packages/ui-core/src/types/state.ts Shared view state types (form/table/tree/etc.).
platform/packages/ui-core/src/types/layout.ts Layout computation types for forms.
platform/packages/ui-core/src/types/field.ts Resolved field type + component vocabulary.
platform/packages/ui-core/src/types/converters.ts Converter types.
platform/packages/ui-core/src/resolvers/LayoutEngine.ts Layout computation from descriptor + fields.
platform/packages/ui-core/src/resolvers/FieldResolver.ts Field resolution (component/label/span/group).
platform/packages/ui-core/src/resolvers/ActionResolver.ts Action applicability filtering.
platform/packages/ui-core/src/renderer/ViewRenderer.ts Renderer interfaces for framework adapters.
platform/packages/ui-core/src/registry/Registry.ts Generic registry helper with key normalization.
platform/packages/ui-core/src/page/CrudPageResolver.ts Resolves CrudPage context (descriptors/metadata).
platform/packages/ui-core/src/navigation/NavigationResolver.ts Navigation utilities for active path + lookup.
platform/packages/ui-core/src/index.ts Public exports for ui-core package.
platform/packages/ui-core/src/actions/types.ts Action event payload types for ui-core.
platform/packages/ui-core/src/actions/crudActionState.ts CRUD state normalization helpers.
platform/packages/ui-core/src/actions/ClientAction.ts Client-side action system + registry.
platform/packages/ui-core/src/actions/ActionRendererRegistry.ts Renderer registry with flexible key matching.
platform/packages/ui-core/package.json New ui-core package manifest.
platform/packages/sdk/tsconfig.json Fix tsconfig base path + add custom condition.
platform/packages/sdk/tsconfig.build.json Fix tsconfig base path.
platform/packages/sdk/test/metadata/metadata.test.ts Update navigation response shape assertion.
platform/packages/sdk/test/metadata/actions.test.ts Add tests for ActionsApi.execute routing/errors.
platform/packages/sdk/test/files/files.test.ts Remove files tests from core SDK (moved out).
platform/packages/sdk/test/client.test.ts Adjust client surface (extensions removed).
platform/packages/sdk/src/types.ts Add CORS mode support to client config.
platform/packages/sdk/src/saas/types.ts Remove SaaS types from core SDK.
platform/packages/sdk/src/reports/types.ts Remove reports types from core SDK.
platform/packages/sdk/src/metadata/index.ts Export additional metadata helpers/types.
platform/packages/sdk/src/metadata/api.ts Add view descriptor caching + entity ref endpoints.
platform/packages/sdk/src/metadata/actions.ts Add ActionsApi.execute with endpoint auto-selection.
platform/packages/sdk/src/index.ts Rework exports (remove extension APIs, export HttpClient).
platform/packages/sdk/src/http.ts Support empty baseUrl and configurable CORS mode.
platform/packages/sdk/src/cruds/types.ts Minor formatting change.
platform/packages/sdk/src/cruds/crud-service.ts Correct CRUD service save endpoint documentation.
platform/packages/sdk/src/client.ts Remove extensions from client + expose http + cache helper.
platform/packages/sdk/package.json Bump SDK version + dev export condition.
platform/packages/sdk/README.md Update docs for new navigation + CRUD types.
platform/packages/pnpm-workspace.yaml Remove nested workspace config.
platform/packages/package.json Rename/re-scope platform packages root package.json.
platform/packages/README.md Update list of packages (ui-core).
platform/core/web/pom.xml Bump parent/dependency versions to 26.4.0.
platform/core/viewers/src/main/java/tools/dynamia/viewers/impl/DefaultViewLayout.java JSON include tweaks + rename internal map field.
platform/core/viewers/src/main/java/tools/dynamia/viewers/impl/DefaultViewDescriptor.java Add JSON property order for stable output.
platform/core/viewers/src/main/java/tools/dynamia/viewers/impl/AbstractViewDescriptor.java JSON include tweak for actions list.
platform/core/viewers/src/main/java/tools/dynamia/viewers/ViewAction.java Make ViewAction local-only base.
platform/core/viewers/src/main/java/tools/dynamia/viewers/FieldGroup.java JSON include tweak for params.
platform/core/viewers/src/main/java/tools/dynamia/viewers/Field.java Stable JSON order + helpers for enum/reference.
platform/core/viewers/pom.xml Bump module versions to 26.4.0.
platform/core/templates/pom.xml Bump module versions to 26.4.0.
platform/core/reports/pom.xml Bump module versions to 26.4.0.
platform/core/navigation/src/main/java/tools/dynamia/navigation/NavigationTree.java Add traversal helper for node iteration.
platform/core/navigation/src/main/java/tools/dynamia/navigation/NavigationNode.java Add JSON property order for stable output.
platform/core/navigation/src/main/java/tools/dynamia/navigation/ActionPage.java Only execute LocalAction instances.
platform/core/navigation/pom.xml Bump module versions to 26.4.0.
platform/core/io/pom.xml Bump module versions to 26.4.0.
platform/core/integration/pom.xml Bump module versions to 26.4.0.
platform/core/domain/src/main/java/tools/dynamia/domain/Validator.java Update Javadoc @see linkage.
platform/core/domain/src/main/java/tools/dynamia/domain/InstallValidator.java New annotation for installable validators.
platform/core/domain/src/main/java/tools/dynamia/domain/EntityReference.java Add JSON include/order for entity refs.
platform/core/domain/src/main/java/tools/dynamia/domain/DefaultEntityReferenceRepository.java Use non-null attribute map extraction.
platform/core/domain/pom.xml Bump module versions to 26.4.0.
platform/core/domain-jpa/pom.xml Bump module versions to 26.4.0.
platform/core/crud/src/main/java/tools/dynamia/crud/cfg/AbstractConfigPageAction.java Make config page actions local-only base.
platform/core/crud/src/main/java/tools/dynamia/crud/actions/SaveAction.java Remove remote execute() impl; position as local action.
platform/core/crud/src/main/java/tools/dynamia/crud/actions/DeleteAction.java Remove remote execute() impl; position as local action.
platform/core/crud/src/main/java/tools/dynamia/crud/CrudRemoteAction.java New interface for remote CRUD actions.
platform/core/crud/src/main/java/tools/dynamia/crud/CrudAction.java Explicitly mark CrudAction as local + class action.
platform/core/crud/src/main/java/tools/dynamia/crud/AbstractCrudRemoteAction.java New base for remote CRUD actions.
platform/core/crud/pom.xml Bump module versions to 26.4.0.
platform/core/commons/src/main/java/tools/dynamia/commons/ObjectOperations.java Add non-null map extraction helper.
platform/core/commons/src/main/java/tools/dynamia/commons/Mappable.java Change toMap() to only include non-null values.
platform/core/commons/pom.xml Bump module versions to 26.4.0.
platform/core/actions/src/main/java/tools/dynamia/actions/RemoteAction.java New marker interface for remotely executable actions.
platform/core/actions/src/main/java/tools/dynamia/actions/LocalAction.java New marker interface for locally executed actions.
platform/core/actions/src/main/java/tools/dynamia/actions/FastAction.java Make FastAction local-only base.
platform/core/actions/src/main/java/tools/dynamia/actions/DefaultActionRunner.java Only run LocalAction instances.
platform/core/actions/src/main/java/tools/dynamia/actions/ApplicationGlobalRemoteAction.java New base for global remote actions.
platform/core/actions/src/main/java/tools/dynamia/actions/ApplicationGlobalAction.java Make global actions local-only base.
platform/core/actions/src/main/java/tools/dynamia/actions/Actions.java Restrict execute() helper to RemoteAction.
platform/core/actions/src/main/java/tools/dynamia/actions/ActionPlaceholder.java Remove no-op actionPerformed override.
platform/core/actions/src/main/java/tools/dynamia/actions/Action.java Remove mixed local/remote methods from base Action.
platform/core/actions/src/main/java/tools/dynamia/actions/AbstractRemoteAction.java New base class for remote actions.
platform/core/actions/src/main/java/tools/dynamia/actions/AbstractLocalAction.java New base class for local actions.
platform/core/actions/src/main/java/tools/dynamia/actions/AbstractClassAction.java Make class actions local-only base.
platform/core/actions/src/main/java/tools/dynamia/actions/AbstractAction.java Update docs after Action interface split.
platform/core/actions/pom.xml Bump module versions to 26.4.0.
platform/app/src/main/java/tools/dynamia/app/metadata/ApplicationMetadataLoader.java Load remote-capable actions + ensure descriptors exist.
platform/app/src/main/java/tools/dynamia/app/metadata/ActionMetadata.java Represent RemoteAction + include type/className.
platform/app/src/main/java/tools/dynamia/app/controllers/ApplicationMetadataController.java Add entity ref endpoints + adjust entity/action resolution.
platform/app/pom.xml Bump module versions to 26.4.0.
package.json Add root pnpm workspace package.json.
extensions/security/sources/ui/pom.xml Bump module versions to 26.4.0.
extensions/security/sources/pom.xml Bump module versions to 26.4.0.
extensions/security/sources/core/pom.xml Bump module versions to 26.4.0.
extensions/saas/sources/ui/pom.xml Bump module versions to 26.4.0.
extensions/saas/sources/remote/pom.xml Bump module versions to 26.4.0.
extensions/saas/sources/pom.xml Bump module versions to 26.4.0.
extensions/saas/sources/jpa/pom.xml Bump module versions to 26.4.0.
extensions/saas/sources/core/pom.xml Bump module versions to 26.4.0.
extensions/saas/sources/api/src/main/java/tools/dynamia/modules/saas/api/AccountAdminAction.java Make SaaS admin actions local-only base.
extensions/saas/sources/api/pom.xml Bump module versions to 26.4.0.
extensions/saas/packages/saas-sdk/vitest.config.ts Add Vitest config for saas-sdk.
extensions/saas/packages/saas-sdk/vite.config.ts Add Vite build config for saas-sdk.
extensions/saas/packages/saas-sdk/tsconfig.json Add tsconfig for saas-sdk.
extensions/saas/packages/saas-sdk/tsconfig.build.json Add build tsconfig for saas-sdk.
extensions/saas/packages/saas-sdk/test/saas.test.ts Add minimal SaasApi test.
extensions/saas/packages/saas-sdk/test/helpers.ts Add saas-sdk test http helpers.
extensions/saas/packages/saas-sdk/src/types.ts Add AccountDTO type to saas-sdk.
extensions/saas/packages/saas-sdk/src/index.ts Export SaasApi + types.
extensions/saas/packages/saas-sdk/src/api.ts Implement SaasApi using core HttpClient.
extensions/saas/packages/saas-sdk/package.json New saas-sdk package manifest.
extensions/saas/packages/saas-sdk/README.md Add saas-sdk documentation.
extensions/reports/sources/ui/pom.xml Bump module versions to 26.4.0.
extensions/reports/sources/pom.xml Bump module versions to 26.4.0.
extensions/reports/sources/core/pom.xml Bump module versions to 26.4.0.
extensions/reports/sources/api/pom.xml Bump module versions to 26.4.0.
extensions/reports/packages/reports-sdk/vitest.config.ts Add Vitest config for reports-sdk.
extensions/reports/packages/reports-sdk/vite.config.ts Add Vite build config for reports-sdk.
extensions/reports/packages/reports-sdk/tsconfig.json Add tsconfig for reports-sdk.
extensions/reports/packages/reports-sdk/tsconfig.build.json Add build tsconfig for reports-sdk.
extensions/reports/packages/reports-sdk/test/reports.test.ts Add minimal ReportsApi tests.
extensions/reports/packages/reports-sdk/test/helpers.ts Add reports-sdk test http helpers.
extensions/reports/packages/reports-sdk/src/types.ts Add report DTO/filter types to reports-sdk.
extensions/reports/packages/reports-sdk/src/index.ts Export ReportsApi + types.
extensions/reports/packages/reports-sdk/src/api.ts Implement ReportsApi using core HttpClient.
extensions/reports/packages/reports-sdk/package.json New reports-sdk package manifest.
extensions/pom.xml Bump extensions parent version to 26.4.0.
extensions/finances/sources/pom.xml Bump module versions to 26.4.0.
extensions/finances/sources/api/pom.xml Bump module versions to 26.4.0.
extensions/file-importer/sources/ui/src/main/java/tools/dynamia/modules/importer/ImportAction.java Make importer actions local-only base.
extensions/file-importer/sources/ui/pom.xml Bump module versions to 26.4.0.
extensions/file-importer/sources/pom.xml Bump module versions to 26.4.0.
extensions/file-importer/sources/core/pom.xml Bump module versions to 26.4.0.
extensions/entity-files/sources/ui/pom.xml Bump module versions to 26.4.0.
extensions/entity-files/sources/s3/pom.xml Bump module versions to 26.4.0.
extensions/entity-files/sources/pom.xml Bump module versions to 26.4.0.
extensions/entity-files/sources/core/pom.xml Bump module versions to 26.4.0.
extensions/entity-files/packages/files-sdk/vitest.config.ts Add Vitest config for files-sdk.
extensions/entity-files/packages/files-sdk/vite.config.ts Add Vite build config for files-sdk.
extensions/entity-files/packages/files-sdk/tsconfig.json Add tsconfig for files-sdk.
extensions/entity-files/packages/files-sdk/tsconfig.build.json Add build tsconfig for files-sdk.
extensions/entity-files/packages/files-sdk/test/helpers.ts Add files-sdk test http helpers.
extensions/entity-files/packages/files-sdk/test/files.test.ts Add FilesApi URL test.
extensions/entity-files/packages/files-sdk/src/index.ts Export FilesApi.
extensions/entity-files/packages/files-sdk/src/api.ts Implement FilesApi using core HttpClient.
extensions/entity-files/packages/files-sdk/package.json New files-sdk package manifest.
extensions/entity-files/packages/files-sdk/README.md Add files-sdk documentation.
extensions/email-sms/sources/ui/src/main/java/tools/dynamia/modules/email/ui/actions/TestEmailAccountAction.java Make nested action local-only base.
extensions/email-sms/sources/ui/pom.xml Bump module versions to 26.4.0.
extensions/email-sms/sources/pom.xml Bump module versions to 26.4.0.
extensions/email-sms/sources/core/pom.xml Bump module versions to 26.4.0.
extensions/dashboard/sources/src/main/java/tools/dynamia/modules/dashboard/DashboardAction.java Make dashboard actions local-only base.
extensions/dashboard/sources/pom.xml Bump module versions to 26.4.0.
examples/demo-zk-books/test/MetadataApi.http Add metadata endpoint examples (incl. entity refs).
examples/demo-zk-books/src/main/java/mybookstore/providers/MyBookStoreModuleProvider.java Add a new CrudPage node (“logs”).
examples/demo-zk-books/src/main/java/mybookstore/domain/BookLog.java Add demo entity using references.
examples/demo-zk-books/src/main/java/mybookstore/WebConfig.java Add CORS config for Vue demo dev.
examples/demo-zk-books/src/main/java/mybookstore/MyBookStoreApplication.java Add EntityReferenceRepository beans.
examples/demo-zk-books/pom.xml Bump demo tools.version property.
examples/demo-vue-books/vite.config.ts Add Vue demo Vite proxy config.
examples/demo-vue-books/tsconfig.json Add Vue demo TS config.
examples/demo-vue-books/src/main.ts Bootstrap Vue demo app + DynamiaVue plugin.
examples/demo-vue-books/src/lib/client.ts Configure DynamiaClient in Vue demo.
examples/demo-vue-books/src/App.vue Demo shell (nav + breadcrumb + CrudPage rendering).
examples/demo-vue-books/package.json Add demo-vue-books package manifest.
examples/demo-vue-books/index.html Add Vite entry HTML for Vue demo.
examples/demo-vue-books/README.md Add Vue demo usage instructions.
examples/demo-vue-books/.gitignore Ignore build artifacts and env.
examples/demo-vue-books/.env.example Add Vue demo env template.
README.md Update CalVer guidance + dependency version examples.
.npmrc Configure public npm registry defaults.
.github/workflows/publish-npm.yml Adjust npm publish workflow to run from repo root.
.github/copilot-instructions.md Add IDE + JS/TS SDK/Vue guidance.
Files not reviewed (2)
  • examples/demo-vue-books/package-lock.json: Language not supported
  • platform/packages/pnpm-lock.yaml: Language not supported

import { DataSetView } from './DataSetView.js';
import { ViewTypes } from './ViewType.js';
import type { ResolvedField } from '../types/field.js';
import type { TableState, SortDirection } from '../types/state.js';
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SortDirection is imported but never used in this file. Remove it from the import to avoid lint/typecheck noise.

Suggested change
import type { TableState, SortDirection } from '../types/state.js';
import type { TableState } from '../types/state.js';

Copilot uses AI. Check for mistakes.
private _resolvedFields: ResolvedField[] = [];
private _layout: ResolvedLayout | null = null;
private _readOnly = false;
private _value: Record<string, unknown> = {};
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_value is written to in setValue() but never read anywhere in this file, making it a redundant state shadow that can drift from this.state.values. Prefer removing _value, or (if you need a stable snapshot) add a clear accessor and keep it in sync in all mutation paths (e.g., setFieldValue, reset).

Copilot uses AI. Check for mistakes.
override setValue(value: unknown): void {
if (value && typeof value === 'object') {
this.state.values = { ...(value as Record<string, unknown>) };
this._value = this.state.values;
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_value is written to in setValue() but never read anywhere in this file, making it a redundant state shadow that can drift from this.state.values. Prefer removing _value, or (if you need a stable snapshot) add a clear accessor and keep it in sync in all mutation paths (e.g., setFieldValue, reset).

Copilot uses AI. Check for mistakes.
Comment on lines +118 to +122

return {
...(data !== undefined ? { data } : {}),
...(overrides.params !== undefined ? { params: overrides.params } : {}),
...(overrides.source ?? this.viewType.name ? { source: overrides.source ?? this.viewType.name } : {}),
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This conditional spread drops source when overrides.source is an empty string (because the ternary tests truthiness), even though empty string may be a deliberate override. Use an explicit overrides.source !== undefined check (or always set source with a default) to avoid accidentally omitting the field.

Suggested change
return {
...(data !== undefined ? { data } : {}),
...(overrides.params !== undefined ? { params: overrides.params } : {}),
...(overrides.source ?? this.viewType.name ? { source: overrides.source ?? this.viewType.name } : {}),
const source = overrides.source !== undefined ? overrides.source : this.viewType.name;
return {
...(data !== undefined ? { data } : {}),
...(overrides.params !== undefined ? { params: overrides.params } : {}),
...(source !== undefined ? { source } : {}),

Copilot uses AI. Check for mistakes.
Comment on lines +81 to +94
const applicableClasses = (action.applicableClasses ?? []).filter(
className => className && className.toLowerCase() !== 'all',
);

if (applicableClasses.length === 1) {
return applicableClasses[0] ?? null;
}

if (this.isEntityScopedAction(action)) {
throw new Error(
`Action "${action.id}" requires an entity class name. `
+ 'Provide ExecuteActionOptions.className or ActionExecutionRequest.dataType.',
);
}
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If action.applicableClasses is ['all'], applicableClasses becomes empty after filtering, but isEntityScopedAction() still returns true (because it only checks .length > 0). This will incorrectly throw for globally applicable actions. Fix by making isEntityScopedAction() ignore "all" (and only treat non-all classes as entity-scoped), or by aligning the throw condition with the filtered applicableClasses.

Copilot uses AI. Check for mistakes.
Comment on lines +32 to +35
public BookLog(Long bookId, Long categoryId, String mesesage) {
this.bookId = bookId;
this.categoryId = categoryId;
this.mesesage = mesesage;
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The descriptor references a message field, but the entity property/getter/setter are named mesesage/getMesesage(). This mismatch will break reflection-based field resolution and likely causes missing/blank column rendering. Rename the field and accessor methods to message/getMessage()/setMessage() (and update constructor param names accordingly) or change the descriptor field name to match (prefer renaming to message).

Copilot uses AI. Check for mistakes.
this.categoryId = categoryId;
}

public String getMesesage() {
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The descriptor references a message field, but the entity property/getter/setter are named mesesage/getMesesage(). This mismatch will break reflection-based field resolution and likely causes missing/blank column rendering. Rename the field and accessor methods to message/getMessage()/setMessage() (and update constructor param names accordingly) or change the descriptor field name to match (prefer renaming to message).

Copilot uses AI. Check for mistakes.
return mesesage;
}

public void setMesesage(String mesesage) {
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The descriptor references a message field, but the entity property/getter/setter are named mesesage/getMesesage(). This mismatch will break reflection-based field resolution and likely causes missing/blank column rendering. Rename the field and accessor methods to message/getMessage()/setMessage() (and update constructor param names accordingly) or change the descriptor field name to match (prefer renaming to message).

Copilot uses AI. Check for mistakes.
node: NavigationNode;
/** Fully-qualified Java class name taken from {@link NavigationNode.file} */
entityClass: string;
/**ie
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct the comment text from ie to i.e. (or rephrase) for clarity and proper English usage.

Suggested change
/**ie
/**

Copilot uses AI. Check for mistakes.
Comment on lines 5 to +12
`@dynamia-tools/sdk` provides a fully typed, zero-dependency-at-runtime client that covers every REST endpoint exposed by a Dynamia Platform backend: application metadata, navigation tree, entity CRUD, actions, reports, files, SaaS accounts, schedules, and more.

Public API exports include:

- `DynamiaClient`, `DynamiaApiError`
- API classes: `MetadataApi`, `ActionsApi`, `CrudResourceApi`, `CrudServiceApi`, `ReportsApi`, `FilesApi`, `SaasApi`, `ScheduleApi`
- Core types for metadata, navigation, CRUD, reports and SaaS responses

Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section still claims ReportsApi, FilesApi, and SaasApi (and their types) are exported by @dynamia-tools/sdk, but this PR removes those from the core SDK and introduces standalone @dynamia-tools/*-sdk packages. Update the README to reflect the new split so users don’t try to import APIs that no longer exist in the core package.

Suggested change
`@dynamia-tools/sdk` provides a fully typed, zero-dependency-at-runtime client that covers every REST endpoint exposed by a Dynamia Platform backend: application metadata, navigation tree, entity CRUD, actions, reports, files, SaaS accounts, schedules, and more.
Public API exports include:
- `DynamiaClient`, `DynamiaApiError`
- API classes: `MetadataApi`, `ActionsApi`, `CrudResourceApi`, `CrudServiceApi`, `ReportsApi`, `FilesApi`, `SaasApi`, `ScheduleApi`
- Core types for metadata, navigation, CRUD, reports and SaaS responses
`@dynamia-tools/sdk` provides a fully typed, zero-dependency-at-runtime client for the core Dynamia Platform REST APIs, including application metadata, navigation tree, entity CRUD, actions, schedules, and related platform resources.
Public API exports include:
- `DynamiaClient`, `DynamiaApiError`
- API classes: `MetadataApi`, `ActionsApi`, `CrudResourceApi`, `CrudServiceApi`, `ScheduleApi`
- Core types for metadata, navigation, CRUD, schedules, and related platform responses
Reports, files, and SaaS APIs are now published as standalone packages: `@dynamia-tools/reports-sdk`, `@dynamia-tools/files-sdk`, and `@dynamia-tools/saas-sdk`.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants