Structr 6.1.0 Release Notes

Release Date: January 29, 2026

Structr 6.1.0 is a feature release that introduces global search capabilities, S3 storage support, and numerous UI/UX improvements alongside important bugfixes.

New Features

  • Global Search: Added comprehensive global search functionality across the application, including the Pages area, with autofocus, improved positioning, enhanced result display, and prevention of multiple initialization on login
  • Navigate to Arbitrary DOM Node: New feature allowing navigation to any DOM node in the application (UI partially complete)
  • S3 Storage Provider: Experimental generic S3 storage provider implementation using the latest AWS SDK v2 with Netty async IO, tested with Hetzner S3 buckets
  • Script Path Configuration: Added configuration settings for scripts directory with optional lenient script path resolution checks
  • Config Function Improvements: The config() function now accepts optional null values for the default value argument

Enhancements

  • Files Area UI: Reduced element overlaying, improved alignment and table layout, added more space in front of file/folder names for easier selection, alternating row colors with reduced padding, and corrected function bar button behavior
  • Pages Area: Removed dedicated search slideout as global search now covers the Pages area
  • Search Results: Removed shadow documents from search results for cleaner display
  • Visual Hierarchy: Fixed z-index of version info to ensure popup messages display above page slideouts
  • Configuration Editor: Improved handling of empty custom config entries with proper persistence, reset functionality, and display of reset icons
  • ZIP Deployment: Now allows arbitrary paths in ZIP deployment imports with security checks for absolute paths and directory traversal
  • Entity Access Manager: Show all types in EAM dialog for “Create new object”

Bugfixes

  • Context Locking: Fixed context locking issues with doInNewTransaction function to prevent deadlocks and excessive locking
  • SecurityContext: Fixed access to request object in SecurityContext for certain code paths
  • Failed Login: Resolved error when failed login attempts redirect to error page with status 401
  • Importer: Fixed unwanted text attributes from importer
  • files.json: Allowed import of metadata-only folders in files.json for git compatibility with empty directories
  • Mail Functions: Updated advanced mail functions to camel case for proper accessibility
  • Config Persistence: Ensured proper persistence of deleted keys from config editor

Quality of Life

  • Logging: Reduced log output for index removal/creation to only show when changes occur
  • Documentation: Enhanced example documentation for assert function and added test for functionInfo functionality
  • Maintenance: Updated license headers to 2026 and updated year in pom.xml

Upgrade Notes:
- Recommended for all Structr 6.0.x users
- The new S3 storage provider is experimental - test thoroughly before production use
- Script path resolution can now be configured for more flexible deployment scenarios
- See the migration guide for general Structr 6.x upgrade information

Structr 6.0.1 Release Notes

Release Date: December 17, 2025

Structr 6.0.1 is a maintenance release that includes important bugfixes and documentation improvements.

Bugfixes

Core

  • Flow Execution: Fixed typo in flow execution method that could cause execution issues
  • Docker Configuration: Fixed sed --in-place failing on Docker-mounted config files, which caused duplicate entries and value concatenation on container restarts
  • URL Path Handling: Fixed URL path handling for Structr instances running on non-root paths
  • Working Directory: Restored working directory correctly after operations

Polyglot/Multi-Language Support

  • Context Locking: Fixed issue with context locking in scheduled jobs when exceptions occur
  • PolyglotFilesystem: Fixed various small bugs in PolyglotFilesystem
  • Python Support: Added python hint provider to prevent log spam on every keystroke
  • Token Handling: Added null check for lastToken to prevent potential null pointer exceptions

Enhancements

User Interface

  • Tab State Persistence: Enabled storage of active tab for each element with automatic localStorage cleanup to prevent indefinite growth
  • Documentation Navigation: Enabled back/forward navigation in documentation area
  • File List Display: Dynamically hide columns in files area depending on viewport width for better mobile/responsive experience
  • Type Inheritance: For overridden builtin types, show inherited properties in corresponding tab

File Handling

  • Direct File Writing: Added support for writing directly to a file node instead of OutputStream only

Permissions

  • Video Files: Added permission propagation to the POSTER_IMAGE relationship between VideoFile and Image, fixed relationship endpoints

Documentation

New Documentation

  • Fulltext Search: Added comprehensive documentation and examples for searchFulltext() function
  • Virtual Types: Added more information to virtual types documentation
  • Mail Templates: Enhanced mail templates documentation with additional details
  • Migration Guide: Added entries to migration guide for version 6.0

Documentation Improvements

  • Function Signatures: Updated signatures for sendPlaintextMail(), functionInfo(), and error() functions
  • Code Examples: Fixed mult() example in code documentation
  • Usage Documentation: Minor fix in usage documentation of find.contains()
  • Methods Section: Updated section regarding methods
  • Mail Template Names: Fixed mail template names (underscores were interpreted as markdown)
  • Version Organization: Moved outdated documentation to a subsection “Older versions”
  • References Chapter: Updated markdown files for References chapter
  • General Fixes: Fixed various minor issues and in-docs links
  • Content Updates: Changed content to better reflect Structr’s capabilities with improved formatting

