Files
2026-09-02 12:40:49 +03:00

6.5 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

Changed

  • Rebuilt the nine non-default layouts against the application's own data.

Fixed

Removed

[1.3.1] - 2026-08-31

Fixed

  • Fixed Web Studio site settings rejecting empty optional fields. The backend bodyparser converts empty strings to null, so a cleared menu title, footer copyright or legal path failed validation; those fields are now optional in the vine schema (stored without the key) and the admin maps them back to empty strings via SiteSettingsMapper.
  • Backend validation errors on the settings page no longer disappear silently: the shared 422 handler skips them expecting the caller to map field errors, which the page never did. Structured field errors are now set on the matching form inputs, the tab holding the first error is opened, and message-only 422s surface as a toast.
  • Fixed renaming or deleting a folder destroying sibling folders whose name shares its prefix (renaming aa overwrote and then deleted aab). Drive strips the trailing slash off a listing prefix, so a directory's contents are now filtered on the real <path>/ prefix, and the S3 service deletes the listed keys instead of passing that prefix to deleteAll.
  • Fixed the web container running against the host's node_modules: the web service keeps apps/web/node_modules in an anonymous volume, so the bind mount no longer shadows the dependencies installed in the image.

[1.3.0] - 2026-08-28

Added

  • Added an ApiException base class whose self-handling renders module exceptions as { message, code } JSON responses, so exception classes no longer need registration in the global HTTP exception handler.
  • Added @crux-kit/editor-tiptap, a free, headless rich-text editor package built on TipTap. The light preset covers bold, italic, underline, strikethrough, headings, lists, blockquote, text alignment, links, and undo/redo, reading and writing content as plain HTML so it themes with the shared design-system tokens.
  • Added the InputTiptapEditor composed form field.
  • Added useIntlDate and useIntlName hooks under apps/admin/src/app/i18n, each returning a formatter bound to the active UI language. Reading the language from context is what subscribes a component to a language switch; components that read the IntlDate/IntlName singletons directly

Changed

  • Moved module generation fully server-side. The admin devtools now sends the raw generator config ({ name, table, generate, form, datatable }) instead of pre-rendered source strings, and the six frontend source builders were ported verbatim from the admin to apps/backend/app/services/module_generator.
  • Refactored module_controller.ts (~500 lines) into a thin HTTP controller delegating to focused module_generator service modules: an orchestrator, schema-derived context building, naming and DB-type helpers, a template renderer, and builders/ + writers/ subdirectories.
  • Split the root .env into per-workspace env files (apps/backend/.env, apps/admin/.env, apps/web/.env) so each app only ingests the variables it uses. Every docker-compose.yml service now loads its own app's env file, and the admin (Vite) and web (Next.js) apps rely on their frameworks' native env loading instead of custom root-file merging.
  • Renamed cross-app URL env variables: PAGE_MANAGER_API_URL → BACKEND_API_URL in the web app and VITE_PAGE_MANAGER_WEB_URL → VITE_WEB_URL in the admin app.
  • File Manager exceptions now extend ApiException.
  • Extracted the admin i18n context out of I18nProvider into app/i18n/context.ts and app/i18n/useLanguage.ts, so components reach the active language through a side-effect-free module instead of importing the provider and executing its module body.
  • The selected language is now persisted to local storage as its code rather than as the whole Language object.

Fixed

  • Fixed admin menu highlighting, which marked every ancestor entry active at once.
  • Fixes the containing section staying collapsed when a sub-route is opened directly.
  • Fixed backend functional test discovery: the tests/**/*.spec.(ts|js) globs in adonisrc.ts are not valid for the native fs.glob used by Japa v5, so the suite silently ran zero tests.
  • Fixed the backend lint script path (../scripts → ../../scripts), which made npm run lint fail before linting.
  • Removed the stale Japa v1-era @japa/spec-reporter wiring from tests/bootstrap.ts; the runner's built-in spec reporter is used instead.
  • Renamed app/exceptions/file_manager_exeptions.ts to file_manager_exceptions.ts, fixing the filename typo, and updated all imports.

Removed

  • Removed the root .env file.

[1.2.0] - 2026-07-17

Changed

  • Moved AdonisJS ESLint and Prettier configuration packages and Japa test dependencies from the root package manifest to the backend workspace so workspace-specific dependencies are owned by apps/backend.
  • Updated the Admin frontend architecture so global providers belong to the app composition layer under app/providers instead of being modeled as a separate architectural layer.

[1.1.0] - 2026-07-17

Added

  • Added image map editor for creating and editing interactive image map areas in the File Manager.

Changed

  • Migrated TypeScript from 5.8.3 to 7.0.2
  • Migrated AdonisJS from 6.x to 7.3.5
  • Refactored admin module-generator source builders to compose imports and source sections through shared source-file helpers while preserving the existing generation payload.
  • Renamed module-generator builder classes and files from template-builder terminology to source-builder terminology.
  • Updated module-generator frontend documentation to reference the new source-builder names.

Fixed

  • Fix prettier one line import break sorting and class order

Removed

  • Removed "prettier-plugin-one-line-imports"

[1.0.1] - 2026-06-30

Fixed

  • Resolved a circular dependency in language imports that could crash the admin app during language initialization.
  • Exposed the provider languages list through I18nProvider instead of importing the language config directly in UserDropdownMenu.
  • Updated language selection in UserDropdownMenu to use the provider-supplied languages collection, preventing inconsistent state during rendering.