Skip to main content

Release notes

All notable changes to Qore will be documented in this file alongside upgrade guides

To upgrade Qore manually

Back-end ➜ composer update qore/system

Front-end ➜ cd frontend/src/qore && git pull origin develop

Or check out specific front-end tag ➜ git checkout <tag>

To see all tags run git fetch && git tag -l

1.7.1 (Nov 13, 2024)

  • Twig / VariableList
    • Fixed issue with resource relation field models not being casted to array
  • Mailing
    • Models are not allowed in the QoreMail::send() args array anymore, instead use a model ID
      • The reason for this is that it's better to pass on less (and better serializable) data to jobs
    • The args have the least priority (in terms of merging variables) now (was most before) so it does not override MailVariable variables
  • Twig
    • When rendering twig, if an error occurs it will now always throw an exception
      • It used to fail silently
      • When an error handler is supplied, it will still fail silently, but log a critical error
  • Preferences
    • Added retrieval of Tenant Preferences Fields & Tab Layout via Qore Actions to allow for hooking and overriding
      • Similar principle for the Auth preferences
  • Front-end helpers
    • Added $formatRelativeTime helper for dates

1.7.0 (Nov 06, 2024)

  • Forms
    • Removed "debounce" functionality to add a required (red asterisk *) when fields are conditionally required
      • This caused unexpected unwanted requests / side effects and should be fixed in a better way
  • MorphTo field
    • Added the ability to filter morphTo relations by only the type in index tables
  • Job middleware
    • Fixed issue with userId not being nullable
  • Field
caution

Every field is wrapped within a <div class="base-field"></div> now in the front-end

  • Modules & Plugins
  • 2FA (see upgrade guide)
    • Fixed issue with 2fa not always being verified in the back-end
    • Whether 2fa is verified, will now be saved on the session: 2fa_verified

Upgrade guide

  • If you have a local qore.php config file, please merge it with the latest one
  • Make sure to update the session in app/Http/Controllers/Components/TwoFactorAuthenticationController.php@verify after validating, e.g.:
$user = Auth()->user();
$secret = $request->input('secret');
$recovery = new Recovery();
$recovery_codes = $recovery->toArray();

$request->session()->put('2fa_verified', true); // Add this

// ..

1.6.18 (Oct 29, 2024)

  • Updated maatwebsite/excel to ^3.1.58 to solve XSS issue
  • Added the ability to hide the reset button in forms
  • Mailing
    • Fixed index tabs (number indicators) on the overview table
    • Added better display for error (status) message
    • Added (re-)send ability for mail messages (e.g. when a mail failed to send)
    • Added the ability to use a reply_to address
    • Added the ability to set custom headers
  • VariableValue field
    • Options in forms are now sorted alphabetically based on (translated) label
  • Added missing indices to database columns that are queried often in where clauses
    • For reference: #562
  • FilePicker & Image field
    • Added fix for input width on smaller screens
    • The field now validates (total) file size limit in the frontend, and shows validation errors
  • BaseTable
    • Fixed issue with table columns sometimes snapping back when resizing
    • Fixed error that occurred after calling related resource actions when table actions were present
  • Slider field
    • Add missing required asterisk inside field
  • Resource Tabs & Cards
    • Added getters for Resource, Model, and Field in Card and Tab class
  • Button field
    • Added the ability to not show a notification after clicking a Button field
    • Changed the styling of the Button field to exist in field meta allowing style changes during runtime
  • Code type hinting
  • Tenant model
    • Added users relation
  • Modules & Plugins
    • Form now uses POST instead of GET method for fields endpoint
    • Added the ability to use onFormReady closure
  • Resource
    • Fixed 404 notification after deleting a resource
  • SimpleEditor field
    • Fixed a bug that would accept input when it was disabled or set to readonly.

Upgrade guide

  • Publish migrations and migrate central/tenant
php artisan vendor:publish --tag=qore.system.db && php artisan migrate && php artisan tenants:migrate

1.6.17 (Aug 27, 2024)

  • Added MaterialIconSelect Field

  • Added MailReceiver Field

  • Added method to the SerialNumber Model to get a regex pattern.

  • Added the logDescription method to the RunsAction trait.

  • Updated PermissionCreator::cruda to return a collection with the created permissions

  • Updated TenantVariable(Values) Resources fields

  • Updated kvk related code to support api/v2

  • Updated the docblock of QoreResource::model with return type class-string<Model>

  • Updated the return types of RunsAction::redirectTo to include array

Upgrade guide

  • qore/kvk:^1.0 is deprecated.

1.6.16 (Jul 24, 2024)

  • Dependencies
    • Updated a few dependencies (see upgrade table below)
  • Relation fields
    • Filter options in tables are limited to records that are used / relevant based on the table query
    • This prevents the filter options to be flooded with many (unused) relationships
  • Repeater field
    • Fixed issue with state being empty/null
  • Forms
    • Added fix for loader not going away when an error (or dd()) occurs in the back-end
  • Wysiwyg
    • Fixed issue with firefox adding space before content

Upgrade guide

  • Ensure server compatibility with PHP 8.1 (Skeleton already requires ^8.1)
  • If you require laravel/scout or teamtnt/laravel-scout-tntsearch-driver you have to upgrade (or remove it since it will be added by qore/system)

Upgrade route:

composer require qore/system teamtnt/laravel-scout-tntsearch-driver:^14.0 laravel/scout:^10 && composer require --dev phpunit/phpunit:^10 squizlabs/php_codesniffer:^3.0 && composer require --dev phpro/grumphp:^2 -W

Remove route:

composer remove laravel/scout teamtnt/laravel-scout-tntsearch-driver && composer uptdate qore/system && composer require --dev phpunit/phpunit:^10 squizlabs/php_codesniffer:^3.0 && composer require --dev phpro/grumphp:^2 -W

Dependencies table

DependencyOld requirementNew requirementUpgrade Guide/Warning
laravel/scout^9.4^10.10Probably no changes necessary [Upgrade guide]. Make sure to composer require laravel/scout:^10 in root composer.json (or remove it since it will be added by qore/system)
teamtnt/laravel-scout-tntsearch-driver^12.4^14.0No changes necessary. Make sure to composer require teamtnt/laravel-scout-tntsearch-driver:^14 in root composer.json (or remove it since it will be added by qore/system).

devDependencies table

devDependencyOld requirementNew requirementUpgrade Guide/Warning
phpro/grumphp^1.3^2No changes necessary. Make sure to composer require --dev phpro/grumphp:^2.0 -W (the first time it will fail, so run it twice)
phpunit/phpunit^9.5^10Probably no changes necessary. Check PHPUnit 10 migration guide
squizlabs/php_codesniffer3.6.0^3.0None

1.6.15 (Jul 18, 2024)

  • Resource actions
    • Added the ability to optionally hide the eligible and denied model lists in resource actions (See documentation)
  • Mailing
    • Added replyTo method to SingleMessageMailer

1.6.14 (Jul 15, 2024)

  • Roles & Permissions
    • Added feature to apply direct permissions to users
      • This way you can give a user permissions without applying a role
  • Translations
    • Qore front-end has its own translation files now
      • Skeleton front-end translations have been moved to the Qore front-end
  • FilePicker field
    • Fixed issue with smaller screen sizes
  • PDF downloads
    • PDF files will not open in new tabs anymore (due to file name reasons)
  • Code field
    • Fixed visual bug when editing inline
  • Select field
    • Fixed visual bug when options are added dynamically
  • Resource duplication
    • The duplicateEnabled method expects a ?Model instance now as single parameter
  • Menu
    • Added the Laravel Conditional trait to the menu item
      • This way you can conditionally show/hide menu items
  • VariableCreator
    • Added updateOrCreate method
      • Devs no longer have to check whether a tenant variable exists in for example the onEnable function of a Qore extension
  • TenantVariable
    • Added translate_description (default true) to TenantVariable model
      • Prevents having localised descriptions in the database
  • Repeater field
    • Fixed issue with not being able to submit 0 items
  • Modules/Plugins
    • Extension index pages are now sorted by their localised display name

Upgrade guide

  • Publish migrations & migrate
    • php artisan vendor:publish --tag=qore.system.db && php artisan tenants:migrate

1.6.13 (Jun 24, 2024)

  • Repeater field
    • Allowed to set a maximum number of repetitions for the repeater field with ->max method
    • Added the deletable method to allow for disabling the delete button
  • Slider field
  • Field layout
    • Fixed issue where toggled boolean was not respected for cards
  • Resource creation
    • Added event method for when a resource is created from duplication (createdFromDuplicate)
  • Resource components
    • Added support for upcoming dashboards and metrics modules
    • You can now define which components to show on index and details on a resource (indexComponents and detailComponents methods)
      • Default Qore components are now defined in the qore.php config

Upgrade guide

  • When you have a local config/qore.php, make sure to add the following:
'resource' => [
// ...

/**
* The default vue components that are shown on a resource index and detail page.
*/
'system_components' => [
'resource-alerts',
'resource-index-table',
'resource-block-buttons',
'resource-detail'
]
],

1.6.12 (Jun 05, 2024)

  • Upload fields (e.g. FilePicker)
  • qore/frontend cleanup
    • Removed @sentry from the qore/frontend package.json
    • Removed unused vue-query-builder from the qore/frontend package.json
    • Removed npm from the qore/frontend package.json
      • This allows for easier and on-demand updating
  • Resource actions
    • Fixed issue with models not being found when soft deleted

Upgrade guide

  • When boot/sentry.js is still present in your app, add it back in your own frontend package.json:
      "@sentry/tracing": "^7.91.0",
    "@sentry/vue": "^7.91.0",

1.6.11 (May 26, 2024)

  • Resource duplication
  • Relational fields
    • Fixed issue that caused empty array to not be respected
    • The ->filterOptions will also accept a Closure that will only get called when the column is filtered
      • This is only supported for relational fields on resources (not custom tables or non-relational fields)
  • Phone fields
    • Added missing validation for metadata fields
  • Preferences
    • Users can now override the primary and tint colors
  • Table sticky columns
    • Fixed issue with styler background color not being respected
  • Table
    • Fixed table row cmd+click / ctrl+click issue for Firefox Developer Edition

1.6.10 (May 22, 2024)

  • Field dependency
    • Fixed issues with field visibility when using ->dependsOn
  • Wysiwyig field
    • Removed throwing exceptions when a warning occured in logging
  • Twig
    • TwigRenderer will use the sandbox mode now by default
    • The config/qore.php will have a twig section now where tags and filters can be configured
      • If you have a published qore.php file, make sure to add the twig section
  • MailMessageResource
    • Added indexQuery support when there is no authenticated users (system calls)
  • Price field
    • Added better support for setting currency (symbol)
  • FormState
    • Added the ->getField and ->getFields helper methods
  • Wysiwyg
    • Fix configuration issue with Tinymce not allowing inserting links to current host

1.6.9 (Apr 29, 2024)

  • Tables
    • Disabled virtual scroll because filters lose focus while typing
      • This issue will be addressed in the future
  • Button field
    • The onClick closure is not required anymore
      • E.g. when you only want the button to redirect

1.6.8 (Apr 18, 2024)

  • Field dependsOn
    • The dependsOn closure will now be called on initial request instead of separate ajax call
      • This reduces a lot of unnecessary requests
  • Field onInitialFormRequest
    • Each field can override the new onInitialFormRequest method (See documentation)
      • This method will be called when the field is loaded for the first time in the request
  • Helpers
    • The front-end global $log(..) helper accepts more than 1 argument now
  • Wysiwyg (and similar fields)
    • You can now customize how data should be purified using ->purifyUsing (See documentation)
      • In some cases you might not want to purify data
  • Resource options query
    • Resources can override the new method optionsQuery which will be used for relational select fields (See documentation)
      • This way you can customize and optimize the query when fetching options for a field
        • The indexQuery will still be used as a default
  • Resource table
    • Fixed issue that caused the table to load all fields instead of only index fields
  • qore/crm
    • Fixed N+1 query issues

Upgrade guide

  • Make sure to add the changes as seen in this MR
    • Fixed N+1 query for preferences and publicSettings on active tenant

