Add initial project files
This commit is contained in:
+135
@@ -0,0 +1,135 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
|
||||
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
### Changed
|
||||
|
||||
### 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.
|
||||
Reference in New Issue
Block a user