Skip to content

Releases: laravel-enso/enso

v9.0.0

23 Apr 10:34

Choose a tag to compare

9.0.0

This release focuses on bringing the Laravel Enso ecosystem up to date across the full stack: Laravel 13 and PHP 8.3+ on the backend, and a modern Vue 3.5 / Vite 7 / Pinia runtime on the frontend.

It also includes a complete UI redesign pass across the active Enso UI ecosystem. The goal was not only to refresh the look and feel, but also to simplify shared ownership, replace legacy styling layers with native Bulma contracts, and standardize how applications integrate routes, stores, filters, themes, and localisation.

In parallel, we revamped the public documentation platform at docs.laravel-enso.com, upgraded it to VitePress 2, synchronized the package documentation surface across the ecosystem, and brought the published docs back in line with the current Enso runtime and upgrade model.

Taken as a whole, Enso 9.0.0 is one of the largest frontend/backend releases in the history of Laravel Enso.

As part of this release reset, we also intend to close the current backlog of GitHub issues and merge requests and ask contributors to open new issues or merge requests if their reports are still relevant on top of the Enso 9 line.

Laravel 13 Compatibility

Laravel Enso 9.0.0 aligns the ecosystem with Laravel 13 and raises the minimum PHP baseline to 8.3.

Front-end

ui

  • completed a major UI redesign across the active Enso UI packages
  • realigned shared components, tables, filters, forms, menus, settings, and shell layouts around a cleaner Bulma-first visual language
  • updated the ecosystem with a clear goal of bringing the Enso frontend stack and package contracts to a current, maintainable baseline
  • normalized shared styling ownership so UI policy lives in the shared UI layer instead of being scattered across package-local overrides

frontend runtime

  • migrated the frontend runtime from the legacy Vue CLI / Webpack / Vuex model to Vite and Pinia
  • standardized the new frontend baseline around:
    • Node 20
    • Vue 3.5
    • Pinia 3
    • Vite 7
    • @vitejs/plugin-vue 6
    • vue-router 4.6
    • Bulma 1
    • Axios 1
  • removed Vuex and vuex-router-sync from the active runtime flow
  • stabilized yarn dev --force and yarn build on the new toolchain
  • replaced legacy require.context-driven assumptions with a Vite-compatible runtime model for package integration
  • introduced a clearer split for compiled frontend resources and expanded lazy loading across frontend components
  • reduced shipped frontend assets and chunk sizes significantly through the new bundle split and lazy-loaded component surface

icons and shared UI dependencies

  • modernized Font Awesome integration across the shared UI ecosystem
  • upgraded the shared icon stack to the current Font Awesome 7 line
  • moved shared components away from ad-hoc icon registries and toward direct icon-definition imports where runtime metadata is not involved
  • kept a smaller explicit runtime icon registry only for metadata-driven icons that still come from backend state
  • upgraded and restyled shared UI dependencies such as v-tooltip to fit the new Bulma-first runtime and styling contract
  • standardized animate.css usage on the v4 animate__* convention across the shared UI surface
  • added the dedicated @enso-ui/pagination package to give pagination its own reusable public UI surface

loader and skeletons

  • refined the general application loader behavior and moved it into its own dedicated store
  • added a reusable skeleton component to complement loading states across charts, forms, and tables

filters and transport

  • standardized frontend request serialization for complex filter payloads
  • added a global Axios paramsSerializer for nested GET parameters
  • preserved backward compatibility where possible while making request transport explicit and consistent
  • normalized Enso table boolean filters by serializing booleans as 1 / 0
  • prepared the remaining filter-related packages for the stricter transport model

files

  • implemented frontend pagination controls for the file browser
  • added page-size selection and paginated navigation to the files UI
  • aligned the file browser with the new reusable pagination surface instead of keeping it on a flat unpaginated listing

state management and bootstrap

  • introduced a clear Pinia-first store convention across the ecosystem
  • standardized bootstrapable stores on a set(payload) convention
  • centralized frontend bootstrap through:
    • client/src/js/pinia/loadState.js
    • client/src/js/pinia/bootstrapStores.js
  • clarified store ownership across the shared packages instead of routing everything through @enso-ui/ui internals

routes and package integration

  • aligned frontend package integration with a public-package-surface model
  • local applications are expected to consume published route modules and package-owned stores instead of private @enso-ui/ui/src/... internals
  • route and store discovery now follow the new bootstrap flow instead of the older implicit runtime model

themes

  • replaced the older shared theming approach with a Bulma-native theming model
  • moved theme ownership into @enso-ui/themes
  • consolidated runtime shell and layout tokens into the active Bulma override layer
  • removed dead theme entrypoints and legacy theme indirection
  • introduced light, dark, and system theme behavior in the current runtime model

localisation

  • simplified localisation ownership and file flow
  • added php artisan enso:localisation:scan to statically discover translation keys from backend and frontend sources
  • made the new localisation workflow report, deduplicate, and sync discovered keys into local JSON language files
  • clarified language-file ownership and reduced the legacy mixed package/app localisation flow
  • removed Arabic from the built-in shared localisation seed/fallback set in the current release

