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
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