Happy February! This month’s release is loaded with features and platform improvements that we’re very excited to finally share. Read on to learn more!
The 2024.2 release includes a major API feature we’ve had in the works for a while - the ability to aggregate data directly through our GraphQL API without needing to worry about transforms, data flows, or math. This will dramatically streamline the process of creating business reports, summary screens, dashboards, and other data analysis workloads.
With this release, you’ll notice a new _aggregate field appearing in GraphQL queries and field pickers. This is the gateway to the new feature: simply by selecting a field and then operator from that object, the API will automatically group by every selected field not inside _aggregate and return the computed value for the selected field and operator.
For example, by selecting the table template on the screen designer and selecting the inventory status and quantity unit to group by, plus a few _aggregate operators on the quantity value, we can generate a simple inventory report in seconds!


To learn more about aggregate queries and see examples using a simple demo schema, check out our documentation.
This month’s release includes a new quality-of-life feature for the screen designer: auto save! The screen designer will now automatically save and sync with any open screen runners after a period of inactivity, meaning users don’t need to worry about losing changes in the event of a PC or browser crash.

If there’s a reason to turn the feature off - say, a user is just testing out changes and doesn’t want to save them - the feature can be temporarily disabled using the toggle in the subheader.

In coming releases, we’ll be enhancing this system with automatic versioning - to save users from having to manually save a new version when edits are made to a deployed screen version - and we’ll be looking to roll this feature out to the schema, data flow, and application designers so it’s available across the board!
The February release also includes a new external user access request system to enable our support team to offer quicker and more streamlined support. When a Fuuz support team member requests access to a customer site, the enterprise administrators will receive an email with the subject “Fuuz Site Access Request” and a body that contains details on the request: which site and tenants/apps access is requested to, who is requesting that access, for how long they’re requesting access, and for what reason.

At the bottom of the email, a “Review Request in Fuuz” link will open the request in your Fuuz site, where you can review the request in detail, including whether the user currently has an account, what access they have, and what actions approving the request will perform. You can then approve the request - which will grant the user the requested access and notify them of the approval via email - or reject the request with an additional rejection reason (for example, if more information is required for the request reason), which will notify the user their request was rejected.

This new system is paired with a new internal process through which these access requests are filed, approved, and tracked, so our team has full visibility into who is asking for access where and why. We already have plans to develop a similar feature for internal access requests - say, when an existing user needs to request access to another app.
The 2024.2 release includes an exciting new integration connector and node supporting connections to Google APIs! This connector was initially developed to support connections to Google Drive, but during development we discovered we could make it flexible enough to support all Google APIs. Currently, the only data flow node available is specific to the Google Drive API, but other APIs can be used through the generic Integrate node, and we’ll be adding more specific nodes for common APIs in the future, such as Gmail, Docs, and Search!
The February 2024 release includes some changes that continue a trend we’ve started in recent months of clarifying the different tenant types and what they’re used for. Every Fuuz enterprise includes an enterprise administration tenant for managing the overall enterprise: creating or deactivating tenants, adding and managing users, changing permissions, and other similar actions.
To help reduce ambiguity and encourage best practices for security, as of this month’s release those administrative activities will no longer be available in other tenant types. When you attempt these activities, you encounter errors such as The createAccessControlPolicy mutation is not permitted in custom tenants. These errors indicate you may need to switch to the administration tenant and repeat the action.
Upcoming releases will carry on this pattern: we’ll be adding more tenant types to help clarify specific use cases, and we’ll be updating the user interface so it’s clearer what is and isn’t permitted in each tenant type before you attempt an action.
As announced last month, the service-based Device Gateway now fully supports all the features of the legacy Gateway application (and much more). As such, we’re ending support for the legacy Gateway application with the 2024.2 release. Not sure which one you have? If the Gateway opens in a desktop application rather than a browser window, you’re running the legacy Electron application.
Support for the legacy Electron-based Device Gateway will end on 2/20/2024.
Added Aggregate Query system to enable streamlined reporting, dashboards, and visualizations based on Fuuz data
Added support for default values and triggers for Date and Time field types
Updated Enterprise Users table and form to improve UI around deactivating and reactivating users
Added API restrictions for Application tenants to prevent use of designers in installed application environments
Added API restrictions for Custom tenants to require user, tenant, enterprise, and other security administration activities to be performed in the Administration tenant
Added middleware to deactivate user API keys when tenant access is deactivated
Improved handling of certain authentication errors to prevent users from getting “stuck” in error states
Added integrated system to support user access requests from Fuuz support staff
Fixed a bug with causing nullable one-to-one relationships to throw unexpected errors
Fixed a bug which could cause the incorrect field to be deleted when deleting a relationship between two models which have multiple relationships between them
Implemented better handling of XML content types for webhook and data flow requests and responses
Updated infrastructure to latest service mesh version
Updated health check routes on some services to no longer try to load unused access model from cache
Added a Google API connector and related Google Drive data flow node
Added a Success Factors data flow node
Added PCCC PLC Device Gateway driver
Fixed a potential crash caused by the Modbus driver reconnecting
Fixed an issue which could cause the IBM DB2 driver to fail to load
Updated Gateway UI error handling to better handle long-running requests to the Gateway server
Updated to correctly capture changes to user roles to update internal email lists for notifications
Added a list of recipients to communication records to capture the list of email addresses a notification was sent to
Implemented data flow validation system to encourage best practices in flow development
Updated walkthrough to no longer close when clicking off the walkthrough dialog
Removed unused Data Flow Library option from help menu and corrected Knowledge Base URLs
Updated data flow schedules screen to correctly display frequencies as inactive when their schedule is inactive
Added a new system to asynchronously persist log-type records to improve durability and reduce write workload
Added $isNotNilOrEmpty binding, which returns true when the provided value is not null, undefined, 0, or an empty array, object, or string.
Updated the Routes tab on the Screen form to correctly apply an exact match based on screen ID
Added CTRL+Click shortcut to deeply expand nested properties in console components
Added truncation of long text values in console components
Added tenantTypeId to $metadata.tenant context in frontend transforms
Added screen version number and deployment date to the footer when help mode is enabled
Added autosave functionality and associated UI component
Added the ability to import screens from the splash screen
Added a Module field to screens directly, copying modules from routes where available
Updated save dialogs to provide default values for required Active and Full Screen fields
Updated application designer actions to retain fullscreen state when creating new objects
Added a number of new features for the icon picker component, including support for custom colors, configuration around which properties are available, and support for disabling the input
Added an Array Input component type to handle input of lists of scalar values (text, numbers, etc.)
Added “Beep on Scan” option to the Scan element to play a simple success/error beep on scan
Added “Dialog Mode” option to the Select element to allow more flexibility around dialog behavior; added “Advanced Search” mode to open the advanced search dialog on request
Updated table cell styles for editable checkboxes to correct alignment and remove indeterminate state
Added several new configuration options to the SVG element