See what has changed Release Notes
- Latest Release: 4.0.0
4.0.0 29 November 2021
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 (experiemental) 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
3.6.5 25 May 2021
Changes between 3.6.5 and 3.6.4
- Minor enhancements and fixes
3.6.4 23 April 2021
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
3.6.3 08 January 2021
Changes between 3.6.3 and 3.6.2
- New configuration setting to delay oauth success redirect after login
3.6.2 11 December 2020
Changes between 3.6.2 and 3.6.1
- Reduced logging output
- Bugfix: Fix NotInTransaction exceptions for RuntimeEventLog writes in JsonRestServlet
- Bugfix: Avoid NPE
3.6.1 23 November 2020
Changes between 3.6.1 and 3.6.0
- Bugfix: remove transactions around REST calls to avoid deadlocks in structr-ui tests
3.6.0 09 November 2020
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
3.5.1 02 June 2020
Changes between 3.5.1 and 3.5.0
- Bugfix: implements workaround for bug in URI class with Windows file paths in getFileOnDisk().
3.5.0 19 May 2020
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)
3.4.3 24 Feb 2020
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.
3.4.2 28 Jan 2020
Changes between 3.4.2 and 3.4.1
- Bugfix: fixes memory leak in transaction handling
3.4.1 04 Dec 2019
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
3.3.3 15 Jul 2019
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
3.3.2 25 Jun 2019
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
3.3.1 24 Jun 2019
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
3.3.0 06 Jun 2019
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.
3.2.2 22 May 2019
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
3.2.1 08 Apr 2019
Changes between 3.2.1 and 3.2.0
Changes between 3.2.0 and 3.2.1
- 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
3.2.0 27 Mar 2019
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.2 and 3.0.3
- Fixes bug related to HTTP PATCH
- Adds support for PATCH to resource access tab
3.0.2
Changes between 3.0.1 and 3.0.2
- 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.0 and 3.0.1
- New: Windows MSI installer
- Minor enhancements and bug fixes
3.0.0
Changes between 3.0-rc1 and 3.0.0
- Minor enhancements and bug fixes
3.0-rc1
Changes between 2.3.8 and 3.0-rc1
- 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.