package ecosystem cleanup

  • realigned active @enso-ui/* package interdependencies around explicit ownership
  • moved shared package-to-package relationships out of dependencies and into peerDependencies + devDependencies where appropriate
  • adopted this pattern to stop hidden nested runtime copies, make package ownership explicit, and force the host application to own the shared frontend runtime surface directly
  • treated the application root as the single place where shared runtime dependencies must be installed and version-aligned
  • cleaned package manifests and reduced legacy build/runtime duplication across the active frontend ecosystem
  • added or completed frontend companion packages where the current release surface requires them
  • started building the first meaningful layer of frontend test coverage across the active UI package surface

documentation

  • revamped docs.laravel-enso.com as part of the Enso 9 release wave
  • upgraded the documentation site to VitePress 2
  • synchronized package documentation across the active ecosystem
  • brought the published docs and migration guidance in line with the current Enso runtime, package surface, and upgrade flow

audits

  • added the frontend @enso-ui/audits companion package
  • introduced audit index pages and diff presenters for rendering row-level change payloads in the UI
  • integrated audit rows with backend table definitions and user context so historical changes can be inspected consistently from the system route group
  • positioned audits as the replacement path for the older history-tracker flow

Back-end

core

  • required Laravel 13 and PHP 8.3
  • introduced the new store-based ProvidesState contract for frontend bootstrap
  • replaced mutation-targeted state payloads with grouped store-targeted payloads
  • updated shared state building so multiple providers targeting the same store are merged before reaching the frontend
  • refactored filters for the new frontend transport and state contract

frontend/backend contract

  • replaced the old backend/frontend bootstrap contract based on mutation() with a store-based contract built for Pinia
  • aligned Enso backend packages to emit { store, state } payloads instead of Vuex mutation payloads
  • prepared backend packages that expose filters or shared frontend state for the new frontend runtime

files

  • implemented backend pagination support for file browser endpoints
  • validated the requested pagination size against the configured paginate options
  • aligned file browsing responses with paginated metadata so the new frontend controls can consume them consistently

localisation

  • improved localisation ownership and backend support for the new frontend flow
  • added backend support for the new localisation scan command and key reporting workflow
  • improved deduplication and ownership of generated localisation keys

audits

  • added the laravel-enso/audits backend companion package
  • exposed the audit table definition, diff payloads, and route group consumed by the new frontend audit pages
  • expanded the ecosystem support for browsing historical record changes through a dedicated audits flow
  • positioned audits as the replacement path for the older history-tracker package

ecosystem

  • normalized dependency metadata and license files across the active Enso backend package set
  • migrated supported packages from PHPUnit annotations to PHPUnit attributes
  • realigned package constraints and companion package contracts for the Enso 9 release wave
  • added or completed frontend companion package support where required by the new runtime
  • increased backend test coverage substantially across the active Enso package set

Upgrade Steps

To upgrade an existing Enso application to 9.0.0, use the following sequence.

1. Update the platform baseline

  • update PHP to at least 8.3. Our recommendation is...
Read more

8.0.0: Update main.yml

18 Mar 14:45

Choose a tag to compare

8.0.0

This release focuses on aligning Laravel Enso with the latest Laravel version (v12), while continuing the effort to simplify the codebase, removing legacy patterns, and improving consistency across packages.

In this release cycle, we have also invested significant effort into rewriting and improving several private packages related to the webshop ecosystem, focusing on stability, performance, and long-term scalability.

We are also planning the next iteration to focus on upgrading the front-end stack, including adopting more modern Node.js versions and refreshing key dependencies across the ecosystem.

Laravel 12 Compatibility

Laravel Enso is now fully compatible with Laravel 12 and includes alignment with the latest framework conventions.

Front-end

calendar

  • updated css

card

  • added collapsible prop

categories

  • improved layout

  • filtered, picture url

files

  • added thumbnail functionality

  • removed duplicated data

  • fixed date format

  • fixed actions disappearing

filters

  • implemented multiple enso filter functionality

  • fixed interval filter clear bug

monitored-emails

  • added test button

services

  • added ability to add acquisition price for suppliers

tasks

  • fixed toggle button from completed column

  • refactored reminder column and centered table values

themes

  • added min-w-0 & is-scrollable helpers

ui

  • added force selection on search typeahead

  • added ctrl space hotkey for search bar

users

  • removed delete person ability

back-end

addresses

  • fixed upgrade edge case

api

  • added laravel 12 support

  • removed laravel framework dependency, already required in helpers package

  • implemented UsesBasicAuth interface;

  • added body and query parameters to log

avatars

  • added laravel 12 support

charts

  • removed laravel enso framework dependency, already required in helpers

companies

  • added is_public_institution column

  • addressed merge request discussion

  • removed is_tenant column and its modifiers

  • made git look up model

  • improved email validation

  • fixed null company route error in mandataryIsNotAssociated()

core

  • added youtube to config

  • migrated to Laravel 12

  • improved preferences

data-export

  • added ability to customize sheet name in async importer

data-import

  • added flexible templates

dynamic-methods

  • added laravel 12 support

enums

  • added laravel 12 support

filters

  • fixed filter init on edge cases

  • removed laravel framework dependemncy, already required in helpers package

forms

  • fixed validation when passing array to enum options

  • removed laravel framework dependency, already required in helpers package

google

  • upgraded places api

  • added Referer

  • added resources

  • added publishing method

helpers

  • added loan calculator

  • added new vat rates

  • added laravel 12 support

  • refined Loan

  • added multiplers helper in vat rates

history-tracker

  • added laravel 12 support

localisation

  • improved preferences

logs

  • fixed edge case where file size was cached

image-transformer

  • removed laravel framework dependency, already required in helpers package

people

  • improved email validation

rememberable

  • added laravel 12 support

searchable

  • implemented search provider support

select

  • removed laravel framework dependency, already required in helpers package

tables

  • added fix for mappable enums

  • added ability to use relation methods

  • removed laravel framework dependency, already required in core package

  • improved preferences

tasks

  • added DynamicMethods and Abilities for tasks

  • fixed tasks without reminders

track-who

  • added laravel 12 support

upgrade

  • added ability to sync roles by id during structure migration

  • removed contract

  • removed laravel framework dependency, already required in core package

  • fixed isText helper

users

  • improved email validation

webshop-commercial

  • dropped payment methods column

  • deprecated order contract

  • fixed orders show

  • fixed pay controller

  • deprecated invoice contract

  • finalized merge with webshop

  • removed stripe dependency

webshop

  • added nin field in user info form

  • removed mandatory nin

  • updated validation

  • fixed duplicated checkout; added loading class on checkout button

  • added sorts to returned products

  • fixed subcategories

  • added logs, attempts fix

  • fixed subcategory products

  • added missing attributes to returned product

  • attempted to mitigate effects of duplicated callback calling

  • added rating and reviewsCOunt to product resource

  • added isFavourite to Product Resource

  • temp fixed loading userfavs; send config productIdentifier to shared data

  • fixed companies

  • fixed sector display on autocomplete

  • updated Addresses and Companies Controllers for new Inertia forms

  • updated CreditCard Store Controller & others

  • moved new frontend files back to webshop package with working hmr

  • added gitignore in package public folder and addnl keys in lang ro json

  • fixed decimals

  • deprecated Order Contract

  • replaced images path with @images

  • completed account payment addresses companies layout

  • deprecated StoreOrder contract

  • deprecated invoice contract

  • finalized merge with webshop-commercial

  • extracted store in webshop commercial

  • removed unused contract

  • added cleanup observer

  • removed view service provider

  • implemented local module overwrite capability

  • displayed cart sections only when the cart was not empty

  • refactored forminput

  • added review like and dislike functionality

  • deprecated form input in account forms

  • added Featured Pages Layout and Example Page with placeholder data

  • removed unused Collapsible component

  • refactored form input

  • removed form input vue

  • replaced Toastr with Session::flash for toast messages

  • added recaptcha validation to all forms not protected by login

  • added contact form functionality

  • added activation required page

  • added registration disabled message if not allowed

  • added Order confirmation page content

  • product page done

  • payment options icons

  • fixed images

  • fixed recaptcha

  • added recently viewed products

  • implemented the new packaging unit resource

  • added subscribers

  • fixed: missing featuredPages shared prop causes crash

  • fixed: product gallery not loading images from hardcoded ceisales url

  • static Brand Catalogue page

  • added Featured Categories Slider in MegaMenu

  • fixed long product name popover not showing; restyled BrandPreview component

  • improved brand catalogue

  • made brand catalogue index section stick to top on scroll

  • improved gtm usage

  • reset cartStore upon logout

  • fixed cart reset upon logout

  • extended customisation options

  • completed mobile styling

  • fixed large product cards in CategoryPreview

  • added empty cart message

  • fixed cart page crash when address property is null

  • completed add to cart feeback

  • tweaked account layout

  • added cart summary on icon hover

  • added empty cart popup message

  • completed localization

  • fixed category menu toggle button nowrap

  • removed duplicate / unused createOrder method

  • added fastCheckOut page and extracted Account form fields into components; fixed address locality autocomplete

  • added login prompt and account creation notice to fastCheckout page

  • better error handling in fastCheckout page

  • added ability to resolve cart response from container

  • fixed add new company button

  • added custom theme overrides in PrimeVue and Sass

  • added svg import as component plugin; dynamic svg icons colors

  • made Inertia middleware more inheritable

  • implemented Sentry in new Webshop

emag

  • deprecated is_tenant from company

commercial

  • added default sort for all table templates; allowed editing sale payment method for default sale channel unless sales is fulfilled

  • fixed stock rotation

  • removed search service provider

  • added ability to extend product label

  • fixed label

financials

  • Modified vatrates to new requirements for august 2025

inventory

  • fixed table

Upgrade Steps

To successfully upgrade to Laravel 12 and this latest version of Enso, follow these steps:

  1. Update Composer dependencies: Update the Laravel Enso Core version in your composer.json file as well as any other relevant package upgrades.

     "laravel-enso/core": "^11.0",
     "phpunit/phpunit": "^11.0",
  2. Run composer update: Install the new dependencies by running the following command:

    composer update
  3. Follow the official Laravel 12 Upgrade guide: Refer to the Laravel 12 Upgrade guide, making sure to also check out the comparison tool and update your files accordingly.

  4. Run pre-migration upgrade: Before migrating your database, ensure you run the upgrade preparation command:

    php artisan upgrade --before-migration
  5. Run migrations: Update your database structure using the migration command:

    php artisan migrate
  6. Run post-migration upgrade: Complete the BE upgrade process with the final command:

    php artisan upgrade
  7. Upgrade FE dependencies: Complete the FE upgrade process:

    • add vue-router to transpile / optimize dependencies in vite.config.js
    • update minimatch...
Read more

7.0.0

29 Jan 16:31

Choose a tag to compare

7.0.0

This release focuses on aligning Laravel Enso with the latest Laravel version (v11), bringing significant updates and improvements. We highly recommend upgrading your base application structure to match the Laravel 11 structure to ensure full compatibility and take advantage of new features.

Laravel 11 Compatibility

Laravel Enso is now fully compatible with Laravel 11. This update brings performance enhancements, security updates, and new features introduced in Laravel 11.

Recommendations for Upgrading to Laravel 11

We strongly suggest updating your base application to the Laravel 11 structure. For reference, you can explore the changes and updates in this merge request: Laravel Enso PR #443.

In addition to that, please follow the official Laravel 11 upgrade guide to ensure your application’s codebase is fully aligned with the new version.

front-end

addresses

  • implemented additional features

datepicker

  • added is-success prop

files

  • removed unused code

forms

  • added preview for wysiwyg fields to prevent unnecessary tinymce consumption

people

  • removed extra component

select

  • added is-success prop
  • added is-warning prop

tables

  • fixed bad timing when saving preferences
  • attempted to fix filters reset
  • made another fix attempt

textarea

  • fixed behavior

users

  • fixed reactivity

back-end

action logger

  • attempted to fix missing request user
  • removed upgrade file

addresses

  • added additional in label
  • moved geocoding to google
  • fixed casing
  • removed upgrade file

api

  • implemented as form

companies

  • implemented dynamic methods
  • removed upgrade file

core

  • fixed various issues
  • removed upgrade files
  • fixed carbon usage

data export

  • replaced deprecated box/spout with maintained openspout/openspout

data import

  • sanitized non-utf-8 chars
  • fixed failed decoding
  • removed upgrade files
  • improved default sort direction
  • replaced deprecated box/spout with openspout/openspout

dynamic methods

  • fixed binding for dynamic methods

enums

  • implemented php native enum and added autodiscovery
  • split enum trait into random and select
  • improved search and mapping

excel

  • replaced deprecated box/spout with openspout/openspout

files

  • fixed icon in resource

filters

  • improved clarity

forms

  • fixed validation
  • improved enum validation for options

google

  • added geocoding api endpoint
  • improved reviews endpoint

helpers

  • added tosnakecase trait for requests validators

localisation

  • removed upgrade file

select

  • implemented nested pivot relations
  • fixed filtration for empty values

tables

  • fixed exporting tables with default sorts
  • improved validation error for enums
  • refactored validation
  • avoids file write concurrency during parallel testing

users

  • fixed user seeder

versions

  • updated various features

privates

webshop

  • implemented new features like cookie consent

financials

  • fixed upgrade inconsistencies and deprecation warnings

inventory

  • added abilities on inventory in
  • fixed various issues

Upgrade Steps

To successfully upgrade to Laravel 11 and this latest version of Enso, follow these steps:

  1. Update Composer dependencies: Update the Laravel version in your composer.json file.

    composer require laravel/framework:^11.0
  2. Run composer update: Install the new dependencies by running the following command:

    composer update
  3. Run pre-migration upgrade: Before migrating your database, ensure you run the upgrade preparation command:

    php artisan upgrade --before-migration
  4. Run migrations: Update your database structure using the migration command:

    php artisan migrate
  5. Run post-migration upgrade: Complete the upgrade process with the final command:

    php artisan upgrade
  6. Important! If you updated your config keys, make sure to also update your keys on the live .env

BROADCAST_DRIVER => BROADCAST_CONNECTION
MAIL_DRIVER => MAIL_MAILER
... 

Optional Steps

Depending on your current setup, you might want to consider additional steps for a more complete upgrade:

  • Upgrade your application structure: You can take inspiration from this PR.

  • Update .env variable names:
    Laravel 11 introduced changes in the naming conventions for some environment variables. Review and update your .env file accordingly.

  • Migrate cast properties to casts() methods:
    Laravel 11 encourages using the casts() method for handling property casts. Review your models and migrate any property casts to the new casts() method for better structure and maintainability.

  • Update your custom exports if necessary:

    This commit deprecated box/spout with maintained openspout/openspout. Check if there are any implications which affect your local exports.


Make sure to test your application thoroughly after the upgrade to ensure everything works as expected with the new Laravel 11 structure and features.

v6.0.0

03 Apr 14:23

Choose a tag to compare

6.0.0

This release aims to bring our ecosystem one step closer to the latest Laravel release. The primary reason for the delay was the necessity to upgrade all dynamic relations across our entire codebase to support the native Laravel Implementation. This process required extensive testing to ensure proper compatibility.

Additionally, we took this opportunity to implement support for PHP native enums alongside our existing enum implementation. This decision was mandatory for maintaining backward compatibility while also embracing the latest features offered by PHP. Integrating these two required enum implementations further contributed to the release delay.

Here are the key highlights:

  • Laravel 10: Laravel 10 is now a mandatory requirement for the v6 release.

  • Form and Tables Packages Update: Both packages now support native PHP Enums in addition to our custom implementation, ensuring backward compatibility.

  • Automatic Dynamic Relations/Methods Registration: Dynamic relations are now registered automatically and utilize Laravel's native dynamic relation registration functionality. Dynamic methods are registered automatically as well. All dynamic methods and relations must be created under the App\Dynamics namespace.

Front-end

accessories

  • hides count if 0

addresses

  • fixes modal multiple open/close
  • improves logic segregation
  • fixes default value for id in form

bookmarks

  • fixes bookmarks

calendar

  • removes deprecated imports
  • adds colors
  • fixes import

card

  • fixes events

charts

  • fixes rounding issue

checkbox

  • fixes v-model use on prop

clipboard

  • fixes size
  • removes custom size

comments

  • improves padding
  • improves word break

companies

  • adds ability to navigate to person create form from company edit form
  • adds router error handler
  • fixes #16

confirmation

  • fixes attribute inheritance

currencies

  • removes unneeded actions in store

data-import

  • fixes rejected arg
  • refactor due to Types enum deletion
  • adds invisible & template props in import uploader
  • fixes import uploader

dropdown

  • fixes selections during transition
  • adds open-up prop

files

  • adds store
  • adds count option on folder
  • removes max width for files
  • brings back max-w
  • improves file layout
  • adds word-wrap:break-all

filters

  • fixes input filter clear control
  • fixes v-model on input filters
  • supports null in core input filter
  • improves label translation
  • adds x padding for header

forms

  • implements custom submit path
  • adds dirtyFields array
  • adds Confirmation to export list
  • makes all actions <a> instead of <button>
  • removes confirmation modal
  • extracts the new confirmation in its own component
  • adds ability to pass params to select field

how-to

  • raised limit for how to videos;

io

  • removes redundant websockets connect
  • fixes IO elapsed / remaining toggle
  • improves operation template
  • adds support for tasks
  • makes tasks not cancellable

measurement-units

  • makes form smaller

menus

  • removes transition group tag from draggable
  • removes unused prop

money

  • fixes modelValue precision
  • fixes input for values with comma thousands separator
  • fixes null handling

notifications

  • removes redundant websockets connect

packaging-units

  • improves form

people

  • improves edit form

progress-circle

  • allows string progress

progress-indicator

  • fixes missing import

quick-view

  • fixes animation

select

  • ignores options if is server side
  • fixes searchLimit condition
  • fixes objects scenario
  • adds open-up prop

strings

  • fixes #2

switch

  • improves label slots

tables

  • adds event on ajax/fetch error
  • implements filter state handling
  • fixes initial filters backup
  • improves filter state handling
  • implements custom css row style
  • fixes mobile controls
  • adds ability to toggle selectable from ui
  • clears selection when selectable is toggled
  • fixes space in records info -> selection details

tabs

  • improves tab id type

tasks

  • removes redundant websockets connect
  • update error handler in selector

themes

  • fixes avatar size
  • fixes tooltip arrow
  • disables light classes for dark theme

typeahead

  • now using trim for query length
  • uses invalidRegExp in template

ui

  • fixes code style
  • uses await / async in store
  • improves app-update
  • puts app-update indicator in its original position
  • adds route getter in store
  • added check for having the route in the state obj
  • adds http helper in local
  • fixes password reset
  • adds app-state-loaded event
  • adds option to hide/show page header
  • fixes edge case where the appUpdate item is not present
  • adds handling for 422 errors in error handler
  • improves navbar item to accept array icons

users

  • fixes user profile template

Back-end

action-logger

  • implements duration

addresses

  • adds name in township rememberable keys
  • adds abbreviation in region rememberable keys
  • adds ability to update coordinates
  • adds missing relations
  • implements the new geocodingKey
  • adds Region resource
  • adds locality name to resource Locality
  • adds addresses relation
  • adds Abilities trait

api

  • allows string type request body
  • adds timeout contract
  • implements mandatory validation
  • helper update

avatar

  • adds minssing unique() on file_id

calendar

  • fixes event filtering
  • adds colors

charts

  • depreciate when helper trait

comments

  • refactor resource alias

companies

  • makes fiscal_code unique in importer
  • drops companies_reg_com_nr_unique

control-panel-api

  • implements syncPermissions

core

  • removes superfluous enum
  • removes .styleci.yml
  • adds tiktok in config
  • fixes email icons
  • adds noindex meta

data-export

  • improves export excel speed
  • adds custom max contract
  • adds custom count
  • improves email subject for export done / export error notification
  • implements CascadesFileDeletion
  • adds missing unique() on file_id
  • fixes syncExporter
  • improves data export by extracting iteration part; adds CustomMin interface
  • fixes edge case in iterator
  • Use qualified key name instead of key name
  • adds notifiables ability to export

data-import

  • added the purge command implementation
  • removes prune batches
  • makes private table builder methods protected
  • adds avoids deletion conflicts on import
  • added upgrade; updated migration
  • set batch null on import cancellation
  • implements CascadesFileDeletion
  • updated cascade deletion; added missing unique index
  • when restarting an import, optionally cleanup the attached RejectedImport
  • improves purge command; improves table builder; fixes rejected_imports fk
  • improves purge command
  • fixes delete method in model
  • fixed old deletable($type) usages
  • fixes rejected load
  • prioritized RejectedDataImportForeignKey AFTER RejectedDataImportId
  • fixes excel seeder
  • Update RejectedFileCreatedBy
  • improves excel seeder for better flexibility
  • refactor due to Types enum deletion
  • fixes missing enum
  • adds cancel stuck command
  • implements CSV import
  • reverts example import to excel
  • addresses mentions
  • depreciate when helper trait
  • fixes exception in Options service, refactor
  • improves restart method
  • adds txt as supported type

document

  • implements CascadesFileDeletion
  • fixed deletion
  • fixed actions

dynamic-methods

  • improves dynamic methods and relations functionality, wraps core laravel dynamic relations

files

  • adds file id unique upgrade
  • fixes destroy redirect
  • removes file in attachable; adds CascadesFileDeletion interface
  • fixes cascadable
  • adds missing unique() on file_id
  • add upgrade to drop old morphable index
  • improves performance in files index
  • fixed upgrade order & type (manual)
  • adds missing index
  • adds type_id & created_at index
  • adds state for types
  • improves upload controller logic
  • adds loadData in file model
  • fixes icons in type index table;
  • moves is_public in file_types table
  • fixes factory
  • fixes browsing public files

form

  • improves form mutators (arg handling)
  • fixes args handling
  • adds support for params
  • adds support for pivot params & custom params
  • depreciate when helper trait

google

  • fixes encrypted columns length
  • updated migrations
  • addresses PR discussion
  • removes static property from settings model
  • adds recaptcha url field
  • adds recaptcha validation rule
  • improves message in recaptcha rule
  • adds geocoding key

helpers

  • adds round capability in Decimals
  • adds use index ability in forceable index trait
  • small refactor
  • depreciate when helper trait

how-to

  • adds minssing unique() on file_id

io

  • improves ioEvent
  • adds support for task
  • reverted interface method return type
  • uses broadcastQueue methods in event

localisation

  • adds new confirmation text
  • fixes translation
  • improves texts

menus

  • refactors the menu table

pdf

  • adds filename for inline

people

  • adds email in person resource
  • implements id_series and id_number fields
  • import #23
  • improves factory
  • remove validator
  • fixes upgrade order
  • Update IdNumber

permissions

  • improves access-route gate to user cache

roles

  • manages role-permissions cache
  • improves cache handling
  • caches permissions only in production
  • improves role seeder
  • reverts previous config change
  • improves roles seeder
  • adds user ...
Read more

v5.0.0

11 Mar 07:27
92d2577

Choose a tag to compare

5.0.0

This breaking release brings the new Enso file system and upgrades all packages to Laravel 9.

The old filesystem was pretty basic and has been upgraded to something more robust by replacing the usage of polymorphic relationships with regular foreign keys (models that were using the HasFile trait now have a file relationship through a file_id column) with more features (such as favorite files) as well leaving room for future functionality.

We've taken advantage of the breaking version state, included other small changes from our backlog and made a slight change to the mechanism for locally extending package forms and tables.

Due to these changes, most packages have had a refactor and dependency list upgrade.

Front-end

clipboard

  • updated clipboard size

confirmation

  • removed unneded v-bind from dropdown

directives

  • improved clickOutside.js

documents

  • removed Document.vue component, now we use File.vue instead

files

  • major refactor in order to work with the new file system back-end changes
  • several fixes & enhancements
  • added edit ability for file name

how-to

  • fixed uploader

mixins

  • improved ensoFile.js, now it's constructor receives a File resource instead of a filename

notifications

  • fixed transition group

tables

  • cascades reset method
  • implemented number formatting for nested columns

themes

  • fixed confirmation; removes duplicated & deprecated classes

ui

  • added avatarKey in store
  • made content relative in default layout
  • improved websockets

uploader

  • cascades slot in enso-uploader
  • small refactor

users

  • fixed uploader
  • fixed v-click-outside related bug on profile control
  • improved Avatar.vue
  • added Url component

back-end

All packages have been updated with regards to:

  • aligning Form builder, Table builder & Form request validation classes naming conventions, by dropping superfluous prefixes.

  • when extending forms, rather than overriding the protected constant TemplatePath (which has now become private), we've added a protected method templatePath() that is used in the forms' constructor. When extending any form builders, you should override this method if you want to use another form template.

  • when extending tables, note that the protected constant TemplatePath has now become private, and we've updated the public method templatePath(). When extending any table builders, you should override this method if you want to use another table template.

  • due to the major files refactor, all packages that use files have been updated. FileServiceProvider file has been deleted and also removed form composer files.

  • the new file system impact has also led to the need of changing the initial order of migrations. For this change it already exists an upgrade, but you should take a note that a lot of package migrations have been renamed.

  • all migrations have been upgraded in order to return an anonymous class by the new Laravel 9 style. This way we can avoid class name collision.

  • an important note is that the old DataImport and DataExport models have been renamed to Import and Export, respectively.

action-logger

  • updated migration style

addresses

  • fixed seeders path
  • updated migration classes

api

  • no longer sends empty request body
  • fixed api calls
  • added query parameters interface

avatars

  • refactor for the new file system
  • updated migrations

calendar

  • updated migrations

cli

  • fixed synthax error in Exceptions/WriterProvider.php
  • fixed template path generation for forms and tables

comments

  • updated migrations

companies

  • fixed seeders path
  • updated migrations

control-panel-api

  • fixed seeders path
  • updated migrations

core

  • fixed seeders path
  • updated Preference rememberable keys
  • fixed password validation when resetting password and email is missing

countries

  • updated eea for United Kingdom
  • fixed seeders path
  • updated migrations

data-export

  • refactor for the new file system
  • updated migrations
  • renamed DataExport model to Export

data-import

  • switched order for authenticate / authorize
  • refactor for the new file system
  • updated migrations
  • renamed DataImport model to Import
  • the excel seeder has been updated, please see upgrade steps regarding this change

documents

  • refactor for the new file system
  • updated migrations

files

The file system has been significantly improved and has received a lot of new features, such as:

  • switched polymorphic relations to one to one
  • updated migrations
  • a much more user friendly interface
  • added edit ability for file name
  • temporary link generation for 5 minutes, 1 hour or 24 hours
  • improved inline preview
  • allows the transformation of private files into public files and vice versa

filters

  • fixed "doesntContain" search mode

google

  • updated migrations

helpers

  • small refactor

how-to

  • refactor for the new file system
  • updated migrations

impersonate

  • updated migration;

localisation

  • added the Full Name key and RO translation
  • fixed seeders path
  • updated migrations
  • the localisation files have been moved from resources/lang directory to lang directory

menus

  • updated migrations

notifications

  • updated migrations
  • updated pusher dependency

pdf

  • updated laravel snappy
  • added output() to Pdf
  • added return types

people

  • updated migrations

permissions

  • updated migrations

roles

  • updated migrations

tables

  • added the possibility to conditionally return a table builder using the tableClass($request) method in addition to the $tableClass property, used in the table related controllers (init, data, excel)
  • fixed resource collection computor
  • refactor for the new file system
  • implemented number and date formating for nested columns from loaded relationships

tasks

  • updated migrations

tutorials

  • updated migrations

user-groups

  • fixed seeders path

users

  • fixed seeders path
  • changed user defaultPreferences visibility to protected
  • updated migrations
  • updated user preferences to use cache

Private Packages

webshop-commercial

  • updated migration
  • refactor for the new file system

webshop

  • rebuilt assets
  • updated registration form label for name to Full Name
  • added default for sorting in order to address bot caching of deprecated URLs
  • fixed seeders path
  • updated migrations
  • removed services as dependency
  • refactor for the new file system

emag

  • added missing branch from the UpdateStock listener; small job rename
  • offer now uses dynamic methods
  • added conditional trim
  • added new Offer::valid scope
  • added logic to delete awbs after download
  • fixed Job location;
  • updated migrations

hr

  • fixed seeders path
  • updated migrations

projects

  • fixed seeders path
  • updated migrations

contracts

  • updated migrations

commercial

  • updated the UpdateStockValues due to supllier pivot refactor
  • shipping address is optional on store orders
  • added fix for missing address
  • made supplier query more specific
  • added requests
  • fixed issue due to product_supplier pivot id
  • updated migrations
  • refactor for the new file system

financials

  • updated migrations
  • refactor for the new file system

inventory

  • bundlePacking cleanup
  • added withAvailable scope on Product
  • updated migrations

discounts

  • updated migrations

wiki

  • updated migrations
  • refactor for the new file system

frisbo

  • fixed seeders path
  • updated migrations

stripe

  • updated migration

eav

  • adds publish method AppServiceProvider
  • simplified eav validation
  • removed unused model
  • added default for validator, when eav params payload is missing
  • updated migrations

sale-channels

  • updated migrations

product-eav

  • fixed eav syncing
  • simplified logic; removed attribute id from values pivot
  • added missing model
  • fixed table PK
  • added default for eav sync / Update
  • fixed the getEav dynamic; transformed the $product->attributes() dynamic relationship into a method
  • updated migration
  • fixes import

Upgrade steps

First and foremost, be sure the to read the official Laravel 9 upgrade guide to understand all implications.

  • before starting to upgrade your project, please read with attention the following step:

Due to the major files package refactor, all the Enso package classes using files will be updated accordingly.

  • publish the updated files config with php artisan vendor:publish --tag=files-config --force

  • add your local models using files under the upgrade key. The syntax is: old attachable_type name => Model::class.

  • if having several models stored under the same folder, then that folder name should be added under the nonStandardFolders key, so that the files could be migrated according to the new convention. The new convention is that the folder will be named as the model, written camelCase.

  • if you also want to rename your folder, you'll need to specify the name change under renameFolders key, as 'old name' => 'new name'.

  • for all models using files, update your migrations by adding file_id foreign key.

$table->unsignedBigInteger('file_id')->nullable();
$table->foreign('file_id')->references('id')->on('files')
    ->onUpdate('restrict')->onDelete('restrict');
  • if using the ensoFile.js mixin locally, when instantiating the class, you should pass a file resourc...
Read more

v4.9.1

31 Jan 15:12
02aa6bc

Choose a tag to compare

4.9.1

This minor release aims to update front-end packages to use the latest bulma syntax. It also includes many improvements and bug fixes.

Front-end

auth

  • fixed password confirmation bug

data-import

  • added support for template params options in addition to source

directives

  • simplified, improved performance & code readability of v-click-outside

io

  • updated navbar-item use

notifications

  • updated navbar-item use

roles

  • improved configure.vue info

tables

  • fixed bug affecting preferences saving caused by the vue3 ugrade

tasks

  • updated navbar-item use

themes

  • several deprecated helper classes such as has-margin-small, has-padding-small and their derivates have been removed
  • [v-cloak] & *:focus styling is included within the package
  • since v-tooltip is globally available, its css is loaded within the themes package

ui

  • fixed dynamic navbar component registration rendering
  • improved navbar-item; added show, hide and touch events

users

  • fixed navbar avatar on safari

back-end

core

8ee62af updated meta: removed csrf token

countries

b4bc27f updates eea for United Kingdom

data-import

  • added template params options support

permissions

  • added short name in permission resource

users

  • fixed user preferences reset
  • changed the User storePreferences method visibility to public

Private packages

webshop

  • removed deprecated css classes
  • updated searchable array to use the visibleOnWebshop dynamic

emag

  • added check for response error

commercial

  • added validation on external fulfilment
  • fixed typo

wiki

  • removed deprecated css classes

Upgrade steps

  • if you're still using the deprecated css which have now been removed, you should update:

    • has-vertically-centered-content to is-flex is-align-items-center

    • has-margin-auto to ma

    • has-margin-xxx, has-padding-xxx and their derivates (top, left, etc) to their corresponding bulma counterparts (m-1, m-2, ml-1, etc). See docs.

      For example:

      • has-margin-large -> m-3
      • has-margin-top-large -> mt-3
      • has-margin-right-small -> mr-1
      • has-margin-bottom-medium -> mb-2
      • has-margin-top-small -> mt-1
      • has-padding-left-large -> pl-3
      • has-padding-large -> p-3
      • has-padding-medium -> p-2
      • has-margin-top-medium -> mt-2
  • remove [v-cloak], *:focus & @import 'v-tooltip/dist/v-tooltip'; from client/src/sass/enso.scss

  • update the Enso version to 4.9.1 in config/enso/config.php

  • run composer update in the project's root

  • run yarn, yarn upgrade && yarn in /client to ensure you have the latest versions and patches are applied. If necessary, update your patches

  • php artisan enso:upgrade --before-migration

  • php artisan migrate

  • php artisan enso:upgrade

  • as per every release, delete any local, deprecated upgrades

v4.9.0

11 Jan 16:16

Choose a tag to compare

4.9.0

This release upgrades the UI to Vue 3 and also includes under the hood refactor
for a few core components. We've tried to maintain overall component compatibility
and done our best to document the breaking changes.

Depending on how complex the UI for your project is, the upgrade may take
anywhere from a 1.5h to many days, so please take your time to go through the Enso changelog,
especially the upgrade steps AND also the Vue3 upgrade guide linked below.

Front-end

All packages have had their dependencies and dev dependencies updated and pruned.
Many packages have had linter recommended fixes.

filters

  • the DateIntervalFilter & EnsoDateIntervalFilter components have been retired

laravel-validation

  • added an all() method, that returns all errors

pull-to-refresh (new)

This a new Enso package, forked from lakb248/vue-pull-refresh
and updated to work with Vue3.

select

  • fixed element deselection when the select was used in 'object' mode

Private packages

inventory

  • aligned products index page style & updated table filters/state

commercial

  • updated the invoice issuing routes
  • improved items display

emag

  • fixed auto pricing controls
  • fixed auto pricing conditions
  • updated emag dependent filters to auto clear when deactivating emag
  • fixed can-access usage; improved Emag.vue
  • added new product filters for emag offers; added new visual indicator for "genius"

products

  • small fix for products index styling

webshop

  • form cleanup

Back-end

categories

  • fixed ordering bug

core

  • updated state Meta: removed csrf token

localisation

  • removed the expanded sidebar key (cleanup)

tables

  • fixed excel export on all scenarios
  • fixed authenticates on export
  • fixed style
  • updated to allow sortable for nested columns (should be used carefully);
  • extracted Computor from Data
  • improved excel export -> fetcher needs to be redesigned
  • improved excel preparing

tutorials

  • updated form to use the new permissions.options route

Private packages

commercial

  • updated addresses logic for the sale form
  • fixed status filter
  • improved stock values computation
  • removed created/updated_by fields from being exportable
  • bugfix: only perform invoice cancellation if invoice exits
  • implemented the possibility to enable per sale channel opt-in/out for sale notifications
  • fixed acquisition price in stock values Computor
  • removes unneeded relation loads; fixed style

commercial

  • removed the back button for the modal form

eav

  • fixed group & attribute reordering bug
  • small Attribute factory fix

emag

  • fixed missing return
  • refined stock management
  • improved code to keep the local offer in sync with the emag remote offer on each upload
  • improve order flow for edge cases when API is down

frisbo

  • added order update webhook endpoint,
    append product lot to product name and order notes
  • small refactor
  • added logging for api callbacks
  • expiration date flow enhancements

Vue Migration Build

In order to migrate a project, we will use the Vue3 Migration Build as an intermediary step, upgrade the code to make it Vue3 compatible, then finally switch to the regular Vue3 build.

Please read the official documentation linked above, so you have a better understanding of the process.

In order to use the migration build, it needs to be imported and configured:

  • in client\package.json: "@vue/compat": "^3.2.20",
  • in vue.config.js, within the chainWebpack config:
        config.resolve.alias.set('vue', '@vue/compat');
        config.module
            .rule('vue')
            .use('vue-loader')
            .tap(options => ({
                ...options,
                compilerOptions: {
                    compatConfig: {
                        MODE: 2,
                        COMPILER_V_BIND_OBJECT_ORDER: false,
                        COMPILER_IS_ON_ELEMENT: false,
                    },
                },
            }));
    
  • in client\src\js\enso.js:
    Vue.configureCompat({
        RENDER_FUNCTION: false,
        INSTANCE_LISTENERS: false,
        COMPONENT_V_MODEL: false,
        ATTR_FALSE_VALUE: false,
        INSTANCE_ATTRS_CLASS_STYLE: false,
        TRANSITION_GROUP_ROOT: false,
    });
    

The package & snippets are already present in the Enso release, but they will be commented out, so in order to enable the migration build, open the relevant files and uncomment the blocks above.

Note that the compiler migration build flags belong to the vue.config.js file and require the restart of HMR (if using it) while all other flags belong to the client\src\js\enso.js file.

Vue Dev Tools

For Vue3, a new browser devtools plugin is needed and can be installed along side the Vue2 plugin.

Upgrade Steps

In addition to upgrading the Enso UI to make it Vue3 compatible, we've also made some other changes to a few Enso components some of which may impact your local code.

  • update the following files with the latest versions

    • .babel.config.js
    • .eslintrc.js
    • vue.config.js
    • client\src\js\enso.js
    • client\package.json
    • client\src\sass\enso.scss
  • enable the migration mode, as noted above

  • run yarn && yarn upgrade and start HMR

  • you should be able to login into the application and will probably have some (lots of) errors and warnings

  • the deprecated legacyBuild flow for building the application state has been removed entirely store.js

  • we have aimed to remove global components and instead import them for each use case

    • the fa component is no longer global and needs to be imported locally, where used
      import { FontAwesomeIcon as Fa } from '@fortawesome/vue-fontawesome';
      ...
      components: { ..., Fa, ... },
      
    • the global http axios alias is no longer available,
      instead it should be injected as required:
      Update:
      myMethod() {
          axios.post(...);
      }
      
      to
      inject: ['http']
      ...
      myMethod() {
          this.http.post(...);
      }
      
  • if using any @hook:... hooks, replace all usages with @vnode-... docs

  • in all of your renderless components you can set the inheritAttrs: false, attribute to eliminate warnings about inherited attributes

  • $listeners has been removed / merged into $attrs. See docs

    You need to remove v-on="$listeners" usages.
    Note that in such cases, you will probably need to cascade events, either directly or via v-bind="$attrs" if applicable.

  • $scopedSlots property is removed and all slots are exposed via $slots as functions. See docs.

    You should replace this.$scopedSlots.xxx with this.$slots.xxx in your render functions

  • update the slot syntax, by replacing v-slot:xxx with #xxx

  • if you are still using the deprecated named / scoped slot syntax, update it to the latest syntax first (which is already supported in 2.6)
    For example, replace

    <template slot-scope="{ count }">
    

    to

    <template #default="{ count }">
    
  • the beforeDestroy hook has been renamed to beforeUnmount - you should replace all usages project wide. See docs

  • when using $el within components, ensure that there is a single root within the element (e.g. <div>)

  • when emitting events in components (e.g. $emit('click')), it is recommended to declare/list the emitted events:

    emits: ['click'],
    
  • for components, the value property has become modelValue and the input event has been replaced with update:modelValue. See docs

    When listening on 'value' changes on components, you need to replace @input="xxx" with @update:model-value="xxx".
    In Vue3 you can also have multiple v-model bindings on the same component. See docs

  • in all of your renderless components you can set the inheritAttrs: false, attribute to eliminate warnings about inherited attributes

  • note that in Vue3 you can no longer programmatically destroy components as the $destroy() method has been removed. See docs

  • HTML bound attributes such as :disabled will be rendered as disabled="false" for false values, and if you need to not have them rendered, the bound attribute value needs to be evaluated to null or undefinded. See docs

  • if using watch on arrays, you need to add deep: true otherwise the callback may not be triggered. See docs

  • you no longer need to use $set & $delete to manage object attributes in order to keep responsiveness, you can use regular JS syntax. See docs.

  • if asynchronously loading components, the syntax has changed. See [docs]...

Read more

v4.8.2

26 Nov 11:08
ea298ef

Choose a tag to compare

4.8.2

This aims to be the last minor release before upgrading to Vue 3 and includes many improvements, bug fixes and also several new features.

Front-end

addresses

  • implemented google package

algolia (new)

  • implemented settings package for Algolia

bulma

  • added toggle filters
  • added users as dependency

charts

  • updated Chart.vue
  • updated dependencies
  • fixed chart instance usage
  • brings back default options
  • added shortNumber filter

data-import

  • improved UX for disabled exports

emails

  • updated syntax and eslint config

enums

  • updated dependencies and .eslintrc.js

files

  • small refactor in index
  • removed redundant chart option

filters

  • added toggle filters
  • added dirty to filter-state
  • improved dirty watcher in filter state

forms

  • added the ability to reload based on a be flag
  • exposed undo()

google

  • fixed missing icon import

meili-search (new)

  • implemented settings package for MeiliSearch

mixins

  • fixed edge case with re-rendering login form after logging in

mobile-app

  • added .eslintrc.js
  • updated .gitignore and dependencies

range-slider (new)

  • Vue Range Slider based on noUiSlider

route-mapper

  • updated dependencies
  • updated .eslintrc.js
  • refactored the mapper class; fixed bug related to optional params; improved logic/flow

scroll-to-top

  • fixed bottom margin

search-mode

  • renamed algolia to searchProvider

select

  • fixed multiple select value mutations when using state options

sentry

  • updated dependencies and .eslintrc.js

strings

  • fixed slug generation issue to handle cases when regEx matching had no actual matches

tables

  • improved key in table header
  • reflected filtered state
  • added missing mr-1 in controls
  • added danger on filter flag
  • added support for dropdown actions
  • added debounce for filters

themes

  • added has-margin-auto
  • removed bulma-checkradio
  • updated bulma-extensions dependency
  • imported minimized css from bulma-extensions

typesense (new)

  • typesense integration for laravel-enso

ui

  • added integrations.js
  • improved app update notification
  • updated AppUpdate.vue
  • fixed app update v-if
  • made app update dropdown always visible
  • improved internal AppUpdate flow; fixed issue with showing the modal
  • updated bulma-extensions dependency

users

  • fixed user profile level margin

back-end

activity-log

  • updated for php 8
  • updated .styleci.yml

addresses

  • deprecated google config key, uses settings from google package
  • improved validation for case when postcode exists in the DB, but for a different country
  • improved postcode validation
  • added GBR addresses
  • added Geocoding service; updated Coordinates to use the new service

algolia (new)

  • implemented settings package for Algolia

api

  • implemented custom headers
  • added a throttle helper
  • added toJson method to the api resource
  • improved adding headers to the request
  • added request duration logging
  • updated api logger
  • decreased duration column size
  • removed nullable from duration
  • added public apiEnabled: bool on Action
  • improved exception message
  • updated method visibility

avatars

  • made the avatars generators configurable

categories

  • added options endpoint
  • removed unneeded attribute
  • added categories import
  • added sync queue for the categories import; if needed, template can be locally customized

charts

  • refactored to chartjs 3
  • fixes default tooltip config
  • implemented backend shortNumbers
  • fixed horizontal chart

cnp-validator

  • updated CnpValidator.php
  • required php 8
  • updated strlen usage to mb_strlen

companies

  • fixed company fiscal code in factory
  • added queue sync for the companies import; if needed, template can be locally customized
  • updated import, added new attributes
  • added fiscal code to rememberable keys

control-panel-api

  • fixed stat class

core

  • added structure for integrations
  • improved app update event
  • added a Login trait to work with the latest changes in laravel-ui
  • fixed login test for the new guard config attribute in sanctum.php

countries

  • updated eea for United Kingdom

data-import

  • fixed the Template's notifies method

documentation

  • added route mapper docs stub & mention about transpiling

filters

  • renamed algolia to searchProvider; improves searchProvider results

google (new)

  • implemented settings package for Google

helpers

  • updated searchable trait
  • added production check
  • configured styleci for php8
  • updated Searchable trait due to new Algolia package
  • updated price computor constructor and vatPercent use
  • fixed searchable for extended / binded models
  • added support for meilisearch in searchable
  • removed deprecated searchable trait
  • fixed Obj casts: set method now performs json encode
  • fixed Cash label
  • updated codesize/phpmd config rules for constant naming
  • removed Sleep
  • added new min max utility methods to Decimals

localisation

  • updated texts, added new keys & translations
  • added missing cleanup for the language update test
  • added missing php dependency
  • made seeder reusable in local projects

logs

  • improved logs collection to handle archives
  • fixed tests

meili-search (new)

  • implemented settings package for MeiliSearch

phpunit-pretty-print

  • updated strlen usage to Str::length

select

  • opened up flexibility on Options Service instantiation from OptionsBuilder

tables

  • added support for dropdown actions
  • resolved resources from service container
  • updated template

tasks

  • fixed export error

typesense (new)

  • new typesense integration for Laravel Enso

unit-conversion (new)

  • new unit converter utility classes for Laravel Enso.

upgrade

  • added getLength in Column
  • added exists() helper for table
  • updated upgrade status to address change in Symphony console table
  • ignored upgrades from namespaces that are not within autoload

Private packages

webshop-commercial

  • added webshop searchable array
  • maked default ranking 0 in search provider data
  • replaced the product dynamic method WebshopSearchableArray with a simple service
  • updated flow for webshopDiscount; now we no longer fall through to general supplier discount but use webshop company if no specific cliend discount exits
  • used float casts for searchable attributes
  • updated webshop order implementation
  • fixed class path and deprecated Online

webshop

  • moved search provider product index to webshop from algolia
  • hides price and discount when no stock available
  • removed webshop-shadow role
  • added isActive to the BaseFilters@facets array (excluded facets)
  • moved searchable attributes to webshop from webshop commercial
  • updated contract & account order actions
  • updated BaseFilters.php
  • added availability filters
  • updated discount observer
  • hides empty filters
  • added price filter
  • added priceFiltered() getter
  • added services for search providers
  • removed PaymentMethods enum;
  • added payment config
  • added default sorting to newest
  • builded the new price filter
  • implemented most popular sort
  • various fixes, improvements and refactors

emag

  • refactored add invoice -> upload invoice
  • refactored product index use
  • removed ValidateStoreRequest request, MissingOffer notification, deprecated parents() setter call, measurment units implementation, checker scopes & methods, recheck & cleanup flows and notSyncedYet scenarios branch
  • offer download throws exception on error; categories sync service deletes any old emag categories
  • updated order flow: now stopping before generating awb if not fully reserved
  • emag categories now have parent id
  • implemented awb schedule
  • added vat id to the offer update resource and conversionable unit Enums
  • updated CreateCategoryEmagCategoryPivotTable and CreateEmagOffersTable migration
  • now an offer is made inactive when we do not have stock
  • removed deprecated NullableCategoryId upgrade
  • added emagDiscount() dynamic for services, new headers to all emag requests and check for sync / when not empty
  • log now also sends email notification; added checker jobs failure handling
  • made the buy button rank array key optional
  • set number of offers & best offer sale price as nullable
  • renamed last_checked_at to checked_at
  • added check for the presence of the emag settings table for further scheduling
  • refactors fetchPicture(s) to downloadPictures
  • added new emag status
  • added upgrade to drop offers discount_percent
  • removed auto_pricing from the Offer table resource and urls from the settings form and migration
  • removed download after each operation; updated offer fill, using DI resource, new genius column
  • added upgrade for removal of old settings url columns
  • added commands for activation/deactivation of the emag api
  • various fixes and improvements

commercial

  • enabled cancel
  • removed sort by created_by/updated_by
  • removed By columns from being searchable
  • added limit for product labels
  • updated products template
  • refactored grn to goodsReceivedNote
  • added bulkStockRemoval
  • added limit and ordering for bulk stock removal;
  • updated sale cancellation policy to exclude invoiced sales
  • added locks
  • updated limit to cover all cases
  • allowed sale fulfill, on default channel & internal warehouses when missing address
  • renamed externallyFullfilled
  • added quick fix for sales payment form
  • added awb schedule ...
Read more

v4.8.1

02 Aug 12:21

Choose a tag to compare

4.8.1

Front-end

For most of our frontend packages we've added router error handling.

addresses

  • fixed case when address does not have locality/city

charts

  • updated Chart.vue

companies

  • refactored slot-scope to v-scope

control-panel

  • improved layout
  • fixed index and stat value format

datepicker

  • fixes edge case when attempting to change value during picker reset

forms

  • clears errors before autosave

mixins

  • added 413 error code handling

modal

  • fixes modal and modal template

notifications

  • fixed Notification component registration for cases where we might revoke the default notification permission

products

  • fixed small bug due to being unable to create slug when name is null
  • reverted check for null, and moved it to the slug method

sentry

  • added ingored errors (for ChunkLoadError)
  • added UnhandledRejection to ignored

strings

  • added string validation
  • casted args to string
  • refactored strings
  • updated methods to also handle null parameters, in which case they return an empty string

tables

  • fixed number formatter when fullRecordInfo is false
  • added ongoing request cancel in before destroy to avoid various timing errors; fixed and refactored NumberFormatter
  • renamed method in number formatter

typeahead

  • added force-selection

ui

  • adds sentry context
  • removed duplicated filters
  • fixed navbar item registration
  • fixed text in dark theme on error pages
  • added maintenance mode page
  • fixed router error handler; improved middleware

users

  • fixed user profile layout

back-end

action-logger

  • refactors action logger middleware
  • updates .styleci.yml
  • removes redundant argument

addresses

  • fixed code style

avatars

  • improved gravatar; renamed observer to User

companies

  • added company fiscal code request validation

control-panel

  • drops org url
  • adds sentry org to config
  • improves config, adds env vars
  • fixes return types; refactors switch to matches
  • updates id signature & implements id provider
  • adds is_active in table builder for apps

control-panel-api

  • improves middleware registration
  • extracts api middleware group in the api package
  • improves database sensor
  • removes digits for request monitor
  • improves request monitor
  • extracts id provider
  • improves logic; adds danger class for outdated versions
  • fixed type in Services\Statistics

control-panel-common

  • added missing return types in contracts
  • added IdProvider abstract class

core

  • .gitIgnore
  • adds alias for ensure-frontent-requests-are-stateful middleware
  • extras middleware registration in separate provider
  • updates .styleci.yml
  • style update
  • removes core-api route group
  • improves Logout trait to work with non spa env
  • reverts logout
  • New State logic - customization flexibility #393
  • used App::make instead of new for providers instantiation for flexibility on customizing states.

data-export

  • fixed export error notification
  • added custom row action contract

forms

  • fixed section visibility set automatically to visible in the builder

helpers

  • added forceable index
  • added cascades observers trait

localisation

  • updated translations for webshop reviews
  • added php version 8 for styleci cfg

roles

  • improved syntax in config writer

select

  • Options ordering - more sorting flexibility. #46
  • created new select config option 'sortByOptions' for controling Select Options sorting.
  • used new config 'sortByOptions' inside Options get method

sentry

  • added prefix for recent exceptions; added dedupeInterval in publisheable config

tables

  • fixed button name check (needed only for row)
  • fixed tests

users

  • added policy fixes
  • implemented cascades observers

Privates

webshop-commercial

  • updated middleware names

webshop

  • added exception when attempting navigation to unavailable pages; fixes #46

  • removed log

  • updated cookie consent blade

  • cleanup of unused routes; added local auth middleware instead of package

  • customized verifiy active state for webshop

  • makes product filters a partial;

  • built with latest sentry version

  • disabled the form button after submitting a review to avoid double clicks

  • updated the Review Submitted notif to include the product name

emag

  • handled setting attribute for when value is array; ref #30

  • updated offer generation for bundle

  • updated new offer resource for bundle products

  • updated resource re:ean for packages

financials

  • updated flow

  • removed hard coded logic for shipping service in XML generation

wiki

  • fixes login route

  • adds verify active state

frisbo

  • adds bundle publishing ability

api

  • added logs
  • adds core-api midleware group

fetcher

  • updates gitlab ci and vue.config

  • increased the timeout limit

Upgrade steps

To upgrade:

  • run composer update
  • run yarn, yarn upgrade && yarn to ensure you have the latest package versions and patches are applied. If necessary, update your patch files.
  • php artisan enso:upgrade --before-migration
  • php artisan migrate
  • php artisan enso:upgrade to execute the upgrades
  • if you need to customize the select options sort method, you can do so by publishing the select config using php artisan vendor:publish --tag=select-config --force and updating the sortByOptions key as needed.
  • make sure permissions are properly configured for each role and then save/refresh the roles configuration files
  • update the Enso version to 4.8.1 in config/enso/config.php

v4.8.0

23 Jun 13:55
a3d6a5d

Choose a tag to compare

4.8.0

This new release adds the possibility for back-end packages to publish their own state to the front-end as well migrates the framework & packages to PHP 8.0. Where applicable, updated packages to take advantage of the new language features.

Front-end

Most of the packages received a dependency list cleanup.

bulma

  • added enhanced progress indicator
  • added ProgressIndicator component export

charts

  • fixed labels update on structure change
  • added display function prop

enums

  • renamed the internal i18n attribute to _i18n, to avoid potention conflicts with enum keys

financials

  • fixed supplier invoice index layout

localisation

  • improved store module

products

  • improved the product form to update slug dynamically
  • improved product picture styling/layout in table & form
  • added newly computed supplier discounted price to the form

progress-indicator

  • implemented enhanced indicator; various progress indicator improvements

rating

  • updated mobile bottom position

scroll-to-top

  • updated mobile bottom position

strings

  • fixed the slug helper

tables

  • removed the already deprecated money support; templates should now use number - more details are found in the upgrade steps
  • added customizable total label via the template's totalLabel property
  • fixed page toggling

ui

  • improved store module to allow for automatic package store registration
  • small refactor and various fixes
  • added sentry spike protection

user-groups

  • removed unneeded file

Back-end

  • all packages have had the route require syntax updated to reqire __DIR__./xxx.php
  • all packages that were using money configuration for numeric formatting have been updated to use the already available number configuration
  • all packages that were including data imports, have been updated so that importers respect the new methods' signatures
  • all get_class($instance) usages refactored to $instance::class
  • seeders and factories have been updated, and where it made sense, helper methods (such as test()) were added which create a different factory state (such as for testing)

action-logger

  • code cleanup

activity-log

  • route refactor

api (new)

  • new package that provides boileplate for implementing APIs

categories

  • fixed stacked bar chart

charts

  • added contains nested scope

companies

  • extracted user state to the users package

core

  • extracted user state to the users package

currencies

  • removed FixesCurrencyApi exception
  • refactored to use the new api package

data-export

  • added data_exports.name index upgrade

data-import

  • improved error logging for local environments
  • updated interfaces to pass the import model instead of params/user
  • added avoids deletion conflicts and updated delete method
  • added notifies boolean flag in json template and notifiableIds config option
  • added params to optional attributes

files

  • improved the file resource

helpers

  • disabled algolia syncing when not in production
  • fixed searchable
  • added price computor
  • added new custom cast for Object

localisation

  • added & updated various keys & translations

measurement-units

  • added the name attribute to the rememberable keys config array
  • added MeasurementUnits enum

products

  • updated price computor use
  • updated product visibility in the supplier resource
  • added newly computed supplier discounted price
  • added generateSlug helper
  • added part_number index on product_supplier pivot
  • updated package_quantity type to int

roles

  • added config options for restricting user groups
  • improved visible scope

sentry

  • extracted sentry functionality from the Core package

services

  • made measurement unit not nullable in the table
  • improved upgrade

upgrade

  • renamed nullable Column method to isNullable
  • added isSigned, isUnsigned helpers, getPrecision and getScale for decimals

users (new)

  • extracted user functionality from the Core package
  • removed title from profile builder
  • added state provider
  • improved changeGroup policy

user-groups (new)

  • extracted user groups functionality from the Core package
  • added config options for restricting user groups
  • improved visible scope

tables

  • added customizable total label
  • removed the already deprecated money support; templates should now use number - more details are found in the upgrade steps

Upgrade steps

  • run composer update in the project's root
  • run the upgrade commands (both regular and before-migration) to ensure
    database & strucure is up to date, since this release cleans up a lot of package upgrades
  • upgrade your machine to php8
  • in composer.json update the following dependencies to the given versions:
    • "laravel-enso/core": "^7.0",
    • "sentry/sentry-laravel": "^2.0.0"
    • "laravel-enso/phpunit-pretty-print": "^1.0",
    • "nunomaduro/phpinsights": "^2.0",
  • search & replace in your local project (including the database folder) the following namespaces:
    • Core\Models\UserGroup -> UserGroups\Models\UserGroup
    • Core\Enums\UserGroups -> UserGroups\Enums\UserGroups
    • Core\\Enums\\UserGroups -> UserGroups\\Enums\\UserGroups
    • Core\Models\User -> Users\Models\User
    • Core\Policies\User -> Users\Policies\User
    • Core\Models\Session -> Users\Models\Session
    • Core\Http\Controllers\Administration\Users -> Users\Http\Controllers
    • Core\Http\Controllers\Administration\UserGroups -> UserGroups\Http\Controllers
    • Core\Tables\Administration\Users -> Users\Tabels
    • Core\Forms\Administration\Users -> Users\Forms
    • Core\Http\Resources\User -> Users\Http\Resources\User
    • Core\\Http\\Resources\\User -> Users\\Http\\Resources\\User
    • Core\Http\Requests\ValidateUserRequest -> Users\Http\Requests\ValidateUserRequest
    • Core\Database\Factories\UserFactory -> Users\Database\Factories\UserFactory
    • Core\Database\Seeders\UserGroupSeeder -> UserGroups\Database\Seeders\UserGroupSeeder
    • Core\Database\Seeders\UserSeeder -> Users\Database\Seeders\UserSeeder
  • remove from config/insights.php the deprecated:
use ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff;
use ObjectCalisthenics\Sniffs\Metrics\MethodPerClassLimitSniff;
use ObjectCalisthenics\Sniffs\NamingConventions\ElementNameMinimalLengthSniff;
  • run composer update in the project's root
  • update any local person/people factories and seeders and remove the title attribute as it has been dropped
  • for your local imports, for the importer & validator classes, update the following method signatures (& logic where necessary):
    • run: public function run(Obj $row, DataImport $import);
    • after: public function after(DataImport $import);
    • authorizes: public function authorizes(DataImport $import): bool;
    • before: public function before(DataImport $import);
  • for your local table JSON templates, change any money keys to number, and remove any "thousand" & "decimal" attributes. Number supports precision, symbol and template (e.g. "%v %s" - %v for value, %s for symbol)
  • local storage/app/.gitignore should be updated to ignore all and look like this
    *
    !.gitignore
    
    You may also remove .gitignore files from individual enso created, app sub-folders (except public)
  • check the local config/enso/tables.php file and if the export.path key is present, update it to export.folder
  • local state:
    • remove the local state binding from App\Providers\AppServiceProvider: CoreLocalState::class => LocalState::class,
    • remove the App\Services\LocalState class after moving any logic to one or more state builder services
    • from client/src/js/enso.js, remove the import: import './localState';
    • remove the file client/src/js/localState.js
    • if you moved logic from the old LocalState class, update the file client/src/js/store/local.js as required, otherwise you may delete it. Note that the client/src/js/store folder MUST be present.
  • compare config/enso/config.php with vendor/laravel-enso/core/config/config.php
    and remove any extra, deprecated keys
  • still in config/enso/config.php update the Enso version to 4.8.0
  • compare config/enso/addresses.php with vendor/laravel-enso/addresses/config/addresses.php and remove any extra, deprecated keys
  • update the password config/enso/auth.php key as follows:
    'password' => [
            'lifetime' => env('PASSWORD_LIFETIME', 0),
            'minLength' => env('PASSWORD_MIN_LENGTH', 6),
            'mixedCase' => (bool) env('PASSWORD_MIXED_CASE', 0),
            'numeric' => (bool) env('PASSWORD_NUMERIC', 0),
            'special' => (bool) env('PASSWORD_SPECIAL', 0),
    ],
    
  • from Database\Seeders\DatabaseSeeder, from the run() method's unit tests running branch, you may delete the following seeders, as the respective factories have been updated to no longer require this:
                CountrySeeder::class,
                RegionSeeder::class,
                TownshipSeeder::class,
                LocalitySeeder::class,
    
  • update/rename the following .env variables:
    • PASSWORD_LENGTH -> PASSWORD_MIN_LENGTH
    • PASSWORD_NUMERIC_CHARACTERS -> PASSWORD_NUMERIC
    • PASSWORD_SPECIAL_CHARACTERS -> PASSWORD_SPECIAL
    • PASSWORD_UPPER_CASE_CHARACTERS -> PASSWORD_MIXED_CASE
  • replace LaravelEnso\Core\Exceptions\Sentry usage and import with LaravelEnso\Sentry\Exceptions\Handler in `App\Exceptions\Handler.ph...
Read more