1.6.7 (Apr 11, 2024)

  • Checkbox field
    • Fixed styling issue for tooltips
  • Resources
    • Added onFormReady method which can be overridden for create and edit forms (See documentation)
      • This will be called on every lifecycle in the form
  • Resource table
    • Expanded rows will now show the ResourceShow component when editing is not enabled
  • qore/crm
    • Added mail_cc and mail_bcc to the organization resource
  • qore/invoicing
    • Multiple changes added

1.6.6 (Apr 02, 2024)

  • Price field
    • Added missing FieldIsRepeatable import
  • Repeater field
    • Repeated fields can now be marked disabled or readonly

1.6.5 (Mar 27, 2024)

  • Activity logs
    • Improved the way how activity is loaded in the ActivityLogTable
      • Two logs with the same created_at date will now be sorted by ID afterwards
  • Code field
    • Is now repeatable
    • Added json as allowed language
  • Tables
    • Fixed issue with Button field click event not preventing parent click event
  • Repeater Field
    • Add draggable method to allow setting a sort order for the rows (See documentation)
  • qore/frequency
    • Added new plugin which exposes a new field Frequency
      • This field can be used to set up a cron job frequency
  • qore/invoicing
    • Added new feature: invoice merging
    • Added banners from CRM to detail page if CRM is enabled
    • Added feature to schedule automatic bookings (which can be configured in the module settings)

1.6.4 (Mar 13, 2024)

  • Checkbox field
    • Removed the unexpected accepted rule if the required rule is added
    • Added asterisk (*) only when the accepted rule is included
    • The field will take less vertical spacing now in forms
  • RelationTableField
    • A closure expecting a model can now be used in the query function (See documentation)
  • Alerts
    • Method setModel can now be called without Qore overwriting the model you set
    • Fixed visual bug that was introduced by 1.6.3 release
  • Select / Relation fields
    • Select fields are now filterable on description as well

1.6.3 (Feb 29, 2024)

  • RepeaterField field
    • Added support for field metadata for the inner fields (See documentation)
      • This meta will be the same for each row
  • Number field
    • Is now repeatable
  • BetterTime field
    • Is now repeatable
    • Added fix for the required asterisk always showing in front-end
  • SerialNumber field
    • The name of the field is now the column for saving the generated number
      • Before, it was always hardcoded serial_number
  • Resource Chips
    • Added (missing) chip validation errors in the front-end
  • Authentication settings
    • Fixed issue that caused the 2fa_required setting to not be public when saving the settings
  • Roles
    • Fixed bug that caused 2fa_required to not be saved on a created Role
    • The RoleCreator:create method now accepts an optional $twoFactorAuthRequired boolean parameter
  • Resource Alerts
    • Resource alerts will use the resource-alert component now instead of base-message
    • Added buttons (simple actions) support (See documentation)
  • qore/invoicing
    • Added info about overdue days in tooltip on payment due at
    • Added payment info on Quick Action & Payment progress improvements

1.6.2 (Feb 19, 2024)

  • Phone & PhoneNumbers fields
    • Fixed display format for non-NL phone numbers
  • MailMessageResource
    • Fixed bug which caused errors when there was a mail message not attached to a resource
      • This bug was introduced in last patch (1.6.1)
  • Removed unnecessary caching from get_central_database_name
    • This caused issues when switching between projects/databases
  • qore/invoicing
    • Added the description field to the invoice template resource.
    • Refactored detail page into multiple components
    • Added the ability to set the payment date in the invoice payment builder
      • Make sure to publish migrations & front-end (forced)

Upgrade guide

  • Make sure to add the changes as seen in this MR
    • Fixed issue that was caused when the password is made empty

1.6.1 (Feb 12, 2024)

  • Mailing
    • Mail messages will have a resource_name column now
      • This is required for permission checking
  • Mail messages
    • Messages are now protected behind 3 new permission scopes
      • ViewAllSentMails -> View all mail messages
      • ViewResourceSentMails -> View messages linked to resources that the user can viewAny
      • ViewOwnSentMails -> View messages that the user has sent
        • Both MailMessagePolicy and MailTemplatePolicy now exists inside Qore
    • Added missing morphTo relationship for instigator on the MailMessage model
  • Permissions
    • The RoleCreator class create method will now use firstOrNew instead of always creating
      • This now aligns with the PermissionCreator and will be more friendly for re-running seeders
  • Resource permissions
    • The getPermissionNames() method supports an array of permissions now for every policy method
  • BaseDialog (front-end)
    • BaseDialog accepts a title slot now
  • Field Layouts
    • Fields that are shown next to each other in a row (as columns), will now have the option to have a custom class and min-width
    • This is applied to every existing FieldLayout (See documentation)
      • This class was always col and the min-width was always 150, meaning if you had 2 Button fields next to each other, there would be a lot of space between them
  • StepsLayout
    • Improved styling by making the tabs more condensed and removed unnecessary margin in between fields
  • qore/crm
    • Mail messages card table will now also show messages where the organization is the instigator
  • qore/invoicing
    • Mail messages will now save the receiver (organization) after sending
    • Fixed issue with detail page when user had no permissions to see mail messages
  • qore/address
    • Added missing model relationships for entity

Upgrade guide

  • Make sure to run: php artisan vendor:publish --tag=qore.system.db and php artisan tenants:migrate
    • This migration will also try to set the resource_name for each existing mail message
  • Make sure to add the changes as seen in this MR
    • To re-seed permissions: php artisan tenants:seed --class=Database\\Seeders\\Tenant\\PermissionsSeeder
    • Please note after re-seeding only admins will be able to view messages, you will still need to update the roles

1.6.0 (Feb 05, 2024)

  • Table exports
    • Fixed table-export.blade.php trying to call non existing format_text() helper when rendering totals
  • Resource tabs & cards
    • A boolean value can now be optionally passed into the ->asTab and ->asCard functions
      • Note: if you have overwritten these class functions before, make sure to add the corresponding parameters
  • Resource Table
    • Added method postProcessTableRow on resources to apply styling on table rows without depending on fields
  • The QoreMail::send helper will now use a string code_name instead of the name of the mail template
    • This change is necessary because end-users could potentially change the name of the mail template
  • qore/invoicing
    • The invoice lines default mapped line config can now accept a FormState in the closure
    • Updated mail template seeder for above code_name addition

Upgrade guide

  • Make sure to update your mail template seeders as seen in this MR
  • Make sure to run: php artisan vendor:publish --tag=qore.system.db and php artisan tenants:migrate to add and seed the code_name in the mail_templates table
    • The migration makes sure that the new code_name will be set to the current name

1.5.9 (Jan 31, 2024)

  • Image field
    • Fixed issue which made it impossible for multiple Image fields to upload the same image
  • BaseForm
    • Fixed issue that caused back-end dd() to cause endless loading spinner on submit button
  • Activity logs
  • Wysiwyg Field
    • Added 9, 10, and 11 as default available font sizes
    • Fixed issue with blur event not updating the template preview
  • Twig templating
    • Added support for Wysiwyg editors that converted characters like < and >
  • Front-end Resource Permissions
    • Reduced default cache duration from 30 min to 5 min (on production)
  • Sentry (front-end)
    • Updated Sentry dependencies in package.json

Upgrade guide

1.5.8 (Jan 26, 2024)

  • qore/kanban
    • Add support for qore/kanban v1.0.0

1.5.7 (Jan 24, 2024)

  • Mailing
    • Fixed issue which caused mails to not be sent when multiple receivers were selected
  • Resource Alerts
    • Alerts can now be shown on create and index as well
      • Just make sure to add: ->hideOnIndex(false) or ->hideOnCreate(false) because it is only shown on detail by default
      • The model property on Alerts are now marked nullable (see upgrade guide)
  • Number formatting
    • Fixed issues with inconsistent number formatting in front-end. It will now use an equivalent of PHP's number_format function
      • Also added $isNumber helper in front-end
  • Mail footers
    • Mail footer index table has tabs now (for users and tenants)
    • Mail footers can now be attached (to user or tenant) in the form
      • Mail footer field is removed from TenantResource
  • MailMessageResource
    • Removed hardcoded references to this resource class
  • qore/invoicing
    • Added ->getPdfFileAsBase64() method to the invoice model
    • Added module setting which will optionally update the invoice date & payment due date when sending the invoice
      • Upgrade guide is mandatory to follow, even when not using this feature
  • qore/mailgun
    • Updated message external id to have surrounding < and >

Upgrade guide

  • Alerts
    • If you have custom resource Alerts, make sure you mark your $model property as nullable (if you have overridden it)
      • The type should be: protected ?Model $model = null;
  • qore/invoicing
    • Make sure you add the following event & listener to config/invoicing.php in the event_listeners array:
      • This will make sure the status and dates will be updated before an invoice is sent
InvoiceBeforeSending::class => [
UpdateInvoiceBeforeSending::class
],

1.5.6 (Jan 22, 2024)

  • BaseForm
    • The fields-endpoint route will now also support POST routes
    • The reason why this is implemented, is because server configurations may deny GET requests with a lot of data, this way you can use POST if necessary
    • Resource create and edit endpoints will now use POST by default
      • The following prop should be added on <base-form> when you want to support POST in custom forms: use-post-for-fields-endpoint

1.5.5 (Jan 17, 2024)

  • Form interceptor
    • Fixed issue with forms loading indefinitely when intercepted
  • Code field
    • Fixed issue that caused the form to submit when pressing enter inside dialogs
    • Fixed issue with preview not working when the code had a lot of characters
  • Phone field
    • Changed phone href to align with actual number instead of display value
  • Color field
    • Added color display for index and detail
    • Disabled index filter
  • Relation fields
    • Added ResourceRelationAttached event for when an external resource model is attached
    • Added ResourceRelationDetached event for when an external resource model is detached
  • Date & DateTime filter
    • Added checkbox to enable dynamic range filtering
    • This way you can save a filter (e.g. last 7 days) without having "hard" dates
  • qore/address
    • Updated PhoneNumbers field for change above (make sure to force publish)
  • qore/invoicing
    • Downloading PDF will not conflict with browser extensions anymore
    • Fixed issue with PDF not being re-generated when sending a concept invoice

Upgrade guide

  • Add missing translations as seen here, here and here
    • Also make sure to add TINY_API_KEY to your .env so it does not get overridden when seeding
  • When using qore/address and/or qore/invoicing make sure to force publish front-end

1.5.4 (Jan 10, 2024)

  • Number field
    • Fixed value to not be casted properly to a number in some cases
  • Relation (field) tables
    • Added bulk action checkboxes support for these tables
      • Actions can be defined on the field using: ->withTableActions(...) (See documentation)
  • Place field
    • Fixed missing validation error when country was empty
  • RelatedToMany field
    • Added missing default withRelationalDisplay call
      • The other resource modelTitle(...) will now be used by default
  • BaseTable exports
    • Added support for exporting custom base tables
      • Selecting records and async (via job) exporting is not supported yet
      • More information can be found here (See documentation)
  • Field Macros
    • Added Macroable trait to fields to allow custom methods to be appended
      • E.g.: Text::macro('enableKanban', function() { ... } )
  • Front-end
    • Added support for turning Kanban on/off for relational fields
  • qore/crm
    • Fixed issue with wrong model being used in global search result
  • qore/layout
    • Marked relation buttons as disabled when users have no permission to attach
      • Force publishing required (php artisan vendor:publish --tag=qore.layout.frontend --force)

1.5.3 (Jan 09, 2024)

  • Select / Relational fields
    • Added better searching in dropdowns for special characters
      • E.g.: knäckebröd > kna"ckebro"d > knackebrod
  • Resource create
    • Added checkbox that allows for creating another resource record so the user will not be redirected to the detail page
    • This is disabled by default, but can be enabled for all resources by overriding qore.php config file
  • BaseForm
    • Keep submit button disabled shortly after success event to prevent users from clicking it again
  • Events
    • Added multiple event calls in system which can be used for debugging/listeners
      • E.g. when a field renders or when a plugin has booted
  • qore/kvk
    • Allowed users to also search for KVK number alongside name and place
  • qore/ckeditor
    • Added numerical font size support
    • Added config overriding support (See documentation)
      • Force publishing required (php artisan vendor:publish --tag=qore.ck.frontend --force)
  • qore/crm
    • Multiple small hotfixes
    • Fixed issues with module settings page that were introduced in prior patch
    • Salutations for contacts are now defined in text fields, please read the upgrade guide

