v8.20
Formulize and AI: connect an AI assistant to Formulize!
Local development: set up Formulize in Docker
Discuss this release in the forum
Changes since 8.14…
For users - people who fill in forms, search lists, view reports, etc
- An embedded AI assistant — chat with an AI right inside Formulize to find entries, answer questions about your data, and get help working through your forms and lists (the webmaster needs to turn on the assistant first) Learn more about Formulize and AI
- Readable dates for searching, ie: “last Thursday”, “June 25”, etc…
- Multiline textboxes can have a character or word counter, and optionally a limit
- Shift-click a column header to add a secondary sort order (and tertiary…)
- Improved handling of conditional elements (so they don’t disappear and reappear just because their trigger value changed)
- Smoother mobile use of range sliders (no longer jump when you tap the track)
- Lists now remember your scroll position when you open an entry and come back, and between pages — no more losing your place
- Bullets for multiple values in lists
For creators - people who make forms, configure lists and reports, etc
- New configuration concept: entries-are-users forms, and entries-are-groups forms
- Entries-are-users:
- The form will automatically have user account fields added (username, password, email, etc), plus you can mix and match those elements with elements you define like normal, and control which pages of which screens these all appear on
- You can specify that users arising from entries in this form should automatically be assigned to certain groups, and the assignment can also be conditional on the values in the entry, ie: if the “Managers” checkbox is checked, assign the user to the Managers group
- Entries-are-groups:
- Groups will be created based on every entry in the form, ie: create a Departments form and every entry will spawn a group that users can be assigned to (bonus points: add a linked element in an entries-are-users form where a department can be chosen, and set conditional group assignment on the entries-are-users form to automatically make the user a member of the selected group)
- Specify categories of users, ie: in the Departments form you could create categories for Managers and Staff, so each entry will spawn multiple groups for organizing your users
- Entries-are-users:
- Apply new or changed default values to existing entries, and select which existing entries to update (probably the ones that have no value, but you can be more specific)
- Click Usage in the list of elements to see everywhere an element is referenced throughout the system. This report also shows up automatically before you delete an element.
- An embedded AI assistant — connect an AI directly inside Formulize to help you build and configure forms, set up elements, and shape your lists and reports (the webmaster needs to turn on the assistant first) Learn more about Formulize and AI
- Map Screens:
- a new screen type that displays your entries on a map, with clickable popups that can link straight to the full entry
- List Screens:
- the initial sorting order can include multiple columns
- a show/hide admin option for the Hide Repeating Data setting
- select entries and change their ownership without going into each one
- choose which connected forms to copy data into when cloning entries
- Richer filtering: filters now work on standard metadata fields, yes/no dropdowns, and {BLANK} searches, with several subtle interpretation improvements
- Form Screens:
- a new per-page option to disable all elements (good for Confirmation pages)
- if there are multiple forms available to the screen, you can control which one’s elements come first, second, etc
- more reliable conditional element rendering inside embedded full forms
- Sliders:
- set a ‘no-value’ default, so users won’t save an unintended number just by saving the form. This also makes sliders work better with the ‘required’ setting.
- support for decimal numbers
- Multiline textboxes:
- enable a character or word counter, and optionally enforce a limit
- Time selectors:
- a new 12/24-hour time preference that’s respected both when entering data and when searching.
- Radio buttons and Checkboxes:
- the ‘space’ delimiter is now five spaces by default, and configurable from 1 to 9
- Number boxes:
- set a minimum and/or maximum value
- More dynamic text everywhere — use random: and date: in the text of page titles, entry descriptors, and screen titles, plus new per-group filter terms for the current user’s full name and user ID.
- an Add element link on each element admin page (so you don’t have to keep going back up a level)
- Menu links now move with a form if the form is assigned to a different app
- Derived values are automatically conditional on any elements they refer to in code
- now you can choose between pen or magnifying glass for the edit entry icon
For app developers - people who build applications, use the API, etc
- Backwards incompatible changes!
- Derived value formulas will preserve their existing value if the formula does not set it. Previously, unset values would be saved as null. If you were relying on a formula to enforce a null value under certain circumstances, this may not work the same anymore.
- A Table of existing elements can now include all elements, not just elements with data, which allows static text for display elements to be included. If you have any static text for display elements among elements that are included in a Table of existing elements, you will need to reorder your elements, or adjust the number of columns and rows in the table so everything displays correctly.
- A completely redesigned settings area.
- All of your configuration — site identity, appearance, date and time formats, sign-in and two-factor options, email and SMS messaging, AI, logging, date formatting, and the advanced/debug options — now lives in one clean, tabbed interface inside the Formulize admin, instead of being scattered across separate system pages.
- A theme editor to modify the html, css and js files for your theme from within the admin UI
- Manage all the users and groups in the system from the front side of your site:
- Add, update, search, sort, and delete like in a any other Formulize list
- Deactivate users easily without deleting them
- Easily ‘masquerade’ as any user from the list
- AI features:
- Provide semantic information for AI per form, explaining the who, what, where, when, how, and why of your workflows
- Enable an embedded AI assistant for your users and creators, choose which groups can use it, choose an LLM provider, model, API key, or allow users to specify their own. If you provide an API key for a provider, you will incur usage charges for everything your users do with the embedded AI assistant!
- The create and update element tools now support element order, and element display conditions, and static content elements (text-for-display)
- New tools for creating and updating form screens, including page order and page conditions
- New tools for creating and updating list screens
- New tools for managing users and groups and permissions
- New tools for managing the menus
- Tuning of which and how much data we provide to AI assistants, to control context usage
- Learn more about Formulize and AI
- Derived value elements:
- formulas now use
$elementHandlesyntax to refer to elements - smarter handling of datasets and resolving values, when formulas refer to elements in other forms
- cached data used by gatherDataset gets updated live when a derived value changes during the same page load
- formulas now use
- Revised descriptions and UI for setting permissions, including the ability to make forms inherit all their permissions from other forms
- Set the number of entries that can be entered into a form, on a per-group basis
- The Edit Account page is now updated and unified with the user account management system
- Webmasters can enable self-signup for user accounts, with optional, distributable tokens to control group membership
- Condition filters that imply null will transparently include null on their own; you don’t have to add “OR NULL” on your own
- Data handler class methods support metadata fields, not just regular elements
- Constants are automatically generated for every form id, based on the form handles: FORMHANDLE_FORM_ID
- Use PHP code in help text, by using <?php ?> tags
- Better support for exotic common value connections between forms
For core developers - people who work on the Formulize code base
- Backwards incompatible change!
- The Google PHP API client library is no longer distributed with Formulize, you will need to install it yourself if you need it. If you deploy by git, you may end up removing your copy of the library! Check this as part of your update process.
- This release introduces a trailing zero tag structure for tenth-of-a-point releases: v8.20 (not v8.2)
- There is a new writable folder:
/themes(required for the new admin side Theme editor) - New local dev environment options: set PHP version and port numbers
- There is a new, unified, patch and update process. You do not need to go to the Modules page to do a separate update any longer.
- All elements now have proper classes and full AI support.
- Extend any element class to create your own custom behaviours for elements
- The entire functions.php file now has PHP docblocks (over 10,000 lines! 🥵)
- Test-suite optimizations, including running concurrent tests, and basic unit test support
- The test-suite now makes full use of the new entries-are-users and entries-are-groups features
- Local docker environment optimizations, thanks @ettavolt
And many more little fixes and improvements!
Don't want to miss the next one? Join the mailing list.