See what has changed Release Notes
- Latest version: 4.2.3
-
28. Feb 2023
4.2.3
Changes between 4.2.3 and 4.2.2:- Bug fixes in OpenAPI implementation: Improves standard compliance
-
21. Feb 2023
4.2.2
Changes between 4.2.2 and 4.2.1:- Fixes a bug where page links were lost in an deployment export/import roundtrip
-
09. Jan 2023
4.2.1
Changes between 4.2.1 and 4.2.0:- Adds contentType to export for page nodes - Correctly delete MQTTClient first try (prevent setting an attribute on the node which is currently being deleted) - Correctly handle a failed partial schema compilation - Updated tests and configuration for compatibility with GitHub Actions
-
23. Aug 2022
4.2.0
Changes between 4.2.0 and 4.1.2:- Various bugfixes and security updates - Volume license verification via HTTP (port 80) - HTTP request metrics (pages) in Prometheus endpoint - Docker images for arm64 - Smaller Docker image (< 1 GB down from 1.5 GB) - On Debian systems, Structr is now installed as a systemd service - Improved scripting performance - Improved thumbnail management - Improved control over error message popups in Backend UI - Request data now available in onLogin and onLogout callback - Syntax highlighting for python and R - Use SVG icons more consistently - New lifecycle method: afterSave - New lifecycle method: onUpload - New function: validate_certificates() - New property: User.lastLoginDate
-
04. May 2022
4.1.2
Changes between 4.1.2 and 4.1.1:- Fixes bug in pdf generation - Fixes version detection for non-numeric database version - Performace enhancement for output rendering - New rate limit setting for HTTP/2 frames (default limit: 100)
-
30. Apr 2022
4.1.1
Changes between 4.1.1 and 4.1.0:- Upgrade to GraalVM 22.1.0 - Some minor fixes
-
07. Mar 2022
4.1.0
Changes between 4.1.0 and 4.0.1:- Some icons harmonised and moved to SVG - Enhancement of frontend low-code functions (input/select element management on Events dialog, lazy partial loading) - Improved mail templates (bulk creation) - Improved CSV import (support for empty headers) - Updated dependencies - Monaco editor as replacement for CodeMirror - Fixes expected result count in single entity schema method calls - Security enhancement (password complexity policy) - OpenAPI enhancement - Enhanced support for archive files (new unarchive() method, bug fixes) - Updates GraalVM to version 22.0.0.2 - Many bugfixes and stability improvements - Support for password-encrypted PDF files - Create File node by moving existing file on disk to Structr file system - Enhanced JWT/JWKS support - Enhancements for polyglot scripting engine (doAs function) - New HTML5 element types (Data, Dialog, Picture and Slot) and modified attributes of Audio and Video elements - Enhanced partial replacement for table elements using insertAdjacentHTML - Support for IETF BCP 47 language tag notation with dash instead of underscore as delimiter - Fixed layout of graph editor function bar - Upgrade to logback 1.2.8 - Upgrade to imageio 3.8.0 with Apache Batik to support transcoding of SVG images - Many UI enhancements: Users can now create either simple pages or pages from a Widget template - Support for JDBC queries without a result set (DELETE, INSERT, etc) - Support for many image files types to be able to create thumbnails, e.g. WEBP format - New lifecycle method onAcmeChallenge to allow for script-based creation of a dns record during the LetsEncrypt certificate retrieval process - Fixed issue with ClosedChannelException in StructrWebSocket
-
17. Jan 2022
4.0.1
Changes between 4.0.1 and 4.0.0:- Adds exclusion for log4j to jmimemagic dependency.
-
29. Nov 2021
4.0.0
Changes between 4.0.0 and 3.6.5:New features: - New admin UI - Switch to Oracle GraalVM JDK 11 - Support for polyglot scripting based von GraalVM JVM - New static type methods - New application- and request-level context variable store - Support for Neo4j 4.x including version autodetection - New database driver with support for reactive Neo4j Bolt database driver - New graphql() system function - New (experimental) mongodb() and bson() system functions - New (experimental) loadPartial() system function - Jetty 10 with support for HTTP/2 - New group-based Resource Access Grants - Support for JWT authentication with JWKS - New servlet endpoints for metrics, health check and histogram data - New map() script expression - Support for deployment by up-/download of ZIP files and URLs Security enhancements: - Fixed ProxyServlet access modes - 2FA whitelisting for IPv6 addresses with CIDR format support - New "onOAuthLogin" lifecycle method - SNI host check enforcement in HTTP service Performance enhancements: - Faster lookup for pages and files - Improved cache() method - Improved bulk operations Enhancements: - Improved scripting logging - Multi-level autocompletion in script contexts - Improved indexing - Additional modes for ACME/let's encrypt certification procedures - Fixed serialization of nested JSON arrays - Automatic reconnect for MQTT connections - Many bug fixes, code clean-up and minor enhancements
-
26. May 2021
3.6.5
Changes between 3.6.5 and 3.6.4:- Minor enhancements and fixes
-
24. Apr 2021
3.6.4
Changes between 3.6.4 and 3.6.3:- Security: Configure jetty not to send Server response header - Enhancement: Improve Admin Console output - Enhancement: Reduce log level for LdapNetworkConnection - Enhancement: Remove LDAP users that are not associated with a group - Bugfix: Restore cursor position in schema method editor after save/revert - Bugfix: Prevent serialization of objects deleted in concurrent transaction - Bugfix: Close connection and result set in jdbc() function
-
08. Jan 2021
3.6.3
Changes between 3.6.3 and 3.6.2:- New configuration setting to delay oauth success redirect after login
-
11. Dec 2020
3.6.2
Changes between 3.6.2 and 3.6.1:- Reduced logging output - Bugfix: Fix NotInTransaction exceptions for RuntimeEventLog writes in JsonRestServlet - Bugfix: Avoid NPE
-
23. Nov 2020
3.6.1
Changes between 3.6.1 and 3.6.0:- Bugfix: remove transactions around REST calls to avoid deadlocks in structr-ui tests
-
09. Nov 2020
3.6.0
Changes between 3.6.0 and 3.5.1:- New: OpenAPI support based on schema information - New: Health Check endpoint - New: JWT support - New: Maintenance mode - New: Group/type based schema permission resolution - New: CSS parser integration in preparation of dynamic CSS endpoint - New experimental library for server-side support of frontend apps (frontend.js) - New function 'one()' for better handling of singular and plural strings - New 'doAs()' function - New function 'hmac()' that creates keyed-hash message authentication codes for the given String value and secret - New 'sleep()' and 'random_uuid()' built-in functions - New 'system_info()' built-in function - New 'create_zip()' method to create ZIP files. Supports password protection and AES encryption. - New 'ip' keyword - New function 'import_css()' to import CSS rules into a graph structure - New feature: Allow renaming files in mounted filesystem - New feature: "Slow query" log with configurable threshold - New type selector in admin UI Data section - New mail_set_manual_config() and mail_reset_manual_config() functions - New 'Export and Download' for direct download of deployment export ZIP archive - Improved thumbnail generation (complete reimplementation) - Improved deployment export format - Improvements in config UI - Improved search for $.equals and $.contains - Improved code editor search - Improved MQTTClient - Improved deployment download - Improved Letsencrypt integration for HTTPS certificates - Improved Flow editor - Improved logging configuration via logback-include.xml - Improved support for afterCreate lifecycle method - Improved advanced mail module - Improved relationship dialog in Schema editor - Backend/driver improvements for faster REST queries - Neo4j driver version 1.7.5 - Bolt Driver improvement: use new Cypher query parameter syntax `$param` instead of `{param}` - Bolt Driver improvement: variable fetch size based on available memory - Bolt Driver improvement: incremental lazy loading of large result sets - Experimental driver for memgraph db 1.1.0 - Update JVM in docker image to JDK 11 - Bulk edit for type-based schema grants - Many bugfixes and enhancements
-
03. Jun 2020
3.5.1
Changes between 3.5.1 and 3.5.0:- Bugfix: implements workaround for bug in URI class with Windows file paths in getFileOnDisk().
-
20. May 2020
3.5.0
Changes between 3.5.0 and 3.4.3:- Improved support for other database driver implementations - In-memory database driver - New PATCH support for RESTful API - Improved Data area (exact type listing, delete all function) - Improvements to Flow editor and engine - New geospatial processing functions - Support for collections for starts_with() function - Upgrade to Rhino version to 1.7.11 - New version of persistence library for Structr frontend apps - New LoginServlet and LogoutServlet to allow plain HTTP login / logout using forms - Improved auto-completion in content elements and StructrScript - LetsEncrypt integration - New built-in functions get_cookie(), set_cookie(), date_add(), escape_xml(), remoteCypher() - Enhanced data deployment (reduced memory footprint) - Improved handling of incremental result fetching under low-memory conditions - Lots of improvements to schema editor (multi-save for properties and methods) - New setup wizard - Upgrade to JDK 11 (LTS) - Updated many dependencies - Enhanced server-side scriptig support for Python, R, Ruby, PHP - Support for cron jobs in their own thread with support for exclusive or parallel execution (configurable) - Sortable custom main menu - Support for binary data in GET() and byte arrays in append_content() - Improved Code area: type groups, working sets, recently used types, better icons - Improved UI: Support for three-column layouts with two resizers; improved resizing UX - Improved deployment 1: Better UX; new default "tree" export format; prevent parallel import/export - Improved deployement 2: More compact notation for visibility; version compatibility check - POM file URLs changed from http to https - Improved security for XML parser - New short notation $. for server-side JavaScript functions - New server-side JavaScript shortcuts for all internal keywords - Removed deprecated 'element' keyword (replaced by 'this' years ago) - Removed Structr-specific slice() function from server-side JavaScript function mapping - Improved logging - Support for removing header parameters that were added via add_header() - Improved security by preventing read-out of superuser password via config() function (was admin only)
-
24. Feb 2020
3.4.3
Changes between 3.4.3 and 3.4.2:- Adds warning for soft-limited result and page counts in CRUD pagers. - Set test execution fork count to 1 for all modules. - Updates bolt driver to 1.7.5, Neo4j embedded to 3.4.17. - Many bug and test fixes - Bugfix: Fixes regex for VersionHelper - turns capturing group to non-capturing group - Implements automatic txData cache cleaning based on WeakHashMap and weak keys. - Many changes for better async and result streaming support, implements soft limit on unlimited results. - Bugfix: Fetch release/snapshot version update info from frontend as to not block the loading of the UI - Enhancement: adapt cache sizes when running low on memory - Fixes debian stop script, that sometimes ran into an endless loop in case the Structr process was already stopped. - Enhancement: fetch Cypher results asynchronously and discard remaining records.
-
28. Jan 2020
3.4.2
Changes between 3.4.2 and 3.4.1:- Bugfix: fixes memory leak in transaction handling
-
04. Dec 2019
3.4.1
Changes between 3.4.1 and 3.3.3:- Several bug fixes and enhancements in the LDAP module - Slide-outs on right-hand side in Pages Area (Shared Components etc.) are now resizable as well - Drastically reduced number of Neo4j indexes - Index-aware Cypher query generation - Asynchronous rendering of template content - New system to save Flow layouts - Suggested children/widgets - New assert() built-in function - Some bug fixes for Flow rendering - Bugfix: Fixes display issue for self-relationships in Code area and prepares for relationship edit dialog - Option for subtype filtering in data area - Enhanced support for HTTP PATCH verb and PATCH() function - Updated escape_html() and unescape_html() to use StringEscapeUtils - Tests: Adds test to make sure that the order of UUIDs returned by a REST POST matches the order of posted objects. - Enhancements and bug fixes for advanced find() and find_privileged() functions - New job_list() built-in function to list all queued and running schedule jobs - New job_info() function - New onFinish callback method to file imports and scheduled functions - New stop_words() built-in function to access stop words dictionary - empty() function now interprets {} as empty=true - Scripting expressions containing '\\' are interpreted correctly now - Console JavaScript version upgraded to ES6 to match other scripting contexts - Enhancements in Kafka client - Performance improvements - Enhancements in the schema UI - Lots of new tests added - Improved rendering of partials - Usage of concatenated strings in to_excel() function allowed now - Align Apache POI version to new Apache Tika version to prevent NoClassDefFoundError - GitHub security advisory: Apache Tika upgraded to version >= 1.22 - Fulltext indexing during deployment import is now configurable via setting - Improved CSV/XML import - UI enhancement: Localizations, mail-templates and virtual types are resizable now - New mail_select_config() function to enable users to configure multiple mail accounts/servers - Blacklists for WebSocket messages so that less traffic is created for regular actions . Enhancements and bug fixes in admin UI - Enhancements in logging functionality - Enhancements and bug fixes for deployment import and export - Many other bug fixes and enhancements
-
17. Jul 2019
3.3.3
Changes between 3.3.3 and 3.3.2:- Bugfix: Removes property from view sortOrders when the property is deleted - Enhancement: Adds object id and type to title attribute of search results for related nodes search results in CRUD - Feature: Deactivates code that prevents deletion of self-relationships. - Bugfix: Better support for dynamic files in backend UI - Feature: Allows builtin create_relationship() function to directly set attributes on the newly created relationship - Bugfix: Allows searching in bigger files in CodeMirror - Enhancement: Strip whitespace from method code - Bugfix: Fixes directly addressed partials - Feature: Adds two new function to de- and encode RFC 822 "text" token into/from mail-safe form as per RFC 2047 - Enhancement: File import ignores and logs thumbnail images - Bugfix: Fixes preview rendering for templates with a repeater - Enhancement: Improved logging, adds setting to control stacktrace logging in scripting - Bugfix: Include related type in generated source code of NotionProperty - Bugfix: Various flow issues - Bugfix: Changes FlowTypeQuery to use proper input converters - Bugfix: Changes FunctionProperty to be able to use appropriate database converters. - Enhancement: Schema methods can now be called via scripting and REST - Enhancement: Removes classes in favor of POM dependency - Minor: Adds error code to schema reloading code - Bugfix: Fix notion collection properties in data deployment - Bugfix: CSS syntax highlighting in CodeMirror - Enhancement: Updates CodeMirror to 5.48.0 - Bugfix: TypeQuery sort operations - Bugfix: Fixes login dialog tabbing problem
-
26. Jun 2019
3.3.2
Changes between 3.3.2 and 3.3.1:- Fixes unstable GraphQL test. - Minor: Removes outdated configuration for StructrClassLoader class - Feature: Adds new configuration setting which enables logging additional request information for javascript exceptions
-
25. Jun 2019
3.3.1
Changes between 3.3.1 and 3.3.0:- Bugfix: Prevents notion properties from breaking the data deployment as they "look" like relationships from a property-info POV - UI: Don't refresh server log if the textarea has focus - Feature: Allow customization of server log output - Feature: Display warning message(s) for missing source files in tree-based schema export - Bugfix: Correctly set contentType for newly created elements - Bugfix: Do not force trimming of localized values as it prevents intentional blank characters - Adds new flows module, removes flows from api-builder module. - Fix: Removes call to 'deep-open' the root dir in Contents area (lead to improper display of working dir in case of root dir). - Changes path to the lib folder in the windows start.cmd script, so structr can be started from the root folder with bin/start. - Implements save & load for mixed CSV import configuration. - UI: Visually indicate finished jobs in auto-updating messageBuilders (change from blue to green) - Bugfix: Updates pattern to extract module information from classpath (windows delimiter is ; instead of :) - Merge branch 'master' of github.com:/structr/structr - Fixes advanced CSV import for types w/o unique properties. - Enhancement: Update Apache Commons Mail dependency from 1.4 to 1.5 - Enhancement: Adds support for RFC 4180 mode for CSV import. - Minor: Changes detection whether structr is already running - Adds Structr-Return-Details-For-Created-Objects HTTP header to return more details on created nodes in REST POST requests. - Feature: Adds "delete all" button to crud - Enhancement: Adds 'driver' parameter to jdbc() function. - Minor: Make "Strict Quotes" option disabled by default in CSV importer - Bugfix: Clear schema type cache for import dialog so it does not show duplicates - Feature: Adds "Only show custom types" checkbox to CSV import dialog
-
07. Jun 2019
3.3.0
Changes between 3.3.0 and 3.2.2:- New find() functionality: Boolean filters, range queries, paging and sorting - Content-Length header for dynamic files and file downloads in HttpServlet - Improvements in flow engine and editor - Lots of UI improvements: Storing UI parameters more reliable, improved pager and Dashboard area - Upgrade to latest jQuery version (3.3.1) - Many UI bug fixes - Enhancements in data deployment - Deployment export supports null, false and empty values now - '$' shortcut for `Structr` in scripting and console - copy_permissions() function now allow overwriting of existing target node Security relationships - Performance: Allow grouping grant/revoke commands for a node to reduce the number of database calls - Upgrade Jetty to 9.4.18 - Support cloning of elements in the same page to a different parent even if the selected node has a nextSibling - New security features: Configurable max. # of sessions, invalidation and clearing - Support for 'HttpOnly' cookie (configurable) - Support for custom LDAP property to uniquely identify an object instead of dn - New has_error() builtin function - Enhanced transaction consistency in EntityWrapper - Use platform defaults for Java heap parameters -Xms and -Xmx - Better handling of non-Structr nodes - Debian package can now run with openjdk-8-jdk-headless - Improved cache invalidation for orphaned node instances - Improvements for e-mail functionality: Properly decode filename of e-mail attachments, PDF type detection for attachments, password storage as encrypted string - Performance improvements - New support for volume and per-user licenses - New support for encrypted string functionality - Experimental feature "Analyze schema" removed - First implementation of app store with categories and tiles (still hidden in this release) - Editions removed in favor of modules - Lots of comments in settings for auto-generating the support article for structr.conf - Docker "latest" tag is now attached to latest release only.
-
23. May 2019
3.2.2
Changes between 3.2.2 and 3.2.1:- Fixes GraphQL registration issue for inherited properties on nested collections - Upgrade of graphql-java from version 7.0 to 12.0
-
09. Apr 2019
3.2.1
Changes between 3.2.1 and 3.2.0:- Minor enhancements and bug fixes - Feature: Make preview for dynamic files optional - No more stacktrace logging in HTML output - Custom headers from config file in all servlet responses (with tests) - New settings that allows to log the jetty ssl configuration on startup and to enable/disable SSL protocols and cipher suites - Bugfix: Clear localization cache when all caches are flushed
-
27. Mar 2019
3.2.0
Changes between 3.2.0 and 3.1.2:- Many bugfixes and improvements - New server-side IMAP client and support for e-mail attachments and multipart e-mails - Improved and extendend LDAP / Active Directory synchronization - Support for multiple widget servers - Update to Font Awesome 4.7 - Performance improvements in Structr backend UI - Use TestNG instead of JUnit to allow re-use of test classes and setups - Optional export of schema methods and functions in individual files for better revision control support - Optional inclusion of UUIDs in deployment export - Improved message queue client implementations (Apache Kafka) - Support for array properties - Support for X-FORWARDED-FOR HTTP header - Search function in configuration editor - New built-in functions: has_cache_value(), get_cache_value(), delete_cache_value(), get_relationship_types, set_response_code() - Improved support for arbitrary objects (JSON etc.) in repeater elements - Fixes deployment issues with Pages and DOMNodes and the hidden flag - Store Structr Ui configuration data in the database instead of the file system - Cypher query result is now identical to the actual Cypher result structure - Move some vendor-dependent database queries to the driver level. - Updated several dependencies to use the most recent versions
-
3.1.2
Changes between 3.1.2 and 3.1.1:- Fixes a bug with user self-registration
-
3.1.1
Changes between 3.1.1 and 3.1.0:- Minor bug fixing
-
3.1.0
Changes between 3.1.0 and 3.0.3:- Massive performance enhancement: True lazy result streaming from database - Support lazy evaluation for custom Cypher calls - Create and sync LDAP groups and users - Support for HTTP PATCH - OR conjunction in toplevel GraphQL queries - Improved Code area - Improved Contents area - Improved Flow editor - Better handling of array data types UI - Enhanced config servlet, allows (most) services to start/stop/restart at runtime - Flush caches after cypher write queries - Improved security of remote Neo4j connections - Changelog output to filesystem - Improved Windows support - Updated Jetty to latest version (9.4.13.v20181111) - Support for DeepL as a translation provider - Added debug() function for debug logging
-
3.0.3
Changes between 3.0.3 and 3.0.2:- Fixes bug related to HTTP PATCH - Adds support for PATCH to resource access tab
-
3.0.2
Changes between 3.0.2 and 3.0.1:- Performance enhancement: Optional parallel JSON serialization - New feature: Parallel flow processing and new elements: FlowFilter, FlowNotEmpty, FlowLog, FlowFirst - New: Flows as data source for DOM element repeaters - Upgrade to Neo4j Bolt 3.4.9 and Neo4j Java Driver 1.6.3 - Audit changelog is now written to configurable filesystem path - New: `dontCache` flag also for files, evaluate `cacheForSeconds` for files - Prevent non-indexable property values from being indexed - New OAuth2 provider `Auth0` and improved StructrOAuthClient base implementation - New HTTP verb: PATCH (with batched transactions of size 1000) - Many UI improvements including new `custom` view - Fixed bug related to indexing of function property values - Other bug fixes
-
3.0.1
Changes between 3.0.1 and 3.0.0:- New: Windows MSI installer - Minor enhancements and bug fixes
-
3.0.0
Changes between 3.0.0 and 3.0-rc1:- Minor enhancements and bug fixes
-
3.0-rc1
Changes between 3.0-rc1 and 2.3.8:- New: Fully dynamic schema - New: GraphQL API - New: Flow Engine and Editor - New: Support for multi-tenancy - New: PDF module for server-side transformation of any HTML page into PDF - New: Excel export module - New: 2-Factor-Authentication with QR code generation - New: Password rules and failed login counter - New: Code area for simple code editing - Upgrade to Neo4j 3.4.7 and Bolt Driver 1.5 - UI refresh - Improved CSV import - Improved Windows support - Integrated ECMAScript engine updated to ES6 level - Simple automatic schema layouting - Messaging module support for Apache Kafka - Support for custom HTML tags and attributes - Type-based batching for XML import
Structr in Action!
On our YouTube channel you can find more videos about Structr.