2.5 - November 2023
After months of work, we are excited to bring you Olympe v2.5! As always, a new release comes with a bunch of features: like the brand new Offline Mode and also the improved Error Handling. Still, we took great care to fix bugs encountered in the v2.4.x, the plateform should feel more stable and reliable overall.
If you wish to get straight into the action, you can jump directly here. Or if you want more details about the major and minor changes of this release, stick around and continue reading.
We already started work on Olympe v2.6, which will come out in a few months. We are dedicated to bringing you the next batch of improvements and new features. Until then, enjoy Olympe v2.5!
Major features
Offline Mode
Long awaited, we are happy to announce that the Offline Mode is now available. This new feature allows to build applications that don't need internet access to work, for example for the people taking measurements on remote fields directly. Offline data generated are then automatically synchronized back when the app is online again.
You can find out how to use the Offline Mode here.
Progressive Web App (PWA)
PWA allows to distribute your Olympe application directly on the user's phone for example. This is a great new way for distributing your business to your end-users.
We wrote a complete tutorial on how to build PWA here.
Error Handling
The previous iteration of the error handling was build around the concept of Error Flow
and multiplexers. This simple but complete approach was easy to use, but didn't scale very well for more complex project. The whole concept was improved to be both more robust and easier to use for developers.
We also dedicated a whole page to this subject here.
Improvements and other new features
Aside of the major features, many bugs were fixed and many improvements were made. Here is an exhaustive list (see the dedicated pages the major features related changes).
Olympe DRAW
- Adjusted colors in the color picker
- Helpers are saved within the datamodel parent folder
- Extending data types are now checked for being imported in the runtime dataset
- Promote now works also in lambdas
- Enum inline editor doesn't crash anymore if the selected value is not a cloudobject
- Fixed an issue with the logic editor for specific cases (cloning brick)
- Make inherited datatype name in the datamodel editor not editable
- Various small bug-fixes and improvements
Olympe CODE and runtimes
- Implement refresh token strategy for Olympe Token
- Refine communication layers to work with Offline
- Remove legacy unused bricks from Primordial
- Add more unit tests for specific part of the framework
- Fixed empty result when executing twice the same subscription
- Improved error messages with queries API
- Serialization error of remote action response is now correctly caught
- Allow
VisualBrick.setParentElement()
to be called several times - Various small bug-fixes and improvements
Olympe CORE and extensions
Label height and List's elements height can now be content-dynamic:
New
executeLambda()
helper in CORE (more info here):
import { executeLambda } from '@olympeio/core';
// ...
const [output0, output1, output2] = await executeLambda($, 'myLambdaName', [input0, input1, input2]);
- Useful bricks moved from the Commons extension to CORE directly
- Fixed Dropdown crash when there is no input for the enum
- Transaction with multiple updates on the same property now works properly
- Http bricks now handles all errors correctly
- Mapbox Map can now use
QueryResult
as an input for markers - Fixed a race condition in Matomo bricks
- SQL Query Executor now includes filtered properties for non-returned levels
- Show global backdrop: allow real-time update of label
- Visual Repeater has been renamed to Renderer
- Query predicates now handles the case sensitivity parameter correctly
- Label is now centered when wrapped
- New helpers bricks: Is List Empty
- Set Object Property now throws an error if the property doesn't exist for the given object
- Better error messages for the Excel extension
- Dialog component is faster, and its padding can now be controlled
- Various small bug-fixes and improvements
Use v2.5.0
- Olympe DRAW v2.5.0 / CODE v9.5.0 / Extensions v2.5.0 / Orchestrator v7.1.4 / DevTools v2.5.0
To check that your Olympe environment is on v2.5.0: log in DRAW and click on the top-right logo, you'll see the current version you are using:
If you are using coded bricks or your own environment, please continue reading the next section.
CODE update
If you are using coded bricks, please update your package.json
file with the following dependencies:
// Dev dependencies:
"@olympeio/dev-tools": "2.5.0",
"@olympeio/draw": "2.5.0",
// Dependencies
"@olympeio/runtime-web": "9.5.0",
"@olympeio/runtime-node": "9.5.0",
"@olympeio/core": "2.5.0"
// Olympe Extensions
"@olympeio-extensions/...": "2.5.0"
Breaking Changes
The CODE API has had some reworks and improvements. This leads to some deprecation and breaking changes.
Transaction.persistInstance()
has been deprecated in favor ofTransaction.persist()
:
// Before v2.5:
myTransaction.persistInstance(myInstance);
myTransaction.persistInstance(myInstance2, false);
// Since v2.5:
myTransaction.persist(myInstance);
myTransaction.persist(myInstance2, false);
- Thus
Transaction.persist()
has been replaced by theTransaction
constructor:
// Before v2.5:
myTransaction.persist();
myTransaction.persist(false);
// Since v2.5:
const myTransaction = new Transaction();
const myTransaction2 = new Transaction(false);
- The
Transaction
constructor default value has been inversed:
// Before v2.5:
const myTransaction = new Transaction(); // Default = false
const myTransaction2 = new Transaction(true);
// Since v2.5:
const myTransaction = new Transaction(); // Default = true
const myTransaction2 = new Transaction(false);
Query.execute()
doesn't take the context as first parameter anymore:
// Before v2.5:
Query.instancesOf(MyType).execute($);
Query.instancesOf(MyType2).execute($, {cacheBucketName: 'myBucket'});
// Since v2.5:
Query.instancesOf(MyType).execute();
Query.instancesOf(MyType2).execute({cacheBucketName: 'myBucket'});
- The type
Tag
has been replaced byInstanceOrTag
for more clarity.
Review these updates and make any necessary changes to your code to ensure compatibility with the new versions.
Other dependencies updates
We have updated some dependencies packages used in version 2.4.x of the platform. These updates include:
// RxJS used in the Olympe API to be event driven
"rxjs": "7.8.1",
// For MUI visual components
"@emotion/react": "11.11.0",
"@emotion/styled": "11.11.0",
"@mui/material": "5.13.2",
Review these updates and make any necessary changes to your code to ensure compatibility with the new versions.
Without being mandatory, we also highly recommend to update DevDependencies of your projects with the following versions:
// Babel dependencies (JSX compilation)
"@babel/core": "7.23.2",
"@babel/preset-env": "7.22.20",
"@babel/preset-react": "7.22.0",
"babel-loader": "9.1.2",
// Webpack and plugins
"clean-webpack-plugin": "4.0.0",
"copy-webpack-plugin": "11.0.0",
"generate-json-webpack-plugin": "2.0.0",
"source-map-loader": "4.0.1",
"webpack": "5.89.0",
"webpack-cli": "5.0.1",
"webpack-dev-server": "4.15.1",
"webpack-import-glob-loader": "1.6.3",
"webpack-merge": "5.10.0",
"webpack-node-externals": "3.0.0",
// Jasmine and Karma for unit tests
"jasmine": "4.6.0",
"karma-jasmine": "5.1.0",
"karma-webpack": "5.0.0",
"karma": "6.4.2",
"karma-chrome-launcher": "3.2.0",
"karma-spec-reporter": "0.0.36",
// Typescript compiler
"ts-loader": "9.5.0",
"typescript": "5.2.2"