v1.7.0

gristlabs/grist-corev1.7.0Jul 31, 2025by jordigh

AI Summary

A major feature release introducing attachment fields in forms, widget duplication, new formula functions, and improved keyboard navigation.

Key Highlights

  • Attachments fields can now be added to forms
  • Widgets can now be duplicated
  • New formula functions: NETWORKDAYS and DATEDIF string support
  • Keyboard navigation has been significantly improved

New Features

  • Form attachments
  • Widget duplication
  • New formula functions (NETWORKDAYS, DATEDIF)
  • Experimental 'new record' button
  • Keyboard navigation improvements
  • ACL and code view sorting improvements
  • New environment variables (logging, i18n, attachment limits)
  • Grist Assistant improvements for Enterprise

Full Release Notes

## What's Changed
* You can now add Attachments fields to forms (thanks @mrdev023)
    - **Note:** there is a known issue with uploading attachments from forms in some multi-server environments. This is fixed in [v1.7.1](https://github.com/gristlabs/grist-core/releases/tag/v1.7.1).
* Widgets can now be duplicated, making it much easier to create page layouts that have similar underlying elements.
* New formula functions: NETWORKDAYS function and string support fpr DATEDIF (thanks @scytacki)
* There is now a "new record" button at the bottom of grid and detail views, gated behind an `?experiment=newRecordButton` feature flag in the browser URL (thanks @manuhabitela)
* Keyboard navigation has been improved (thanks @manuhabitela)
* Sort ACL and code view tables and wrap ACL rules by (submitted by @davidmh72, shepherded by @georgegevoian)
* Uploading attachments now shows a spinner (thanks @manuhabitela)
* New option to save page collapsed or expanded state in the left sidebar
* New Grist environment variables:
   - The undocumented `GRIST_HOSTED_VERSION` variable is now deprecated. Its main purpose was to change the style of logging outputs. Instead, now use the new variables `GRIST_LOG_AS_JSON` and `GRIST_LOG_API_DETAILS` (thanks @fflorent )
   -  `GRIST_TRUTHY_VALUES` and `GRIST_FALSY_VALUES` variables can be used for better internationalization of truthy and falsy values in Python formulas. (thanks @vviers) 
   - `GRIST_MAX_INTERNAL_ATTACHMENTS_BYTES` is an optional install-level limit for internal attachment storage
* Various translations and bug fixes.

### Grist Enterprise

* Improvements to the Grist assistant. Now it can do the following:
   - Create, rename, or remove pages, as well as add, update, and remove most widgets in pages.
   - Add custom widgets by URL.
   - Create [summary tables](https://support.getgrist.com/summary-tables/) from specified GROUP BY columns for new widgets.
   - Link widgets on the same page.


## New Contributors
* @mrdev023 made their first contribution in https://github.com/gristlabs/grist-core/pull/1655

**Full Changelog**: https://github.com/gristlabs/grist-core/compare/v1.6.1...v1.7.0
[Join our Discord Community](https://discord.gg/MYKpYQ3fbP) if you'd like to get into development of Grist.