# 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

- frontend: BaseDataTable now allows support for individually clickable row detection
- frontend: BaseDataTable now allows a footer slot and groupBy
- frontend: BaseDataTable exposed more props for better flexible layout variants
- backend: routes to read from valkey cache

### Changed

- frontend: scoped TypeScript types for query params (`QueryParamsInput`, `VueQueryParamsInput`)
- sockets: when joining without a roomId the user gets added to the default space – this is the default use case until spaces are fully supported
- frontend: updated boostrap flow handling; improved socket reconnect on connection drop

### Fixed

- frontend: `$data` query/write `execute()` now correctly unwraps reactive `params` (from composable) instead of just using it
- backend: prevent linked core from generating pluginTypes (the plain core does not have plugins)
- frontend: dataApi now allows formData to be sent
- frontend: fixed order of css layers to prevent problems between vuetify and tailwind
- frontend: send request body on DELETE operations (eg for bulk deleteMany routes)
- frontend: dataApi now allowes formData to be send 
- frontend: fixed order of css layers to prevent problems between vuetify and tailwind
- frontend: remove deleted items from store on dataDeleted socket/API responses (use body.deleted ids)

## [0.1.35] - 2026-05-14 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.34...v0.1.35" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Patch Changes

- fix: prevent unwanted DEBUG_MODE

## [0.1.34] - 2026-05-13 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.32...v0.1.34" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Added

- frontend: core exporter/importer functionallity
- frontend: core base data table

### Fixed

- frontend: fixed typo in types export
- backend: fixed user hard delete
- CLI/root: bring back service types export and fix CLI trying to import from false types dir
- CLI/build: improve build-helper and generated compose files

### Updated

- set eslint version to latest
- backend: add latest auto generated files in shared/\*\*/core
- frontend: hardened the vue script detection in vite plugin

## [0.1.32] - 2026-04-30 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.31...v0.1.32" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Changed

- VFS revert due to build issues. Will be reapplied soon

## [0.1.31] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.30...v0.1.31" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Changed

- CLI/Build: Increased default timeout to 240s
- CLI/Build: Added missing healthchecks to generated docker-compose example during `build` command
-

## [0.1.30] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.29...v0.1.30" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

- debug release

## [0.1.29] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.29...v0.1.30" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

- debug release

## [0.1.28] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.28...v0.1.29" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Changed

- added `!` to log output in check-dependencies to make npm rewrite that file with new permissions

## [0.1.27] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.26...v0.1.27" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Build: added missing publish folder `templates`

## [0.1.26] - 2026-04-27 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.25...v0.1.26" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Updated

- Frontend/Backend: sanitized rateLimit defaults, removed custom notFound handler

### Fixed

- Frontend/Core: fixed error return via dataApi.
- Frontend/Orchestrator: added vuetify back to dependencyOptimization and buildOpts.
- CLI, Build Process: fixed wrong default variable `RACLETTE_SERVER_BASE_URL` for workbench frontend in generated docker-compose example

## [0.1.25] - 2026-04-17 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.23...v0.1.25" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Backend/Mongoose: reverted to former range due to compatibility issues during build

### Changed

