Releases: laravel-enso/enso
v6.0.0
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()
onfile_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()
onfile_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
AFTERRejectedDataImportId
- 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()
onfile_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
infile_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
- 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()
onfile_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
- adds filename for inline
people
- adds email in person resource
- implements
id_series
andid_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 ...
v5.0.0
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 useFile.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 aFile
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 methodtemplatePath()
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 methodtemplatePath()
. 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
andDataExport
models have been renamed toImport
andExport
, 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 toExport
data-import
- switched order for authenticate / authorize
- refactor for the new file system
- updated migrations
- renamed
DataImport
model toImport
- 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
- updated migrations
helpers
- small refactor
how-to
- refactor for the new file system
- updated migrations
impersonate
- updated migration;
localisation
- added the
Full Name
key andRO
translation - fixed seeders path
- updated migrations
- the localisation files have been moved from
resources/lang
directory tolang
directory
menus
- updated migrations
notifications
- updated migrations
- updated pusher dependency
- 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 toprotected
- 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 onProduct
- 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
methodAppServiceProvider
- 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...
v4.9.1
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
tois-flex is-align-items-center
-
has-margin-auto
toma
-
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';
fromclient/src/sass/enso.scss
-
update the Enso version to
4.9.1
inconfig/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
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 thechainWebpack
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 usedimport { 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:tomyMethod() { axios.post(...); }
inject: ['http'] ... myMethod() { this.http.post(...); }
- the
-
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 docsYou need to remove
v-on="$listeners"
usages.
Note that in such cases, you will probably need to cascade events, either directly or viav-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
withthis.$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 tobeforeUnmount
- 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 becomemodelValue
and theinput
event has been replaced withupdate:modelValue
. See docsWhen 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 asdisabled="false"
for false values, and if you need to not have them rendered, the bound attribute value needs to be evaluated tonull
orundefinded
. 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]...
v4.8.2
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()
- 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
tosearchProvider
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; updatedCoordinates
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 tomb_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
tosearchProvider
; 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
inColumn
- 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 theBaseFilters@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, deprecatedparents()
setter call, measurment units implementation, checker scopes & methods, recheck & cleanup flows andnotSyncedYet
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
andCreateEmagOffersTable
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
tochecked_at
- added check for the presence of the emag settings table for further scheduling
- refactors
fetchPicture(s)
todownloadPictures
- added new emag status
- added upgrade to drop offers
discount_percent
- removed
auto_pricing
from theOffer
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
togoodsReceivedNote
- 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 ...
v4.8.1
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
tov-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 toUser
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 thesortByOptions
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
inconfig/enso/config.php
v4.8.0
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 usenumber
- 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 toreqire __DIR__./xxx.php
- all packages that were using
money
configuration for numeric formatting have been updated to use the already availablenumber
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 andnotifiableIds
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 onproduct_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 toisNullable
- added
isSigned
,isUnsigned
helpers,getPrecision
andgetScale
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 usenumber
- 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);
- run:
- for your local table JSON templates, change any
money
keys tonumber
, and remove any "thousand" & "decimal" attributes. Number supportsprecision
,symbol
andtemplate
(e.g. "%v %s" -%v
for value,%s
for symbol) - local
storage/app/.gitignore
should be updated to ignore all and look like thisYou may also remove* !.gitignore
.gitignore
files from individual enso created, app sub-folders (exceptpublic
) - check the local
config/enso/tables.php
file and if theexport.path
key is present, update it toexport.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 fileclient/src/js/store/local.js
as required, otherwise you may delete it. Note that theclient/src/js/store
folder MUST be present.
- remove the local state binding from
- compare
config/enso/config.php
withvendor/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
withvendor/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 therun()
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 withLaravelEnso\Sentry\Exceptions\Handler
in `App\Exceptions\Handler.ph...
v4.7.1
4.7.1
This is a patch release whose main purpose is to update localisation files.
Upgrade steps
- update the Enso version to
4.7.1
inconfig/enso/config.php
- run
composer update
in the project's root - publish the updated localisation assets with
php artisan vendor:publish --tag=enso-localisation --force
- 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.7.0
4.7.0
This aims to be the last minor release before upgrading to PHP 8 and includes many improvements, bug fixes and also several new features.
Front-end
Most of the packages received a dependency list cleanup.
activity-log
- moved the icons file
addresses
- improved postcode in form
auth
- refactored components
bulma
- added orderable trees
calendar
- added filter in
components/CalendarFilter.vue
categories
- updated dependencies: now uses the orderable trees package
clipboard
- updated readme
companies
- small fixes
- removed unused code
- improved people association removal
data-import
- added back cascade of the
browseFiles
method which makes it easier to use the component standalone, for example in a table - fixed rejected import download
documents
- added file size limit
emag
- updated commercial form content and components
filters
- added translatable to
vue-filter
financials
- updated dashboard chart
- improved client filter
forms
- hided actions in autosave mode
- returned promises from fetch & submit; added submitting and submitted events
- added
clearErrorsControl
,section-divider
class, section visibility and watcher for the form path, so that the form is re-fetched if the path changes - fixed style and hidden fields
- cleaned and updated
CoreForm.vue
- updated
FormSection.vue
- removed meta
inventory
- updated product components; moved icons to src
io
- fixed channels, small fixes
notifications
- fixed channels, method name
orderable-trees (new)
- facilitates creating and ordering tree structures with
drag-and-drop
functionality
products
- fixed images in picture uploader
- fixes missing dependency
rating (new)
- simple component which facilitates star rating
scroll-to-top
- updated mobile margins
switch
- made label clickable
- simplified logic
tables
- fixed boolean classes in table cell and slot
tasks
- used new websocket getter
toastr
- extended HTML support for title similar to body, if html flag is set, treat title (if set) as html.
typeahead
- made search control hidden on mobile
- passed enso error handler
- added
taggableoption
: can create when typing non existing options; emits keydown events to be used in different implementation scenarios; small internal refactor - cascaded the core typeahead clear method and made the query & loading values available in the controls slot
ui
- fixed
@enso-ui/auth
andchannels
- improved logo display in navbar
- small refactor
Privates
commercial
- updated pages and components
- integrated sale channel package
- allow issue invoice at all times
- reorders actions to be more natural
- added cancellation
- multiple fixes and enhancements
eav (new)
- provides entity attribute value functionality for entities which require a scalable number of attributes
emag
- added response handling for product publish
- added sale channels and services as dependencies
- added settings table
- added option for manual invoice upload
- various fixes and updates
frisbo (new)
- provides action components for syncing, stock check and dispaching orders on Frisbo platform
inventory
- updated overwritable products pages
- added warehouses store
sale channels (new)
- basic sale channels CRUD components with store functionality
webshop
- added approve & reject action in table
- added sale channels and services as dependencies
- various fixes and improvements
Back-end
addresses
- added
rememberable
on locality and region - improved store logic and label
- added cast for
addressable_id
- allows multiple billing addresses
- fixed test
- added postcode to label
- added scopes and dynamic user relation
avatars
- updated
user_id
cast
calendar
- added phpmd config
- fixed notification queue
- updated notification subject
categories
- fixed logic due to illuminate collection constructor update
- added
rememberable
keys in category, global scope & small changes - cleanup and fixes
- improved scope by adding the table
- updated
parentTree
to return only parents - updated tests to reflect previous changes to the
parentTree
method - added
contains
nested scope
charts
- added
colorsConfig
setter, updatesChartCard
andChart
- fixed chart options reactivity
cli
- fixed package generation
comments
- updated notification subject
companies
- added
rememberable
keys in company - updated factory and tests
core
- extracted impersonate policy
- added version update
- fixed import, style, password reset when email is wrong, notification queue and email footer
- updated
Version.php
,config.php
and social media icons - added core version, missing key in guest state and admins & supervisors scopes on user
- improved reset password notification and enso mail theme
- replaced social media icons with svgs; improved publishing aliases
- extended the reset storage command to take optional list of folders (comma separated)
- removed deprecated
googleplus
and unused import - reworded reset password notification subject
countries
- added
rememberable
keys in country for iso. - added name to
rememberable
keys - improved region label
data-export
- fixed notification queue
data-import
- fixed wrong number with restart
- added error in console mode and validations in template export
- updated
Chunk.php
- reseted counters to zero when data-import was restarted in all cases.
- removed
ImportTypes
departments
- removed useless import
documentation
- updated documentation for Search Modes
enums
- added ability to use private constants for custom logic
- fixed enum localisation and mapping
excel
- refactored in export service
forms
- flexible number of columns
- added visibility
- fixed wrong property, meta test, input "content" validation
- added
clearErrorsControl
structure option
helpers
- updated
Sleep
impersonate
- added gate
- updated
AuthServiceProvider.php
io
- made event dispatchable
localisation
- added & improved translations
notifications
- fixed route (http verb name)
- fixed order
- updated test due to route update
packaging-units
- added rememberable keys
- enabled risky
- updated margins and added footer font size
- added download method
people
- added caching feature to
company()
helper company()
always loads relation
products
- refactored form for easier customization
- added internal code management
- improved internal code logic
- added length in config for internal code
- removed unwanted section
- added
attachPicture
method and acquisition price helper - implemented product slug
- added
wysiwyg
form field options - migrated towards 4 decimals and updated migration
- updated company factory use
- fixed product booted method
rememberable
- added custom key
- added tests
- renamed config key & exception message
- fixed key for polymorphic relation
- raised default to 1h
- various fixes
roles
- updated default menu
services
- small visual refactor
- migrated towards 4 decimals
- removed unneded financials dependency
tables
- no longer added default order by clause when the base query already has order by clauses applied
- improved raw total efficiency
- fixed typo and enum localisation
tasks
- fixed email path
- updated default menu order
- updated notification subject
upgrade
- added nullable helper on column
- added new
hasType
helper method for theTable
utility class
versions
- improved flow
Privates
api (new)
- provides boilerplate and base functionality for implementing external apis
commercial
- made events dispatchable; implemented the new computor; improved client stock import service
- implemented shipping and billing address
- added container resolve for all
xlsx
document generation instances - added payment method
- migrated towards 4 decimals
- added undo fullfillment
- refactored invoice & order blades, order email, notifications
- added enum for file formats and refactored order controllers
- added
cancelled_at
andCancel
controller - added reservable scope
- updated policies
- added addresses option controller
- multiple fixes and enchancements
discounts
- added service
clientDiscounts
relation - removed int cast in discounts
- fixed discount factories
eav (new)
- provides entity attribute value functionality for entities which require a scalable number of attributes
emag
- implemented product publish
- added sale channels and services as dependencies
- added settings
- added voucher handling
- added payment method to sale creation
- implemented
free_shipping_above
- added emag orders fallback
- migrated towards 4 decimals
- added Emag courier accounts,
AddAttachment
action - added and updated enums
- added invoice upload on sale creation flow
- refactored and added
NewOrder
,OrderCancellation
and awb notifications - multiple fixes and enchancements
fetcher
- fixed stream closing on upload
- updated notification subjects
financials
- added new
Computor
; droppedComputesLines
,ComputesTotals
,LineComputor
,TotalsComputor
- migrated towards 4 decimals
- added
discountWithVat
helper - rewrited invoice blades
- added pdf invoice download option
- multiple fixes and enchancements
frisbo (new)
- Frisbo api implementation for external order fulfillment. Provides fun...
v4.6.0
4.6.0
This release includes improvements, bug fixes, and new features.
Front-end
io
- used new websocket getter
money
- improved focus & blur handling, fixed input event payload
- added the ability to have null value
notifications
- used new websocket getter
select
- added debounce for
addTag
tables
- added support for numbers
- added formatted filtered / count
- moved pagination logic to the BE
- added support for selection controls
- fixed pagination when full records info is false
tasks
- added permissions to register
- used new websocket getter
ui
- announce a new release on every chunk load failed error
- added permissions to register ref enso-ui/tasks#6
- fixed auth routes for guests
- removed predefined websocket channels
users
- fixed avatar display when no tooltip is needed
Back-end
addresses
- added new
addresses.created_by
column; added upgrade - added PHPMD config
- added factories for
Township
,Locality
andRegion
avatars
- removed
HasAvatar
trait in favor of dynamic method & observer
cli
- fixed routes stub
- fixed UI route component imports
- added common default for the route for the menu config
companies
- added policy for edit page
core
- removed
HasAvatar
trait - removed the
laravel-enso/teams
dependency as the package can be added if required - binding
Faker\Generator
in production to Dummy laravel-enso/data-export#10 - added user profile policy
- fixed import in login controller
- added namespace to tests
data-export
- fixed notification path
- added sync excel attaching ability
- updated permission description in structure
data-import
- updated ExcelSeeder
- fixes serializing with postgres
documentation
- updated table docs: references to money vs number
- other table documentation small updates
files
- fixed file path upgrade for projects that don't use data-import
filters
- resolves comparison operators enum from App's container for improved flexibility; ref laravel-enso/filters#4
helpers
- added dummy
localisation
- updated out of stock
ro
translation
products
- updated test namespace
- updated url for pictures (route name remains the same)
roles
- rolls back ordering removal for the
sync
command
tables
- improved support for numbers; moved pagination on BE
- fixed test
- added 'selection' ability for global controls
- selection works only on selectable tables, and will send to the BE a selection payload with the selected rows
- buttons that work with selection will be rendered only when a selection is made
- fixed incorrect pages count, fixed incorrect middle pages
tasks
- added
taskable
contract & factory
private packages
webshop
- added about-us page
- added controller import
- added limited stock limit upgrade
- added favorites database persistent ref laravel-enso/webshop#33
- removed restricted/selective mfr load
emag
- fixed file save
- added authentication in job
- added fetch orders job
- added
FetchOrders
command to the service provider
Upgrade steps
To upgrade:
app/Http/Controllers/Auth
was removed from enso - if not customized locally, you may remove it as well- websocket getter changed, and there is a channel getter instead of specific channels getter now; if you are using websocket locally, you need to change the getter(like this)
- the
teams
package is no longer included with enso by default. If you require it, add it back:- add
"laravel-enso/teams": "^3.0",
tocomposer.json
- add
"enso-ui/teams": "^2.0",
toclient/package.json
- add
- remove
Broadcast::routes();
fromapp/Providers/BroadcastServiceProvider.php
(like this) - update the Enso version to
4.6.0
inconfig/enso/config.php
- run
composer update
in the project's root - run
yarn
,yarn upgrade && yarn
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