Upgrade guide

  • Add missing translations as seen here
  • If you have a local qore.php config file, make sure to add the following:
    /**
* General resource configs
*/
'resource' => [
/**
* Whether to add the `add another one` front-end checkbox when creating a resource
* Can be overridden on a resource via `isCreateAnotherOneAllowed(): bool` method
*/
'allow_create_another_one' => false
],
  • qore/crm
    • Salutations are now managed in text fields, if you have a custom SalutationSeeder, make sure to respect the original one
    • You have to disable en re-enable this module to seed the new salutations

1.5.2 (Jan 04, 2024)

  • Choice Field
    • Removed unnecessary debouncing
  • MorphTo Field
    • Fixed issue wich caused an error when resource could not be found when displaying
  • Resource show
    • Removed checks for which attachableFields are available (used for qore/layout module)
  • Kanban
    • Implemented hasKanban method on resources (used for qore/kanban module)
    • Fixed issues with Kanban Module not switching in Relational tables
  • Rating Field
    • Added the ability to use displayUsing for the index value.
    • Fixed issue with rating input event
  • Responsiveness
    • Fixed console error on resource index
    • Fixed full-width display on resource detail
  • Roles and permissions
    • Checkbox is now hidden in role edit table if the ability does not exist
  • MainMenu
    • Make icons less wide so there is more space for menu items
  • QN2
    • Added multiple features/bugfixes to extensions: Agency Projects, Kanban, Tickets, Products, Employee, Nmbrs, Time Registration, Login branding, Exact Online
  • qore/crm
    • Fixed mutiple small issues and inconsistencies. Only major changes are described below.
    • Added editableLogoField to make editing logo possible via upload (only on edit)
    • The icon and logo field names were reversed which is fixed now
      • Resetting the index table might be necessary
    • Brandfetch will no longer autofill the description
    • Added default labels to address related fields
  • qore/address
    • Added ability to set default label for mobile
    • Added support to overwrite the default label for phone and mail addresses
    • Change mailto to tel in PhoneNumbers index
  • qore/layout
    • Added multiple small features and bugfixes in the front-end files
  • qore/invoicing
    • Multiple changes and features have been implemented for QN2. Below are the major ones.
    • Marked invoice as credited when total amount is negative
    • Added Word module support as a choice for templating
    • Forced default invoice line quantity as int
      • Added support for decimal invoice line quantities in backend
    • Implemented additional invoice line fields
  • qore/adversus
    • Removed accidental test code which was still present
  • qore/graph
    • Test mails from the settings page will now be saved in the outbox in Outlook

Upgrade guide

1.4.8 (Dec 04, 2023)

  • Resource validation
    • Added the ability to append validation messages and attributes on the resource (See documentation)
      • This way you can edit the validation message, without creating a new field class that extends Field
  • Form fields
    • Added debounce value to every Qore field by default
      • This exists to make sure ->onUpdate will not be called multiple times
      • Front-end fields don't need to make use of debouncing anymore, unless for heavy javascript operations
      • The debounce value can be set in the backend (Debounce value)
    • Fields will now display a loader when busy (was accidentally removed in previous updates)
  • Stateless API integration
    • Qore can now be accessed through authorization tokens (Bearer token) (See documentation)
      • This will make it possible for apps to connect to Qore without needing a session, domain etc.
  • Wysiwyg, CKEditor and BetterTime Fields
    • Submitting right after filling these fields will now have the most recent value
  • Database sessions
    • Prevent every request from doing an update query
      • It will now only update current session if it wasn't updated in the last 30 seconds
  • qore/ckeditor
    • Added support debounce (no publishing necessary)

Upgrade guide

1.4.7 (Nov 29, 2023)

  • Auth
    • Users will now be redirected to, if given, the intended URL after logging in (See upgrade guide)
      • Before this, users would always be redirected to /home
  • Forms
    • Submit button will now show a loader when the form is busy
    • Pressing enter in relation create dialog will now submit the form
  • Resource index fields
    • The method ->deselectByDefault(bool $value) is now marked as deprecated
    • Instead, use ->deselectOnIndexByDefault()
      • The inverse of this method is selectOnIndexByDefault()
  • MorphToMany & BelongsToMany Fields
  • HasMany & MorphMany Fields
    • Fixed issue which caused unnecessary activity logs to be created when saving
  • Documentation
  • qore/invoicing
    • Added fillable to GeneralLedger model and minor fixes

Upgrade guide

1.4.6 (Nov 27, 2023)

  • Encrypted Text Field
    • Added various bug fixes
  • CardsLayout
    • Fixed issue that caused the first field to not get autofocused
  • Tenant Variable Values
    • Fixed issue which caused the delete and submit buttons to show before the form was loaded
  • Price & Number fields
    • The withCurrencySymbol method does not require an argument anymore
      • When no argument or null is given, it will get the preferred currency by default
    • Price field will now show the currency symbol by default in forms
  • qore/ckeditor
    • Added fix for autofocus not working
  • qore/invoicing
    • Added checkbox for displaying detailed description on invoice PDF
    • Switched TinyMCE with CKEditor (qore/ckeditor is now mandatory plugin)
    • Added support for variables inside detailed description
    • Add sync icon when a payment has an external ID

Upgrade guide

  • qore/invoicing
    • qore/ckeditor plugin now required
    • Following commands required:
php artisan vendor:publish --tag=qore.invoicing.db
php artisan vendor:publish --tag=qore.invoicing.frontend --force
php artisan vendor:publish --tag=qore.invoicing.views --force

php artisan tenants:migrate

1.4.5 (Nov 21, 2023)

  • Added the new Rating field
  • Wysiwyg field
    • The Wysiwyg field supports the ->withTwig() method now, which adds functionality from TwigTemplate
    • The Wysiwyg field can have a label now
    • The TwigTemplate field is now marked deprecated (will be removed in future update)
  • CK Editor
    • The CKEditor field also supports the ->withTwig() method
    • The CKEditor field can have a label now

1.4.4 (Nov 15, 2023)

  • Mailing
    • Added command that allows for sending test e-mails: php artisan qore:send-test-mail
    • This command has no arguments, and will ask for input
  • Field detail
    • Added backwards incompatibility fix (legacy projects errored on tooltips prop)
  • Guidelines
    • Added Guidelines documentation page
    • This document is incomplete, but will be expanded over time

1.4.3 (Nov 14, 2023)

  • ColumnCardLayout
    • Implemented card toggling
  • CSS helpers
    • Added support for gap-${size} classes similar to q-col-gutter and q-m/p
    • See more info here
  • Preferences
    • Added 2 preferences which determines how the resource table pagination and resource detail page looks
    • These preferences will both be available as fields on the tenant and auth preferences page
  • Accessibility
    • Forms can now be submitted with key press: CMD (or ctrl for windows) + Enter
  • Repeater field
    • Fixed issue that caused a compile error for some developers
  • Legacy support (only relevant for old qore project(s))
    • Add DISABLE_INLINE_EDITING=TRUE to your .env if you want to disable inline field editing

Upgrade guide

  • CSS
  • Qore config file
    • If you have a published config/qore.php, make sure to add the following (below menu_size):
'page_detail_size' => [
'default' => 'default',
'items' => [
[
'id' => 'default',
'label' => 'Default'
],
[
'id' => 'roomy',
'label' => 'qore::system.Roomy'
]
]
],

'table_pagination_display' => [
'default' => 'footer',
'items' => [
[
'id' => 'footer',
'label' => 'qore::system.In footer'
],
[
'id' => 'below_table',
'label' => 'qore::system.Below table'
]
]
],

1.4.2 (Nov 02, 2023)

  • Resource table
    • Pagination
      • Pagination is now a custom component and is being displayed inside sticky bottom bar
        • Tables can expect a sticky-bottom (bool) prop now
    • Summary columns
      • Calculate and show column summaries based on which rows are selected via checkboxes
      • Fixed minor issue in price formatting for summaries
    • Browser history
      • Remember search columns when going back in browser history when a tab is selected
      • Fixed issue which didn't restore table page number when going back when a tab was selected
    • Styling
      • Fixed background color always being white when table styling is defined
  • Resource table filters
    • Table filters can now be marked as tabs, which will add tabs above the resource table
    • Table filters can now be edited
  • Resource detail
    • Fixed issue that caused some fields to not have full width on detail
  • Performance
    • Added boolean for request_cache helper whether to ignore tenant id for cache key
    • Removed a few duplicated query calls

Upgrade guide

  • Table filters
    • Publish & Migrate latest system migration: php artisan vendor:publish --tag=qore.system.db and php artisan migrate

1.4.1 (Oct 31, 2023)

  • Qore Form
    • While a field is busy, the submit button will now be disabled in forms until no field is busy anymore
  • Resource detail component
    • The resource detail page can be included as a component (e.g. in a dialog) now:
      <resource-show :resource="resource" :modelId="modelId" />
  • Form State
    • Made sure that the initial state is respected before each field gets an runUpdateOnInit call
  • Reverted BelongsTo field to have a component name
    • Fields that extend other fields should add their own component method
    • See more info here
  • CSS
    • Fixed issue with resource detail styling which was introduced in 1.3.8
  • qore/invoicing
    • Added multiple fixes for issues that were introduced by older Qore versions
    • Added fix for price column always showing vat included value
      • Re-publishing of front-end files is required
      • Module settings should be saved or seeded once manually to make sure some settings are made public for the front-end

1.4.0 (Oct 24, 2023)

  • Added the prepend slot to the BelongsTo Field
  • Fixed item allignment in the summary row on index tables.
  • Applied various styling fixes in the front-end.
  • Revert the BelongsTo hotfix in 1.3.9

1.3.9 (Oct 19, 2023)

  • Hotfix BelongsTo field (No upgrade needed)
    • Fix issues with BelongsTo not having a default component
  • Add support for extending preference fields from outside the AuthPreferenceController

Upgrade guide

1.3.8 (Oct 13, 2023)

  • Tooltips
  • BetterTime field
    • Added function withoutDropdown
  • Field detail display
    • Added word breaking & overflow-x-hidden to prevent long words causing a scroll bar
  • Table select filters
    • Added functionality to "select all" options in the dropdown filter
      • Applies to all relational fields and the Select field
  • Qore CSS file
    • Qore has a scss file now that should be included in skeleton (see upgrade guide)

Upgrade guide

