- Filters - Support 'OR' filters with conditions on references.
- Schema - Schemas having fields with validations based on complex regex are now properly sent in remote environments.
- Security - Remove unnecessary leeway of 30s on JWTs.
- Schema - Fix potential server crash on start due schema formatting internal error.
- Export - Fix broken export action from related data. [Regression introduced in 2.15.1]
- Record Update - Prevent
encrypted_password
removal on Devise users models update.
- Exports - Fix broken exports if users restart a new browser session (ie quit/restart browser).
- Smart Actions - Fix broken Smart Actions having a name containing emoji without custom endpoint.
- Smart Actions - Fix crash on server start.
- Search - Enable PostgreSQL's CITEXT fields in search.
- Error Handling - Display an explicit error message if the envSecret is detected as missing or unknown during data a API request.
- 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.
- Records Display - Restrict record data serialization based the schema collection fields in the #create and #update actions.
- Records Display - Restrict record data serialization based the schema collection fields in the #show action.
- Records Display - Ensure that the data is properly sent even if an attribute serialization happens for an unknown reason.
### Fixed
- Filters - Fix resources display if filtered with associations conditions with the related columns hidden in the list. 🛡
- Schema - Ensure that unhandled field types are not defined anymore in collections schemas. 🛡
- Charts - Fix Value charts having filters on associations targeting a collection having with a custom table name. 🛡
- Charts - Fix Value charts having filters on associations targeting a collection associated through multiple
belongs_to
association to the current resource. 🛡
- Export - Fix broken export action. [Regression introduced in 3.0.0-beta.7]
- Filters - Fix association filtering on collections having several associations targeting the same table.
- Charts - Users can create "Leaderboard" charts.
- Charts - Users can create "Objective" charts.
- Technical - Add a new apimap property "relationship".
- Validations - Remove badly set validations on Array fields.
- Schema - Fix empty validations set in the schema file.
- Build - Fix liana version set in the
.forestadmin-schema.json
meta.
- Build - Fix liana version set in the
.forestadmin-schema.json
meta.
- Build - Fix regressions in the build script.
- 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.
- Schema - Developers can deactivate the automatic schema sending on server start (using
FOREST_DISABLE_AUTO_SCHEMA_APPLY
environment variable, deprecatingFOREST_DEACTIVATE_AUTOMATIC_APIMAP
).
- Records Display - Restrict record data serialization based the schema collection fields in the #create and #update actions.
- Records Display - Restrict record data serialization based the schema collection fields in the #show action.
- Records Display - Ensure that the data is properly sent even if an attribute serialization happens for an unknown reason.
- Filters - Fix resources display if filtered with associations conditions with the related columns hidden in the list. 🛡
- Schema - Ensure that unhandled field types are not defined anymore in collections schemas. 🛡
- Charts - Fix Value charts having filters on associations targeting a collection having with a custom table name. 🛡
- Charts - Fix Value charts having filters on associations targeting a collection associated through multiple
belongs_to
association to the current resource. 🛡
- Export - Fix broken export action. [Regression introduced in 2.15.1]
- Filters - Fix association filtering on collections having several associations targeting the same table.
- Charts - Users can create "Leaderboard" charts.
- Charts - Users can create "Objective" charts.
- Technical - Add a new apimap property "relationship".
- Build - Tag versions on git for each release.
- Build - Developers can now create beta versions.
- Validations - Remove badly set validations on Array fields.
- Error Logging - Improve routing error logs for some edge cases.
- Initialization - Fix
included_models
andexcluded_models
options.
- Models - Fix models having a table name being a reserved SQL word.
- Records List - Fix filtering on the records list. [Regression introduced in 2.14.2]
- Security - Upgrade sprockets dependency version to fix a known vulnerability.
- Records List - Avoid crash when filtering on a bad association or a bad field in resource getter.
- API - Fix API crashes due to bad Forest API initialization if
FOREST_DEACTIVATE_AUTOMATIC_APIMAP
is configured. - Apimap - Fix the Apimap info sent with the
forest:display_apimap
task.
- Apimap - Developers can deactivate the automatic Apimap sending on server start (using
FOREST_DEACTIVATE_AUTOMATIC_APIMAP
environment variable). - Apimap - Add a
forest:display_apimap
rake task to manually inspect the current Apimap version. - Apimap - Add a
forest:send_apimap
rake task to manually synchonize the models/customization with Forest servers.
- Technical - Remove a useless query param in the authorizations request.
- Technical - Simplify the Bootstraper initialize signature.
- Filters - Fix BelongsTo filters on a destination table having a "non conventional" singular name. [Regression introduced in 2.8.5]
- Live Query - Trim whitespaces in all queries and subqueries to avoid errors.
- Live Query Segment - Optimize resource retrieving to avoid using too much memory.
- Segment - Return an error 404 instead of 500 when a collection with an incorrect segment is called.
- Permissions - Fix potential bad forbidden responses on first requests after server start.
- Authentication - Fix authentication for projects using Ruby 2.2.X.
- Development Autoreload - Prevent "A copy of ForestLiana::BaseController has been removed from the module tree but is still active!" in development mode.
- IP Whitelist - Add IP Whitelist feature.
- Authentication - Add two factor authentication.
- Logs - Display an error log (and stacktrace) in case of routing error.
- Logs - Display an error log (and stacktrace) in case of NoMethodError in the find_resource before_filter.
- Records Deletion - The deletion of a record which has already been deleted does not display an error anymore.
- STI Models - Display a warning on server start for any STI parent models that do not have children.
-
[BREAKING] Collections - Fixes potential behaviour issues of collections having a name that collides with query params keys (searches, pages, sorts, timezones,...). The smart actions params are retrieved differently: old -->
params[:income][:data][:attributes][:values][:amount]
new -->params[:data][:attributes][:values][:amount]
-
STI Models - Make the field corresponding to the inheritance_column (
type
by default) accessible to STI parent models that don't have children.
- Gems Support - Improve ActiveType::Object detection to ignore it.
- Gems Support - Ignores ActiveType::Object association during introspection and interactions (https://github.com/makandra/active_type).
- Records Details - Fix record details display. [Regression introduced in 2.11.6]
- Smart BelongsTo - Fix records list retrieval if the collection contains a Smart BelongsTo column that has been hidden. [Regression introduced in 2.9.1]
- Search - Fix the broken search if the collection contains Array fields. [Regression introduced in 2.9.0]
- Search - Highlight the records id if it matches with the search value.
- Search - Fix the search while typing single quotes in the search value.
- Records Display - Fix collections display for project using Ruby version inferior to 2.3.0. [Regression introduced in 2.10.1]
- Smart BelongsTo - Fix the reference field values display in the records list of collections using Smart BelongsTo relationships.
- Records Count - Fix list display error if the collection name is different from the class name (routing issue to compute the count).
- Performance - Improve the speed of listing the records by executing their count into another request.
- HasMany Relationships - Fix the performance of the related data retrieval if the collection has hidden belongsTo associations in the list.
- Mixpanel Integration - Only retrieve events that are less than 60 days old to be compliant with the Mixpanel's API.
- ActiveStorage - Support ActiveStorage without having to set eager_load property to true in development environments.
- Smart Views - Fix associated data retrieval from Smart Views (where the fields to retrieve are not specified in the query params).
- Stripe Integration - Improve the error handling if the customer Stripe Id is not found.
- Stripe Integration - Trial to prevent uninitialized constant errors with Stripe classes.
- Mixpanel Integration - Add the integration to display the last 100 Mixpanel events of a "user" record.
- Database Connection - If the database is not accessible on server start, the liana doesn't send an Apimap anymore (it was a "partial" Apimap in such case).
- Technical - Use the "official" domain for the default server host.
- Record Creation - Fix the search of belongsTo associated records in record creation forms if the belongsTo foreign key is a UUID.
- Search - Display highlighted matches on table view when searching.
- Intercom Integration - Users can now access to the Intercom Details page.
- Namespacing - Prevent a potential error on server start if a ResourcesController class already exists in another lib of the client project.
- Filters - Filtering on 2 different belongsTo foreign keys referencing the same table now returns the expected records.
- Onboarding - Improve the information message if the liana is properly setup and users run the "rails g forest_liana:install".
- Permissions - Fix automated permission for projects having multiple teams.
- Onboarding - If the liana is properly setup and users run the "rails g forest_liana:install" command again, the task will be skipped.
- Onboarding - The install generator now supports credentials.yml.enc file introduced in Rails 5.2.
- Development Autoreload - Prevent "A copy of ForestLiana::ResourcesController has been removed from the module tree but is still active!" in development mode.
- Performance - Make the related data count retrieval much more efficient if the result contains thousands of records.
- Permissions - Add a permission mechanism to protect the data accordingly to the UI configuration.
- Segments - Users can create segments with SQL queries.
- Smart Relationships - Fix the serialization of Smart belongs_to relationships in lists and record details.
- Smart Actions - "Single" type Smart Action forms can now be prefilled with contextual values.
- Live Query - Fix the charts in Live query mode when using mysql2 adapter.
- Records List - Fix records retrieval regression for tables having self-references.
- Rails 5 - Tables named "applications" are now properly handled using Rails 5+.
- Rails 5.2 - Support New Rails 5.2 apps with config.action_controller.default_protect_from_forgery set to true.
- Sessions - Improve the error message if the environment secret is missing on session creation.
- Charts - Fix some bad Line charts aggregation due to Daylight Saving Time.
- Related Data - Delete records directly from a hasMany listing.
- Gem ActAsTaggable - Prevent errors on collections that are not taggable. [Regression introduced in 2.4.8]
- Gem ActAsTaggable - Forest does not make all models taggable anymore.
- Rails Version - Fix a recent incompatibility with Rails 5.1+. [Regression introduced in 2.4.5]
- HasMany Relationships - Fix data display for projects having namespaced models (second trial). [Regression introduced in 2.3.0]
- HasMany Relationships - Fix data display for projects having namespaced models. [Regression introduced in 2.3.0]
- List Views - Fix records retrieval for project using Rails versions from 4.0.0 to 4.2.0. [Regression introduced in 2.3.0]
- Live Queries - Display the Value Charts properly if no data has been retrieved.
- Live Query - Fix charts generation for values equal to 0 or null.
- Errors - Fix a typo on association update error handling.
- Errors - Add the full stack trace in case of internal error calling Forest API.
- Smart Actions - Users can define Smart Actions only available in a record detail.
- Smart BelongsTo - Users can now display their records list on collections using Smart BelongsTo. [Regression introduced in 2.3.0]
- Smart Actions - Display the Smart Actions form fields in the declaration order. [Regression introduced in 2.3.0]
- Search - Prevent the records search to crash if no fields parameter is sent by the client.
- Error Handling - Send a 500 status code in case of internal server error (instead of a 404).
- Devise - Users now have a password field and can create records for models using Devise gem.
- Filters - Add a new "is after X hours ago" operator to filter on date 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.
- Smart Fields - Compute only the necessary Smart Fields values for list views and CSV exports.
- Smart Collections - Fix a regression on fields values serialization.
- Initialisation - Fix a potential error on database type retrieval on server start.
- Charts - Users can create charts using raw database queries with the Live Query option.
- Security - Remove Rails vulnerabilities upgrading the gem version.
- Start - Prevent a crash if the server is restarting while Forest services are in maintenance.
- Authentication - Users can connect to their project using Google Single Sign-On.
- Dependencies - Upgrade the json gem to work with Ruby versions 2.4.X on OSX.
- Performance - Set the CORS Max-Age to 1 day to be consistent with the other lianas behaviour.
- Serializer - Fix 'already defined' warning message from serializer on server start.
- Server Start - Prevent potential error on server start [regression introduced by the version 2].
- Collection Names - Make collection names containing colons valid for the Forest UI.
- Records Display - Prevent potential collections display regression due to missing Serializers since version 2.0.1.
- Initialisation - Remove potential warnings on server start.
- STI Models - Support STI Models with a collection for the parent model and each child model, with automatic segments on the parent collection.
- Collections Names - Collection names are now based on the model name.
- Stripe Integration - Allow users to display Stripe records in the Details view.
- Stripe Integration - Fix the global integration when mapped on namespaced models.
- Stripe Integration - Fix the access to customer subscriptions and bank accounts.
- Line Charts - Use ISO 8601 format to display weeks in Line Charts.
- Line Charts - Force the starting day of the week to Monday for Line Charts per week.
- HasMany Getter - Fix HasMany associated records retrieval for namespaced models.
- Smart Fields - Prevent the Smart Fields computation errors to generate a crash and handle it letting the value empty.
- Intercom Integration - Prefer Intercom access_token configuration to old fashioned app_id/api_key.
- Smart Field - Fix Smart Fields values serialization for namespaced models.
- Filters - Fix one-relationships filters on collections based on namespaced models.
- Export CSV - Enable the CSV export for namespaced models.
- Charts - Fix belongsTo filters on enum fields.
- Filters - Fix filters on associations enum fields.
- Smart Fields - Add a "is_filterable" option to let them appear in the filters selection.
- Pie Charts - Fix enum values display on Pie Charts for latest Rails version users.
- Smart Fields - Add a parameter to specify if the sorting is allowed on this field.
- Smart Search - Developers can configure a Smart Search on a hasMany relationship.
- Smart Collections - Facilitate the way to create Smart Collections.
- Onboarding - Fix the automatic secrets.yml setup on projects using Rails 5.1+.
- Stripe - Fix the Stripe Payments access.
- Search - Developers can configure in which fields the search will be executed.
- Paranoid Mode - Support Paranoia gem and hide all "deleted" data in Forest.
- Exports - Add a new protection while formatting the data, if an associated record is not found.
- Exports - Require missing lib for CSV formatting.
- Exports - Fix some issues with the new export feature.
- Exports - Fix bad initial implementation for exports authentication.
- Validations - Do not consider validations if an Active Record before_validation Callback is defined in the model.
- Validations - Do not consider conditional validations for Forest forms validation.
- Exports - Forest can now handle large data exports.
- Search - Split "simple" and "deep" search features with a new param.
- Validations - Start the support of forms validations (with 6 first validations).
- Fields - Send the defaultValue for creation forms.
- Technical - Update .gemspec file to specify that Rails 3 is not maintained anymore.
- Record Updates - Do not try to update the Smart Fields if no new value is send in the update request.
- Pie Charts - Fix potential pie chart rendering issue using Rails 5.
- Search - Users can search on the hasMany associated data of a specific record.
- Deprecation Warning - Remove a deprecation warning on Chart request due to uniq method.
- Filters - Add the before x hours operator.
- Errors - Improve error handling on Record creation and update.
- Router - Catch resources routing errors with a 404 response instead of a crash.
- Apimap - Send database type and orm version in apimap.
- Records Updates - Fix unexpected "serialize" field update on other record attributes update.
- Development Autoreload - Prevent "A copy of ForestLiana::ResourcesController has been removed from the module tree but is still active!" in development mode.
- Records Updates - Display an error message on record update on "serialize" field having a nil value.
- Error Messages - Display an explicit warning if Forest servers are in maintenance.
- Charts - Fix charts having filters on associations fields.
- Smart Collections - Add a new isSearchable property to display the search bar for Smart Collections.
- Filters - Add the not contains operator.
- Pie Charts - Fix Sum Pie charts on a non-id column with at least one filter on an association.
- Filters - Retrieve the right records for filters with conditions on belongsTo foreign key being blank.
- Multi-Database - Developers can display models having the same table name on different databases.
- Filter - Support AND and OR filters on acts_as_taggable_on attributes
- Ruby 2.3 - Avoid to use Hash#dig to support version earlier than Ruby 2.3.
- Apimap - Prevent the bad detection of database collections as Smart Collections if lib/forest_liana is loaded before the models.
- Smart Actions - Support file download.
- Smart Fields - Support belongs_to smart fields.
- Smart Fields - Add an explicit error message if the search on a Smart Field generates an error.
- Papertrail - Make Papertrail Versions visible in the records "Related Data".
- Papertrail - Changes made using Forest are now tracked with Papertrail.
- 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 - Smart Fields having a setter are not read-only by default anymore.
- Smart Fields - Developers can now define Smart Fields setters.
- Record Deletion - Fix the records deletion on Rails 5.1.
- Filters ToDate - Fix the end of period filtering for "toDate" date operator types.
- Setup Guide - Add integration field to the collections to distinguish Smart Collections and Collections from integrations.
- Server Start - Fix the server crash on start while offline.
- Server Start - Fix the server crash on start while Forest is down (Heroku error page case).
- Version Warning - Display a warning message if the liana version used is too old.
- Value Charts - Fix Value Charts computing on collections having a foreign keys that is not named "id".
- Records Deletion - Fix records deletion on collections having a foreign keys that is not named "id".
- STI Models - Fix the display of the parent STI model.
- STI Models - Add a dropdown with predefined existing STI type values in create/update forms.
- STI Models - Children models do not generate a specific collection anymore (only parent model).
- Self-referenced models - Users can update their records if the model has both a belongsTo and a hasMany self-reference associations.
- HasMany - Fix the hasMany SQL request on some Rails versions.
- Performance - Do not eager load the associations for the resources count if there is no search or filters on associations.
- Analyzer - Force to unuse namespace for ActionController.
- Analyzer - Fix the router controller name.
- Smart Actions - Users don't have to select records to use a smart action through the global option.
- Analyzer - Avoid class name conflict with the "Application" model name.
- Pie Charts - Fix the computation of Pie Charts having a groupBy on a belongsTo relationship.
- Records deletion - Fix the deletion of records.
- Devise - Create a smart action automatically to change a devise password.
- CORS - Enable all forestadmin.com subdomains to requests the liana.
- Analyzer - Avoid to analyze the tables without an ActiveRecord models.
- Record Getter - Prevent an unexpected error if the record does not exist.
- Smart business logic - Users can override the admin API per resource.
- Analyzer - Always retrieve the parent STI class instead of a random children.
- Filters - Fix filters on boolean fields using MySQL databases.
- Stripe - Fix Stripe invoices/cards/... display for "complex" model names.
- Image Upload - Support Paperclip validates_attachment_file_name option.
- Search - Fix search on collections using UUID as a primary key.
- Deprecation warnings - Silent deprecation warnings for removed "serialized_attributes" in Rails 5.
- BelongsTo association - Fix the update of a record when a belongsTo association uses a custom foreign key.
- Devise - Users can update a record details without resetting the devise password.
- Rake - Avoid to initialize Forest when running a Rake task.
- Dashboard - Fix the dashboard display when the chart payloads are "force-utf8-encoded".
- Authentication - Fix the authentication when Forest.user_class_name opt is present.
- Column Types - Support JSON and JSONB column types.
- Tests - Fix test fixtures using dynamic dates.
- Resources Getter - Fix the retrieval of records having attributes with special characters (ex: Â) on MySQL.
- Segments - Smart Segments can be created to define specific records subsets.
- Configuration - Rename secret values to env_secret and auth_secret.
- Installation - Add the env_secret as an option instead of prompt it.
- Installation - Store the env_secret and auth_secret in config/secrets.yml.
- Installation - auth_secret and env_secret are nil by default in all non-development environments and need to be set manually.
- Pagination - Set the default hasMany page size to 5 to be consistent with other lianas.
- Search - Support the search for MySQL databases.
- Sorting - Support the sorting on belongsTo columns for MySQL databases.
- Configuration - Catch a missing auth_key in the configuration and send an explicit error message on liana authentication.
- Date Filters - Date filters operators are now based on the client timezone.
- Pie Charts - Pie charts grouped by dates now display dates in the client timezone (instead of the raw SQL value).
- Rails 5 - Fix app start crash regression due to "serialize" support.
- Model Fields - Support "serialize" option for String type fields.
- Pie Charts - Support Pie charts with a group by on an association field.
- Smart field - Allow to override the read_only option of a Smart Field.
- Errors Tracking - Catch errors on app launch / apimap generation / liana session creation.
- Authentication - Add an option to set the model name for internal forest user authentication option.
- App Start - Prevent crash and display a warning for each associations badly declared in the models.
- Resources Getter - Fix possible ambiguous id attribute in the query select.
- Rails 5 - Remove deprecation warnings with empty responses.
- App Start - Fix some applications starts crash due to CORS injection on frozen middleware.
- Chart Filters - Support chart filters on belongsTo associations.
- Date Filters - Fix the date operators broken in release 1.4.2.
- Ruby 2.0 - Fix the chart creation when a date operator is present.
- Rails 5 - Fix application start using Rails liana 1.4.0.
- Field Type - Support Time field type.
- Polymorphism - Fix polymorphic "hasMany" on record hasMany association retrieval.
- Collections Customization - Fix the smart collections/fields/actions use if the lib/forest_liana directory is eager loaded by the app.
- Records Edition - Fix a regression when serializing the Create/Update response.
- Performance - Request only displayed fields in the records list.
- SQL Errors - SQL errors are now send in the response after a record creation or update.
- Rails 3 - Fix a regression when computing charts for Rails 3 applications.
- CORS - Users can deactivate Forest CORS headers.
- Ruby 1.9 - Allow UTF-8 characters in the source code.
- Analyzer - Support STI models.
- Filters - Add the new date filters protocol.
- Pie Charts - Display enum labels instead of integers for a "group by" on enum field.
- Rails 5 - Fix the way to discover models in Rails 5 - abstract class.
- Rails 5 - Fix deprecation warnings.
- Custom Action - Fix the bad endpoints if some actions have the same name.
- Analyzer - Add the included_models options.
- Analyzer - Add the excluded_models options.
- Analyzer - Add the included_models options.
- Analyzer - Add the excluded_models options.
- Devise - Support password management with Devise Authenticable.
- Error handling - Display the right errors on create/update.
- Value Charts - Fix previous period count regression due to filterType introduction.
- Smart fields - Enable search on smart fields.
- Fields - Serialize the "isVirtual" property in the apimap.
- Deserialization - Ensure data->attributes is present before deserializing
- Fields - Users want to view/edit their array of integers.
- Polymorphism - Fix the nullification of a polymorphic has_one association.
- Serializer - Set the relationship to nil if the record is not found instead of crashing.
- Models - Fix the way we discovered the active record models.
- Smart field - Ensure the serializer exists before creating the smart field.
- Record Create - Fix empty relationships on record creation.
- Filters - Users want the OR filter operator with their conditions (restricted to simple conditions).
- Schema - Support UUID field type.
- Record Update - Fix the potential dissociations on record update.
- Search - Support search on ID of type 'String'.
- Filters - Users want to have "From now" and "Today" operators.
- Charts - Fix value chart with filters and a previous period comparison.