0.8.0
Welcome to Excalibur 0.8! This release improves the Excalibur Encryption Format, which enhances both security and performance. Expect a significant speed-up when encrypting and decrypting files when using the new encryption format.
The Excalibur documentation website was also updated in this release.
If you are developing a custom Excalibur client, please read the 0.8 upgrade guide to learn how to interact with Excalibur 0.8 servers. If you are using the official app and server, there is no need to follow the upgrade guide.
Read all about the changes to Excalibur below. Enjoy!
Appโ
๐๏ธ Securityโ
-
๐๏ธ Overridden version minima of dependencies in
pnpm-workspace.yamlto address security vulnerabilities:- GHSA-6mj3-qw4j-hgrw, GHSA-g53g-w8rj-fmg7, GHSA-w2rr-34g9-rvrj, GHSA-4w3w-2rp5-g8jm, GHSA-c7q8-3ch8-vqpv, GHSA-27p8-2357-5qqv, GHSA-3px3-54cx-rmw9, GHSA-vr34-hp96-76pp, GHSA-8344-3jmq-59r6, GHSA-965w-775f-mr7g, GHSA-93r5-fhx6-vmg9, GHSA-6gmq-8vp8-gcm6, GHSA-6h8r-xr42-gp59:
@xmldom/xmldomto0.9.12 - GHSA-c83g-rgw3-j3cx, GHSA-73wf-gq98-2v4g:
browserslistto4.28.7 - GHSA-2883-xcg3-v3hh:
js-yamlto4.3.2 - GHSA-5jgf-p345-68v8, GHSA-f65p-4m7j-42xc, GHSA-fph4-wmhf-6fwf, GHSA-jqff-g426-hqxp:
fast-urito3.1.6 - GHSA-x5fp-wj9c-mxmx, GHSA-4mjr-xmp4-gh2g:
qsto6.16.0 - GHSA-rgj7-g3m4-5g8c:
sharpto0.35.4
- GHSA-6mj3-qw4j-hgrw, GHSA-g53g-w8rj-fmg7, GHSA-w2rr-34g9-rvrj, GHSA-4w3w-2rp5-g8jm, GHSA-c7q8-3ch8-vqpv, GHSA-27p8-2357-5qqv, GHSA-3px3-54cx-rmw9, GHSA-vr34-hp96-76pp, GHSA-8344-3jmq-59r6, GHSA-965w-775f-mr7g, GHSA-93r5-fhx6-vmg9, GHSA-6gmq-8vp8-gcm6, GHSA-6h8r-xr42-gp59:
โจ New Featuresโ
- โจ All new encryption performed on the app will now use the Excalibur Encryption Format (ExEF) version 4
- Read about the performance improvements below
- ๐ง Added new "file read chunk size" setting to configure file reading operations
๐ Changesโ
- ๐ฌ The displayed value of the file size will now include the ExEF overhead (previously it would have been the raw plaintext size)
โก๏ธ Performance Improvementsโ
-
โก๏ธ Use
@noble/ciphers'swebcrypto.jsimplementation for ExEF v4 instead of theaes.jsimplementation-
Benchmarking shows that
webcrypto.jsencryption/decryption is ~35x faster thanaes.js=================================== 64 KiB ====================================aes.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 40.7 mswebcrypto.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 0.7 msโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ0 45=================================== 256 KiB ===================================aes.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 52.5 mswebcrypto.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 1 msโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ0 55==================================== 1 MiB ====================================aes.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 182.4 mswebcrypto.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 9.4 msโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ0 200==================================== 4 MiB ====================================aes.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 732.9 mswebcrypto.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 30.7 msโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ0 750=================================== 16 MiB ====================================aes.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 2888.9 mswebcrypto.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 85.7 msโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ0 3000=================================== 64 MiB ====================================aes.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 11506 mswebcrypto.js โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 439.9 msโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ0 12000 -
This performance improvement only applies to ExEF files and streams. ExEF v3 files do not enjoy this performance improvement (as they still rely on a single-chunk encryption/decryption process)
-
-
โก๏ธ Slightly improved performance of encryption/decryption operations by removing stream chunking.
- We no longer pre-chunk streams before passing them to the encryption/decryption functions as ExEF v4 handles chunking internally.
โฌ๏ธ Dependenciesโ
-
โฌ๏ธ Updated Android dependencies:
androidxAppCompatVersionfrom1.7.1to1.8.0
-
โฌ๏ธ Updated Capacitor dependencies (#151):
@capacitor/androidfrom8.4.0to8.5.0@capacitor/corefrom8.4.0to8.5.0
-
โฌ๏ธ Updated React dependencies (#149):
reactfrom19.2.7to19.2.8react-domfrom19.2.7to19.2.8@types/reactdevelopment dependency from19.2.7to19.2.8
-
โฌ๏ธ Updated
@capacitor/filesystemfrom8.1.2to8.1.3(#169) -
โฌ๏ธ Updated
@noble/ciphersfrom2.2.0to2.4.0(#148, #177) -
โฌ๏ธ Updated
@noble/hashesfrom2.2.0to2.3.0(#147) -
โฌ๏ธ Updated
immerfrom11.1.15to11.1.18(#171) -
โฌ๏ธ Updated
ioniconsfrom8.0.13to8.1.0(#152) -
โฌ๏ธ Updated
baseline-browser-mappingdevelopment dependency from2.10.44to2.11.19(#167) -
โฌ๏ธ Updated
cypressdevelopment dependency from15.20.0to15.21.0(#150, #162) -
โฌ๏ธ Updated
eslint-plugin-react-refreshdevelopment dependency from0.5.3to0.5.4(#154) -
โฌ๏ธ Updated
start-server-and-testdevelopment dependency from3.0.11to3.0.12(#156) -
โฌ๏ธ Updated
typescript-eslintdevelopment dependency from8.66.0to8.69.0(#172, #175) -
โฌ๏ธ Updated
vitestdevelopment dependency from4.1.10to4.1.11(#176)
Serverโ
๐ฅ Breaking Changesโ
-
๐ฅ All encryption performed on the server will now use the Excalibur Encryption Format (ExEF) version 4
- ExEF v3 is no longer supported
- This affects all routes that require encryption, including file uploads and downloads
Please read the documentation for the ExEF v4 specification to learn how to handle ExEF v4 data.
-
๐ฅ Changed how authentication works for WebSocket endpoints
- Please see the updated documentation for "authenticating subsequent requests"
-
๐ฅ Removed
include_exef_sizequery parameter from the following endpoints:/api/files/search/api/files/list/{path}
The behaviour now is to always include the ExEF additional size (i.e., header and, possibly, footer) in file sizes.
-
๐๏ธ Removed the
/api/well-known/infoendpoint- The maximum upload size and times required to compute the time offset will be sent along with login responses
- To get the version, use the
/api/well-known/versionendpoint instead
-
๐ฅ We will now use
uv's0.12.xseries to build and install the server package, updating the minimum version from0.11.26inpyproject.tomland GitHub actions to0.12.13
๐๏ธ Deprecationsโ
- โฐ๏ธ Removed ExEF v3 code
- ๐๏ธ Removed the
excalibur user addcommand- User creation must now be done through the API
โฌ๏ธ Dependenciesโ
- โฌ๏ธ Updated
alembicfrom1.18.5to1.19.1(#146) - โฌ๏ธ Updated
gitpythonfrom3.1.58to3.1.59(#145) - โฌ๏ธ Updated
packagingfrom26.2to26.3(#160) - โฌ๏ธ Updated
pydantic-settingsfrom2.14.2to2.15.0(#143) - โฌ๏ธ Updated
uvicornfrom0.52.0to0.52.4(#158) - โฌ๏ธ Updated
ipythondevelopment dependency from9.15.0to9.16.1(#144) - โฌ๏ธ Updated
ruffdevelopment dependency from0.16.1to0.16.3(#161) - โฌ๏ธ Updated
httpx2test dependency from2.9.1to2.12.0(#142, #159)