- refactored virtual file system to use globbing and hardlinks
- temporarily disabled the vite dependency optimization until [issue #38](https://gitlab.com/raclettejs/core-dev/-/work_items/38) is resolved

## [0.1.24] - 2026-04-15 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.23...v0.1.24" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- ESLint: frontend service uses `tsconfig.app.json` for type-aware TS and proper Vue SFC parsing (this means: eslint is working again!)
- `build` process works again if the app does not provide a "workbench" override folder
- `generated-config.ts` is now respecting the actual `frontend` dir for where to place the file

### Changed

- ESLint stack pinned to v9-compatible versions (v10 deferred); Tailwind ESLint plugin removed until it works with our setup.
- Local plugin registration now has a dir fallback for `src/frontend` and `src/backend` to allow a similar structure as npm-packaged plugins
- Improved the error message you get, when a plugin tries to register their plugin contract multiple times to support finding the bug
- Frontend/Orchestrator: widget `setup.ts` metadata now allows omitting `color`, `icon`, and `images` in `WidgetDeclaration`; registration now normalizes missing values with deterministic fallbacks (generated HSL color, empty icon, empty images array)

### Updated

- Dependency versions.
- Vuetify 4/tailwind integration

### Added

- `patchOwn` endpoint so users can edit their own user object.
- Backend: added `@app` tsconfig alias analog to frontend
- Support for windows operating systems.

## [0.1.23] - 2026-03-11 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.21...v0.1.23" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Orchestrator/Frontend: route params with nullish values are now passed properly to widget components

## [0.1.21] - 2026-03-05 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.20...v0.1.21" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Orchestrator/Frontend: route params which are clearly true/false or numbers will now be parsed as such to the widet props. This is an intermediate fix until the typesafe router is implemented

### Refactored

- Global: performance fixes
- Backend: updated corePlugin routes to use the new checkPermission middleware which will be expanded to incorporate the modular permission system

### Added

- Frontend: All widget components now receive a new prop `onAllWidgetsReady`. This function get's called once all widgets in the composition your component resides have rendered content to the DOM. Resolves #45
- Global: you can now define worksessions which allow you to share a document with a non authenticated user.
- Frontend: removeEmpty helper. Will be used in the future to make state attribute removal possible by passing `undefined`
- Backend: added fastify rate limiter. Can be configured via raclette.config under the backend config. See [package docs](https://www.npmjs.com/package/@fastify/rate-limit)

## [0.1.19] - 12.12.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.18...v0.1.19" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Updated

- Stack: updated to MongoDB v8.2

### Added

- Global: added bulk import to interactionLinks, compositions and tags
- Frontend: exposed widgetLoader and store types to plugins

## [0.1.18] - 05.12.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.17...v0.1.18" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Changed

- Backend: project data type deletion routes temporarily disabled. Will be reenabled soon
- Frontend: updated dependencies

### Added

- Frontend: usermenu - added alternate render mode for inline composition if no trigger id/title is set
- Frontend: Appbar can now house interactionLinks and inline compositions
- Frontend: appbar can now launch compositions in a floating window
- Backend: added restore endpoints for tag/user/composition/interactionLink
- Frontend: Token expiry will now redirect automatically to login. Last location during auth loss will be used for redirect later
- Frontend: Simple search input can now receive custom label and uses debounce before model update
- Frontend: PageNavigation can now rail
- Backend: Project dataType can now hold config values
- Global: Added new Tagtype "event"

### Fixed

- Backend: isDeleted handling in getAll routes. isDeleted needs to be explicitly true to see deleted entries
- Backend: TTL for auth token is not derived from raclette.config

## [0.1.17] - 06.11.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.15...v0.1.17" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Frontend: axios Delete handling
- Frontend: retrieval of deleted compositions/interactionLinks during socket join
- Frontend: notifications for delete events now show name

### Added

- Frontend: added i18n keys
- Frontend: hard delete of core datatypes
- Backend: getAll routes for core datatypes do now respect set filters

## [0.1.15] - 02.11.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.13...v0.1.15" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Frontend: prevent welcome screen from disapearing if modal is opened
- Frontend: parent cache racecondition if child queries get deleted/added in quick succession by the user fixed
- Frontend: fixed parent cach query child removal

## [0.1.13] - 29.10.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.12...v0.1.13" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Frontend: Added padding to welcome screen
- Frontend: removed old subscriber logic

## [0.1.12] - 27.10.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.11...v0.1.12" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- Backend: tag getAll does now respect filter, closes [Issue #35](https://gitlab.com/raclettejs/core/-/issues/35)
- Frontend: removed padding from grid layout wrapper
- Frontend: removed v-container from welcome screen
- Frontend: added missing i18n keys
- Frontend: fixed routeParam handling for components
- Frontend: cache widgets to prevent full rerendering
- Frontend: properly detect updated queries to remove their parent cache query
- Frontend: fixed #46 - interactionlink translations are now respected

### Added

- Backend: added `mongodb` as dependency, because `mongo-migrate` and `mongoose` depended on it
- Frontend: Tailwind now uses class-based dark mode detection and correctly syncs with raclette theme
- Frontend: routeParams for composition slots are now provided as props to the components
- Workbench: Added color column to tagList
- Backend: raclette\_\_core-tag now exposes a readByTitle function
- Frontend: Introduced new $store api functions
- Frontend: queries can now be removed from their callee
- Frontend: queries can now be cleared from their callee
- Frontend: new Eventbus name convention. Added Legacy support
- Added "slotLayout" as new field for compositions + support for WidgetsLayoutLoader
- Frontend: global Eventbus usage from plugins will now receive plugin key as sender attribute in emit payload
- Debug: added a global possibility to drop database collections via the devMenu for admins
- Frontend: Interaction Links can now be defined as slotType "inline". This will result in the composition being rendered where the interaction link is located. For now this only work in the usermenu
- Frontend: Query cache creation can now be disabled via query options

### Changed

- CLI: `add-package` now runs `yarn add` to validate package+version and to write the package also in the apps package.json, before writing it to the packages.json
- Set supported/recommended Node Version to latest LTS instead of newest version
- Frontend: limit/offset/search are now reserved query params. They will globally be extracted from request.query/request.body and moved to requestParams.options for cleaner property handling and query building
- Workbench: added fallback to interactionlink dislay name if no description given
- refactored!: changed action Identifier from dataPush to dataGet
- Frontend: Better handling for composition route params to prevent full refresh of composition
- Frontend: Darkmode now as smoother primary and secondary color

### Fixed

- Workbench: external-app-plugin retrieval logic does not read the content of vue files and therefore does not need app-specific dependencies
- Workbench: the optional _workbench_ settings entry from the apps `raclette.config` now gets respected when building
- Frontend: @app alias for vite had been missing and is now back

## [0.1.11] - 19.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.10...v0.1.11" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Security

- Updated all Node.js dependencies to latest versions
- Removed caret (^) version ranges from package.json to prevent automatic minor/patch updates

### Fixed

- buttons will not longer have `color: inherit`

## [0.1.10] - 12.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.9...v0.1.10" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Changed

- added "Overview of all changes" link to all previous versions

### Refactor

- changed response structure of queries execute. Will now always return {result:any, response:any} -> see docs for further information
  - https://docs.raclettejs.com/docs/examples/recipes/creatingDataInTheBackend
  - https://docs.raclettejs.com/docs/examples/recipes/readingDataFromTheBackend
- queries now always return dataArr

### Fixed

- fixed missing "raclette" string in welcome page
- fixed missing "new" i18n key in user Notifier
- fixed min-width in userNotifier
- Add `<button>` cursor styles from vuetify's reset css (which is disabled), to fix missing `cursor: pointer` css rule.

## [0.1.9] - 11.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.8...v0.1.9" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Added

- language preference is now properly respected in all components

## [0.1.8] - 11.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.7...v0.1.8" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Changed

- language and theme toggle in user menu now always store preference in localstorage, not just in dev mode

## [0.1.7] - 11.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.6...v0.1.7" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Style

- gave the default landingpage some love

### Fixed

- fixed query handler id suffixing

## [0.1.6] - 11.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.5...v0.1.6" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

- version updates

## [0.1.5] - 11.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.4...v0.1.5" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- "refresh all queries" functionallity in user menu now works as expected
  - issue was introduced during query api update in v0.1.3

## [0.1.4] - 10.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.3...v0.1.4" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- aliases "@app", "@raclettejs/core/frontend" & "@raclettejs/core/backend" are now resolved properly in the IDE
- fixed unspecific locale fallback

## [0.1.3] - 10.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.2...v0.1.3" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Fixed

- useStore option is now respected in data fetch and write
  - direct server responses are now available in query and dataApi via response object
- read and write operations via the pluginApi -> $data - will now get a nanoid attached to their actionId to prevent the core from merging different queries to the same target within the same vue component. You can now pass `id` as a sipling to `params` and `options` to set the id yourself if you don't want a nanoId to be generated
- renamed all Types and core internal imports from Client* to Frontend*
  - this was forgotten in a former refactoring step and resolves build issues encountered after going Live

## [0.1.2] - 04.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.1...v0.1.2" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Changed

- cache TTL can now be configured via raclette.config.js -> if none is set will default to -1 which implies indefinite ttl
  - -> make sure to set ttl explicitly during cache.cache() if important for businesslogic!

## [0.1.1] - 03.09.2025 <a href="https://gitlab.com/raclettejs/core/-/compare/v0.1.0...v0.1.1" target="_blank" rel="noopener"><b>Overview of all changes</b></a>

### Added

- i18n will now fallback to other region locale if requested region locale is not provided. Will finally fall back to fallbackLocale

### Removed

- removed self dependency from backend on core and workbench

### Fixed

- added core. prefix to notifications.
- Prevent template exception during notification from system user