Testing

  • Test Updates: Fixed tests by hosting example page on structr.org
  • Function Properties: Added test for function property sorting, fixed some issues in FunctionProperty

Quality of Life

Code Quality

  • Logging: Improved logging and enabled native logging output for polyglot contexts
  • Error Messages: Updated error message from “does not exist” to “not found” for consistency
  • Tokenizer: Silenced StructrScript tokenizer when generating hints to eliminate warning messages in the log
  • Naming: Renamed “declaring class” to “declaring trait” for better terminology

Upgrade Notes:
- This is a maintenance release with no breaking changes
- Recommended for all Structr 6.0.0 users
- See the migration guide for general Structr 6.0 upgrade information

Structr 6.0.0 Release Notes

Release Date: December 8, 2025
Previous Version: 5.2.1

Overview

Structr 6.0.0 is a major release featuring a complete architectural overhaul with the new Traits System, migration to GraalVM 25 / JDK 24, Jetty 12, significant performance improvements, and a modernized user interface. This release includes breaking changes that require migration steps for existing applications.

Breaking Changes

Architecture

  • Traits System: Complete rewrite of the type system using traits instead of Java class inheritance. Dynamic schema classes are now static Java code with trait-based composition.
  • Static Schema Migration: Most dynamic schema classes moved back to static Java code
  • Removed Dynamic Java Code Generation: NodeExtender and related classes removed

Removed Features

  • GraphQL Support: Completely removed (was based on outdated graphql-java v12)
  • Content Area: Removed entirely (ContentItem, ContentContainer)
  • Crawler Module: Removed
  • Working Sets: Removed
  • Edit Mode Binding: Legacy edit-mode-binding removed in favor of Event Action Mapping
  • Windows Support: Removed Windows-related scripts and start.cmd
  • R Integration: Removed R references (not available in Graal)

Removed Functions & Properties

  • batch() function removed (use doInNewTransaction() instead)
  • keys() and values() functions removed (use Object.keys() and Object.values())
  • slice() expression removed from StructrScript
  • validate_email() function removed (use is_valid_email())
  • restQuery property removed from DOMNode (use functionQuery)
  • debug() function removed
  • includeAsJavaScript attribute for files removed
  • includeJs function removed (use actual JavaScript imports)
  • xpathQuery, hideOnIndex, hideOnDetail, renderDetails properties removed

API Changes

  • All built-in functions renamed to camelCase (backwards compatibility conversion provided)
  • Resource access “grants” renamed to “permissions”
  • Method parameter handling changed for REST calls
  • set() function: third call-style removed

Configuration

  • memory.config renamed to memory.conf (graceful fallback with deprecation warning)
  • Default upload folder changed to /._structr_uploads
  • Removed settings for deployment servlet anonymous deployments
  • Removed force-arrays setting

Major New Features

Traits System

  • Complete type system rewrite using trait-based composition
  • Multiple inheritance support through traits
  • Improved schema flexibility and extensibility
  • Service Classes: New concept for stateless service types that cannot be instantiated

Integrated Documentation

  • Built-in documentation system with searchable content
  • Inline documentation for all built-in functions
  • Documentation for system types, lifecycle methods, and services
  • Autocomplete hints from system types documentation
  • Keyboard shortcut Ctrl+K for documentation search

Event Action Mapping Enhancements

  • Flow (FlowContainer) selector in EAM dialog
  • Confirmation dialog feature for Event Mapping
  • Two-factor authentication support
  • Custom event names support
  • CSS class structr-action-running automatically added during action execution
  • Events structr-action-started and structr-action-finished dispatched on trigger elements

Page Paths & URL Routing

  • Dynamic paths for pages (PagePath objects)
  • URL routing dialog in UI
  • Methods callable via configurable HTTP verbs (GET, POST, etc.)
  • Private methods support

Fulltext Search

  • New fulltext indexing using Neo4j fulltext indexes
  • searchFulltext() and searchRelationshipsFulltext() functions
  • Fulltext search UI in files area with context display

User-Defined Functions

  • Global schema methods renamed to “user-defined functions”
  • Static methods callable via cron
  • Function signatures with method overloading support
  • functionInfo() built-in function for method introspection

New Built-in Functions

  • login() - Programmatically sign in a user
  • is_valid_uuid() - Validate UUID format
  • is_valid_email() - Email validation
  • createFolderPath() - Create folder hierarchies
  • searchFulltext() / searchRelationshipsFulltext() - Fulltext search
  • rollbackTransaction() - Manual transaction rollback
  • addLabels() / removeLabels() - Neo4j label management
  • set_log_level() - Runtime log level configuration
  • functionInfo() - Get method information

