6.4 KiB
6.4 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
Fixed
- Fixed File Manager operations on directories without a
.keepmarker. A directory a file was uploaded into, or one that exists in the bucket but was not created through the app, was listed but could not be renamed, deleted or resolved (E_DIR_NOT_FOUND); directory existence now falls back to the prefix holding any entry instead of relying on the marker alone. - 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. - Moving, copying and deleting a folder now follow the listing pagination token, so folders holding more than 1000 objects are no longer processed only in part.
- Fixed
getEntryraising a bareError(HTTP 500) for a path that is neither a file nor a directory; it now raises theE_DIR_NOT_FOUND404. - 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.
Removed
[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.