- Naming - Rename opts to options in stat getters.
- Technical - Apply ESLint rules to old files.
- Filters - Fix potential chart / records retrieval errors (Regression introduced in v3.2.2).
- Technical - Apply ESLint rules to some files.
- Schema - Schemas having fields with validations based on complex regex are now properly sent in remote environments.
- Validations - Fix the regexp content transmission for "is like" validations.
- Configuration - The liana now requires recursively model files in
modelsDir
and customization files inconfigDir
.
### Changed
- Technical - Apply ESLint rules to an old code.
- Exports - Fix broken exports if users restart a new browser session (ie quit/restart browser).
- Security - Patch a vulnerability using the latest
mocha
dependency.
- Dependency - Upgrade the forest-express dependency for onlyCrudModule option.
- CI - Update NodeJS version to v11.14.0 for Travis.
- Technical - Update yarn.lock.
- Schema Synchronisation -
FOREST_DISABLE_AUTO_SCHEMA_APPLY=true
now deactivates properly the automatic schema synchronisation on server start.
- Technical - Use the latest
onchange
dependency.
- Security - Patch vulnerabilities removing the unused
nsp
dependency. - Security - Patch vulnerabilities removing the unused
gulp
dependency. - Security - Patch vulnerabilities using the latest
eslint
dependency. - Security - Patch vulnerabilities using the latest
babel
dependencies. - Security - Patch vulnerabilities using the latest
mocha
dependency. - Security - Patch vulnerabilities using the latest
sequelize
dependency. - Security - Patch vulnerabilities using the latest
sequelize-fixtures
dependency. - Security - Patch vulnerabilities using the latest
pg
dependency. - Security - Patch vulnerabilities using the latest
forest-express
dependency. - Security - Patch a vulnerability using the latest
lodash
dependency.
- Sequelize - Support new Sequelize version 5.
- Authentication - Fix the 2FA authentication with the new implementation of exports authentication.
- Technical - Fix the latest built version.
- Build - Improve build script for beta versions.
- Security - Fix implementation of session token passed in headers while downloading collections records.
- Security - Do not pass session token in query params while downloading collections records.
- Actions - Fix default action route generation if the action name contains camelcase words.
- Integrations - Fix Stripe global payments list display.
- Build - Republish the beta version on the beta tag.
- Technical - In development environment, ensure that the schema send has the exact same data and format like with the toolbelt.
- Schema - Fix JSON formatting for action names containing
"
characters. - Schema - The liana can now read properly the schema file in production mode.
- Build - Tag versions on git for each release.
- Build - Developers can now create beta versions.
- Developer Experience - On start, create a
.forestadmin-schema.json
file that contains the schema definition. - Developer Experience - On production, load
.forestadmin-schema.json
for schema update. - Developer Experience - Developers can deactivate the automatic schema synchronisation on server start using the
FOREST_DISABLE_AUTO_SCHEMA_APPLY
environment variable.
- Integrations - Fix Stripe global payments list display.
- Build - Republish the regular version on the latest tag.
- Technical - Add babel.
- Configuration - Developers can define a blacklist or whitelist of models they want to see in their admin panel (using
includedModels
orexcludedModels
options).
- Smart Fields - Display a warning to show Smart Fields declared without a field attribute.
- Smart Fields - Smart Fields declared without a field attribute are not sent in the Apimap anymore.
- Validations - Fix bad "is longer than" validation definition in the Apimap for
len
validation if the minimal value is 0 (for instance,len: [0, 255]
).
- API - Prevent Apimaps from having duplicate fields, segments and actions, if the developer call the init function multiple times.
- Technical - Light changes in associations code for readability.
- Associations - Fix error on related data search if no record is found. [Regression introduced in 2.16.2]
- Associations - Fix limit and offset of the query getting has many associations.
- Live Query Segments - Live Query segments work if the related collection primary key is not named "id" and select return "id".
- Default Values - UUID fields with a dynamic default value won't be pre-filled with "[object Object]" in forms anymore.
- Live Query Segments - Live Query segments work if the related collection primary key is not named "id".
- Server start - Fix a crash if developers add a Smart Action to a generated integration collection that does not have existing one by default.
- List Related Records - Improve the speed of the search query.
- List Related Records - Improve the speed of counting records.
- List Related Records - Fix count of related records when relation is ManyToMany with an alias.
- Authentication - Improve the log message when 2FA secret key is not set.
- Authentication - Fix an empty user id attribute in the JWT tokens.
- Integrations - Developers can add Smart Actions to Integration Collections.
- Search - Fix searches that contains special characters.
- Search - Fix searches that start with the "+" character.
- Technical - Add the missing "babel-runtime" dependency.
- Search - Fix potential bad results while searching on collections having Smart Fields custom searches.
- Search - Fix the extended search results if the collection does not contain displayed associations.
- Search - Fix the extended search results if the collection does not contain searchable fields.
- Authentication - Add two factor authentication using time-based one-time password.
- Records Deletion - The deletion of a record which has already been deleted does not display an error anymore.
- Smart Actions - Fix Smart Actions Forms fields positions on Smart Collections.
- Performance - Improve the speed of listing the records by executing their count into another request.
- Records List - Fix the list display of "native" collections that don't have any primary keys or a column named "id".
- Mixpanel Integration - Only retrieve events that are less than 60 days old to be compliant with the Mixpanel's API.
- Mixpanel Integration - Change the integration to display the last 100 Mixpanel events of a "user" record.
- Mixpanel Integration - Remove the Mixpanel integration pre-defined segments.
- Charts - Fix leaderboard charts on models having several belongsTo targeting the same model.
- Smart Fields - Always pass a Sequelize instance as the first parameter of the Smart Field value getter functions.
- Associations - Deactivate the records validations on hasMany association to prevent unexpected validation error (see sequelize/sequelize#9559).
- Intercom Integration - Display the Intercom error in the server logs if the conversations list retrieval fails.
- Intercom Integration - Users can now access to the Intercom Details page.
- Intercom Integration - Fix the integration routes for projects using the "expressParentApp" configuration.
- Records Update - Allow model hooks to change fields values while updating a belongsTo or hasOne association.
- Related Data - Fix the related data retrieval if the foreignKey has been specified. [regression introduced in 2.11.3]
- Permissions - Fix automated permission for projects having multiple teams.
- Records Creation - Prevent associations defined while creating a new record from overwriting associations created by hooks. [regression introduced in 2.1.1]
- Records List - Fix a regression on records ordering due to Lodash dependency upgrade. [Regression introduced in 2.8.5]
- DateOnly Fields - Fix potential bad values for projects using Sequelize 4+.
- Pie Charts - Fix potential bad "dateonly" values for projects using Sequelize 4+.
- Charts - Users can create "Leaderboard" charts.
- Charts - Users can create "Objective" charts.
- Technical - Add a new apimap property "relationship".
- Performance - Make the related data count retrieval much more efficient if the result contains thousands of records.
- IP Whitelist - Fix broken ip range of form 'x.x.x.x - x.x.x.x'.
- Validation - On create or update, Record validation errors will now return a 422 status code (instead of 500).
- Technical - Cleanup the dependencies.
- Segments - Users can create segments with SQL queries.
- Permissions - Add a permission mechanism to protect the data accordingly to the UI configuration.
- Smart Actions - Fix form values prefill on Smart Actions having a custom endpoint.
- Search - Display highlighted matches on table view when searching.
- Search - Fix the search on Enum fields.
- Search - Return empty result instead of the whole list of records if no field can be searched on the collection.
- Search - Fix potential broken search on collections that have been customized before the liana.init call.
- Related Data - Fix a regression on related data access due to Lodash dependency upgrade. [Regression introduced in 2.8.5]
- Security - Upgrade the Lodash dependency for security reasons (https://nodesecurity.io/advisories/577).
- Stripe Integration - Improve global error handling if the stripe id is missing or incorrect in the database
- Collections - Allow search fields customization before liana initialization.
- Default Values - Fix the prefilled value in creation/update forms on DateOnly fields having Sequelize.NOW default value.
- Premium Security - Handle mutli instances ip whitelist refresh.
- Technical - Update yarn.lock.
- Premium Security - Add IP Whitelist feature.
- Smart Relationships - Make the Smart BelongsTo work when it references a Smart Collection record.
- Related Data - Delete records directly from a hasMany listing.
- Integration - Prevent client console error on Close.io leads failed retrieval.
- Smart Actions - "Single" type Smart Action forms can now be prefilled with contextual values.
- Authentication - Fix the missing email/name/teams information set in the token for user using Google SSO.
- Default Values - Fix the prefilled value in creation/update forms on Date fields having Sequelize.NOW default value.
- Default Values - Make the record creation possible if some fields of the model have a default value function.
- Collections - Allow collection customization before liana initialization.
- Live Query - Replace all occurences of the special character '?' in the Live Query mode.
- Smart Fields - Boolean Smart Fields that return a "false" value are now properly sent though the API.
- Security - Fix low impact vulnerabilities.
- Technical - Use local packages for npm scripts.
- Smart Elements - Fix error swallowing on start.
- Smart Actions - Developers can define Smart Actions that can send their request to a different endpoint than the current environment endpoint.
- Close.io Integration - Send a "No Content" (204) status code if not customer lead has been found instead of an "Internal Server Error" (500).
- Smart Fields - Display a warning if an error occurs during Smart Field value computations.
- Filters - Fix the "is not" operator behaviour on Boolean fields.
- Live Query - Fix charts generation for values equal to 0 or null.
- Smart Actions - Users can define Smart Actions only available in a record detail.
- Apimap - Catch potential failure during the apimap sorting.
- Smart Actions - Display the Smart Actions form fields in the declaration order. [Regression introduced in 2.4.0]
- Filters - Add a new "is after X hours ago" operator to filter on date fields.
- Search - Prevent potential extended search errors if the collection has belongsTo associations to collections having Smart Fields.
- Live Queries - Prevent the execution of obvious "write" queries.
- Live Queries - Prevent the execution of multiple queries.
- Apimap - Prevent random sorting collections and useless updates.
- Search - Prevent the records search to crash if no fields parameter is sent by the client.
- Charts - Fix the missing variation value for Value Charts computed with a specific period filter. [regression introduced in 2.2.3]
- Smart Fields - Compute only the necessary Smart Fields values for list views and CSV exports.
- Smart Fields - Fix concurrency between Smart Fields setters and enable multiple setters to work properly on a record update.
- Security - Fix the usage of new Sequelize Operators in list views for a reinforced security.
- CORS - Re-authorize forestadmin.com in the CORS configuration. [regression introduced in 2.0.4]
- Security - Fix the usage of new Sequelize Operators in list views for a reinforced security.
- Security - Fix the condition to use new Sequelize Operators for a reinforced security.
- Security - Support new Sequelize Operators for a reinforced security.
- Charts - Users can create charts using raw database queries with the Live Query option.
- Creation - Fix broken "hasOne" associations defined while creating a new record.
- Authentication - Users can connect to their project using Google Single Sign-On.
- Performance - Reduce drastically the number of CORS preflight requests send by the API clients.
- Authentication - Developers whom want to extend the Admin API can now use the authentication for the overridden routes.
- Smart BelongsTo - Developers can now implement Smart BelongsTo values updates.
- Smart Fields - Add a "isFilterable" option to let them appear in the filters selection.
- Smart Fields - Prevent Smart Fields promise values injection errors on related data retrieval.
- Security - Remove a vulnerability by upgrading Moment.js library.
- TypeScript Support - Forest can now load TypeScript modules.
- Smart Fields - Prevent Smart Fields values injection errors on related data retrieval.
- Summary View - Fix potential Summary View freeze on records having "Point" type fields (if some related data are displayed).
- Collections Names - Collection names are now based on the model name.
- Stripe Integration - Allow users to display Stripe records in the Details view.
- Apimap - Do not send fields with an unknown type in the Apimap anymore. 🛡
- Database Info - Send the database dialect in the Apimap metadata.
- Charts - Fix some bad Line charts aggregation due to Daylight Saving Time.
- Validations - Allow an array with one value to define minimum value length validation.
- Custom Domains - Make the feature usable natively with the CORS_ORIGINS variable.
- Security - Remove all detected vulnerabilities upgrading some dependencies (nsp check --output summary).
- Performance - Improve MSSQL search performances (MSSQL Search is case insensitive).
- Smart Fields - Do the Smart Fields values injection in the Serializer to simplify Smart Relationships implementation.
- Search - Fix a regression on UUID fields search. 🛡
- Search - An extended search on a belongsTo associated model with an UUID value will not crash anymore. 🛡
- HasMany Dissociation - Catch SQL constraints errors on record dissociation.
- Types Support - Support Point field type.
- Smart Relationships - Add a warning if a Smart Collection does not define the "idField" attribute necessary for Smart Relationships.
- Smart Fields - Prevent the Smart Fields computation errors to generate a crash and handle it letting the value empty.
- Line Charts - Fix Line Charts potential crash on Postgresql databases.
- Search - Fix the regression of the searchFields option.
- Charts - Fix one-relationship filters for projects with collections names different than the filter field name send in the request.
- Sessions - Display a clean error message if the renderingId and envSecret are missing or inconsistent.
- Initialisation - Prevent bad "import" syntax error detections on initialisation.
- Stripe - Fix the 'mapping' collection name on Express/Mongoose.
- Integrations - Ensure all the models are loading before integrations setup.
- Initialisation - Do not try to require file that don't have the js extension.
- Intercom - Make the conversation details accessible.
- Initialisation - Prevent bad ES2017 syntax error detections on initialisation.
- Initialization - Fix the init phase when sequelize option is not present.
- Intercom Integration - Prefer Intercom accessToken configuration to old fashioned appId/apiKey.
- Intercom Integration - Remove support for old configuration parameter use "userCollection" (use mapping instead).
- Line Charts - Support SQLite dialect for groupBy fields.
- Smart Fields - Add a parameter to specify if the sorting is allowed on this field.
- Resource Retrieval - Fix the record retrieval for a record having no belongsTo/hasOne for projects using Sequelize 4.8.x.
- Charts - Fix broken charts if they contain relationship filters on model fields that have a different column name.
- Initialization - Ignore directories while loading models.
- Initialization - Display an explicit error log if a model cannot be loaded properly.
- Pie Charts - Prevent a potential crash on models having a column named "key".
- Composite Primary Keys - prevent crash with null values.
- Export - Fix datetime formatting regression introduced by liana version 1.3.0.
- HasMany Display - Fix HasMany association display for models having a composite primary key.
- Export CSV - Fix HasMany association export for models having a composite primary key.
- Search - Fix a potential search regression due to multi database support (1.3.0).
- Charts Line - Fix the MySQL detection regression.
- Integrations - Add the Layer integration.
- Resources Route - Allow users to call a ResourcesRoute from their app.
- Apimap - Fix collections schema for collections having snakecase foreign keys.
- Onboarding - Display an error message if the envSecret option is missing.
- Databases Connections - Support multiple databases connections.
- Code Inspection - Fix Forest customization code inspection to be recursive through directories.
- Exports - Escape special characters for the string fields.
- Integrations - Display models "mapping" errors if any.
- Exports - Fix bad initial implementation for exports authentication.
- Exports - Forest can now handle large data exports.
- Record Creations - Prevent issue on record creations for models with UUID primary key default value.
- Integrations - Add a first version of Layer integration.
- Validations - Start the support of forms validations (with 9 first validations).
- Fields - Send the defaultValue for creation forms.
- Search - Split "simple" and "deep" search features with a new param.
- Sorting - Fix the sorting issue on the primary keys for MSSQL projects (bad fix on the previous version).
- Sorting - Fix the sorting issue on the primary keys for MSSQL projects.
- Records Update - Prevent a crash on record updates for records that have no attributes.
- Search - Users can search on the hasMany associated data of a specific record.
- Technical - Setup the continuous integrations configuration for Travis CI.
- Filters - Boolean filter condition with a null value will not crash anymore.
- Search - Developers can configure in which fields the search will be executed.
- Search - Remove some useless conditions to improve performance (id = 0).
- Filters - Add the before x hours operator.
- Technical - Support Sequelize 4.2.0.
- Record Deletions - Handle the record deletion on models having a composite primary key.
- Liana Version & Orm Version - Prevent server crash on bad format version.
- Apimaps - Prevent foreign key field creation for belongsTo associations having a constraints set to false.
- Resources Getter - Support MSSQL records list retrieval without order in the query.
- Apimap - Send database type and orm version in apimap.
- Pie Charts - Support MSSQL dialect for "Manual" Pie charts.
- Line Charts - Support MSSQL dialect for "Manual" Line charts.
- Error Messages - Display the stack trace on unexpected errors.
- Error Messages - Display an explicit warning if Forest servers are in maintenance.
- Records Serialization - Fix the object types case (kebab case) to prevent potential JSON api adapter errors on client side.
- Charts - Fix a regression on Count Charts for MySQL apps since liana version 1.1.3.
- HasMany Smart Fields - Fix routes conflicts between hasMany Smart Fields and other associations.
- Smart Collections - Add a new isSearchable property to display the search bar for Smart Collections.
- Filters - Add the not contains operator.
- Composite Keys - Support composite primary keys.
- Types Support - Support BIGINT field type.
- HasMany ListViews - Fix the display of hasMany records for a model having a primaryKey that is not an "id" column and that has the related column hidden in the hasMany list view.
- HasMany ListViews - Smart Fields computed with other record attributes are now properly displayed even if the related record attributes have their columns hidden in the list view.
- Smart Fields - Serialize Smart Fields values for hasMany associations.
- Customization Errors - Do not send the apimap when users create Forest customization with syntax errors in code.
- Customization Errors - Add errors in the console when users create Forest customization with syntax errors in code.
- Smart Fields - Serialize Smart Fields values for belongsTo association.
- HasOne Associations - Users can now update records with hasOne associations.
- List Views - Smart Fields computed with other record attributes are now properly displayed even if the related record attributes have their columns hidden in the list view.
- Smart Fields - A Smart Field used as a reference field is now displayed properly in the search results of a belongsTo field.
- Smart Fields - Add an explicit error message if the search on a Smart Field generates an error.
- Smart Fields - A search on a collection having Smart Fields with search method implemented will respond properly (bypassing failing Smart Fields search if any).
- Smart Fields - Developers can now define Smart Fields setters.
- Smart Fields - Replace the Smart Fields value method by get.
- Filters ToDate - Fix the end of period filtering for "toDate" date operator types.
- Smart Fields - Smart fields are sent in the detail view request.
- Time-based chart - Ensure the groupBy is always valid.
- Setup Guide - Add integration field to the collections to distinguish Smart Collections and Collections from integrations.
- Search - Fix the search on UUID type columns that are not a primary key.
- Version Warning - Display a warning message if the liana version used is too old.
- Types Support - Support Dateonly field type.
- Smart Actions - Users don't have to select records to use a smart action through the global option.
- Sorting - Fix records retrieval with a sort on an association field.
- Record Getter - Prevent issues on models that have overriden the "toJSON" method.
- Search - Primary key string fields are now searchable.
- Pie Charts - Fix Pie Charts having a groupBy on a belongsTo/hasOne relationship.
- Record Getter - Prevent an unexpected error if the record does not exist.
- Types Support - Support CITEXT field type.
- Configuration - Display an error message if the Smart Action "fields" option is not an Array.
- Models - The sequelize db option is now optional.
- Filters - Fix filters regression on belongsTo associations (due to Boolean support for MySQL).
- Filters - Fix filters on boolean fields using MySQL databases.
- Record Creation - Fix the record creation with many-to-many associations.
- Smart Actions - Support file download.
- Types Support - Support JSON field type (and behaves exactly like JSONB).
- Smart segment - Smart segment are now correctly updated.
- Line Chart - Fix ambiguous groupBy field for MySQL databases.
- Relationships - Fix the retrieval of a record when a scope is applied on a relationship.
- Line Charts - Fix a regression displaying some bad values in specific line charts.
- Segments - Smart Segments can be created to define specific records subsets.
- Package - Add contributors, keywords, homepage...
- Package - Remove all unused packages.
- Dependencies - Freeze the dependencies versions to reduce packages versions changes between projects/environments.
- Configuration - Rename secret values to envSecret and authSecret.
- Installation - envSecret and authSecret are now defined in environment variables and, thus, in all non-development environments, need to be set manually.
- Search - Fix search requests on associated collections having different fields names from database columns names.
- Date Filters - Date filters operators are now based on the client timezone.
- Packages - Remove useless node-uuid package.
- Pie Charts - Fix potential ambiguous groupBy field name.
- Search - Fix broken search on collections with associations using UUID primary keys.
- Chart Filters - Support chart filters on belongsTo associations.
- Pie Charts - Support group by on belongsTo associations.
- Deserialization - Expose the Deserialization module to the API.
- Schemas - Expose the Schemas module to the API.
- Errors Tracking - Catch errors on app launch / apimap generation / liana session creation.
- Resource Creation - Fix the creation of records having NOT NULL association constraints in the database.
- Custom Actions - Fix missing actions for Smart Collections.
- Has Many Getter - Fix the missing data for belongsTo fields while retrieving «has many» associated records.
- Field Type - Support Time field type.
- Models - Support resources/charts queries on models having a defaultScope configuration.
- Model - Support model "field" option to specify a database column name.
- Search - Fix global search specific to model sequelize definition.
- Records Index - Fix the duplicate records displayed on the front if the ids are hidden in the list.
- BelongsTo - Better support belongsTo relationships (as, foreign keys, etc.).
- BelongsTo - Fix belongsTo retrieval if the model and association names are different (ex: Capitalized model names).
- Schema - Support UUID field type.
- Performance - Request only displayed fields in the records list.
- Search - Fix the search on collections with uuid column as a primaryKey.
- Filters - Add the new date filters protocol.
- Line Charts - Fix the line charts display if no records are found.
- Value Chart - Fix previous period count regression due to filterType introduction.
- Smart field - Enable search on smart fields.
- ES5 - Secure the ES5 compatibility with a git hook.
- BelongsTo - Fix the belongsTo associations on record creation.
- ES5 - Fix ES5 compatibility.
- HasMany - Fix the hasMany fetch when an integration is set
- Filter - Support multiple filters on the same field.
- Filters - Users want the OR filter operator with their conditions (restricted to simple conditions).
- Record Update - Fix the potential dissociations on record update.
- Pagination - Fix the hasMany number of records.
- Close.io - Fix the search regression.
- Integration - Add the Close.io integration
- Filters - Users want to have "From now" and "Today" operators.
- Search - Fix the search when an association field comes from an integration.