Performance Improvements

  • Transaction-based caching with prefetching replaces global node cache
  • Optimized HTML/DOM rendering performance
  • Improved prefetching for user authentication and permission propagation
  • Better handling of large data deployment exports
  • Optimized websocket commands
  • Reduced database queries through caching of user-defined functions

Security Enhancements

Upload Servlet Security

  • Default upload folder enforced to be non-empty
  • Write permissions required for parent/parentId targeting
  • uploadFolderPath restricted to authenticated users under default folder
  • Non-whitelisted properties blocked during file upload

Other Security

  • Server-side request forgery (SSRF) protection via whitelisting in HttpHelper
  • ZIP slip vulnerability fix in SyncCommand
  • Updated encrypt()/decrypt() functions to use more secure mode
  • Read-protection for configuration keys containing secrets
  • Bouncycastle updated to 1.81

User Interface Improvements

Schema Editor

  • Pan and zoom functionality (mouse wheel, middle-mouse drag)
  • Trait inheritance arrows displayed
  • Built-in types and relationships visible
  • Improved node selection and movement
  • Layout save/restore functionality
  • “Hide selected types” functionality

Code Area

  • Code navigation / “Go to definition”
  • Bulk edit mode improvements
  • Method parameters in run dialog
  • Usage examples with copy buttons
  • Monaco editor settings (auto-closing brackets/quotes, auto-surround)
  • Customizable monospace font/size

Dashboard

  • HTTP request statistics display
  • Available processors and memory info
  • Deployment wizard
  • Improved vis.js integration with drag/zoom
  • Update messages for script jobs

Data Section

  • Improved array type handling in create/edit dialogs
  • Date/DateTime picker improvements
  • ZonedDateTime support
  • Better handling of large array attributes
  • Column sort order persistence

General UI

  • Notification system with bell icon and message count
  • User settings for auto-removing time-limited notifications
  • SSO login buttons in login dialog
  • Configurable UI settings reset
  • Improved popup dialogs (grid-based layout)
  • Custom confirmation dialogs

Dependency Updates

Runtime

  • GraalVM: Upgraded to version 25.0.0 / JDK 24
  • Jetty: Migrated to Jetty 12
  • Neo4j: Support for Neo4j 2025

Libraries

  • Apache Commons Lang3: 3.18.0
  • Apache Commons Compress: Security update
  • Logback: 1.5.20
  • Bouncycastle: 1.81
  • Geotools: 32.4
  • vis.js: Latest version
  • Monaco Editor: 0.51
  • Various other dependency updates for security and compatibility

Configuration Changes

New Settings

  • structr.conf settings for heap and timezone configuration
  • Email validation regex configurable
  • FTP passive mode port range configuration
  • exec()/exec_binary() command logging configuration
  • Auto-closing brackets/quotes for Monaco editor
  • Default log level configuration
  • UUID format settings (compact/dashed/both)

Removed Settings

  • GraphQL servlet configuration
  • Legacy OAuth classes
  • Deployment servlet anonymous access
  • Various deprecated settings

Notable Bug Fixes

  • Fixed memory leak in scripting contexts
  • Fixed session timeout issues
  • Fixed thumbnail generation for images with alpha channel
  • Fixed permission propagation query performance
  • Fixed websocket initialization timing
  • Fixed circular group hierarchy resolution
  • Fixed cascading delete implementation
  • Fixed LDAP group configuration
  • Fixed deployment export/import for various edge cases
  • Fixed ransomware-style file recovery issues
  • Fixed email configuration problems

Migration Guide

Before Upgrading

  1. Backup your database and deployment exports
  2. Review breaking changes above
  3. Test in a staging environment first

Function Name Changes

All built-in functions now use camelCase. A backwards compatibility layer is provided, but you should update your code:

// Old (deprecated)
get_or_create(...)
to_json(...)

// New
getOrCreate(...)
toJson(...)

restQuery Migration

The restQuery property has been removed. Migrate to functionQuery:

// Old
$.restQuery('/api/users')

// New  
$.functionQuery('find', 'User')

Traits System

Custom types now use traits. The migration is handled automatically, but review your schema after upgrade for any issues with:
- Multiple inheritance
- Abstract properties
- Method overriding

Configuration File

Rename memory.config to memory.conf to avoid deprecation warnings.

Documentation

The integrated documentation system provides comprehensive coverage of:
- All built-in functions with examples
- System types and their properties
- Lifecycle methods
- Services and configuration
- Migration notes for 6.x

Access via Ctrl+K in the Structr UI or the documentation icon.

Contributors

Thanks to all contributors who made this release possible through code contributions, bug reports, and documentation improvements.

Full Changelog

For the complete list of almost 1,600 commits between 5.2.1 and 6.0.0, see the git log or GitHub compare view.