See what has changed Release Notes

  • Latest version: 5.0.1
  • 09. Jan 2024

    5.1.0

    Changes between 5.1.0 and 5.0.1:
    - Improvement: enable GraalVM Chrome debugger for scripting
    - Improvement: show warning icon if an HTML attribute contains an empty string
    - Improvement: initial admin user is now configurable
    - Improvement: allow configuring after which depth nested objects are reduced to id,type,name in restricted views (ui,custom,all)
    - Improvement: enable explicit code cache flushing in jvm opts
    - Improvement: better error handling for invalid regex in str_replace() built-in function
    - Improvement: use longer default password for neo4j database connection
    - Bugfix: some fixes in frontend.js
    - Bugfix: some fixes in database connection dialog
    - Bugfix: fix duplicate method parameters in Code area
    - Bugfix: fix login loop in cluster mode
    - Bugfix: allow adding OpenAPI parameters to methods
    - Bugfix: set permissions of deployment export correctly
    
    
  • 13. Nov 2023

    5.0.1

    Changes between 5.0.1 and 5.0.0:
    - Fix: Move context child menus on deeper levels into visible area as well.
    - Bugfix: Enable raw output of HTML comments in order to support conditional comments
    - Bugfix: Escape HTML-characters &,< and > in HTML comment elements to ensure the content stays the same during a deployment roundtrip
    - Test: Adds test for commit 0b80c3f which ensures that files and folders are correctly identified upon deployment import
    - Bugfix: Changes lookup method for files and folders in deployment import to a UUID-based method instead of relying on the path (which could change from user application version to version)
    - Improvement: Sort access rights for grantees in pages/templates/components in a consistent sort order in deployment export
    - Improvement: Sort grantees in pages/templates/components in the deployment export by name
    
  • 21. Aug 2023

    5.0.0

    Changes between 5.0.0 and 5.0-rc1:
    - New: Code completion for internal keywords
    - New: Scripting function to disable UUID validation in batched imports
    - New: Environment variable for setting custom Java agent in docker container.
    - New: Request parameter to control serialization of null values in JSON output
    - New: hash() function which supports all of the hash functions (MessageDigest) provided by the underlying JVM
    - New: Configuration setting to allow setting the Jetty URI compliance mode
    - New: Shortcuts to most frequently used keys in scripting for better performance
    - New: Pre-fetching of relationship end nodes for better performance
    - New: Allow certain scheduled tasks to run in parallel
    - New: Support for more than two URL segments (important for custom page paths)
    - New: UI setting to view groups strictly hierarchically (meaning nested groups do not appear on top level)
    - Enhanced support for Java methods in code and schema area
    - Support for JavaScript syntax highlighting in ${{ }} in HTML elements
    - Improved drag & drop behaviour and highlighting in Structr Backend UI
    - Fixed bug on reload of schema for changes to relationship type and cardinality
    - Finalized update of frontend Event-Action mapping
    - Finalized rewrite of Structr Backend UI Javascript code
    - Removed "twitterName" property from User and Person class
    - Modified Let's Encrypt ACME dnsChallenge method to send the parameters 'domain' and 'record' instead of 'hostname' to 'onAcmeChallenge' method.
    - Allow reloading the page with Cmd/Ctrl+Shift+R even if a global or static method is open
    
  • 20. Jun 2023

    5.0-rc1

    Changes between 5.0-rc1 and 4.2.3:
    - Support for Neo4j 5.5
    - Upgraded Java version to 17
    - Upgraded GraalVM runtime to 22.3.1
    - Upgraded maven-compiler-plugin to 3.11.0
    - Support for 36-char UUIDv4 ids with dashes
    - New settings to control how UUIDs are created (with or without dashes) and which UUIDs formats are allowed (with or without dashes or both)
    - New change handlers for settings
    - Big refactoring of UI code with massive memory management overhaul and new SVG icons
    - Improved and extended Event Action Mapping for building interactive frontends
    - Enhanced OpenAPI support
    - New Tailwind CSS based widgets and new default widget server
    - New HTML element <structr:shared-template> to allow creation of shared components from Widgets
    - Merge of Structr Core/Rest/UI into Structr Base
    - Enhanced OAuth support with support for Azure auth client and scribejava
    - Removed _graph view
    - Allow limiting of properties in custom-defined views
    - New preview option in right-hand side slide-out
    - New startsWith and endsWith predicates for Advanced Find
    - Adds python library into default Structr Docker image and removes dedicated Docker image with python support
    - Removed chosen library and updated all remaining chosen select elements to select2
    - Enables temporal proposal in JS scripting
    - Expected minor version of GraalVM aligned with dependency version
    - New chrome debugging capabilities and settings.
    - Adds step to install GraalVM in CodeQL workflow
    - Removed db/ folder creation and references
    - Enhanced and unified handling of drag'n'drop in tree and contents area
    - Enhanced cluster mode
    - New right-click context menu in Pages preview
    - New builtin function "create_or_update" to create an object with the given properties or update an existing object if it could be identified by a unique property
    - Support for code transpiling for import scripts
    - Support for Apache Pulsar
    - Uniqueness validation synchronization for parallel transactions for external UUIDs
    - Support for multiple values per key for HTTP headers
    - Enhancement: Adds the option to remove properties of a superclass from views of the same name.
    - Implements basic virtual filesystem access for scripting.
    - Function POSTMultiPart that allows multipart HTTP requests for file uploads.
    - Java Parser module removed
    - New graph-based persistence model for storing data and relationships of and between events, actions, parameters, success and failure behaviour as well as future features like notifications, visualization.
    - Feature: Allow leaving start or end of REST range query empty (for greater than, lower than searches)
    - Improvement: allows <template> elements to be inserted in to a page, enables template-based notifications in frontend.js.
    - New structr_env() function to extract Structr runtime environment information as an alternative to querying the REST _env resource.
    - Upgrade Jetty to version 11.0.10
    - New UI functionality for defining CORS settings for individual request URIs
    - New thread management dashboard in admin UI
    - Minification feature for js and css files removed
    - Upgrades and fixes slf4j and logback versions
    - New workflow for testing and building Structr with Github actions
    - Made HTTP license server more robust, support GET, POST and HEAD, and respond properly to a simple GET
    - CMIS dependencies removed
    - Lots of further enhancements and bug fixes
    
  • 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.

Structr on YouTube