- Form editor now offers a simple layout creation option.
- Tab order can now be changed via drag&drop in the form editor.
- Reworked hour-based Gantt views to remove the need for horizontal scrolling.
- New richtext options for font family and size.
- Updated to TinyMCE 6.3.1.
- Fixed: Richtext editor does not show image list if new files were added.
- Fixed: Richtext editor shows non-image files for image input.
- Fixed: Tab background color mismatches content if it contains a single, readonly input field.
- Fixed: Date range selection not working properly in calendar/Gantt fields with pop-up forms.
- Fixed: Older backups not being cleaned up in some cases.
- Fixed: Office/Open Office documents being downloaded as zip files.
- Fixed: Column titles not readable because they are cut off in sidebar of form editor.
- Fixed: Possible server crash when creating change logs for multiple attributes if a file attribute is included.
- Fixed: File input does not reflect changes of attribute value after sub join update.
- Fixed: Form header is missing a border.
- Use more sensible default permissions for newly created directories.
- Fixed: Column filter values are not shown if only 2 values are available and one is already selected.
- Fixed: Tabs hidden by form states are still visible in mobile view.
- Fixed: Directories created for integrated backups on Linux systems are not browsable by default.
- Fixed #30: Wrong base relation was used for available columns in 1:N relationship field in form builder.
- Added: Tab-fields. Application authors can now create fields with multiple tabs that users can toggle between.
- Tabs can also include container fields and other tab fields, enabling complex field layouts where needed.
- Tabs can be managed by form states to display or hide them.
- A tab is marked if it contains a required input field, which is not filled out.
- If a tab contains only a single input field, the field can use the entire space without padding.
- Added: Multi-factor-authentication (MFA). Users can now increase their account security by also using time-based one-time-passwords (TOTP) as a second factor.
- Multiple devices can be added and used to authenticate with.
- Admins can reset MFA tokens for a login if required.
- Users can use any TOTP capable application by scanning a barcode or entering security details.
- Added: Help articles - a replacement for the simple application/form help pages we had before. Application authors can now create shorter help articles that can be referenced in different places. This enables re-use of articles inside the main application help, but also in form contexts and in other applications.
- Help articles automatically create a table of contents (if multiple are assigned), can be expanded for better readability and be exported as PDF file.
- Pre-existing application/form help pages are migrated to corresponding help articles during upgrade to REI3.2.
- Added: Dedicated backup page inside the admin interface.
- Previous backup sets can now be viewed inside the UI to see whether backups work as expected.
- Integrated backups now also work in non-stand-alone versions of REI3. As long as the Postgres client utilities are installed (at least pg_dump), REI3 can create full backups on the executing server.
- Added: Inputs for repository credentials for working with self-hosted repositories.
- Heavily redesigned the Builder.
- Added dedicated configuration pages for most entities, which offer more context help and scale better with a growing number of options.
- Reworked the form builder UI - the form layout now stays consistent while editing field options. More layout options are now also represented in the form builder.
- Moved form states and frontend functions to the form builder sidebar for a more consistent user interface.
- Moved collection options for menu entries into a pop-up-form for better usability.
- Enabled sorting and filtering by icons with icon names.
- If the mobile view is active, collection counter values in the application header are now combined into a single notification bell.
- List filters are now stored inside the user session, restoring previous filters when returning from another form.
- Collection values are now automatically updated for logins if a new record has been assigned to it via login form. This removes the need to re-login or refresh the page.
- The portable version of REI3 can now be started directly by starting the executable. The previously necessary start script still works but is not required anymore if the option "portable" is set to "true" inside the config file.
- Cleaned up some admin user interfaces.
- Increased the allowed length for database identifiers to 60 characters for many entities (applications, relations, attributes, backend functions).
- Simplified the relation trigger setup, combining dependent options (constraint, deferrable, initially deferred) into a single option 'deferred', which has the same effect.
- Made file inputs generally take less space and improved presentation of image galleries with different aspect ratios.
- Collection value inputs in the Builder now show column titles as well.
- Redesigned the feedback user interface to be more usable.
- Increased the allowed length for preset names to 64 characters.
- Upgraded to Golang 1.19.4
- Upgraded to vue 3.2.45
- Fixed: Form does not show error message if a field was removed, which was still referenced in a form state.
- Fixed: Application import fails if trigger was removed but was still executed during import because of updated presets.
- Fixed: Unreferenced files not always being cleaned up.
- Fixed: Filter condition based on relationship input field not always updating.
- Fixed: Sub join update is executed even if record of base relation did not change.
- Fixed: CSV export ignores column filters.
- Fixed: List aggregation being invalid after schema has changed.
- Fixed: Invalid frontend function being assigned in copied form.
- Fixed: Form states have invalid field references in copied form.
- Fixed: Server can hang when an application triggers more than 10 simultanous collection updates during import.
- Updated the core company bundle.
- Improved CSV date handling - now CSV exports will use proper date formats regardless of chosen attribute type.
- Fixed: Optional presets are not ignored during import if an error occurs.
- ICS events now include a URL to the date record and form that the originating calendar would have opened. Only applicable if the calendar field has a form assigned.
- Fixed: Some ICS clients not being able to import full day events.
- Fixed: File cleanup job can in some cases identify wrong files to remove.
- Added: New file management interfaces and functions.
- The existing file input was greatly improved, offering more display options, better usability (sort options, drag&drop, etc.) and thumbnails for images, text and PDFs.
- File copy actions are now available for the frontend.
- Automatic rename in case of duplicate file names.
- Changes to file inputs are now updated delta-only, allowing for much larger file sets to be attached to records.
- Backend functions can now create hard links to files between different attributes and records. This enables the same files to be accessed and changed from multiple places.
- New admin interfaces to manage deleted files and file management options.
- Added: The REI3 client application, used to directly open and work on files locally from connected REI3 instances.
- File changes are synced back to the server automatically, with new file versions being referenced in the regular record change logs.
- It can be downloaded directly from the REI3 user settings interface.
- It runs on Windows, Linux and Mac computers.
- It supports connection to multiple REI3 instances at the same time.
- Added: Column filters in list fields, showing all available column values for quick filtering.
- Added: Column value aggregation functions in list fields, allowing for sums, averages, counts and so on, to be calculated for all supported data types via user input.
- Added: Official support for ARM64 processors.
- Added: Copy to clipboard actions for Builder IDs.
- Added: CTRL+S shortcut for saving in Builder UIs with single entities (form, role, function).
- Added: Readonly mode for the Builder, blocking undesired changes to applications. Readonly mode can be disabled in the applications admin panel, if changes are actually desired.
- Reworked the file management backend, enabling things like versioning and hard file links.
- Reworked the admin log interface, consolidating names and adding color codes.
- Reworked many Builder interfaces, making entity actions more consistent with other UIs.
- Made Builder actions inputs more consistent with other UIs and added entity titles were they were missing before.
- Implemented a better full screen block overlay for running requests.
- Data previews in Builder UI now ellipse large strings to readable lengths with full values available as title.
- Expert filters are now shown in smaller list fields if enough space is available.
- Moved websocket logs to their own context, freeing up general server logs.
- More default inputs in backend functions to make them easier to use.
- Warning if wrong key is used in application export.
- Warning that IMAP connector assumes exclusive use of the chosen mailbox.
- Upgraded to Golang 1.19.1
- Upgraded to vue 3.2.39
- Upgraded to vue-router 4.1.15
- Fixed: Large list fields scroll the entire page instead of just their content.
- Fixed: CTRL-Q would not switch language in application help input.
- Fixed: Page titles missing in some admin interfaces.
- Fixed: CSV export using bad format for time-only values.
- Fixed: Empty input fields are hard to focus (clickable area too small).
- Fixed: ICS summaries including unusable file attribute values.
- Fixed: Upgrades from versions < 3.0 create log errors as cluster node IDs are unknown.
- Fixed: PWA does not renew its cache if it was running while the server was updated.
- Fixed: Calendar without 'form open' action causes errors when clicking on 'today' when the current day is already shown.
- Fixed Safari mobile browser not being able to use date/time inputs.
- Fixed warning message 'invalid input for date/time inputs' when using the mobile interface (any browser).
- Added support for frontend server clustering.
- Multiple server nodes can now serve the same REI3 instance.
- Nodes with access to the shared database automatically register themselves.
- Nodes can be managed via the new cluster admin panel.
- Nodes automically choose a cluster master for critical cluster tasks.
- Events affecting specific users are replicated through the cluster, updating all sessions regardless of which nodes a client is connected to.
- Clients can see the connected node on the login and user setting pages.
- Added role types to help instance administrators quickly discern what a role is used for.
- Added function to toggle all roles for a login by role type.
- Added the ability for collections to be shown in the main application header and on menu entries. This enables things like notifications.
- Added instance backend function for updating collections, enabling event-triggered updates, which are also replicated through the cluster. This can update things like notifications based on changes by other users.
- Added instance frontend function for overwriting data field captions.
- Added instance frontend function for reading collection values.
- Added instance frontend functions to store and retrieve values between forms, within the current user session.
- Added instance frontend functions for creating timers, enabling delayed and recurring function calls.
- Added user option to color the main menu according to the primary application color.
- Added user options for choosing the global font-family as well as background patterns.
- Major redesign of many frontend components.
- Buttons now feel more responsive, also improving feedback for color-blind users.
- Field inputs are now more contrasted against forms.
- Many UI separation elements (borders, header-lines, etc.) were removed to reduce clutter and show more whitespace.
- Reworked pop-up forms.
- Enabled access to data logs and application help pages in pop-up forms.
- Implemented a full screen option for pop-up forms.
- When a new form is opened from within a pop-up form, it will now always open a new, nested pop-up form regardless of configuration, conserving the current form inputs and navigation. This addresses issues, in which full page navigation from within a pop-up form can confuse users, especially from within data forms.
- New shortcuts inside the Builder UI to quickly switch between forms and their frontend functions.
- Upgraded to Golang 1.18.3
- Upgraded to vue 3.2.36
- Upgraded to Postgres 13.7 (stand-alone deployment)
- Fixed save action still active after changes to login roles were reverted in the admin panel.
- Fixed NEW/OLD prefix stuck when switching between PG functions.
- Fixed field references missing as filter criteria in sub queries.
- Fixed home page content being cut-off on very small screens.
- Fixed form opened event not firing on sub join record retrievals.
- Added PDF creation function. PDFs with multiple pages, images, headers, footers and so on, can now be generated with a function call from HTML templates, with styling done by CSS rules.
- Switched to using field references in form state / query filter conditions when comparing field values/changes.
- Disabled pull-down-to-refresh function to reduce the number of accidental page refreshes on mobile devices.
- Fixed admins cannot login if a collection is misconfigured and cannot be retrieved.
- Reworked button inputs to give more feedback when pressed.
- Updated core company bundle, it now includes the password safe and IT asset management applications.
- Fixed issue with form state conditions when imported from applications before REI3 v2.7.
- Added end-to-end encryption.
- Automatic/transparent encryption/decryption of data on the frontend for the currently logged in user.
- Integrated key management for hybrid encryption without users needing to deal with key pairs.
- Integrated key recovery options via backup codes to recover access.
- Functions for application authors to encrypt data for others based on indirect relationships (like team or group members).
- Functions for application authors to decrypt data for processing on the frontend, enabling things like fulltext search within encrypted data.
- Added frontend presentation of relation policies - forms now react to the current record permissions to block inputs or disable form actions automatically based on applied policies.
- Added 'password' display option to columns, allowing password values to be masked.
- Added copy-to-clipboard action to columns and fields, allowing direct copy actions from list views or data inputs.
- Added form option for disabling data actions - this enables forms that use record data without manipulating the record itself.
- Added multi-value input to collection filters.
- Added frontend functions:
- Block/unblock user inputs on form.
- Show custom messages on form.
- Update collections directly - useful for reloading data, when certain events occur.
- Added option for connecting to LDAP via SSL/TLS.
- Added scheduler for regular reload of renewed HTTP server certificate.
- Filter operators are now presented within type-related option groups in the Builder UI.
- Enabled ordering within aggregation functions in sub queries.
- Moved existing expression aggregator function 'array' to ARRAY_AGG, added new 'json' function to offer the old functionality.
- Reworked form state conditions, allowing for more input options and making them more flexible in general.
- Implemented 'data retrieval' indicator in lists for long running requests.
- Upgraded to Golang 1.18.1
- Upgraded to tinymce-vue 5.0.0
- Upgraded to vue 3.2.33
- Upgraded to vue-router 4.0.14
- Fixed trigger functions being duplicated when renamed.
- Fixed CTRL+S hotkey not behaving correctly when used in richtext input.
- Fixed sub queries not applying defined result limit.
- Fixed tab inputs not being saved in PG/JS function bodies.
- Fixed websocket error handling not always parsing error codes.
- Fixed readonly relationship input field showing record create action.
- Fixed field value function being called twice when updating an empty relationship input.
- Fixed default field value being overwritten by current input if n:m relationship input was used and a new record was being created.
- Fixed schema cache being written to while being accessed concurrently.
- Fixed arrow-key hotkeys not always working in relationship inputs.
- Button fields.
- Field value changes.
- Form events.
- Added collections: A new tool that lets application authors retrieve records without any form or input. For now, collections are retrieved once during page-load; collections and their retrieval events will be expanded in the future to support more use-cases. Currently they can be used as:
- Query filter criteria. Collection values can serve to replace repeated or expensive filters.
- Additional list filters. Collections can serve as another option for users to select sub results by.
- Default values for data fields. Collections can provide default values for things like the assigned contact or teams based on memberships of the currently logged in user.
- Added pop-up forms: Records can now be edited in floating sub forms without leaving or interrupting inputs on the parent form. This can be useful for updating smaller child records or checking data from related records.
- Added new display option for text fields: Password.
- Added new form state condition: Field value equal to current user login ID.
- Added option to use primary key of relation as column.
- Added record count to the relation data view.
- Added open-in-new-tab middle-click function to Builder shortcuts.
- Added filters for relation index and attribute relationship type for template fields in Builder.
- Improved incoming mail handling: Inline images (CIDs) are converted to base64 image source, which can be displayed and edited as richtext.
- Made mail receiver error handling more robust. Now invalid messages will not block other mails from being fetched.
- Updated form state condition 'field changed': Implemented check for unchanged field values as well.
- Arguments and return values of existing PG functions can now be updated.
- Builder UIs now provide more error messages.
- New fullscreen option for form states.
- Switched to pop-up form for icon input window in Builder.
- Switched to pop-up form for login forms in admin interface.
- Delete action on form is now disabled if effective access permissions on the base relation are insufficient.
- Updated admin & Builder docs.
- Upgraded to Golang 1.17.6
- Upgraded to vue 3.2.26
- Upgraded to vue-router 4.0.12
- Upgraded to tinymce-vue 4.0.5
- Upgraded to echarts 5.2.2
- Fixed database transaction not closing properly when incoming mail could not be processed.
- Fixed 1:1 relationship inputs retrieving wrong values if accessed on form as referenced relationship.
- Fixed n:m input fields not being offered if both relationship attributes point to the same relation.
- Fixed array operator in query filters not always using correct syntax.
- Fixed backend functions not quoting identifiers.
- Fixed main executable not reacting to SIGTERM when running in portable mode.
- Fixed Gantt using timeshift only for end date when entering time range via click on header item.
- Reworked field layouts for relationship inputs; they can now be height-limited by parent container if row layout is used.
- Enabled roles from parent applications to be used in relation filter policies.
- Implemented automatic header menu resize if entries cannot be shown in full due to limited window size.
- Implemented record event messages in form header, such as 'Record was updated'.
- Implemented confirmation dialogs in cases where unsaved changes are about to be lost.
- Moved column sub query inputs to the sidebar of the Builder. This provides more space for inputing query options as well as better visibility into the parent field query.
- Implemented JSON prettifier on 'options' object for chart field in the Builder.
- Fixed Gantt field not respecting 'do not create' action on base relation.
- Fixed dialog window looking terrible during close event when showing richtext.
- Fixed filter policies not working correctly with left joins, removing valid records if their relationship partner is NULL.
- Fixed rare issue where data fields would update after a form reset occurred.
- Fixed data set issue, where relationship attribute input, which is also used as relationship join on the same form, would cause attribute to exist twice for record creation.
- Fixed ICS handler not handling sub queries in query filters correctly.
- Fixed ICS handler not handling sub queries in query expressions.
- Added relation filter policies. Access can now be filtered according to role memberships when displaying, changing or deleting specific records.
- Added circular application dependencies. Applications can now cross-reference each other. This requires all referenced applications to always be imported though, so we suggest moderation.
- Added role-dependent start forms. Users can now be sent to a different start form depending on role membership.
- Added preset record ID as filter criteria. Instead of using preset names as workaround we can now directly use the record ID of a preset to filter with.
- Added parent-record assignment to calendar fields (incl. Gantt) when creating a new record.
- Added fixed result limit to queries. This allows for queries like 'top 5 results of X'. It can also be used in list fields to force a result limit.
- The Builder mode is now toggled from inside the admin UI. The configuration file option is ignored.
- The REI3 executable now embeds static web files, bundle archives and language captions. This removes the need to update multiple directories when updating REI3 and also removes possible update issues.
- Implemented automatic deletion of all application dependencies when deleting an application from within the admin UI. List of affected applications and warnings will be shown.
- More field options are now stored in browser cache, like the last selected filter choice (lists, calendars) or zoom factor and group label display (Gantt only).
- Improved form record handling: If access to record is lost during save (due to form/relation filter), form will switch to readonly mode; changed values are shown, but record cannot be changed.
- Implemented 'no access' message if form cannot load record due to filter.
- Reworked Gantt fields. Element count (days or hours) now follows available field width. Horizontal scrolling is now only required if hours are displayed and a full day does not fit inside the field.
- Implemented 'hide group labels' option in Gantt fields to leave more space for displaying data.
- Implemented middle click navigation for button and calendar fields.
- Enabled SQL previews for calendar & chart fields in the Builder.
- The chosen list default limit is now added to the limit selection input on list fields.
- Upgraded to vue 3.2.21.
- Upgraded to Go 17.3.
- Fixed system hanging when executing an invalid query against the database.
- Fixed websocket connections not cleanly being closed when logging of.
- Fixed instance logging function using the same timestamp when used multiple times in the same transaction.
- Fixed 'record is new' filter not working on form level if existing record is opened on a fresh form.
- Implemented update check on first start in case important security updates are available.
- Fixed conversion issue for numeric database type.
- Fixed invalid display of form state condition after deletion.
- Added shortcut to the start page of the running REI3 instance to the start menu on Windows systems.
- Added new command line option: Start with dynamic port.
- Added context filter to log viewer in admin panel.
- Added README to the application directory & Windows installer.
- Implemented welcome message when starting the main REI3 executable without parameters.
- Implemented warning message on login page when HTTP connection is used.
- Updated portable version start script: It will now open on a dynamic port and run in HTTP mode by default. This enables easy access to the portable version (no HTTPS issues) while making it harder to misuse it in production environments (changing port).
- Updated default chart field options: Disabled the source header option, which can cause confusion when working with query results.
- Removed outdated command line option: Set port.
- Fixed chart columns being deleted during transfer when updating chart fields.
- Fixed multiple instances of REI3 blocking each other when the embedded DB is used. Now only one instance may own the embedded DB.
- Last database connection error message is now returned when connection timeout is reached.
- Fixed some special characters in database connection password causing issues on initial connection.
- Fixed lingering database connections blocking schema cache load in some cases.
- Fixed file input field not correctly applying minimum file count constraint.
- Fixed change logs of file input values not correctly displaying.
- Fixed repository update not handling release files correctly.
- Added new data presentation field: charts.
- Added 'update all applications' action to admin UI.
- Added dependency graph to the Builder start page.
- Added relationship graph to the relation view.
- Added instance options for database timeouts for all data access types (HTTP/WS, REST, CSV, ICS).
- Added instance functions: get_role_ids(), has_role() & has_role_any(). These allow easy role checks in functions, including the option to resolve inherited memberships.
- Added field option to show/hide the Gantt interval toggle in calendar fields.
- Improved column batch handling in lists: Batched columns can now be hidden individually - max. batch column size now follows combined size of visible columns.
- Improved admin LDAP UI labels/help texts.
- Improved admin login UI: Added save/close actions to login roles.
- Improved Builder form states UI: New states are now placed at the top of the list to improve usability in large sets.
- Implemented arrow key based navigation in relationship input fields.
- Implemented file-based application schema cache, which is stored in service worker and has no fixed size limit.
- Implemented context-based cancelation of websocket requests when a client disconnects.
- Implemented multi-file application imports - this can help resolve upgrade issues in complex dependency scenarios.
- Removed unnecessary frontend reload events after configuration changes.
- Removed unnecessary list reloads after bulk deletions.
- Removed global 'app' reference for access to root vue instance.
- Migrated from lib/pq to pgx for accessing the database; lib/pq is not maintained anymore.
- Updated admin & Builder docs.
- Upgraded to vue 3.2.11.
- Upgraded to Go 17.1.
- Fixed form states showing wrong inputs in last entry when saving new states.
- Fixed browser navigation stuck after deleting record in form.
- Fixed non-fullpage calendar fields updating route getters.
- Fixed relationship input shows empty dropdown action header.
- Fixed public login getter not cleanly removed from URL.
- Fixed access cache being renewed with outdated permissions after role assignment via LDAP.
- Fixed logins not being updated from LDAP import if they have no relevant group memberships and auto role assignment is active.
- Fixed roles being assignable manually to LDAP logins with auto role assignment.
- Fixed HTML anchors not working in internal docs.
- Added login forms: Admins can now create/assign records to logins from within the admin UI. Application authors can define forms for login record handling.
- Added mail body richtext display in mail spooler UI.
- Added function to update existing icons in Builder UI.
- Added 'first steps' help window with quick access to application help pages.
- Added platform update notifications for admin users.
- Enabled middle-click navigation on more actions (open/reload records, list rows, Gantt/calendar entries).
- Fullpage lists can now recover their previous scroll position when navigating back via browser history.
- Enabled offset selector to admin logs.
- Placed more icons and more descriptive titles to pop-up windows in various Builder / admin UIs.
- Exposed IDs for many entities in the Builder for troubleshooting and to use with instance functions, as in mail_send().
- Increased size of SQL-previews in the Builder UI.
- Updated boolean input field - it now has a separate presentation when the input value is NULL.
- Updated error messages returned to users.
- Updated layout, icons and captions in the admin login UI.
- Updated release packaging, combining web script and style files to reduce load times. Build numbers in output file names will now deny cache attempts after a platform upgrade.
- Upgraded Go to 1.16.6.
- Fixed CC header not being parsed from incoming emails.
- Fixed header color not always updating when navigating backwards through browser history.
- Fixed open dropdowns from input fields not closing when opening other input field dropdowns.
- Fixed 'field value changed' condition bool input not shown in form states.
- Fixed script error when entering field to field comparison conditions in form states.
- Fixed repository UI showing wrong totals in some filter contexts.
- Fixed admin login UI not updating visible records when using the reload action.
- Fixed styling bugs in Builder UI in compact mode.
- Added first integrated application bundle 'Core Company'. New instances can install this bundle directly without internet connection.
- Added form state field condition 'Field value was changed'.
- Added translatable function titles and descriptions. These are now visible in the admin scheduler UI as well as in context help in the function Builder UI.
- Added function schedule interval type: 'once'. This enables one-time migration functions for application upgrades.
- Added instance function 'abort_show_message()' - this enables backend functions to abort an operation while sending a message back to the user.
- Added instance functions 'log_info()', 'log_warning()' & 'log_error()' - enabling application logging from backend functions. Logging level for applications can be defined globally in the admin UI.
- Added user setting: Dark mode.
- Added user setting: Compact mode.
- Added user setting: UI spacing.
- Added customizable company logo URL.
- Updated 'new instance wizard', guiding new admins through available application installation options.
- Redesigned platform theme handling to allow for depth-based fonts/backgrounds/shadows.
- Average column aggregation now defaults to numeric value with two digits after the comma.
- Updated mail_send() instance function - it now allows sending without TO recipients (CC/BCC only mails).
- When presets are deleted only records connected to protected presets are deleted automatically. This follows the idea that protected records are controlled by application authors (for the application to work), while non-protected records serve as sample data that end users can delete or keep using.
- Removed impractical actions from richtext menu bar in mobile view.
- Function schedules now keep their last execution date after an application import, instead of being reset and repeated.
- Upgraded vue libraries (vue, vuex, vue-router, vue-draggable, vue-tinymce, vue-color), REI3 now runs on vue3.
- Upgraded TinyMCE to 5.8.2.
- Fixed PG functions not raising an error on save when entities from non-dependent modules are used.
- Fixed form copy not working for forms with sub query filters on the form query itself.
- Fixed richtext input not updating its interactive elements when field state changes (still showing menu bar when set to readonly and the other way around).
- Fixed tab navigation triggering undesired dropdown activation for relationship inputs.
- Fixed Builder error when deleting field for which query editor was still open.
- Added 'field is hidden by default' indicator to form Builder.
- Updated default value input for boolean attribute fields to accept upper-case 'TRUE' as well.
- Updated Builder UI to recognize trigger functions that use upper-case 'TRIGGER' as return value.
- Updated form navigation to replace invalid records (NULL) with a request to open a form with a new record.
- Fixed missing generic caption reference in Builder UI.
- Fixed IMAP mail retrieval failing for some charsets.
- Fixed invalid inputs (>24h) in time input fields.
- Fixed edge case in Builder UI when assigning a parent module wouldn´t update module parent state - full schema reload is now executed.
- Added automatic renewal option to list fields. Can be overwritten by users on a per-field basis.
- Added rich value presentation to calendar & Gantt events - all display options are supported (datetime, files, gallery, URL, color, ...).
- Added 'richtext' display option for columns, showing richtext values with stripped HTML tags.
- Added 'text length' and 'text wrap' options for columns, allowing fine control over how text values are displayed.
- Added field states to non-data fields. This allows fields like containers or lists to be hidden by default.
- Added 'optional' field state, which can overwrite readonly / required states. Useful in combination with relation triggers, overwriting values that are required but can be provided by backend functions.
- Added schema cache reload events to update concurrent admin logins, enabling parallel work sessions in the Builder.
- Added filter reorder actions in Builder UIs, allowing moving of filter conditions.
- Redesigned application transfer mechanics
- Changes made to applications that were imported into an instance (from file or repo) are now ignored by default when executing an application export. The original, imported version is used instead.
- A new option 'changeable' was added to the admin UI for applications. This option allows the instance to apply changes to applications when doing exports in the Builder.
- Applications from other authors are now being protected from unplanned changes by default (see above). As this was the reason for the export option 'full export yes/no', it was removed. All application exports now always contain all dependencies.
- Removed the automatic version counter increase from the application export. If an application is changeable and the current version has changed, it requires a manual version counter increase before an export is permitted. This makes it more transparent and gives more control when multiple dependencies have changes.
- Replaced permanent export key storage in database with temporary memory storage.
- Updated form states UI
- Form states are now ordered by description text, making states easier to read and allowing for control of execution order.
- Added filter for field references, showing only states connected to a specific field.
- Column (batch) width now also controls table cell values in list views.
- 'Hide on mobile' option now also applies to columns in calendar & Gantt fields.
- Enabled relationship input fields to be hidden without form states.
- Better frontend performance for list views.
- Improved color picker UI in Builder start page.
- Improved schema cache reload behavior, reducing reloading times in some cases significantly.
- Expanded instance.mail object, providing 'from' addresses when fetching mails from the spooler.
- Fixed 'open email/URL' action being visible in list views even if no value was set.
- Fixed slider data field input not shrinking properly.
- Fixed hidden field being shown in change log entries. Even with all fields being hidden, a change log entry is still visible to mark the occurrence of a change.
- Fixed list auto select being executed on non-new records.
- Fixed layout bug in admin UI.
- Fixed form query filters not being correctly handled for sub join updates.
- Fixed category input field of relationship attribute being clickable in readonly state.
- Fixed issue during import blocking application upgrade (index deleted before relationship attribute with auto FK index).
- Removed outdated compatibility fixes for applications before REI3 v1.5.
- Made 'Selectable filters' more flexible. They are now renamed to 'Filter sets' and also available in Gantt and in relationship input fields.
- Extended placeholders for field input default values (formatted date values), see Builder documentation.
- Hide filter set selection if only 1 filter set is available (nothing to select).
- Implemented proper user error message when attempting to delete a protected record.
- Changed to in-line column wrapping for relationship field values, improving readability when screen space is limited.
- Login name is now shown in user settings UI on logout button.
- Improved form navigation by replacing more history entries (case: child record created with parent relationship attribute).
- Improved form navigation by setting full page field arguments (lists, calendars, Gantt) on first form load.
- Made default input field styles (mostly admin/Builder UIs) more in line with form input field styles.
- Fixed calendar not loading if placed as sub-field.
- Fixed calendar navigation not showing initial state when going backwards through the browser history.
- Fixed Gantt field options in Builder UI not setting defaults correctly.
- Fixed relationship field icons not showing when gallery images are used but not available for all records.
- Fixed form getter not overwriting previous default attribute values.
- Fixed form copy not replacing filter set IDs, causing duplicate primary keys.
- Fixed wrong child application being opened from the main header when clicking on a parent entry without start form.
- Enabled handling of join flags for relationship input fields. Even when a target form is defined, the 'create new record' action is now only available when the CREATE flag is set, while opening an existing record requires the UPDATE flag on the base relation.
- Improved application selector in Builder UIs to show nesting.
- Fixed form state definitions not being correctly applied in some cases.
- Fixed missing second slash after protocol part of ICS download URL.
- Fixed bad-input indicator taking up space even if not shown.
- Fixed text emails being sent as HTML, causing new lines to be ignored.
- Added Gantt presentation option for calendar fields.
- Added mail retrieval from IMAP mailboxes.
- Added mail spooler view for admins.
- Added mail attachment handling for in- & outgoing messages.
- Added mail account management for using different accounts.
- Added phone & email display options for field inputs and list columns.
- Added preview to functions to show code body as it would be executed.
- Added formalized instance functions, accessible inside application functions, such as get_login_id() or mail_send().
- Added new permission UI for admins to manage all role memberships for an application in a single view.
- Added new relation triggers variants (CONSTRAINT, DEFERRABLE, INITIALLY DEFERRED).
- Added placeholders for field input default values (currently for time inputs only).
- Enabled date range selection for ICS calendars on a per-field basis.
- Enabled page navigation for full page calendar fields.
- Improved image preview in lists; images will follow column size by default, while falling back to defaults in batch context.
- Placed bad-input indicator that scrolls to bad inputs on the form.
- Redesigned Builder UIs to avoid erroneous actions.
- Redesigned Builder UI for functions: Separate scrolling, collapsable application placeholders, hiding of non-valid entities.
- Redesigned Builder UI for form states: Collapsable states, filter by state description, consolidated presentation.
- Upgraded to Go 1.16 and switched to Go module.
- Fixed query lookups not being shown in Builder when CSV import is enabled.
- Fixed calendar column sub queries not reacting to changed filter criteria from parent form.
- Fixed SMTP could only send with STARTTLS.
- Fixed function loosing schedule definition when making changes to function body.
- Fixed login input field not updating when form is refreshed.
- Fixed invalid SQL syntax when attempting to insert an empty record.
- Fixed partial form reload not being triggered for new records when attribute values are set with form getter.
- Fixed form not updating after backend triggers caused value changes when form record was saved.
- Added iCAL subscription option for calendar fields.
- Added iCAL configuration options for limiting the provided time range of events.
- Added regex validation option to data fields, allowing validity checks for things like e-mail addresses and URLs.
- Added query filter criteria 'Form record is new', reacting to state of currently handled record.
- Added query filter criteria 'Login has role', reacting to assigned (or inherited) role memberships.
- Improved Builder UI to better display filter criteria behavior.
- Placed Builder documentation directly in Builder UI as overlay.
- Consolidated admin panel documentation UI with new Builder UI.
- Auto-conversion of German decimal commas for numeric values.
- Updated js service worker - next release, clients should not need browser cache clear.
- Updated to TinyMCE 5.7.1
- Filter encapsulating not always working correctly.
- Query filter with field value criteria causes SQL error when NULL operator is used and field value is NULL.
- Richtext editor does not open links.
- Builder UI, apply form record to attribute value is not shown for button fields unless saved and re-opened.
- Builder UI, when relation index was removed, affected columns do not stay deleted after form save.
- Added function schedules, allowing for reoccuring executions of application functions.
- Added 'create new record' shortcuts to relationship inputs.
- Added aggregation function to filter sub queries.
- Added default icons for attributes - these are used for data fields if not overwritten.
- Consolidated the 'tasks' section of the admin UI with the new function scheduler.
- Action 'run now' added for system task and application schedules.
- Improved application upload feedback in the admin UI.
- Remove option added for the custom company logo in the admin UI.
- Full page lists now also apply limit changes to the navigation history.
- Enabled order by attributes which are not included as columns.
- Enabled sort by sub query column in lists.
- Redesigned query filters, allowing all comparison types on both sides (sub queries, field values, system variables, etc.).
- Added multi line view to generic overlay dialog, useful for SQL previews and public key display.
- Improved some builder UIs (mostly filter inputs, menu management).
- Updated integrated database to PostgreSQL 13.2
- Full page list navigation not being properly added to navigation history.
- Filter arguments in column sub queries causing SQL argument count errors in edge cases when calculating row count.
- Sub query results showing badly formatted values with attribute type 'numeric'.
- List choice filters not updating when field value references are updated.
- Not all default field states being respected when using form state overwrites.
- Added a data view to relations in builder UI - these show the raw data from within the database. Helpful for understanding relations and finding issues.
- Improved form navigation - forms now keep references to previous forms, unnecessary navigation targets were removed as well.
- Improved presentation of data logs and help pages on mobile devices.
- Redesigned form actions slightly to improve usability on mobile devices.
- Redesigned start page, reducing the heavy reliance on primary module colors.
- Redesigned relation UI in builder to better manage associated entities (attributes, triggers, presets, etc.).
- Placed input blockers in admin and builder UIs when running heavy background tasks.
- Fixed automatic login being executed directly after a logout.
- Added query choices to enable user selectable sub filters on lists and calendars.
- Added form query filters, which enables n:1 joins on form records.
- Added persistent menu behavior between user sessions (open menus stay open).
- Added HTTP testing mode as CLI flag. Also added 'run with HTTP' script to portable package.
- Enabled auto-reconnect to backend when server was down or connection was severed because of power-saving features on mobile devices.
- Consolidated automatic foreign key indexing with manual indexes. They are now visible in the builder and can also be used for CSV lookups (if 1:1 relationships).
- Consolidated client side storage to central store for better control.
- Redesigned some input fields and layouts.
- Improved handling of user filters, automatically adding an empty line on open and removing lines on closing of the filter interface.
- Improved presentation for printing forms from the browser (automatically hiding menus and headers).
- Improved builder UIs.
- Added translation switch hotkey (CTRL-q) to builder.
- Added save hotkey (CTRL-s) to data forms.
- Fixed missing sequence reference on primary key when changing primary key type.
- Fixed file attributes not showing download links in data logs.
- Fixed field filters not working properly in data logs.
- Fixed gallery views for file inputs not being displayed correctly in Chromium browsers.
- Added form state effects for non-data fields for more flexibility when designing forms.
- Added URL presentation option for text input fields.
- Added option for list fields to apply current form record as attribute value when opening a new form.
- Added 'hidden' as default presentation option for data fields for easier form state handling.
- Enabled sorting by column batch with file attribute in first position - first non-file attribute is used for sorting instead.
- Switched to case-insensitive usernames for the internal authentication backend for better compatibility with directory services.
- Sped up application cache reloads significantly when updating a single application from inside the builder UI.
- Improved builder UI navigation and input elements.
- Improved some field UIs (file input, textarea).
- Fixed wrongly assigned filter operators.
- Fixed list fields not always encapsulating multiple filter criteria correctly.
- Fixed n:m attribute candidates for data fields not being shown in form builder.
- Fixed calendar values not being parsed by opened form when doing date selection.
- Fixed unusable bulk selection option being visible when bulk selection is not available in list field ('cards' layout).
- Fixed main header stuck on module color outside of module context.
- Fixed minimum field height not being large enough for some field types.
- Fixed file input field not opening files inside blank browser tabs.
- Fixed malformed error message when user permissions are insufficient.
- Fixed date input overlay not being placed in the correct position in admin logs UI.
- Fixed CSV importer attempting to update relationship attribute values for joined relations flagged as 'no update'.
- Fixed compatibility issue with importing older modules in 1.5 instances.
- Fixed SQL for data retrieval total row count being invalid if grouping is used.
- Added sub queries as list columns and filter conditions - enabling more complex data retrieval. While nesting sub queries is supported, ordering by sub query result is not yet available.
- Added specific ANY operators to list and query filters in builder.
- Added filtering by system tupel ID.
- Redesigned form UI in builder - all field options are now visible within their context menus, not just as shortcuts. Query definition was moved to the side bar where there is more space, especially for complex filter criteria.
- Improved SQL query cache, speeding up data retrieval requests.
- Added header navigation entry for the parent module if it is accessible to the user.
- Fixed header entry wrongly being shown to users without permissions in some edge cases.
- Fixed ugly file names when downloading files (Firefox only).
- Fixed some relationship field inputs not updating when sub join was updated to NULL value.
- Added 'does not contain' operators to list, query and form filter conditions with case sensitive and insensitive versions.
- Slightly redesigned menus in mobile layout for more visual consistency.
- Tweaked filter inputs to automatically hide invalid operators.
- Cleaned up URL navigation syntax.
- Fixed integer input fields wrongly overwriting inputs starting with negative character prefixes (as in -12).
- Fixed wrong deferral settings on specific schema relations, causing issues during larger application upgrades.
- Fixed invalid hover effects on read only lists in card layout.
- Added presets as default values for relationship input fields.
- Added names to presets for easier reference within builder UI.
- Added date inputs for user list filters.
- Fixed data logs not showing values for partly set field values (relevant for date ranges).
- Fixed record ID not being applied to fields when using the 'form-open' action on a button field.
- Fixed form states being removed when updating default preset record.
- Fixed issue stopping pg indexes from being created.
- Fixed non-registered sub components from form state component.
- Reduced number of shown fields on data log - only fields are shown, which relate to records that can be created or updated on the current form.
- Fixed data log not updating in all cases.
- Fixed mobile date inputs not displaying correctly.
- Fixed error messages not showing correctly on all clients.
- Fixed PWA not allowing screen rotation.
- Fixed PWA icon masks.
- Added gallery view for file inputs in lists and on forms.
- Added new list layout 'cards'.
- Added the option to define a fixed width for list columns.
- Added more feedback when loading from a slow server.
- Enabled REI3 to be installed as a progressive web app. This does not yet enable offline work but does allow for handling REI3 like a native app on mobile devices and on PC (if supported by the browser).
- Added a SQL preview function in builder for troubleshooting data requests.
First public release of the REI3 application platform.