Releases: datalab-org/datalab
v0.6.1
This patch release adds an API config option CONFIG.ROOT_PATH
to allow deployments to easily serve the API under a subpath (e.g., \api
) on the same subdomain as the app. It also features a new validation model for block data, which should currently have no user-facing effects, but will allow for more formal extensions of block schemas in the future.
What's Changed
- Add
DataBlockResponse
model to sanitizeblocks_obj
in API by @ml-evs in #1310 - Add
CONFIG.ROOT_PATH
option to deploy API from custom path by @ml-evs in #1315
Full Changelog: v0.6.0...v0.6.1
v0.6.0
This release includes a frankly comical number of changes, spanning significant new functionality and UI redesign, a fledgling plugin ecosystem, as well as several bug and quality-of-life fixes, performance improvements and backwards-compatible API enhancements.
A more regular release cadence will resume after the summer, with fewer release candidates next time around!
Warning
This release also bumps the supported MongoDB version all the way from v3 to v8. Whilst older MongoDB versions should still continue to work, version 8 will now be tested and used in the docker builds, so we recommend you upgrade. For existing databases this requires you to first dump the database using mongodump
with the old MongoDB version, then upgrade to the new version and restore the database with mongorestore
. If you unsure about this process then please ask us for help!
Highlights
- Extra functionality for all data tables: column selection, persistent user preferences and improved filtering.
- Improved inventory management: native UI for hazard labels, CAS numbers and external barcodes, complementing the first release of the
datalab-cheminventory-plugin
for two-way sync with cheminventory.net. - Starting materials can now also have synthesis information recorded for them.
- New blocks for UV-Vis data and in situ NMR data (developed in separate core plugin at
datalab-app-plugin-insitu
), as well as new file formats supported in the XRD (Rigaku's .rasx, variants of .xy), NMR (JCAMP-DX) blocks and media block (PDF documents). - A fledgling plugin ecosystem with ways to easily add new blocks to a specific datalab instance (docs), with
datalab-server
PyPI package for easier dependency management. - Improved item search throughout the API, removing the need to search on whitespace or punctuation delimited words (e.g., ID matches will now begin after just 3 characters, rather than needing to type a full ID).
- More powerful UI block interactions via "events" that can be written purely Python (docs).
Full Changelog: v0.5.2...v0.6.0
v0.6.0-rc.4
This release candidate makes some final fixes before the 0.6.0 release regarding the build procedure and updates several dependencies. There are also several UI improvements and bug fixes, particularly for the new in situ NMR and UV-Vis plugin, as well as the finalisation of the concept of datablock events.
Warning
This release bumps the supported MongoDB version all the way from v3 to v8. Whilst older MongoDB versions should still continue to work, version 8 will now be tested and used in the docker builds, so we recommend you upgrade. For existing databases this requires you to first dump the database using mongodump
with the old MongoDB version, then upgrade to the new version and restore the database with mongorestore
. If you unsure about this process then please ask us for help!
What's Changed
- Fix some PyPI metadata by @ml-evs in #1248
- Add note about inconsistencies in ways configs are specified by @ml-evs in #1252
- Replace crypto-browserify with simple js-md5 by @ml-evs in #1251
- Remove browersify stream polyfill by @ml-evs in #1253
- Bump the uppy ecosystem to v4 and fix styling by @ml-evs in #1255
- Bump navani and switch to galvani mirror by @ml-evs in #1273
- Add creators in SampleTable global search by @BenjaminCharmes in #1257
- Lift restriction on passing item type when updating via
/save-item
by @ml-evs in #1276 - Use OAuth2
prompt
to force login/account selection by provider by @ml-evs in #1270 - Display NotImplementedBlock when an unknown block type is encountered by @BenjaminCharmes in #1228
- Update the collection page table with the latest dynamic data table options by @BenjaminCharmes in #1225
- Fix for either over- or under-specific file permissions by @ml-evs in #1279
- Add custom UI for new in situ UV-Vis block by @be-smith in #1246
- Embed block version in base class by @ml-evs in #1281
- Add TOPAS-compatible .xy export to XRD block by @BenjaminCharmes in #1277
- Fix item selection dropdown missing scrollbar in synthesis info by @BenjaminCharmes in #1280
- Bump form-data from 4.0.1 to 4.0.4 in /webapp by @dependabot[bot] in #1284
- Bump cypress to v13.17.0 and disable Firefox tests temporarily by @ml-evs in #1290
- Add concept of block events and some design notes by @ml-evs in #1059
- Update Python dependencies,
uv
andliccheck
exceptions by @github-actions[bot] in #1002 - Improve and restructure README, plus other minor docs fixes by @yue-here in #1245
New Contributors
Full Changelog: v0.6.0-rc.3...v0.6.0-rc.4
v0.6.0-rc.3
If no issues arise, this will be the final release candidate for 0.6.0.
Warning
This release bumps the supported MongoDB version all the way from v3 to v8. Whilst older MongoDB versions should still continue to work, version 8 will now be tested and used in the docker builds, so we recommend you upgrade. For existing databases this requires you to first dump the database using mongodump
with the old MongoDB version, then upgrade to the new version and restore the database with mongorestore
. If you unsure about this process then please ask us for help!
What's Changed
- Update flask-cors requirement from ~=5.0 to ~=6.0 in /pydatalab by @dependabot in #1223
- Bump katex from 0.16.11 to 0.16.21 in /webapp by @dependabot in #1037
- Upgrade MongoDB to v8 by @ml-evs in #814
- Remove some vue-cli-plugins dev dependencies by @ml-evs in #1233
- Fix liccheck workflow and dependency ignores by @ml-evs in #1234
- Add README note linking to other DataLab by @ml-evs in #1236
- Bump astral-sh/setup-uv from 5 to 6 in the github-actions group by @dependabot in #1161
- Fix for molar mass validation with invalid formula of starting materials by @ml-evs in #1244
- Add relationships by
refcode
rather thanitem_id
from the UI by @BenjaminCharmes in #1227 - Prepare 0.6.0 release by @ml-evs in #1211
- Add exhaustive block API testing for all block types by @BenjaminCharmes in #1242
Full Changelog: v0.6.0-rc.2...v0.6.0-rc.3
v0.6.0-rc.2
What's Changed
- Add support for JCAMP-DX files in NMR block by @ml-evs in #1205
- Improve 1D Raman tests and extract more information from file headers by @ml-evs in #1216
- Remove untested remote backup functionality and dependency on paramiko by @ml-evs in #1217
- Remove ppm selection from in situ block in favour of the interactive plot by @ml-evs in #1215
- Add CIF->PXRD calculator and refactor XRD block to better show multiple patterns by @ml-evs in #1128
- Switch Raman block to use
renishawWire
package by @ml-evs in #1218 - Add blueprint level auth guards to graphs, users and remote filesystems endpoints by @ml-evs in #1219
- Limit batch interface to 100 items in UI and 10,000 via API by @BenjaminCharmes in #1213
- Avoid mentioning specific version in deployment docs and list
VUE_APP_*
env vars by @ml-evs in #1226
Full Changelog: v0.6.0-rc.1...v0.6.0-rc.2
v0.6.0-rc.1
What's Changed
- Add overlay while deleting multiple items by @BenjaminCharmes in #1054
- Attempt to bump uv to the 0.6.x series by @ml-evs in #1058
- Added support for rasx xrd files by @be-smith in #1067
- Add in situ NMR DataBlock as an app plugin by @BenjaminCharmes in #1040
- Bump docker/bake-action from 5 to 6 in the github-actions group by @dependabot in #1042
- Add upper pin to pymongo by @ml-evs in #1082
- Add pictogram UI components for hazard codes and use them for inventory by @BenjaminCharmes in #915
- Wrap block descriptions into block menu by @BenjaminCharmes in #1096
- Allow case-insensitive file extensions through file select dropdown by @ml-evs in #1094
- Make media block resizable by @jdbocarsly in #1099
- Add regex-based alternative to full-text search by @ml-evs in #1098
- Fix plugin loading not triggering on server startup by @BenjaminCharmes in #1087
- Bump elliptic from 6.6.0 to 6.6.1 in /webapp by @dependabot in #1075
- Add tests for hazard statement -> H-code -> pictogram mappings by @ml-evs in #1100
- Bump @babel/runtime from 7.26.0 to 7.26.10 in /webapp by @dependabot in #1076
- Add components to data tables for showing block and file count by @ml-evs in #1080
- Add search link to CAS Common Chemistry when CAS provided by @ml-evs in #1105
- Reset unsaved warning after
getSampleData()
receives data by @jdbocarsly in #606 - Fixed calling _format_ftir_plot method named when called to show data by @be-smith in #1107
- Fix Datatable sorting for Collections and Creators by @BenjaminCharmes in #1048
- Adjust block and file counter style by @ml-evs in #1109
- Dynamic page titles by @BenjaminCharmes in #1051
- Use
importlib
for plugin loading, fix test import order by @ml-evs in #1112 - Bump nanoid from 3.3.7 to 3.3.8 in /webapp by @dependabot in #1029
- Treat warnings in pytest as errors, fixing things along the way by @ml-evs in #1116
- Default to opening a new tab when clicking on the sample table by @BenjaminCharmes in #1123
- Fix oversharing regex search by @ml-evs in #1131
- NMR and XRD block improvements by @ml-evs in #1119
- Add PDF support in MediaBlock using an iframe by @ml-evs in #1129
- Update
yarn.lock
with latest dependencies by @github-actions in #1003 - Make the regex item search the default, and use '%' for full text search by @ml-evs in #1103
- CI build optimisations by @ml-evs in #1134
- Extend XRD block to be more flexible to different separators in xy files by @ml-evs in #1137
- Remove datatable-sort-badge when only one column is sorted by @BenjaminCharmes in #1110
- Revert JS dependency updates by @ml-evs in #1143
- Bump http-proxy-middleware from 2.0.7 to 2.0.9 in /webapp by @dependabot in #1144
- Bump insitu plugin to 0.1.4 by @ml-evs in #1147
- Add searching, filtering and sorting test in Datatable by @BenjaminCharmes in #1146
- Update galvani requirement from <0.5,~=0.4 to ~=0.5 in /pydatalab by @dependabot in #1081
- Add note about federation in README by @ml-evs in #1148
- Add a dropdown to display/hide columns in Datatable by @BenjaminCharmes in #1118
- Add labels in Datatable to be displayed in Multiselect by @BenjaminCharmes in #1152
- Add guard for block info loading to edit page by @ml-evs in #1149
- Rework
resources.js
when blocks require/do not require custom components by @ml-evs in #1154 - Give starting material location its own row in the UI by @ml-evs in #1157
- Added synthesis information to starting materials and made component collapsible by @be-smith in #1101
- UV-vis block by @be-smith in #1133
- Multiselect filtering for "no values" in nblocks column by @BenjaminCharmes in #1106
- Use localStorage for persistent column hiding in Datatable by @BenjaminCharmes in #1124
- Update deployment docs with more info on backups by @ml-evs in #1169
- Quality of life updates to the inventory: barcode display, richer data table by @ml-evs in #1163
- Add confirmation pop-up for file unlinking by @ml-evs in #1182
- Assorted fixes for starting materials in collections by @ml-evs in #1167
- Better handling of duplicate key errors in item creation by @ml-evs in #1156
- Allow runtime compose args to be set from environment variables by @ml-evs in #1183
- Improving column management in Datatable by @BenjaminCharmes in #1170
- Do not update 'files' reference when saving item by @ml-evs in #1055
- Use PyPI release of navani 0.1.11 and bump in situ plugin by @be-smith in #1187
- Fix DataTable select-all when sorting is applied by @BenjaminCharmes in #1189
- Give collection title and creators list their own rows by @ml-evs in #1193
- Remove explicit dependency on
galvani
andNewareNDA
now they are provided bynavani
by @ml-evs in #1197 - Updating several dependencies in
uv.lock
by @ml-evs in #1199 - Improvements to docs rendering for models and datablocks by @ml-evs in #1200
- Bump pyupgrade to use
--py310-plus
, causing many type hint improvements by @ml-evs in #1201 - Set DataTable loading state when loading from store by @ml-evs in #1195
- Add release workflow for PyPI/ghcr.io and automated license checking by @ml-evs in #1198
- Delete large keys (e.g., bokeh_plot_data) when sending and before receiving updated block data by @ml-evs in #1207
- Use
tool.uv.sources
to specify in situ plugin git dependency in pyproject by @ml-evs in #1209 - Fix docker release workflow by @ml-evs in #1210
- Refactor app block loading to prevent optional dependencies from breaking dev builds by @ml-evs in #1188
Full Changelog: v0.5.2...v0.6.0-rc.1
v0.5.3-rc.7
What's Changed
Full Changelog: v0.5.3-rc.6...v0.5.3-rc.7
v0.5.3-rc.6
This release candidate simply checks the new release workflow functionality
What's Changed
Full Changelog: v0.5.3-rc.5...v0.5.3-rc.6
v0.5.3-rc.5
Final release candidate before releasing 0.6.0, skipping this 0.5.3 version number in the end. This should trigger the first successful pre-release to PyPI.
What's Changed
- Do not update 'files' reference when saving item by @ml-evs in #1055
- Use PyPI release of navani 0.1.11 and bump in situ plugin by @be-smith in #1187
- Fix DataTable select-all when sorting is applied by @BenjaminCharmes in #1189
- Give collection title and creators list their own rows by @ml-evs in #1193
- Remove explicit dependency on
galvani
andNewareNDA
now they are provided bynavani
by @ml-evs in #1197 - Updating several dependencies in
uv.lock
by @ml-evs in #1199 - Improvements to docs rendering for models and datablocks by @ml-evs in #1200
- Bump pyupgrade to use
--py310-plus
, causing many type hint improvements by @ml-evs in #1201 - Set DataTable loading state when loading from store by @ml-evs in #1195
- Add release workflow for PyPI/ghcr.io and automated license checking by @ml-evs in #1198
- Delete large keys (e.g., bokeh_plot_data) when sending and before receiving updated block data by @ml-evs in #1207
Full Changelog: v0.5.3-rc.4...v0.5.3-rc.5
v0.5.3-rc.4
Should be the final release candidate for this series. Includes the final round of features (UV-vis block, persistent table settings, better inventory management and other QoL fixes).
What's Changed
- UV-vis block by @be-smith in #1133
- Multiselect filtering for "no values" in nblocks column by @BenjaminCharmes in #1106
- Use localStorage for persistent column hiding in Datatable by @BenjaminCharmes in #1124
- Update deployment docs with more info on backups by @ml-evs in #1169
- Quality of life updates to the inventory: barcode display, richer data table by @ml-evs in #1163
- Add confirmation pop-up for file unlinking by @ml-evs in #1182
- Assorted fixes for starting materials in collections by @ml-evs in #1167
- Better handling of duplicate key errors in item creation by @ml-evs in #1156
- Allow runtime compose args to be set from environment variables by @ml-evs in #1183
- Improving column management in Datatable by @BenjaminCharmes in #1170
Full Changelog: v0.5.3-rc.3...v0.5.3-rc.4