Releases: jegelstaff/formulize
v8.14
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.13...
For creators - people who make forms, configure lists and reports, etc
- MCP element creation and updating tool descriptions are more clear. Learn more about using Formulize with AI.
v8.13
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.12...
For users - people who fill in forms, search lists, view reports, etc
- The up and down controls in number boxes now respect the correct number of decimals
- Number boxes are always initialized showing the correct number of significant digits (blank zeros at the end if necessary)
- AI assistants can now specify the relationship to use when gathering datasets, or specify to use the form only and no relationship. Learn more about using Formulize with AI.
- Thumbnails for uploaded images generate as expected (detecting the available memory for this operation was improved)
For creators - people who make forms, configure lists and reports, etc
- Province Lists and Radio Button elements now work with dropdown filters in lists of entries
- Importing data to linked elements can now be done by entry id of the source record, as well as the linked value
- Multi-line text boxes, including rich text editors, pass their complete contents to Template Screens as expected
For app developers - people who build applications, use the API, etc
- {BLANK} now works as a term for display conditions (and other conditions) that compare against linked elements
And a few more little fixes and improvements!
v8.12
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.11...
For users - people who fill in forms, search lists, view reports, etc
- New notifications options. Set your notification preference through the Edit Account link in the header.
- Get notifications through texts (SMS), not just email.
- Get notifications through Private Messages within Formulize, if you don't wish to receive them through email or texts. An envelope icon is added to the page header for accessing messages, if Private Message is your notification method. Private Messages won't clutter up your inbox, and cannot be intercepted since they are not transmitted anywhere.
- AI assistants now understand how to create entries that include multi-select elements like checkboxes. Learn more about using Formulize with AI.
- An improved local MCP server (1.4.0) is available with more advanced error correction. For AI assistants that support MCPB, there is a new package available. Learn more about using Formulize with AI.
- Improved layout of the Save button when lists have editable elements in them, so that the page numbers are still visible at the bottom of the page
- Streamlined the display of non-editable elements and entries, to remove elements without values by default.
For creators - people who make forms, configure lists and reports, etc
- New features that can be used inside the textboxes for captions and other configurable text that gets displayed to users, like radio button options, etc:
- Use date: to get a formatted date, e.g. [date:Y-m-d/Sept 26 2015] where the first part (Y-m-d) can be any valid format string for the PHP DateTime format method, and the second part is optional and can be any date string valid for the PHP strtotime function. If no second part is specified, the current timestamp is used.
- Use random: to randomly choose text from the given options e.g. [random:How is your day?/How are you doing today?/What's today been like?/Is [date:M j] a good one so far?]
For app developers - people who build applications, use the API, etc
- Setup text notifications for users, through Twilio or another provider. See https://formulize.org/developers/setup_sms_provider/ for more details.
- Uploaded files are now properly removed when entries with file upload elements are deleted, or the elements themselves are deleted
- Standard condition filters (for element display, inclusion of entries in subforms, etc) now work with linked checkboxes correctly
For core developers - people who work on the Formulize code base
- Added a __getDefaultValue__method to the base elements class so it can be called without instantiating an element-specific handler
And many more little fixes and improvements!
v8.11
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.1...
For users - people who fill in forms, search lists, view reports, etc
- More descriptive page titles, so the history in your browser will show more clearly which page was which
For creators - people who make forms, configure lists and reports, etc
- You can now clone elements from one form to another
- Alternate URLs now include page titles for multipage forms, so you can link directly to a specific page
- New dynamic default values. This option on the Advanced tab lets you set the default value of an element, based on the value of another element in another form. ie: in an activity form, if the duration is dependent on the location, then you can set the default duration based on the chosen location.
For app developers - people who build applications, use the API, etc
- New Log Viewer page to review the contents of event logs, if logging is turned on
- Better UI for Import / Export of forms
- Improved user selection on the Permissions tab of forms, now with an autocomplete list
- The findAllEntriesWithValue method of the data handler, now supports the IN operator
For core developers - people who work on the Formulize code base
- Added subform elements to the Museum application tests
- GitHub test runs will report PHP errors, if any, when a test fails
- Added a "final state" artifact to GitHub test runs, so you can download the way the system was when the tests finished
And many more little fixes and improvements!
v8.1
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.02...
For users - people who fill in forms, search lists, view reports, etc
- New form screens will have a Close button in addition to a Save button, by default. The Close button returns you to the prior page, without saving.
- Clean error reporting. A simple statement of an error will appear on screen, with the option of reporting details about it to the webmaster.
- AI assistants can now create or update multiple entries at once. Previously, they had to perform one operation per entry, which was slow. See the docs for how to connect an AI assistant to Formulize.
- You will be warned when your session is about to timeout. (As long as your site is using the default theme.)
- There is a new Formulize logo and icon!
- Eliminated rare cases of random logouts
For creators - people who make forms, configure lists and reports, etc
- Comprehensive AI integration for creating forms and updating their configuration. See the docs for how to connect an AI assistant to Formulize.
- Major improvements and changes to adding and managing elements in forms. More element types, with fewer options in each, to make everything much easier to use.
- For new forms, it's now possible to create the principal identifier as part of saving the form, all in one step.
For app developers - people who build applications, use the API, etc
-
Backwards incompatible changes!
- If you have any custom element classes, you will need to update the signature of the loadValue method:
// old: function loadValue($value, $ele_value, $element) { // new: function loadValue($element, $value, $entry_id) { $ele_value = $element->getVar('ele_value'); // See modules/formulize/class/textElement.php for an example. - If you have any On Before Save or On After Save code that checked for the old {WRITEASNULL} flag, you may need to update the code. The {WRITEASNULL} flag is no longer used, and such values are literally null.
- If you have any custom element classes, you will need to update the signature of the loadValue method:
-
Streamlined error reporting from end users. They are automatically given the option of sending you error reports via email, that will include the full details, including a backtrace, and any notes they care to have written as well.
-
Reorganized top level menus on the admin side, now with quick links to Formulize admin pages and documentation
-
Setting/changing the entry owner is now part of an 'Office use only' section at the bottom of forms.
-
When a page in a form screen references another screen, conditions on the display of pages within that other screen are now properly respected
-
A new button is available for all form screens: Close. This button closes the form without saving and returns the user to the prior page. It is turned on by default for all new form screens.
-
Importing data will now trigger On Before Save and On After Save events, which is useful and important for consistency.
-
If you are using the Import/Export Forms and Apps feature, it now handles most element references cleanly across sites, meaning you can export from one system and import into another. The feature is still not complete and only handles forms and elements, and some element references may not be ported cleanly yet. Further updates to come.
For core developers - people who work on the Formulize code base
- Massive refactoring of code related to form elements, so that almost all elements have their own class file now, allowing for multiple sub-types of elements to inherit from parents
- A new option to force synchronous queue processing. See docs for details.
- A complete test suite that makes the Museum Demo application!
- New setup for local Docker integration, to avoid any possible database corruption/misinterpretation between different operating systems
- Moved anti CSRF tokens out of session and into files, which creates a new folder that must be writable by the server: /tokens
And many more little fixes and improvements!
v8.02
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.01...
For users - people who fill in forms, search lists, view reports, etc
- You can now use an AI assistant with Formulize. More details on formulize.org
- Time elements are easier to use and more standardized and accessible (native HTML elements now)
- Improvements to the layout of lists on different size screens
For creators - people who make forms, configure lists and reports, etc
- Added confirmation before deleting connections between forms
- Improved handling of fundamental filter searches in saved views
- Comprehensive handling of { } element references within text-for-display elements, and textbox defaults
For app developers - people who build applications, use the API, etc
- You can now enable AI integration for your users. More details on formulize.org
- The debug readout now shows up cleanly in the Anari theme
- Better scope handling for anonymous users (without accounts), so they see appropriate data when passcodes are used
For core developers - people who work on the Formulize code base
- Major reduction in warnings/notices
And many more little fixes and improvements!
v8.01
Docs available for setting up a local Docker dev environment!
Changes since 8.0...
- Better handling of database updates from very old versions of Formulize
v8.0
Docs available for setting up a local Docker dev environment!
Changes since 7.4...
For users - people who fill in forms, search lists, view reports, etc
- A new option at the bottom of lists, to "Hide Repeating Data." This is useful in cases where the same values appear over and over making the table hard to read.
- Significant performance improvements in saving derived values
- On some systems, users would suddenly be back at the login screen seemingly for no reason. This has been eliminated in all cases.
- You can now sort by the Creator's Groups column
For creators - people who make forms, configure lists and reports, etc
Formulize 8 has a streamlined admin experience:
- A completely redesigned admin UI for managing forms and accessing their settings, including an optional Click and Drag UI for organizing forms and creating connections
- No need to create relationships anymore. Adding a linked element or a subform element to a form is all that's required to connect forms. Everything else happens automatically now.
- Any form can be used as a subform, you don't need to setup the relationship first.
- You can create a new form when making a subform element, you don't need to create the form first.
- All forms have a singular and plural version of their name automatically generated, and you can edit them to your liking. These are used elsewhere in the admin UI, and in screen titles and menu links.
- Renaming a form will also rename any screens and menu links that are based on the simple name of the form. If you've edited any screen titles or menu links, those will be unaffected.
- All connected forms are always available in new screens, no need to create and specify the relationship. Existing relationships still exist and are used in existing screens. New relationships are still possible if you need to focus only on specific forms on a specific screen.
- You can specify which element is the Principal Identifier for each form. The PI is the element that gets linked to automatically when certain connections are created, and the PI is sometimes used automatically as the default column in lists.
Other Formulize 8 improvements:
- Derived-value elements will update live if you give them display conditions based on the elements they depend on. ie: if you have an Age derived value, that is based on a Birth Date element, and you put a display condition on the Age to only display if the Birth Date is not {BLANK}, then the Age will be updated live on screen whenever the user selects a Birth Date.
- Form screen pages can refer to other form screens, so you don't have to repeat configuration you have done elsewhere if a page of one screen is supposed to repeat the elements that another screen is already setup to use. If the referenced screen has multiple pages, all those pages are included when the screen is displayed.
- Form screen pages can be generated from PHP code instead of picking form elements.
- Checkbox elements now properly support alternate display fields, ie: if you link to product name you can choose to display product name and product price as the value in the element
- A new search type for columns in lists: a dropdown filter based on excluding the selected value. This way, you can select all the entries that do not have the selected value.
For app developers - people who build applications, use the API, etc
Formulize 8 has a streamlined admin experience:
- All connections between forms are now tracked automatically in a relationship called the Primary Relationship. It has the id number -1 and is used as the default relationship for all screens. Creating a linked element, a subform element, or manually specifying a connection between forms, updates the Primary Relationship automatically. Other relationships can still be created if you want to focus on just certain connections in certain situations.
- The display of relationship details is dramatically improved for readability and easier comprehension
Other Formulize 8 improvements:
- Subforms can have display conditions now, like any other element
- You can specify how many rows should be displayed at once in a subform element, and move between pages, like in a list
- If you're setting up conditions involving an element that stores multiple values (like checkboxes), you can now use the equals operator instead of having to use LIKE
- Formulize Preferences page has been completely reorganized
- There is a preference for enabling/disabling the Printable View buttons globally. If it off by default on upgraded systems. When this is on, the Printable View buttons can be controlled in the screen settings.
- There is a preference for turning on the revision history setting for all forms globally, so you don't have to manage it per form.
- Revised API functions:
- gatherDataset (instead of getData, but getData still exists)
- getValue (instead of display, but display still exists)
- The new getValue function can also be used to get the raw value of an element as found in the database. See the raw parameter in the documentation.
- Concurrent processing of the same queue items is disallowed. Instead, the prior queue run is allowed to finish by itself. If a queue has been running for more than 10 minutes, a restart can be attempted.
For core developers - people who work on the Formulize code base
- You can now set PDO options via a constant in the trust path file, called SDATA_DB_OPTIONS. Set an array of options to pass to PDO and they will be used in your database connection. ie:
define('SDATA_DB_OPTIONS', [PDO::ATTR_PERSISTENT => true]); - PHP 8.1 or higher is required. Certain string handling operations will not work as expected on PHP 8.0!
- Many notices and warnings have been fixed/removed
And many more little fixes and improvements!
v7.43
Docs available for setting up a local Docker dev environment!
Changes since 7.42...
For users - people who fill in forms, search lists, view reports, etc
- Fixing an issue where derived values were not being stored properly after updates
v7.42
Docs available for setting up a local Docker dev environment!
Changes since 7.41...
For users - people who fill in forms, search lists, view reports, etc
- Fixing a rare issue that could cause saving data to fail