{"id":831,"date":"2018-01-04T00:00:00","date_gmt":"2018-01-04T00:00:00","guid":{"rendered":"https:\/\/structr.com\/happy-new-year-structr-2-3-released\/"},"modified":"2025-03-15T12:55:14","modified_gmt":"2025-03-15T12:55:14","slug":"happy-new-year-structr-2-3-released","status":"publish","type":"post","link":"https:\/\/structr.com\/en\/blog\/happy-new-year-structr-2-3-released\/","title":{"rendered":"Happy New Year &#8211; Structr 2.3 released"},"content":{"rendered":"<p>Happy New Year to everyone! As stated in the last release blog post, 2017 was a blast. Not only did we make a big step towards the upcoming major release 3 of Structr, we were also able to close some interesting business opportunities.<\/p>\n<p>And to start the new year right, we just released 2.3, filled with enhancements and bug fixes (for details, see below).<\/p>\n<h3 id=\"changelog\">Changelog<\/h3>\n<p>Here\u2019s the (incomplete as always) change log of the 2.3 release:<\/p>\n<h4 id=\"general\">General<\/h4>\n<ul>\n<li>Support for the bolt+routing:\/\/ protocol in the Bolt driver layer<\/li>\n<li>Reconnect after database disconnect without errors<\/li>\n<li>Support for inexact\/wildcard String search with Cypher<\/li>\n<li>Job scheduler to execute arbitrary scripts as backend jobs (with UI support)<\/li>\n<li>Support for dynamic files as e-mail attachments<\/li>\n<li>Improved logging, e.g. when non-indexed properties are used in queries<\/li>\n<li>Reduced minimum heap space for systems with low memory<\/li>\n<li>Support for (optional) parameters in global schema methods<\/li>\n<li>Added detection for stale PID files to the start and docker script<\/li>\n<\/ul>\n<h4 id=\"new-modules\">New modules<\/h4>\n<ul>\n<li>Java parser module (still alpha\/work-in-progress; uses GitHub\u2019s JavaParser)<\/li>\n<li>Translation (uses Google Translate web service)<\/li>\n<li>Knowledge module to define a Thesaurus (still work-in-progress\/alpha)<\/li>\n<\/ul>\n<h4 id=\"csv-xml-import\">CSV\/XML Import<\/h4>\n<ul>\n<li>Support for multi-line cells<\/li>\n<li>Fixed CDATA import in XML importer<\/li>\n<li>Extended tests<\/li>\n<li>Improved CSV and XML import performance<\/li>\n<\/ul>\n<h4 id=\"rest\">REST<\/h4>\n<ul>\n<li>Support schema modification via PUT\/POST<\/li>\n<li>Output nesting depth overwritable by request parameter<\/li>\n<\/ul>\n<h4 id=\"files-images-cms\">Files\/Images\/CMS<\/h4>\n<ul>\n<li>DirectoryWatchService: Mount external, periodically scanned file systems and manage custom metadata in Structr<\/li>\n<li>Configurable file checksum\/hash calculation with support for CRC32, MD5, SHA-1 and SHA-512<\/li>\n<li>New built-in function to create ZIP archives in scripting context<\/li>\n<li>Ignore unsupported thumbnail types<\/li>\n<li>Decreased memory consumption for upload<\/li>\n<\/ul>\n<h4 id=\"pages-cms\">Pages\/CMS<\/h4>\n<ul>\n<li>Custom HTML tags<\/li>\n<li>Custom HTML attributes<\/li>\n<li>Allow String[] property to be used as a repeater data source<\/li>\n<\/ul>\n<h4 id=\"scripting\">Scripting<\/h4>\n<ul>\n<li>Built-in function jdbc() to connect to databases via JDBC<\/li>\n<li>PUT() and DELETE() built-in functions<\/li>\n<li>Extend to_graph_object function to support String[]<\/li>\n<\/ul>\n<h4 id=\"backend-ui\">Backend UI<\/h4>\n<ul>\n<li>Improved dialogs: Edit Properties, Schema management<\/li>\n<li>More online help texts<\/li>\n<li>New UI for managing mail templates<\/li>\n<li>New UI for Virtual Types<\/li>\n<li>Configurable main menu<\/li>\n<li>Allow text selection in popup messages even if a dialog is open<\/li>\n<li>Feedback when automatically setting the \u2018indexed\u2019 flag<\/li>\n<li>New properties are not set to \u2018indexed\u2019 by default<\/li>\n<li>Websocket frames will update an HTTP session\u2019s lastAccessedTime properly now<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Happy New Year to everyone! As stated in the last release blog post, 2017 was a blast. Not only did \u2026<\/p>\n","protected":false},"author":2,"featured_media":2472,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[31,24],"tags":[217,202,210,215,203,206,214,201,209,207,216,205,208,218,200,212,213,199,221,219,220,204,211],"class_list":["post-831","post","type-post","status-publish","format-standard","hentry","category-announcement","category-structr","tag-backend-ui-improvements","tag-bolt-driver-support","tag-csv-import","tag-custom-html-tags","tag-database-reconnect","tag-dynamic-email-attachments","tag-file-management","tag-frontend-developer-jobs","tag-global-schema-methods","tag-improved-logging","tag-jdbc-function","tag-job-scheduler","tag-low-memory-support","tag-mail-templates","tag-new-year-update","tag-rest-api","tag-schema-modification","tag-structr-2-3-release","tag-structr-changelog","tag-virtual-types","tag-websocket-updates","tag-wildcard-string-search","tag-xml-import"],"acf":[],"_links":{"self":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/posts\/831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/comments?post=831"}],"version-history":[{"count":6,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/posts\/831\/revisions"}],"predecessor-version":[{"id":2372,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/posts\/831\/revisions\/2372"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/media\/2472"}],"wp:attachment":[{"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/media?parent=831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/categories?post=831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/structr.com\/en\/wp-json\/wp\/v2\/tags?post=831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}