1.3.7 (Oct 05, 2023)

  • Duration field
  • Tenant Variable & Tenant Variable Value
    • Variables and values will now be cached to prevent unnecessary queries
    • The styling for variable values are now editable even when the variable is locked
  • Tables
    • Added search icon in the search header row
  • Repeater field
    • Added missing display value for Date & DateTime fields
    • Fixed visual issue with validation errors
  • Date & DateTime fields
    • Fixed issue which caused onUpdate to be called immediately (when it shouldn't)
  • Module: qore/layout
    • Fixed issue with tabs not rendering properly
    • Re-publishing required (php artisan vendor:publish --tag=qore.notes.frontend --force)

Upgrade guide

  • Make the following change.
    • This will make sure tabs have counts on resource detail pages

1.3.6 (Oct 02, 2023)

  • Repeater Field
    • Fixed issue that caused the field to add a default row when cleared/made empty
    • Added method to preserve the old functionality (See documentation)
  • Wysiwyg/TwigTemplate fields
    • Fixed issue which caused the content to be cleared when user quickly clicked away before debounce fired
    • Removed margin at the bottom of the field
    • Added support for hiding the extra label above the field
  • Image field
    • Added feature to upload an image by pasting an external image url (See documentation)
  • BetterTime Field
    • Fixed issue that caused errors in logging
  • Choice field
    • Removed bottom margin
  • Select field
    • Added better contrast styling for options that are marked as groups
  • Relation fields
    • Fixed issue that caused withAttachButton() to not respect visibility (e.g. make it hidden on show)
  • Field DependsOn
    • Calling ->dependsOn will now automatically update the options based on the query scope (See documentation)
  • Date & DateTime fields
  • Tabs Field Layout
    • Added better support for when tabs are not the first element in a form, e.g.:
(new FieldLayout)
->column('field_1')
->tabs(...) // Now adds margin on top and selects first tab by default
  • Resource permission caching
    • You can now enable front-end permission caching (See documentation)
    • This will be enabled by default on Production to reduce full page reload times
  • Mailing
  • Tenant variables
    • Removed wrapping from display values with icons
  • qore/mailing-extended
    • Added possibility to customize an e-mail when sending it manually and other small changes
    • Publishing front-end is required to update

1.3.5 (Sept 21, 2023)

  • Image field
    • Added support for maxIndexWidth & maxDetailWidth to the Image Field (See documentation)
  • Repeater Field
    • Added new field: Repeater which allows fields to be repeated vertically or horizontally (See documentation)
  • BetterTime field
    • Converted data properties to meta as they should not be mutable
    • The clear button can now be hidden
  • Add relation dialog form
    • Added fix for submit button (disabled, label) not properly updating based on the state of the form
    • Also added formDataUpdated event to BaseForm (See documentation)
  • Field state

1.3.4 (Sept 14, 2023)

  • Button field
    • Added new field Button (See documentation)
    • This field makes it easy to run PHP code when a button is clicked. Also includes a dialog with fields
  • Tenant Variables
    • Fixed issue that caused the used_for column to throw an error when filtered (on the /company-variables page)
  • Form State
    • Added method setSubmitButtonLabel(string) to set the label for the submit button in Qore forms (See all methods)
  • Roles & Permissions
    • Significantly reduced execution time (improved performance) when saving or applying roles & permissions
    • Resource name is now aligned at the top of each table row

1.3.3 (Sept 7, 2023)

  • Field hooks
    • Added the onBeforeRenderIndexFilter method (See documentation)
    • This could be used to alter the componentProperties before rendering the Filter front-end component
  • Date & DateTime fields
    • Added methods for developers to set future/history quickfilters on date(time) fields using setHistoryFilterButtons and setFutureFilterButtons
  • Date rendering
    • Date and Datetime presenters will now translate Carbon dates (was always English before)
    • Added an optional new date format in qore.php (l j M Y) that is more user-friendly for Dutch users
  • Config
    • The qore.php config file is now publishable via php artisan vendor:publish --tag="qore.system.config"
  • Image field
    • Fixed issue that caused some images (like svg) to not display in tooltips
  • Form state
    • Fixed issue that caused getState() to not have the updated state if setState() was called before
    • Fixed issue that caused getRelatedModel() to return null in some cases when it shouldn't
  • Field validation
    • Fixed issue that only validated the first value in the required_unless rule

1.3.2 (Aug 24, 2023)

  • StepsLayout
    • Added feature to StepsLayout which allows for disabling and enabling steps (See documentation)
  • Resource actions (bulk)
    • The denied and eligible lists will now both be collapsable and are collapsed by default
    • If the resource for the action has a detail page, the user can now click on the list item to navigate to the resource
  • Resource actions
    • Added property $autofocusEnabled which defaults to true
    • This determines if the first field should be autofocused
  • Select field (Enum)
    • Fixed issue which caused Enum casts to error in tables
  • Field display
    • Fixed issue that caused an error when returning a JsonResource class in the displayUsing closure
  • Settings (See upgrade guide)
    • Added is_public to Tenant Settings, which defaults to false
    • Public setting will be available in the front-end, so be wary of what you store as public

Upgrade guide

  • Tenant settings
    • Publish & Migrate latest system migration: php artisan vendor:publish --tag=qore.system.db and php artisan migrate
    • Make the following change
    • If you have settings that need to be publicly available aside from authentication->2fa_required, please add a Seeder

1.3.1 (Aug 14, 2023)

  • BeterTime field
    • Added field which is an alternative for the Time field that includes more functionalities
  • Field hints
    • Fixed issue which caused hints to not be visible on FilePicker and Code fields
  • Custom Forms
    • Fixed issue that caused error messages to not be shown in some cases
    • Fixed issue which caused cards to not be toggable
  • FilePicker Field
    • Added limit for amount of files you can upload when there is a configured limit
    • Fixed issue that caused the hint to be incorrect if max_files was passed as validation rule
  • Country fields
    • Fixed issue in fields that have a country select to not override the default selected country anymore if a new default value is set
  • Resource actions
    • Made sure that action buttons will always be shown without having to scroll vertically
  • MailTemplate field preview
    • Fixed small issue which caused the preview to not be scrollable / clickable

Upgrade guide

  • Run cd frontend && yarn upgrade qore-frontend to make sure the vue2-timepicker dependency will be installed

1.3.0 (July 31, 2023)

  • Form fields
    • Field data now persists in the front-end when subsequent requests are done.
    • Before this change, all field data would be cleared when a field interacted with the back-end. This made it uneasy for developers to work with, as they needed to re-set the data on every field that has back-end interaction.
  • Mailing
    • The QoreMailChannel has been updated to align more closely with the Laravel approach to Notification channels (see more here)

1.2.9 (July 26, 2023)

  • Relational fields
    • Added methods to FormState which makes it possible to get the state and meta of the parent form (See documentation)
    • The ->getState() method can now be called without passing a field name to get the full state
  • User fields
  • Time field
  • Tenant Variable Value
    • Description is now required when creating values via app(TenantVariableCreator::class)
  • SimpleEditor field
    • Added missing filter for tables
  • Helper functions
    • Added the following helper functions: get_central_database_name, get_tenant_database_name (See documentation)
  • Roles and permissions
    • Changed role tabs to have an uppercase as their first letter (e.g. admin becomes Admin)
  • Validation
    • Fixed visual bug where a required asterisk would only be shown for the first value in the required_if rule
  • Column card Field layout
    • Fixed issue with elements still showing when there were no fields inside
  • DependsOn
    • Fixed issue which caused options to not properly reload when creating a new resource when the field depended on another field
  • Select field
    • Fixed issue that caused ->searchable() to display 2 labels in the front-end
  • qore/ckeditor: Added styling improvements for detail page (publishing required)

Upgrade guide

  • User model
    • Make the following change. This will make sure avatars use the correct directory.
  • Tenant Variable Value
    • Make sure you fill the description on every tenant variable value in your database as description is required now (you might have to update your seeders)

1.2.8 (July 04, 2023)

  • Resource Detail Sidebar
    • Added new feature that adds an (optional) sidebar on the Resource Detail page that a developer can customize
    • Currently, the sidebar can have options, fields and actions (See documentation)
  • Fields
  • Field inline editing
    • Fixed issue that caused the menu to sometimes be out of the screen bounds
  • Field layout
    • Added missing vertical padding to cards layout
    • Improved cardColumns layout look for detail page
  • Code field
    • Fixed issue that caused the detail preview to have a very small width
  • Tenant variable values
    • Removed unneeded hint on description field
  • Textarea Field
    • Added missing implementation for ->rows method on Textarea field
  • MorphToMany field
    • Fixed issue that in some cases caused an error when attaching records
  • BelongsToMany field
    • Add missing description support for resource options in the front-end
  • qore/addresses: Fixed bug which caused the fields to sometimes not be clickable on detail page (publishing required)
  • qore/crm: Minor tweaks in Organization resource

1.2.7 (June 27, 2023)

  • Fields
    • Added possible Field call ->allowStateWhileHidden() which will allow hidden fields to still transfer and submit their states in a form (See documentation)
  • Skeleton (See upgrade guide)
    • Fixed issue that caused password reset to redirect to login
    • Fixed inconsistencies in route naming for 2fa routes
    • Changed throttling for logging in because it got throttled quite fast when resetting password
  • Resource Detail
    • Fixed issue that caused tabs to not be clickable by global events
  • Time field
    • Fixed issue that caused Time field to not respect setState when called from other fields
    • Removed spacing on bottom of the field when there is no validation error
  • Resource Index tabs
    • Fixed issue that caused index tab to not be selected when going back in (browser) history
  • VariableValue field
    • Fixed issue that caused an empty option when adding a new variable via the "+" button
  • qore/forms: Added support for tab count (publishing required), requires qore/system >= 1.2.6
  • qore/microsoft-graph: Added support for optional headers inside request & improve documentation

Upgrade guide

  • Skeleton introduced some authentication issues
    • Please make sure to apply the changes that can be found in this MR and this MR

1.2.6 (June 26, 2023)

  • Field actions
    • It is now possible to return data from a field action closure (See documentation)
    • This can also be used in order to check if an action has ran before
  • Resource actions
    • Added headerComponent and bodyComponent methods to Resource Actions
    • It is now possible to create a custom Vue component if overriding is necessary (See documentation)
    • Added fix for 404 error that was shown if a record was soft deleted
  • Tenant Variable Values
    • Variables can now be shown as Text, a Filled Pill or Outlined Pill
    • The VariableValue field will now display the styling of the variable value (optional icon, color, etc.)
      • Fixed minor issue with sorting on the VariableValue field
  • Resource Index page
    • Removed 404 response when retrieving data from a resource that has its index page disabled
    • Disabled index page url in breadcrumbs when resource index page is disabled
  • File downloads
    • Only file downloads of mimetype: txt, pdf, jpg, jpeg, png and gif will optionally be opened in a new browser tab. Other files will be downloaded directly.
    • Added fix for validation messages not being shown when a file was downloaded from a Resource Action
  • Color picker
    • Color picker opens now too when clicked on the color preview on the left of the field
  • Resource detail
    • Added a counter to every (card) tab that shows the amount of records that contain in the table within
      • Relation fields will have that counter added automatically
      • You can override the count if necessary (See documentation)
    • Fixed issue that caused fields to not be shown in full width when the label is disabled
    • Fixed issue that caused the label to still be visible on smaller screens when disabled
  • Forms
    • Added toggable cards to CardsLayout (was only working on Detail before)
    • Added autofocus to the first field in a form
  • qore/attribute: Added small styling improvement (publishing required)
  • qore/mailing-extended: Added button that shows the receivers of the mail that is sent via a mail list (publishing required)
  • qore/crm: Added support for tab count (publishing required), requires qore/system >= 1.2.6
  • qore/notes: Added support for tab count (publishing required), requires qore/system >= 1.2.6

Upgrade guide

  • Publish & Migrate latest system migration: php artisan vendor:publish --tag=qore.system.db and php artisan tenants:migrate
    • Required for tenant variable value changes

1.2.5 (June 19, 2023)

  • When executing Resource actions (in bulk) the query will use the Resource indexQuery now instead of using the Model::query()
  • Added the missing impersonator_id to the activity log table in the tenant database.
  • Added Label & Highlighting for fields that use TinyMCE editor
  • Added small improvements to IconSelect field and added missing Detail & Index components
  • Added the method toggleFields(...$fields) and setVisibilityForFields($bool, ...$fields) to the ManagesForm contract.
  • Updated prism code editor front-end dependency (See upgrade guide)
    • The language php was not supported before
  • qore/ckeditor: Fixed issue that caused error when the field was left empty
  • qore/layout: Added 2 minor bugfixes in the front-end

Upgrade guide

  • Publish & Migrate latest system migration: php artisan vendor:publish --tag=qore.system.db && php artisan tenants:migrate
  • Run cd frontend && yarn upgrade qore-frontend to make sure prism dependency will be updated to the correct version
  • If you happen to extend the ManagesForm contract make sure to implement toggleFields setVisibilityForFields this change.

1.2.4 (June 12, 2023)

Notable changes:

  • Affixing numeric fields
    • Added the functions withSuffix(string $suffix) and withPrefix(string $prefix) to Price and Number.
      • Used to affix a form value with text.
    • Added the function withCurrencySymbol(string $symbol) to Price and Number.
      • In the background app()->getLocale() is used to determine if the value should be prefixed or suffixed.
    • Fixed a bug inside the Price field. The keypad comma now gets replaced by a period and no longer adds a comma to the form value.
  • Color Field
    • Capitalised hex values (#FFF) will now pass as valid input.
  • Currency
    • Added the helper function preferred_currency which will return the currency set in the company’s preference.
  • qore/crm: Added features that are necessary for upcoming projects module.

Upgrade guide

1.2.2 (May 25, 2023)

Notable changes:

  • Moved Tenant Variables & Values to Qore system (See upgrade guide)
    • Added (optional) icon, color, and whether to translate the value description by default
    • The withTranslations method on the VariableValue field is now deprecated
  • Added proper (regex) validation to the Color field
  • Added more support for working with (uploaded) files (See documentation)
    • Added a route which allows for files to be uploaded to make (roaming) public links to the file
    • Added a route which allows for roaming files to be deleted
    • Added a route which creates a table for all stored media (only if authorized)
  • Added new field: MediaSelect which allows users to either upload or select existing (media) files (See documentation)
  • Added new plugin which allows for the CKEditor Wysiwyg to be added as field (See documentation)
  • Added small accessibility improvement to SimpleEditor to focus the editor input when clicked
  • Removed unused wysiwyg tenant preference
  • Fixed issue which caused inline editing to not work when a field had the withoutLabel property
  • Fixed issue which caused the global search to open when you would type / in a (wysiwyg) editor
  • qore/address: Fix small margin error (publishing required)
  • qore/crm: Added features that are necessary for upcoming projects module
  • qore/layout: Added many new features to allow for more customization (publishing required)

Upgrade guide

  • Tenant variables & Tenant variables are now moved to Qore system.
    • Make the changes that can be found in this MR
    • Publish & Migrate latest system migration: php artisan vendor:publish --tag=qore.system.db and php artisan tenants:migrate

1.2.1 (May 11, 2023)

Notable changes:

  • When using a relational field, you now have the option to override columns on the relation table that is shown on the detail page (See documentation)
  • Added functions to the Number field (See documentation)
  • Added caching to Resource fields to avoid re-making fields unnecessarily to increase performance
  • Added method to many-relation fields to override the relation table query (See documentation)
  • Added support for pivotFields on MorphToMany and BelongsToMany fields (See documentation)
  • Added support for many-relation fields to run Qore actions inside the relation table (See documentation)
  • Added missing form interceptor when updating a resource via a Chip that is based on a Select or BelongsTo field
  • Removed spacing below every Qore field when there are no validation errors to make forms more compact (See upgrade guide)
  • Fixed bug in BelongsToMany field that caused relationship records to not be attachable
  • Fixed issue which caused VariableValue to use the wrong translation key
  • Fixed a bug that was caused by the Select field using the wrong value key to auto create an In validation rule
  • Fixed issue which caused active table filter to be not in sync or deselected after a user logs out
  • Fixed issue which caused dependsOn to be called more times than necessary
  • qore/addresses: Added less spacing to fields to be consistent with Qore fields
  • qore/forms: Added correct gutter to fields to be consistent with Qore fields
  • qore/crm: Added fix for NameSuggestionField showing while it should be hidden
  • qore/invoicing: Added fix for incorrect class call which caused MailTemplateResource to error

Upgrade guide

  • Add fix for migrate:rollback erroring (See changes)
  • (Optional) Spacing below Qore fields are removed when there are no validation errors, however this does not apply to your custom fields. See changes to see how to add this yourself if necessary.
  • (Optional) (Experimental) Add loader to your app so when a session expires you will not see the app shortly before abruptly getting redirected to login page (See changes)

1.2.0 (Apr 25, 2023)

Notable changes:

  • Added the ability to have multiple menu items for 1 resource
    • These menu items require a tableScope which optionally applies filters/sorting etc. (See documentation)
  • Added more customization support to MenuItem
    • You can now define when the item gets the active state in the menu (See documentation)
  • Added Enum support for Select field (See documentation)
    • The Select field also adds the new In(...) rule now by default, which includes all option values (See documentation)
  • Added array support to multiple methods, e.g. ->hideFields(['name', 'category']), so you can either supply an array or spread
  • Added support to inline field editing to have other field(s) at the top (See documentation)
    • Before this change, the inline editable field was always the first one in the form. This would be confusing if you were to edit fields like start_date and end_date where end_date would be the first field.
  • Added diff for humans support to date & time presenter helpers (See documentation)
  • Added sticky (scrolls alongside the table) to the role & permissions table header to make it more user-friendly
  • Added missing support for setting dynamic paragraph on Heading field (See documentation)
  • Added Vue slot to Select & BelongsToMany fields so options can optionally be overridden (See documentation)
  • Renamed Fields to Tags for TwigTemplate field
  • Fixed issue that caused the Delete resource action to be hidden when not having deleteAny permission
  • Fixed issue that caused the Logs button on resource detail to be hidden when there were 0 callable actions
  • Fixed issue that cased null value in Select and relation fields to not be filterable in tables
  • Fixed issue in EncryptedText which caused the copy to clipboard to always be visible
  • Fixed issue that cased relational fields to execute queries when not necessary
    • Options were retrieved on the resource detail page
  • Fixed issue in Image field that caused long file names to overflow
  • BackgroundProcessResource now exists in qore/system (See upgrade guide)
  • qore/attribute: Translate labels, tooltips, hints and select options by default
  • qore/crm: Added missing social icons & fix duplicated fields
  • qore/address: Added better import support
  • qore/layout: Add multiple improvements & bugfixes
  • qore/excel-import: Added multiple improvements & bugfixes
  • qore/invoicing: Patched new options method to match Select options
  • qore/mailgun: Added support for multiple domains
  • Added module to upload & export Word templates (See documentation)

Upgrade guide

  • BackgroundProcessResource and its fields have moved to qore/system. Make sure to apply the following changes
caution

If you have custom fields that extend the Select field, and has its own options method, make sure you update your options method to match Qore arguments

1.1.7 (Apr 06, 2023)

Notable changes:

  • Added route that will allow media (files) to be streamed (See documentation)
    • It was only possible to download media before
    • Resource actions that download a file (that does not open in a new tab), will now have a proper file name instead of uuid
  • Fixed issue that caused modules & plugins to still be active when switching tenants

Upgrade guide

1.1.6 (Apr 01, 2023)

Notable changes:

  • Upgraded Laravel 9 to Laravel 10 (See upgrade guide)
  • Added better support for onUpdate when file inputs are updated
    • E.g. FilePicker field onUpdate will now show the file name, size, last_modified instead of __key only
  • Fixed issue in FormState that in rare cases could throw an error when a field had updated
  • qore/invoicing: Added support for Laravel 10 & upgraded Wysiwyg dependency
  • qore/forms: Added support for Laravel 10
  • qore/crm: Added support for Laravel 10 & addresses field is not hidden on index anymore
  • qore/address: Added minor style improvements

Note: the following dependencies have updated (some including publishable front-end): qore/crm, qore/address, qore/invoicing, qore/forms

Upgrade guide

1.1.5 (Mar 29, 2023)

Notable changes:

  • Updated Wysiwyg field front-end dependencies and allow font size to be set (See documentation)
  • Added ability to copy encrypted text value and disabling the visibility button for the EncryptedText field (See documentation)
  • Added ability to override the ResourceTable class on resources (See documentation)

1.1.4 (Mar 28, 2023)

Notable changes:

  • Roles & Permission management now exists inside Qore instead of Skeleton (See upgrade guide)
  • Added support for Permission Scope groups, which allows ScopedPermission classes to have configurable groups (See documentation)
  • Fixed issue that could cause a wrong table row to be highlighted after editing a resource inline

Upgrade guide

  • Everything related to role & permission management can be removed from your project. See the following changes.
  • Make sure to also make the following change because there is only 1 component.
  • If you have a local config/components.php (which is unlikely), make sure to re-publish: php artisan vendor:publish --tag=qore.system.config --force

1.1.3 (Mar 22, 2023)

Notable changes:

  • Added 3 new relation fields (HasOneThrough, HasManyThrough, MorphToMany) and improved sorting support for multiple relation fields (See documentation)
    • Every relation fields now implements the interface IsRelationField
    • Information on how to sort on a custom column is now added to the documentation (See documentation)
  • Added (optional) icon to relation field links on index tables (See upgrade guide)
    • It is now visually more clear whether a link relates to an external resource
  • Added support for disable, description and group inside Select field options (See documentation)
  • Added support to make tabsForModel, cardsForModel, cardTabsForModel methods overridable on Resources in order to define a custom order for these elements
    • For example, you might want to override cardTabsForModel with a custom sort order:
public function cardTabsForModel(Model $model): TabCollection
{
return parent::cardTabsForModel($model)->sort(function (Tab|Card $item) {
return $item->title() === __('Highest priority tab');
});
}
  • Added (optional) instigator to mail_messages table in order to track which model relates to a mail that has been sent (See documentation)
  • Added support for supplying a custom global search result order for Resources (See documentation)
  • Added support for full-page refreshes when editing a field inline (See documentation)
  • Added support for a Closure whether a field should be able to be edited inline (See documentation)
  • Added styling improvements to ColumnCardLayout
  • Added adjustment to global search result that when current page is clicked, the page will be refreshed
  • Added property to BaseForm to support a reload after form is submitted (See documentation)
    • This is now being used (set to true) for the modules & plugin settings page
  • Modified minimal width of fields from 200px to 150px to match the size_to_pixels function
  • Modified size of Image detail to be a bit smaller
  • Modified the shared settings table to have a nullable target
    • You can now have settings which are not related to a Tenant
  • Fixed responsiveness for Settings button inside table settings
  • Fixed inconsistencies in some relational fields (<a> tags) having no underline when hovering (See upgrade guide)
  • Fixed issue that caused the Time field to not properly validate its format
  • Fixed issue that caused Paragraph field to throw an error in some cases
  • qore/crm: Modified organization logo, social media links and minor adjustments to fields
  • qore/attribute: Added support for Image field
    • The config/attribute.php should be updated if you need this new field
  • qore/address: Added multiple small styling improvements to the fields

Note: the following dependencies have updated (including publishable front-end): qore/crm, qore/address, qore/attribute

Upgrade guide

  • A migration has been added that updates a current table. For that reason, run: composer require doctrine/dbal
  • Make sure to publish migrations & run them:
php artisan vendor:publish --tag=qore.system.db
php artisan migrate
php artisan tenants:migrate
  • To fix underline on <a> links make sure your css/link.scss looks like:
a {
color: var(--q-color-primary);
text-decoration: none;
}

.underline:hover {
text-decoration: underline;
}
  • If you have a published qore.php, make sure to make the following change

1.1.2 (Mar 14, 2023)

Notable changes:

  • Added feature to also show Alert on resource edit forms instead of only on detail (See documentation)
  • Added ability to set default font for Wysiwyg field (See documentation)
  • Added field for encrypted Text (See documentation)
  • Added support for toggable cards inside ColumnCardLayout
  • Removed User field from TwigTemplate resource
  • qore/address: fixed issue with stdClass being used instead of array
  • qore/crm: fixed issue with address onUpdate using stdClass
  • qore/mailing-extended: Removed inlineEditable from MailListResource -> MailListFilter field

Note: the following dependencies have updated (including some publishable front-end): qore/crm, qore/address, qore/mailing-extended

1.1.1 (Mar 06, 2023)

Notable changes:

  • Fixed issue that onUpdate in fields would sometimes receive a stdClass as value (see danger note below)
  • Fixed issue which caused ->disable on fields to not disable editing inline
  • Fixed issue which caused composer outdated to be executed daily which slowed down development
  • Added small change to Date and DateTime front-end fields to improve accessibility
  • Fixed issue in ColumnCard layout that prevented output on the detail page
  • Fixed issue in qore/crm that made ContactFullName cause problems in forms
  • Fixed issue in qore/addresses which prevented sorting in tables
  • Removed outdated dependencies from composer.json
  • Added plugin that adds DrawnSignature field (See documentation)
  • Added module to create custom forms (See documentation)

Upgrade guide

danger

The state of every form inside Qore relied on a stdClass before. It has now been refactored to use an array. In some cases, you might have an onUpdate on one of your fields, where the $value would be an stdClass.

Below is an example of what your old code may look like, and how you should refactor it.

->onUpdate(function (FormState $state, $value) {
if ($value) {
foreach ($value as $key => $address) {
if (strtoupper($address->country_code) === 'NL' &&
preg_match('/^(?:\d{4} ?[A-Z]{2})$/i', $address->zipcode)) {
$values = $state->getState($this->name);
$values[$key]->zipcode = chunk_split($values[$key]->zipcode, 4, ' ');
;
$state->setState($this->name, $values);
}
}
}
})
->onUpdate(function (FormState $state, $value) {
if ($value) {
foreach ($value as $key => $address) {
if (strtoupper($address['country_code']) === 'NL' &&
preg_match('/^(?:\d{4} ?[A-Z]{2})$/i', $address['zipcode'])) {
$values = $state->getState($this->name);
$values[$key]['zipcode'] = chunk_split($values[$key]['zipcode'], 4, ' ');

$state->setState($this->name, $values);
}
}
}
})
  • (Optional) There existed outdated packages in skeleton. Make sure make the following changes
  • (Optional) The following dependencies have updated (no publishing required): qore/crm, qore/address, qore/attribute

1.1.0 (Feb 28, 2023)

Note: qore/system and qore front-end tags will always be in sync now

Notable changes:

  • Fixed issue in QoreResource permissions that caused Telescope to throw an exception in jobs
  • Allow fields to specify custom validation rules for the importing module
  • Added missing debounce to Code field
  • Added minor improvements to TemplatePReview field
  • Added proper Too many attempts response handler inside Skeleton

Upgrade guide

  • (Optional) Add the following changes to have a proper 429-Too many attempts response handler

1.0.9 (Feb 15, 2023)

Front-end tag: 1.0.9

Notable changes:

  • Converted User & Tenant mailFooter field to MorphOne because it would cause issues when switching tenants

Upgrade guide

Note: the following migrations will remove the mail_footer_id column from the tenants and users tables

  • Run php artisan vendor:publish --tag=qore.system.db
  • Run php artisan migrate && php artisan tenants:migrate
  • Update the TenantResource and the UserResource as done here, and scope fixes here

1.0.8 (Feb 14, 2023)

Front-end tag: 1.0.8

Notable changes:

  • Added command php artisan qore:publish to make it easier to deal with updated Qore module/extension assets
  • Added missing Index component for the SimpleEditor field
  • Added feature to allow for different address types for the Address field (See documentation)
  • Added change that makes dangerous resource actions to always be shown at the bottom of the list
  • Changed the Address/Place maps icon to match the Google maps icon
  • Changed MailFooter content field from Wysiwyg to Code to allow for more freedom inside its content
  • Added debounce to Code field

Note: the following dependencies have updated (including their publishable front-end): qore/crm, qore/address, qore/attribute

1.0.7 (Feb 07, 2023)

Front-end tag: 1.0.7

Notable changes:

  • Added support for resource Block buttons (See documentation)
  • Fixed issue that caused empty card column to be shown
  • Fixed issue that caused hover style to show on not-editable inline fields
  • Added visual improvements to qore/address fields

Note: the following dependencies have updated (including their publishable front-end): qore/layout, qore/crm, qore/address, qore/notes, qore/brandfetch

Upgrade guide

  • (Optional) to show if modules/plugins are outdated, add the following changes
  • (Optional) to show a dropdown icon for user profile menu in top right, add the following changes

1.0.6 (Feb 02, 2023)

Front-end tag: 1.0.6

Notable changes:

  • Switched vue-fragment to vue-frag dependency in front-end (see upgrade guide) to prevent unexpected bugs to occur
  • Added new plugin: Brandfetch (See documentation)
  • Added possibility to hide field label on detail page (See documentation)
  • Fixed few small issues caused by inline editing

Upgrade guide

  • To switch to vue-frag and allow for font-awesome icons make these changes and run yarn install —force
  • Note: the following dependencies have updated: qore/layout, qore/crm, qore/address, qore/geocoding

1.0.5 (Jan 31, 2023)

Front-end tag: 1.0.5

Notable changes:

  • Added feature that enables inline editing of fields (See documentation)
  • Added SimpleEditor (simple wysiwyg) field (See documentation)
  • Fixed bug that caused the asHtml method to not work in tables

Upgrade guide

  • To allow for editing UserResource inline, please make the following change in your project

1.0.4 (Jan 24, 2023)

Front-end tag: 1.0.4

Notable changes:

  • Added feature to chips to act as a Select field (See documentation)
  • Added few style changes to resource detail page
  • Added possibility to add dense class to card card-header class

Upgrade guide

  • To allow for dense card headers, please make the following change in your project

1.0.3 (Jan 23, 2023)

Front-end tag: 1.0.3

Notable changes:

  • Fix issue in qore.php that caused seeders to fail because it had no default wrapper

Upgrade guide

  • If you have a published qore.php, make sure add the following change (notice the default key):
'attach_button' => [
'default' => [
'outlined' => false,
'stacked' => true,
]
],

1.0.2 (Jan 18, 2023)

Front-end tag: 1.0.2

Notable changes:

  • Added improved look for detaching relations inside tables. Relation fields will no longer append an Actions column, instead a context menu will appear now.
  • Added feature to relation fields to define which columns should be shown in the table by default (See documentation)
  • Added config to qore.php to be able to customize the (relation) attach buttons (block buttons at the top of the page). (See documentation)

Upgrade guide

  • If you have a published qore.php, make sure to add the following:
'attach_button' => [
'outlined' => false,
'stacked' => true,
]

1.0.1 (Jan 12, 2023)

Front-end tag: 1.0.1

Notable changes:

1.0.0 (Jan 10, 2023)

Front-end tag: 1.0.0

Notable changes:

  • Added upgrade to Laravel 9.0 (including all extensions)
  • Added change to currencies so that they do not rely on front-end anymore
  • Added impersonation support
  • Added support for column cards (with optional tabs) Field Layout (See documentation)
  • Added better authentication support for IP whitelisting
  • Added small button to sidebar (main menu) to collapse it
  • Fixed issue in TemplatePreviewField that caused click events to not close other menus/dropdowns
  • Fixed issue that caused tables to only use column/row styles on the first page
  • Fixed issue (in all extensions) that caused an error when running php artisan config:cache
  • Fixed issues in VATNumber field that caused it to display errors on valid numbers

Upgrade guide

✨ The full upgrade guide can be found here

0.9.88 (Jan 03, 2023)

Front-end tag: 0.9.57

Notable changes:

  • Added support for min and max attributes for Number field
  • Added caching to CurrencySelect field to prevent multiple queries being executed

0.9.87 (Dec 19, 2022)

Front-end tag: 0.9.56

Notable changes:

  • Added change to Website field to not check if a website is online by default (See documentation)
  • Added feature to mailing that allows for (optional) metadata to be passed and saved on mail messages, which then can be used by mail drivers

Upgrade guide

  • Publish the latest migrations and run them
  • If you are using the qore/mailgun plugin, make sure to update that plugin
php artisan vendor:publish --tag=qore.system.db
php artisan tenants:migrate
# If used:
composer update qore/mailgun

0.9.85 (Dec 14, 2022)

Front-end tag: 0.9.56

Notable changes:

  • Added overridable method getEmailAddress to VariableList to determine the e-mail address for a model (See documentation)
  • Added feature to Paragraph field that allows other fields to change the message dynamically (See documentation)
  • Fixed issue in Select field that caused other fields not to be able to set options dynamically if the select field was not visible yet
  • Fixed issue that caused the disableTabs prop to be not properly working inside Resource tables
  • Fixed issue that caused resource table exports (when queued) to not initialize tenant and boot extensions
  • Added documentation page for Queues & Jobs (See documentation)

0.9.84 (Dec 08, 2022)

Front-end tag: 0.9.55

Notable changes:

  • Added support for Excel importing module (See documentation)
  • Added change to Place and Addresses fields to make it more compact
  • Added change to Resource detail page that replaces the Log table tab to a hamburger menu in the top right (see upgrade guide for more)
  • Fixed issue that caused VatNumber field to fail on validation if a mismatching company name was given, now it gives a warning instead

Upgrade guide

  • If you have a custom resource detail component for any of your resources, make sure you also add the following changes to add Logs in the button dropdown
  • Added minor upgrades to Addresses, Attribute, Invoicing, CRM, Layout and Excel Importing modules. Make sure to upgrade (and override published files) where needed.

0.9.82 (Nov 23, 2022)

Front-end tag: 0.9.53

Notable changes:

  • Fixed issue that caused mail template variables to allow for recursion in resource relation fields
  • Fixed issue that prevented the same media file to be uploaded twice & errored when deleting a file
  • Fixed issue that sometimes caused an error when sending a test e-mail from an email template
  • Refactored auto-filling (testing module) of fields so that it now properly respects onUpdate hooks
  • Fixed several small issues with Image and Filepicker fields (overflowing text, unresponsiveness and more)
  • Fixed issue that caused relational fields to sometimes not be readonly when attaching/creating
  • Added QoreMail channel that can be used for Laravel notifications (See documentation)
  • Removed auto-focus from Wysiwyg field (an issue which also caused the page to be scrolled to the editor on page load)
  • Fixed issue that caused Wysiwyg to not be unloaded/loaded correctly inside tabs
  • Added feature to trigger onUpdate on other fields (like a chain reaction) when you set the state (Documentation here and here)
  • Changed MorphTo field to have the same visuals as other relational fields by default (it is not displayed as a pill anymore, and in dropdowns it will also show a description)
  • Added feature to resource actions that allows for a custom redirect on detail pages (See documentation)
  • Fixed issue in MorphTo field that caused it to reload multiple times when it has a onUpdate callback
  • Added feature that allows for max_files:3 and min_files:1 rules to be added to FilePicker and Image field when it has multiple (See documentation)
  • Added change to tables that makes tabs disabled while the table is loading

Upgrade guide

  • Remove Faker dependency for generating passwords, otherwise it will error in production: (See changes)
  • The $shouldRedirect property on resource Action class will not be used anymore. Instead, use the following code, or supply a custom redirect url (See documentation).
public bool $shouldRedirectToIndex = true;
  • (Optional) to make links feel more response inside tables, change your frontend/src/css/link.scss:
a {
color: var(--q-color-primary);
text-decoration: none;
}

table.q-table tbody a:hover,
.detail-row a:hover {
text-decoration: underline !important;
}

0.9.76 (Nov 01, 2022)

Front-end tag: 0.9.52

Notable changes:

  • Fixed issue that caused mail layouts (blade files) to not be publishable/overridden from the correct directory. See upgrade guide below.

Upgrade guide

  • Make sure to move the following directory: resources/views/mailing/layouts/ to resources/views/vendor/qore/mailing/layouts/
  • Remove /qore and qore from your .gitignore (the one in the root of your project). This was causing the resources/views/vendor/qore to be ignored.

0.9.75 (Oct 31, 2022)

Front-end tag: 0.9.51

Notable changes:

  • Added feature to set width, submit button color and reject button color on form interception dialog (See documentation)
  • Fixed issue that caused attachOnField to not work properly when referencing a MorphTo field
  • Added change to VariableValue field to make the category field readonly by default when attaching
  • Fixed issue that caused Image field to prevent detaching an image and show a console error in the front-end when creating a resource

0.9.74 (Oct 27, 2022)

Front-end tag: 0.9.50

Notable changes:

  • Added feature to have (status) chips on resource detail page (See documentation)
  • Fixed issue inside QoreResource that caused getPermissionNames to not checked by canUpdateAny and canDeleteAny by default
  • Fixed issue in permission checking for Mailing related resources
  • Fixed issue that caused initFormValueUsing closure on fields to be ignored when the closure returns null inside tables
  • Fixed issue that caused setting max width on FilePicker field to be ignored
  • Fixed issue that caused MariaDB to throw errors when searching on Place and Phone fields inside tables
  • Fixed issue that caused required validation rule on FilePicker to trigger on edit forms (when a file already existed)
  • Fixed issue that caused planned mailing messages to not be queued and placed inside the wrong IndexTab inside the table
  • Added description in options (when set) when filtering on a Select field inside tables
  • Fixed issue that caused relationship fields (e.g. BelongsTo) to not work properly (option label was incorrect) in combination with dependsOn
  • Removed extra padding that was set on checkbox fields
  • Fixed issue that caused header attach buttons on Resource detail pages to not work on mobile
  • Fixed issue that caused downloading files from inside tables to redirect the user to the detail page
  • Fixed issue that caused withRelationalMeta to not be triggered sometimes on relationship fields
  • The CompanyName field will now also fill address province and municipality (if address field is supplied)
  • Added functionality to retrieve related model within relation fields (See documentation)

Upgrade guide

These changes are optional:

  • When a session expires, the user will be logged out, but it does not give feedback to the user. This change will show a notification.
  • Mailing related permissions were hidden inside the permissions table inside skeleton. See changes here to show them.
  • There is now the possibility to copy 2FA secret. If you need this functionality, see: changes here.

0.9.68 (Sept 15, 2022)

Front-end tag: 0.9.48

Notable changes:

  • Fixed issue in Checkbox field that caused problems with margin/padding (causing a scrollbar inside tabs)
  • Added asHtml support for Paragraph field
  • Added request queue (to every form that has fields) in order to prevent unexpected race conditions which can happen on unstable or slow servers
  • Fixed issue that causes custom arguments not to be merged properly when sending e-mails
  • Added improved permission check for showing resources in the main menu (it will now check for: $resource->getPermissionNames()['viewAny'] instead of letting front-end handle it)
  • Fixed display issue when filtering in Date or DateTime columns
  • Add field DetailButton which shows an information dialog in index tables (See documentation)

Upgrade guide

There were a few minor issues with the user password reset functionality. Make sure you make the following changes:

0.9.66 (Sept 06, 2022)

Front-end tag: 0.9.46

Notable changes:

  • Added support for having a custom createPageTitle and editPageTitle on resources
  • Added missing support for FieldLayout on Plugin settings page
  • Fixed issue where a setting(...) would return an array instead of null (when the value was null)
  • Fixed issue that caused variables to not be merged correctly when sending an e-mail
  • Added optional argument $fromTenant = false to formatting helper functions in order to always use the tenant preference
  • Cleaned up form & detail layouts for resources to have more consistency in spacing and look
  • Added debounce to Wysiwyg field to prevent a lot of events firing
  • Added feature to have toggling cards (See docs)

Upgrade guide

  • In order to keep cards toggled when the user reloads a page, make sure to go to store/index.js and add 'globals.toggledCards' to the createPersistedState

0.9.64 (Aug 30, 2022)

Front-end tag: 0.9.44

Notable changes:

  • Added option to disable specific resource pages (See documentation)
  • Added option to set a custom redirect url when creating & editing resources (See documentation)
  • Relation fields will display normal <a> links by default now instead of pills (See documentation) and will also be used on many-relation fields
  • Fixed alignment issue in excel exports
  • Added field RelationTableField to support having a custom table inside a field without needing another Resource class (See documentation)
  • Added option to create a relation inside a new page instead of a modal dialog (See documentation)
  • Fixed issue that caused the left menu to overlap the buttons on the bottom if there were too many menu items
  • Fixed issue that caused Addresses field to not be validated properly
  • Added minor improvement to the design of Addresses field
  • Added minor change to the default resource name method to check for Resource suffix and ignore it
  • Added change to Number and Price fields to send NULL when input is left empty
  • Modified Select field method call in order to set options dynamically (See documentation). See also FAQ for more information.
  • Added option to always show the submit button for StepsLayout (See documentation)

Upgrade guide

  • If you set Select options dynamically via another field somewhere, make sure you change $form->setFieldMeta(...) to $form->setFieldData(...)
  • The module qore/addresses should be updated via composer and published (php artisan vendor:publish --tag=address --force)
  • The vuex store has changed slightly. Make sure you update your following Vue files to look like store, main layout and main header
  • Fixed an issue that caused the download button to be hidden (on the downloads page). Update your following file to look like this
  • In RoleAndPermissionController this ->withoutAttaching() should be called on the copy_from BelongsTo Field to prevent opening an empty form. See: change
  • If you have a published qore.php config file, you need to add the following (in order to show relational fields as links):
// ...
'preferences' => [
// ...
'display_as_href' => [
'default' => true
]
]
  • (Optional) it is good practise to rename your resource classes to {$ResourceName}Resource since this will ensure it does not conflict with the related model name and will be more consistent with other laravel class names.

0.9.63 (Aug 10, 2022)

Front-end tag: 0.9.43

Notable changes:

  • Added option to add an optional note to logs (See documentation)
  • Fixed issue that caused the export button to be hidden inside tables
  • Fixed issue that caused hideOnShow closure not working when chaining ->asTab() or ->asCard() on the relational fields
  • Refactored <a> links to not do a full page refresh for the relational fields
  • Fixed issue in Addresses that ignored the default address type and would always fall back to visit
  • Added method to customise default value of a field when editing a resource (See documentation)

Upgrade guide

  • The module qore/addresses should be updated via composer and published (php artisan vendor:publish --tag=address --force)

0.9.61 (Aug 03, 2022)

Front-end tag: 0.9.42

Notable changes:

  • Fixed bug that caused Date & Datetime filter not working in some cases
  • Added option to make BelongsTo to behave like a normal <a> and optionally open the link in a new tab (See documentation)
  • Added feature to download files via resource actions (See documentation)
  • Improved the Choice field and added option to make it dense (See documentation)
  • Added better price formatting to Price field and added currency symbols to helper function (See documentation)
  • Added option to select another address in Place field (See documentation)
  • Improved VatNumber field so it doesn't do multiple requests
  • Added layout option to have tabs inside cards (See documentation)
  • Added options to Actions to have custom response message, width and more (See documentation)
  • Add functionality to duplicate a resource (See documentation)
  • Added option to have a field layout for module/plugin settings (See documentation)
  • Added ActionButton field (See documentation)
  • Added CurrencySelect field (See documentation)
  • Added tenant_variable_value helper function (See documentation)
  • Added method customFill to resources (See documentation)
  • Added option to have custom show response parameters for resources (See documentation)
  • Added modelDescription to resources (See documentation)
  • Added methods isCreating and isUpdating to form interceptor (See documentation)
  • Added option to generate new serial number without saving (See documentation)
  • Fixed bug that caused Checkbox not to validate properly
  • Added caching to permission scopes
  • Added separate field methods that are called before rendering forms/details (replaced prepare) (See documentation)
  • Added alternative way to show attach buttons (as block buttons via ->withAttachButton()) for relation fields (See documentation)
  • Added few styling improvements, missing loaders, performance improvements etc.

Upgrade guide

  • On the field VatNumber The method companyField should be refactored to setCompanyField (See documentation)
  • The modules qore/crm and qore/addresses should be updated via composer and (forcefully) published (e.g.: php artisan vendor:publish --tag=crm --force). The Organization and Contact resources have been renamed to OrganizationResource and ContactResource. You should add the name method on any resource that extends these recourses to supply a correct name.
  • The prepare method on fields is marked deprecated (but will still work for a while) (See documentation for replacements)
  • The default method which you can call on each field now expects either a value, or a Closure where the first argument is the ManagesForm (instead of ?Model) (See documentation)

0.9.56 (Jun 08, 2022)

Front-end tag: 0.9.39

Notable changes:

  • Added new field: Time (view documentation)
  • Fixed bug that caused Date and DateTime fields not to clear properly
  • Dropdown carets will now be hidden when the field is hidden or disabled
  • Added better validation for email fields (domain/dns will also be checked now)
  • Filterable & Sortable are enabled by default now on fields instead of having to chain these methods
  • Added validation for Website field to check if the site exists
  • uuid_create function calls are replaced by Str::uuid()
  • Added improved display for validation errors in StepsLayout
  • Added support for StepsLayout in resource actions
  • Added support for hiding or disabling the submit button inside forms (view available methods)
  • Added support for more customization in resource actions ( view documentation)
  • Updated Number field to show no decimals by default (you can use ->allowDecimals to use them)
  • Added support for chaining ->autoFillUsing on fields (you will get a Faker instance in the closure)
  • Updated autofill for Website and Address fields so it will not fail on validation
  • Added mailto and tel to EmailAddresses and PhoneNumbers fields inside tables
  • Fixed a few issues that was caused by empty fields in the addresses module (see upgrade guide below)

Upgrade guide

The qore/address should be updated:

composer update qore/address && php artisan vendor:publish --tag=address --force

0.9.51 (May 25, 2022)

Front-end tag: 0.9.34

Notable changes:

  • Fixed issue in address module that sometimes prevented data to be saved
  • Run composer update qore/address to resolve this
  • Added sticky columns functionality for resource index tables
  • Documentation can be found here
  • Added a width property to the resource Action class
  • Documentation can be found here
  • Added delete button to the resource inline edit form on the index page
  • Added argument to the date presenter helper functions to optionally disable applying timezone
  • For example if you only want to format a date: date_presenter($myDate, false)

0.9.49 (May 11, 2022)

Front-end tag: 0.9.32

Notable changes:

  • Fixed issue with row onClick event for small screens
  • Added tooltip to Place & Checkbox fields in front-end
  • Added label to Place field in front-end
  • Added more functionalities (like delete and detail button) to resource index tables
  • Documentation can be found here

0.9.48 (May 11, 2022)

Front-end tag: 0.9.29

Notable changes:

  • The asterisk (*) that will be shown if a field is required has been refactored
  • If fields have rules like required_with or similar rules, the asterisks will be added dynamically
  • Fields will no longer have a is_required property, instead formData.meta has this information now

Upgrade guide

Every field (in the front-end) required an additional property required now in the field-label component.

Make sure you update your custom fields, and the following fields:

frontend/src/components/fields/CheckedPassword/Field.vue:

<field-label
:field="field"
:required="required"
/>

frontend/src/components/permission/ManageRole.vue:

<field-label
:required="true"
:field="{ label: $t('Name') }"
/>

The qore/address should be updated:

composer update qore/address && php artisan vendor:publish --tag=address --force


0.9.47 (May 10, 2022)

Front-end tag: 0.9.28

Notable changes:

  • Code base for checking permissions for resources has been refactored and will use Policies as much as possible
  • The getPermissions method has been removed for every resource
  • New documentation can be found here
  • There is now (better) support for the rules: required_if, required_unless, required_with and required_without
  • Fields like Place and Address fields were ignoring these rules
  • Properly showing a red asterisk (*) on conditional requirements is still in development

Upgrade guide

Because the getPermissions method has been removed, you should update your resources accordingly:

See changes here

The qore/address needs to be updated too:

composer update qore/address && php artisan vendor:publish --tag=address --force


0.9.46 (May 06, 2022)

Notable changes:

  • There is now support for editing resources within tables (from the index page)
  • See documentation here
  • Add minor bugfix for ->displayUsing inside a column for falsy values
  • The hideOnShow for the ResouceLogsTab will now be checked alongside view permission
  • Before only the view permission was checked

0.9.43 (May 04, 2022)

Notable changes:

  • There is now support for form submit interceptions inside resource forms
  • See documentation here
  • Fixed minor issue with auto filling Place field
  • Removed hideOnIndex from HasMany field
  • Added Qore action to post process place & address fields to append lat & lng
  • Make sure to update qore/address and qore/geocoding
  • Added correct urls to google map and embedded map in address fields (\n inside address used to break them)
  • Added dropdown for US states inside address fields

0.9.39 (Apr 25, 2022)

Notable changes:

  • The menu has been refactored to Menu::make(), and requires manual updates (see upgrade guide below)
  • The menu doesn't force group items to be below normal menu items anymore, and now supports menu sections
  • The Place and Addresses fields (from qore/addresses) now add lat & lng when filling a non-Dutch address

Upgrade guide

Your GlobalsController should now return an instance of Qore\Menu\Menu. Make sure you update the following:

  • Update your MainLayout.vue to look like this
  • Update your GlobalsController to look something like to look like this

The documentation can be found here: here You can delete your MakesMenu trait after.


Make sure to upgrade the qore/addresses module if you use it.


0.9.37 (Apr 21, 2022)

Notable changes:

  • Tabs and cards on detail pages will now be invisible if the user has no view any permissions for the related resource
  • Resource actions can only be executed now when the user has update permissions now on the related resource
  • Added the formatLogDetails method on the QoreResource class to enable customizing log details if needed
  • Updated permission check in qore/crm module to hide the contact column for the notes card
  • Added bugfix that prevented a user to have no roles
  • Added comma-seperated display for relation fields in the front-end (if related resource is inactive)

Upgrade guide

Make sure to upgrade the qore/crm module if you use it.


To fix the roles issue for users, add the following to the TenantRoles class (in the constructor):

$this->fillMissing(function (Model $model) {
$sync = $model->roles()->sync([]);
$this->logSync($model, $sync);
});

0.9.35 (Apr 20, 2022)

Notable changes:

  • There is now support for adding styles and classes conditionally to table rows and columns
  • The ->setColumnStyle method on field always expects a Closure now
  • See documentation here

0.9.34 (Apr 19, 2022)

Notable changes:

  • It is now possible to deselect relational table columns by default
  • See documentation here

0.9.33 (Apr 19, 2022)

Notable changes:

  • Fixed bug that caused wrong step to be active after form validation (in StepsLayout)
  • Added lat & lng to Place field & addresses module, see upgrade guide below
  • Fixed few issues with user form, see upgrade guide below

Upgrade guide

Latitude and longitude is now saved for addresses.

Make sure you upgrade qore/addresses and run:

php artisan vendor:publish --tag="address"
php artisan tenants:migrate

User password field validation checkmarks were not updating when generating a password.

You can add the following change to CheckedPassword:

->addAction('generateRandomPassword', function (ManagesForm $form) {
$generatedPassword = $this->generatePassword();
$form->setState('checked_password', $generatedPassword);
$form->setFieldMeta(
'checked_password',
'password_validation',
(new Password())->getInformation($generatedPassword)
);
})

0.9.31 (Apr 19, 2022)

Notable changes:

  • With relational fields you can now have more control over create forms (hide fields etc.). See info here
  • Soft deleted records will still be visible now (if policies / permission checks / IndexTab allow it)
  • For the Resource index tables the query used in IndexTab will now be executed instead of only be used for numeric value above tab.
  • Add small hotfix for Month field

0.9.29 (Apr 13, 2022)

Notable changes:

  • There is now support for marking fields visually as disabled and readonly
  • See usage here and conditional/meta usage here
  • Empty field values on detail pages will now be displayed as
  • Styling for belongsToMany field when other resource is not active is improved (used to be large pill)
  • Relation attach modal now properly works with the StepsLayout

Upgrade guide

  • Make sure you update qore-frontend.
  • If you are using qore/addresses or qore/crm, make sure you upgrade qore/addresses and force publish the vue files.
  • This will allow for readonly and disable to work with the fields in this module.

0.9.27 (Apr 12, 2022)

Notable changes:

  • Month (picker) field added (see documentation for more information)
  • Week numbers added to datepickers
  • Props added to BaseTable (see documentation for more information)

0.9.26 (Mar 30, 2022)

Notable changes:

  • Documentation has been updated quite a lot

0.9.24 (Mar 29, 2022)

Notable changes:

  • You can now add IP whitelisting, see upgrade guide below
  • Fixes several bugs & small improvements

Upgrade guide

If you would like to use IP white listing:

First, update your AuthenticationSettingsController to look something like this:

class AuthenticationSettingsController extends Controller
{
use HasFields;
use HandleAuthenticationSettings;

/**
* @return JsonResponse
*/
public function form(): JsonResponse
{
$this->checkPermission();

return $this->fieldsResponse($this->fields());
}

/**
* @return void
*/
private function checkPermission()
{
abort_unless(auth()->user()->hasPermissionScope(SettingsManagement::class), 403);
}
}

Next, add the following back-end translations:

"You are not allowed to access this site": "U bent niet gemachtigd om de applicatie te gebruiken",
"Field contains duplicate values": "Veld bevat duplicate waardes",
"At least one IP address is required": "Tenminste 1 IP adres is verplicht",
":value is not valid": ":value is niet geldig",
"Block all IP addresses except": "Blokkeer alle IP-adressen behalve",

Finally, make sure you handle the ipblock response in axios.js.

Note: The handleUnknownResponse function had a typo in its name, you should fix it too

// ..

const handledCodes = [401, 403, 419, 422, 428, 599]

// ..

if (error.response.status === 403) {
handle403Response(error)
}

// ..

// Handle 403 Response
function handle403Response (error) {
if ('response' in error && 'data' in error.response) {
if ('code' in error.response.data) {
if (error.response.data.code === 'ipblock') {
if (router.currentRoute.name !== 'login') {
router.push({ name: 'logout' })

Notify.create({
message: error.response.data.message,
type: 'negative',
position: 'top'
})
}

return
}
}
}

handleUnkownResponse(error)
}

Now you can append IP adresses in the application authentication settings


0.9.17 (Mar 24, 2022)

Notable changes:

  • There is now support for auto-filling forms when including the qore/testing module

Upgrade guide

If you would like to use the qore/testing module see https://qore.qlic.nl/modules/testing.

If you're using the qore/addresses module, make sure you upgrade this module too.


0.9.16 (Mar 22, 2022)

Notable changes:

  • The TenantVariable will no longer do permission checks in order to be visible
  • Roles can be used to make 2FA required for users within the role, see upgrade guide below

Upgrade guide

Make sure you apply the upgrade guide from 0.9.14 first, this will allow the name to be edited for roles.

After, apply the following changes manually:

https://gitlab.qlic.nl/qore/skeleton-v2/-/commit/9ac2c7458e8e820aff52f3f4ea61d2af7f69e24a


0.9.14 (Mar 21, 2022)

Notable changes:

  • A few bugs and issues have been resolved, make sure to upgrade qore-frontend to 0.9.2
  • Role names can be edited now, see upgrade guide on how to do this

Upgrade guide

Because roles & permissions is a part of skeleton you will need to apply these changes manually:

https://gitlab.qlic.nl/qore/skeleton-v2/-/commit/9d35396f18f8f93979a5dd1403cedb2c6ef1dd1d


0.9.10 (Mar 14, 2022)

Notable changes:

  • Table columns can now be saved as "default for everyone"
  • Table filters now save column properties as well
  • Layout builder now includes button support

Upgrade guide

  • To save table columns as default, you will need a permission scope. Add the following to your PermissionSeeder:
    $creator->create('set default table settings',
'tables',
false,
false,
false,
false,
false,
SetDefaultTableSettings::class
);
  • Clear your user_table_filters and user_table_columns tables
  • Make sure to publish and override the layout module vendor files

0.9.8 (Mar 03, 2022)

Notable changes:

  • Table columns can now be resized and renamed

Upgrade guide

  • The data (json) structure for user table columns has changed. You should clear the rows in your user_table_columns table.
  • Text fields will now be truncated in tables (ellipsis). Update your AvatarName field:
    /**
* @var bool
*/
public bool $rendersTextOnIndex = false;

Features

  • Add button to clear table settings

Bugfixes

  • Fix date & datetime filter inputs not working correctly

0.9.5 (Feb 23, 2022)

Notable changes:

  • More skeleton files have been transferred to qore-frontend, see upgrade guide below

Upgrade guide

  • The boot file app.js should no longer use local dialogs and more. It should look something like this:
    import Vue from 'vue'
import Helpers from 'qore/mixins/Helpers'
import Avatar from 'components/user/Avatar'
import AvatarIcon from 'components/user/AvatarIcon'
import {api} from 'boot/axios'
import Fragment from 'vue-fragment'
import DownloadMenu from 'components/layout/DownloadMenu'
import PortalVue from 'portal-vue'

const app = {
api_url: process.env.API_URL,
debug: !process.env.PROD,
timeout: process.env.TIMEOUT
}

Vue.prototype.$app = app
Vue.prototype.$api = api

Vue.use(Fragment.Plugin)
Vue.use(PortalVue)
Vue.mixin(Helpers)

// Global registration
Vue.component('Avatar', Avatar)
Vue.component('AvatarIcon', AvatarIcon)
Vue.component('DownloadMenu', DownloadMenu)

// Register Qore
require('../qore')

export default app
  • Session(management) related vue components now exists in qore-frontend. Make sure you update all import instances:
    // Old:
import SessionManagement from 'src/components/tabs/session_management/SessionManagement.vue'
// New:
import SessionManagement from 'src/qore/components/elements/tabs/log/session/SessionManagement.vue'
  • To prevent awkward refreshes on the login page after a session has expired (axios.js):
// Handle Not Authenticated "401, 419" error
function handleNotAuthenticatedResponse() {
if (router.currentRoute.name === 'login') {
return
}

router.push({name: 'logout'})
}

Features

  • Add header buttons to attach relational (->withAttachButtonInHeader()) fields more easily
  • Mark all required fields pointer red (labels)
  • Addresses (module), place, phone number and email address fields updated and improved
  • Advanced export options when exporting resources

Bugfixes

  • Fix for spamming login route when session expired
  • Fix for company name field not properly emitting update
  • Lots of stability bugfixes

0.8.10 (Feb 14, 2022)

Notable changes:

  • Layout builder safari hotfix
  • Main layout now in Qore source

Upgrade guide

  • The MainLayout.js mixin now exists in Qore-frontend. You should remove your local one, and include the new one:
// Old:
import MainLayout from 'mixins/layout/MainLayout'
// New:
import MainLayout from 'qore/mixins/globals/MainLayout'
  • The ReloadsGlobals mixin also exists in Qore-frontend now. Replace all following occurences:
// Old:
import ReloadsGlobals from 'mixins/globals/ReloadsGlobals'
// New:
import ReloadsGlobals from 'qore/mixins/globals/ReloadsGlobals'
  • There are some issues with scroll behaviour in tables. This seems to have fixed it:
    // router/index.js
scrollBehavior(to, from, savedPosition)
{
return new Promise((resolve, reject) => {
setTimeout(() => {
if (savedPosition) {
resolve(savedPosition)
} else {
// resolve({ x: 0, y: 0 })
}
}, 50)
})
}

Features

  • Add improvements to mailing (confidential tags and more)
  • Make sure countries are active when searching in google places

Bugfixes

  • Fix for safari (caused by layout builder)

0.8.6 (Feb 08, 2022)

Notable changes:

  • Some skeleton files have been transfered to the qore-frontend source.
  • Mailing is now a default (optional) feature of Qore.
  • Global search is now a default (optional) feature of Qore.

Upgrade guide

  • Make sure you run composer update and yarn.
  • Make sure you run php artisan vendor:publish --tag=qore and migrate
  • Update your quasar.config.js boot array:
    boot: [
'app',
'i18n',
'axios',
'fields',
'sentry',
'../qore/boot/extensions'
],
  • Include qore routes in your router/routes.js:
    import qoreRoutes from 'qore/routes'

Then within the require-confirmed middleware:

    ...
middleware('require-confirmed', [
{
path: '/',
component: () => import('layouts/MainLayout.vue'),
children: [
// ..
]
},

...qoreRoutes
])
  • If you already have mailing functionality, make sure to add the following to your local User model:
    public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordInstructions($token));
}
  • In store/index.js make sure you include the qore modules, and delete your local modules:
    import auth from 'qore/store/modules/auth'
