Changes & Improvements

Release Notes of Structr Version 3

See the history of Structrs evergrowing evolving in our release notes stream. Find detailed changes and feature improvements.

May 26th 2021 Version 3.6.5

Changes between 3.6.5 and 3.6.4

  • Minor enhancements and fixes

April 21st 2021 Version 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

January 8th 2021 Version 3.6.3

Changes between 3.6.3 and 3.6.2

  • New configuration setting to delay oauth success redirect after login

December 11th 2020 Version 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

November 23rd 2020 Version 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

November 9th 2020 Version 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

June 3rd 2020 Version 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().

May 20th 2020 Version 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)

February 24th 2020 Version 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.

January 28th 2020 Version 3.4.2

Changes between 3.4.2 and 3.4.1

  • Bugfix: fixes memory leak in transaction handling

December 4th 2019 Version 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

July 17th 2019 Version 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

June 26th 2019 Version 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

June 25th 2019 Version 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

June 7th 2019 Version 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.

May 23rd 2019 Version 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

April 9th 2019 Version 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

March 27th 2019 Version 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

Version 3.1.2

Changes between 3.1.2 and 3.1.1

  • Fixes a bug with user self-registration

Version 3.1.1

Changes between 3.1.1 and 3.1.0

  • Minor bug fixing

Version 3.1.1

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

Version 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

Version 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

Version 3.0.1

Changes between 3.0.1 and 3.0.0

  • New: Windows MSI installer
  • Minor enhancements and bug fixes

Version 3.0.0

Changes between 3.0.0 and 3.0-rc1

  • Minor enhancements and bug fixes

Version 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