6.5 KiB
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 viaSiteSettingsMapper. - 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
aaoverwrote and then deletedaab). 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 todeleteAll. - Fixed the web container running against the host's
node_modules: thewebservice keepsapps/web/node_modulesin 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
ApiExceptionbase 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. Thelightpreset 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
InputTiptapEditorcomposed form field. - Added
useIntlDateanduseIntlNamehooks underapps/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 theIntlDate/IntlNamesingletons 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 toapps/backend/app/services/module_generator. - Refactored
module_controller.ts(~500 lines) into a thin HTTP controller delegating to focusedmodule_generatorservice modules: an orchestrator, schema-derived context building, naming and DB-type helpers, a template renderer, andbuilders/+writers/subdirectories. - Split the root
.envinto per-workspace env files (apps/backend/.env,apps/admin/.env,apps/web/.env) so each app only ingests the variables it uses. Everydocker-compose.ymlservice 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_URLin the web app andVITE_PAGE_MANAGER_WEB_URL→VITE_WEB_URLin the admin app. - File Manager exceptions now extend
ApiException. - Extracted the admin i18n context out of
I18nProviderintoapp/i18n/context.tsandapp/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
Languageobject.
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 inadonisrc.tsare not valid for the nativefs.globused by Japa v5, so the suite silently ran zero tests. - Fixed the backend
lintscript path (../scripts→../../scripts), which madenpm run lintfail before linting. - Removed the stale Japa v1-era
@japa/spec-reporterwiring fromtests/bootstrap.ts; the runner's built-in spec reporter is used instead. - Renamed
app/exceptions/file_manager_exeptions.tstofile_manager_exceptions.ts, fixing the filename typo, and updated all imports.
Removed
- Removed the root
.envfile.
[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
appcomposition layer underapp/providersinstead 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.3to7.0.2 - Migrated AdonisJS from
6.xto7.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
languageslist throughI18nProviderinstead of importing the language config directly inUserDropdownMenu. - Updated language selection in
UserDropdownMenuto use the provider-suppliedlanguagescollection, preventing inconsistent state during rendering.