import globals from 'qore/store//modules/globals'
import table from 'qore/store/modules/table'

In the plugins section, make sure you include:

    plugins: [createPersistedState({
paths: [
'auth.status',
'auth.twoFactorAuthStatus',
'auth.user',
'globals.menu',
'globals.resources',
'globals.tenants',
'globals.modules',
'globals.completedProcesses',
'globals.downloading',
'table.tableFilters',
'table.tableSearches',
'table.tableTabs'
]
})]

Features

  • Add field data alongside component properties and meta
  • Allow onUpdate on fields to be called when initialized
  • Add mailing as a default part of Qore
  • Add global search as a default part of Qore

Bugfixes

  • Fix issue for datepicker blur event
  • Fix issue for datepicker inside modals not displaying correctly
  • Fix large quantity of small bugs

0.7.4 (Nov 10, 2021)

Features

  • Add lots of small style improvements
  • Add skeleton as publishable group
  • Add arguments to the fieldLayout method to be more dynamic
  • Add RelatedToMany field
  • Add caching for performance (request caching)

Bugfixes

  • Fix issue where sub-header would be hidden in modals
  • Fix several scroll issues
  • Fix a lot of stability issues

0.5.7 (Oct 04, 2021)

Features

  • Add qore/system as composer package
  • Add modules & plugins as composer packages
  • Add functionality to create related resources in forms
  • Extend modules & plugin pages to be activated per tenant
  • Add functionality to attach and detach relations
  • Add search for place field and extend US place layout
  • Add page component with a fixed scrolling header
  • Add better functionality to log and display wysiwyg logs
  • Add sentry integration
  • Add Qore CLI tool to create, update and serve Qore apps

Bugfixes

  • Fix issue where images were logged and displayed multiple times
  • Fix issue where relational tables were not exporting correctly