Saltcorn 1.4 - Real-time collaboration

By Tom Nielsen
Published on 

I am delighted to announce the release of Saltcorn 1.4.0. This is the third major release of Saltcorn, a no-code platform for building web and mobile database applications. The focus for this release was to get a working implementation of the major features in the current scope so that in the future we can focus on polishing this feature set. This blog post features the highlights; for more changes see the changelog.

In this release we introduced real-time collaboration such that both views and workflows can push interactions to the user driven by the server. There are several different mechanisms for this but ultimately they rely on the same websocket connection. 

We have created a facility for view patterns to add real-time collaboration capabilities and tie this to inserts and updates on the table they are displaying data from. Some examples of this are: 

  • In Kanban views from the kanban module, if more than one user is looking at the same board and one user is making changes then cards will move on other users' screens
  • In the Edit view, real time updates can be enabled. Any changes made in a field on a row will be seen by other users looking at the same form of the same row. The TinyMCE rich text editor has been enabled to dynamically update contents in string and HTML Fields, allowing you to build a collaborative document editor.
  • In the AI agent views, text can be streamed as it is generated by the LLM model.

In addition to these view based changes there are a set of facilities for scripts and workflows to push updates and other commands to the user's screen. In scripts (run_js_code) these are accessed with the emit_to_client function which is called with the same type of object that is used at the end of the script to send directives for toast notifications, redirecting the page or loading a pop-up view. In workflows steps with these effects are already interactive. Both workflows and other actions now have an option to run asynchronously for better reliability with long running tasks. 

Push notifications are now available for web applications and progressive web applications. This allows you to push messages to the user's lock screen or desktop, and is useful for instance for notifications to a company's employees, either individually, as a group or to everyone.

The List view has seen many improvements to bring it in line with the Tabulator view. In general list views are faster and we now recommend using these unless you need the spreadsheet-like editing provided by Tabulator. Some of the improvements: the list view are:

  • Visual improvements around button sizes and vertical alignment
  • There is now an option for header filters which can be a quick way of filtering content
  • Responsive collapse functionality where the content is displayed vertically on small screen devices 
  • Column can now consist of containers and multiple elements. Containers increase the display flexibility and multiple elements could help you for instance to have a full multiline address in a column

The Edit view also received several improvements. Login and sign up are now available from any edit view on the users table, which means you could put the login form directly on the first page or in a drop-down, a popup or an accordion. In addition view embeddings are now live so if they are based on a relationship and you change that in a field then the embedded view will change.

Backup to S3 and S3 compatible object storage systems is now an option.

Two security issues were found by luriel of Hakai security, and are fixed in this release. One allowed a logged-in user changing their password in the user settings form to bypass the check of their existing password, and the other allowed users to upload content, that if accessed by other users could lead to session hijacking. 

Notable new modules:

Agents: agents are the latest step in an evolution that started with workflow rooms to enable ai-based workflows with a fixed execution pattern (for instance, RAG), then the user CoPilot in the copilot module, and now agents allow you to give an LLM a greater diversity of tools to enhance its capabilities. These can be used in a chat interface or as a standard action

Record-and-rerun: this module allows you to record user interactions that can then be replayed in a headless browser to check if they are still working. The idea is that you can test the functionality of your application to ensure that it is still working after updating Saltcorn or making changes to your application build. 

Postgres-tables: this module enables you to use tables from another postgresql database. The tables are both readable and writable, and you can have relationships between tables on the same database

Overlays: the overlays module enables you to build views that appear in a fixed position on the page, triggered as an action. You can use this for agent/customer support chat or for links you want to have always available on the page (if you use the PageLoad trigger condition).

The next few major releases of Saltcorn will focus on incremental improvements to bring greater stability and reliability, and a better experience for users and app builders. Between 1.0 and 1.4, odd releases (1.1.x and 1.3.x) were treated as development releases. We are now moving to a model where all whole releases (not marked as beta or release candidate) are stable releases. The next stable major release will therefore be 1.5.0. We will also make an effort to backport more small and non-disruptive changes to 1.4.x so we should see a 1.4.1 soon.

This 1.4.0 release marks a point at which I (Tom) am satisfied with the broad scope, if not the level of refinement, of the major user-visible features in Saltcorn. Now I am looking for a greater involvement of the community in directling the future development. There are already a lot of good ideas on the GitHub issues board. In the near future I would like to develop an application hub for the community to direct the future development of Saltcorn.


Recent posts