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.

Structr on YouTube