Releases: scalableminds/webknossos
Releases · scalableminds/webknossos
25.10.0
- Docker Image
scalableminds/webknossos:25.10.0
🐳 - Changelog
- Commits
Highlights
- Added a new multi cut mode to the proofreading tool, allowing more precise agglomerate splits. Instead of marking just one point per partition, users can now specify multiple points for each side of the split before performing the cut. #8824
Added
- When starting an inference job on a dataset with inverted intensity values, that inversion now also applies in the inference job. #8796
- Added a new multi cut mode to the proofreading tool, allowing more precise agglomerate splits. Instead of marking just one point per partition, users can now specify multiple points for each side of the split before performing the cut. #8824
- Added the option to log out from all devices. #8850
- Added a placeholder to the voxel size input field in the upload form. #8876
- Added new camera positioning option for animations. #8909
Changed
- Use blosc-java instead of jblosc. #8882
- The webknossos-worker jobs export_tiff and render_animation are now allowed also for public datasets of other organizations. #8911
Fixed
- Fixed that segmentation layer names were incorrectly displayed as obfuscated strings (tracing ids) in the viewport status indicator when viewing areas with missing data (e.g. at certain zoom levels). #8865
- Fixed a bug where reading zarr3 data would return failures instead of the fill value if requested source chunks don’t exist. #8885
- Fixed a bug where zarr streaming could fail for volume annotations that have a larger bbox than their fallback layer. (Some of those were created before #7580) #8888
- Fixed that pressing AltGr, Ctrl or Command closed the authentication modal when viewing a public dataset. #8895
- Fixed a bug where annotation updates would fail if multiple annotation layers are renamed such that a previously-taken name is then used by another layer. #8896
- Fixed that the frontend requested ad-hoc meshes with out-of-layer-bounds coordinates. #8901
- Fixed loading ad-hoc-computed meshes for static segmentation layers. #8903
- Ad hoc mesh requests loading infinitely. #8915
- Fix periodic polling of missing updates when another user edits an annotation. #8919
- Fixed WK crashing when navigating between pages while maintenance banner is visible. #8925
- Fixed navbar height when navigating between pages while maintenance banner is visible. #8925
- Fixed running custom-model worker inferences with models shared from other wk organizations. #4283 #8926
- Fixed a bug in reading zarr3-format connectome files caused by a wrong metadata key #8927
25.09.0
- Docker Image
scalableminds/webknossos:25.09.0
🐳 - Changelog
- Commits
Highlights
- Added the possibility to rotate the planes in ortho view. While rotated, volume annotation is disabled. #8614
- Implement Authentication with Passkeys. #8393
- Added support for training and running AI instance segmentation models from WK UI. #8849
Added
- Implement Authentication with Passkeys. #8393
- Added the possibility to rotate the planes in ortho view. While rotated, volume annotation is disabled. #8614
- A user can now update the email address of their account by themselves. #8671
- The dashboard dataset search now supports searching for dataset ids. #8791
- Added the config option
features.registerToDefaultOrgaEnabled
(default true) to allow admins to disable the normal registration flow to the default organization. If it is false, SSO or invites are required. #8807 - Editable mapping (aka supervoxel proofreading) annotations can now be downloaded and the edited edges are included in a zarr3-based format. Note that re-upload is not yet implemented. #8816
- Added support for training and running AI instance segmentation models from WK UI. #8849
- Added support for the layersToLink format as the webknossos-libs currently send it (datasetId as datasetName) #8861
- Added the config option
silhouette.cookieAuthenticator.sameSite
to control the relevant cookie header in order to allow iframe usage if desired for a particular WEBKNOSSOS instance. #8862 - Updated backend dependencies for improved stability and performance. #8863
- Add tracingstore route to export agglomerate graph as protobuf, to be used by the python client. #8872
Changed
- Before starting a neuron segmentation with
Evaluation Settings
enabled, it is checked that a useful bounding box was selected and that some skeletons exist within the annotation, preventing the job from failing. #8678 - A new directory is no longer created for new remote or composed datasets. #8708
- Refactored dataset settings and child tabs as React functional components. #8719
- Updated the UI of the dataset settings to be more accessible. #8732
- Updated React Router from v5.x to v6.x. #8739
- The backend can now return the update actions of an annotation per version in a truncated format to avoid too large responses. This does not impact restoring versions of annotations. #8757
- Changed that the d/f switching setting no longer affects movements other than moving via the d/f keyboard shortcuts. #8786
- Explicitly scanning datasets on disk is now faster for multi-organization setups. #8791
- Integrated "Change Email" functionality into Account Settings #8840
- When adding a new dataset from UI modal, the organization's default team is now automatically pre-selected for dataset access permissions. #8847
- Zarr streaming a volume annotation will now respond with errors (500) if the underlying data encountered errors. #8853
- datasource-properties.jsons with wkwResolutions now do not need the cubeLength parameter anymore. #8854
- Added protection against server outages by limiting the number of update actions in an annotation update transaction to 1000000. #8866
- Remove left over occurrence of
SELECT *
statement in backend. Added assertions to CI to ensure that theSELECT *
statement is not used in the backend. #8867
Fixed
- Fixed that the skeleton tab was not always reflecting the active tree. This makes it easier to navigate between comments and trees, for example. #8689
- Reject bucket request responses with unexpected size and try to reload those buckets automatically. #8776
- Fixed a bug where moving folders in the dashboard would sometimes fail with an SQL error. #8793
- Fixed loading meshes for remote neuroglancer datasets if they need credentials. #8795
- Fixed a bug where reading large zarr3 layer attachments would sometimes fail for some values due to an integer overflow. #8798
- Fixed a bug where the zarr.json included in volume annotation zarr downloads would miss the compression codec even though the chunks were compressed. #8800
- When renaming skeletons or skeleton groups, it is now possible to select a part of the name. #8801
- The view to change ones email address is now available in the top right dropdown menu of the navbar. #8806
- In transformed datasets, the natively rendered layer is now encoded in the sharing link. This prevents jumping to a different position when opening the link. #8809
- Fixed viewing a dataset zoomed far out which has rotations configured in the dataset settings Data Source tab. #8819
- Fixed that the floodfilling tool in 2D mode and without a bounding box restriction was only filling a slice of the selected area. #8828
- Fixed a bug that impacted some proofreading interactions when e.g. splitting an agglomerate. #8830
- Fixed a bug where hdf5 attachments explicitly mentioned in the datasource-properties.json would not be readable if they have an absolute path but no
file://
prefix. #8832 - Fixed a bug where layer attachments with relative paths would not be read correctly. #8834
- Fix loading segment statistics like segment volume and segment bounding box for N-Dimensional datasets and annotations. #8837
- WK crashing when changing the color of an empty segment group. #8868
Removed
- An administrator of the organization can no longer update a users email address. This has to be done by the user themselves. #8671
Breaking Changes
- Datasets are now referenced by their ID instead of the combination of the organization and the directory name. #8708
- Newly uploaded datasets do not use the
wkwResolutions
property anymore, but instead usemags
like imported remote datasets. #8708 - Interacting with newly created datasets requires libraries to support API version of 10 or higher. #8708
25.07.1
- Docker Image
scalableminds/webknossos:25.07.1
🐳 - Changelog
- Commits
Highlights
- When you are viewing an annotation and another user changes that annotation, these changes will be automatically shown. For some changes (e.g., when adding a new annotation layer), you will still need to reload the page, but most of the time WEBKNOSSOS will update the annotation automatically. #8648
Added
- Segment index files can now also be read from the new zarr3-based format, and from remote object storage. #8711
- Connectomes can now also be read from the new zarr3-based format, and from remote object storage. #8717
Changed
- Compound annotations (merged views of finished task annotations) now show the task bounding boxes. #8735
- Adapted zarr mesh loading to skip segments missing in the meshfile. This was already the case for the hdf5 variant. #8771
- Users of organizations with a trial pricing plan can now join other organizations as guests. #8772
Fixed
- Fixed a bug where segment index files for segmentation layers with no mag1 would be read incorrectly. #8711
- Fixed a bug where authentication tokens would sometimes expire too soon. #8738
- Fixed a bug where duplicating a compound annotation would fail if it has volume annotation layers. #8743
- Fixed that compound (merged) views of tasks, projects and task types would sometimes show outdated annotation data, leaving out the data from recently finished tasks annotations. #8756
- Fixed a bug where dataset layer attachments with absolute paths would not get loaded unless the paths are specified with file:// scheme. #8761
- Fixed that WEBKNOSSOS would crash directly if the communication with the server was interrupted while using the proofreading tool. #8767
- Fixed a bug where WEBKNOSSOS would show an error toast for volume annotations that have no fallback segmentation layer. #8768
- Fixed broken node selection in 3d viewport when continuous drawing was enabled in skeleton tool. #8769
- Fixed layer linking to support non-WKW layers. #8773
25.07.0
- Docker Image
scalableminds/webknossos:25.07.0
🐳 - Changelog
- Commits
Highlights
- Added the ability to duplicate trees in skeleton annotations. Users can create a copy of any tree (including all nodes, edges, and properties) via the context menu in the skeleton tab. #8662
- Added a new Account Settings page for managing user preferences, passwords and authentication methods. #8672
- Improved efficiency of saving bounding box related annotation changes. #8492
Added
- In shared annotations with multiple authors, some changes are now stored per user. This means that other users won’t see all those changes if their own diverge. This includes the current position and zoom, visibilities of trees, bounding boxes, and segments (as specified with the checkboxes in the lists), as well as which groups are expanded in the lists. The annotation owner’s user state is used as a fallback for users who haven’t explicitly changed these values themselves. #8542
- Meshes are now reloaded using their previous opacity value. #8622
- Agglomerate Mappings can now also be read from the new zarr3-based format, and from remote object storage. #8633
- Added the ability to duplicate trees in skeleton annotations. Users can create a copy of any tree (including all nodes, edges, and properties) via the context menu in the skeleton tab. #8662
- Added a new Account Settings page for managing user preferences, passwords and authentication methods. #8672
- Precomputed Meshes can now also be read from the new zarr3-based format, and from remote object storage. #8682
- Added Zstandard support for N5 #8703
- WKW datasets can now also have custom paths in their datasource-properties.json. #8725
Changed
- The datasource-properties.json as exposed in zarr streaming routes and volume annotation download now includes an explicit “path” attribute for every mag. The supplied path is relative to the location of the datasource-properties.json itself, e.g.
./color/2-2-1
. #8518 - When creating an annotation from the dataset view mode, and more than one segmentation layer is visible or multiple segmentation layers are invisible but available, a selection modal now appears allowing users to choose which segmentation layer to use for the newly created volume annotation. Per default, annotations are still based on the visible segmentation layer. #8677
- Updated the UI for the organizations settings page. #8679
- Changed the process for adding changelog and migration guide items to avoid merge conflicts. Instead of editing the "*.unreleased.md" files, developers should run
python3 tools/create-changelog-entry.py
. This will create a md file withinunreleased_changes
with the number of the current pull request. The file will contain the correct format with dummy values for the changelog and migration guide. The developer should adapt the template and commit it. When bundling a release, these changelog files will be read and written into the released changelog/migration guide. #8698 - The HTTP API of tracing store and data store endpoints now also support versioning for better compatibility across webknossos-libs python clients. #8705
- Replaced withRouter HOC with useHistory hook for several components. #8721
Fixed
- Improved efficiency of saving bounding box related annotation changes. #8492
- When deleting a dataset, its caches are cleared, so that if a new dataset by the same name is uploaded afterwards, only new data is loaded. #8638
- Fixed a race condition when starting proofreading with a split action. #8676
- Fixed that the healthcheck for a dedicated tracing store would fail sometimes. #8683
- Fixed that activating a mapping got stuck when a dataset was opened in "view" mode. #8687
- Fixed the contrast of the WelcomeToast buttons. Updated
antd
to version5.22
. #8688 - Fixed a regression that led to incorrect behavior when trying to jump to the last branchpoint even though no branchpoint existed. #8695
- Fixed the sandbox mode for annotations. #8702
- Fixed the nightly screenshot tests. #8702
- Fixed that one could not scroll to the last item in the segments and trees tab. #8709
- Fixed that WEBKNOSSOS could crash when mappings were requested for a volume layer that is not based on another segmentation layer. #8710
- Fixed a crash when an ad-hoc mesh could not be loaded for some reason. #8716
- Fixed a bug where the checks on relative paths were too strict when editing dataset settings. #8720
- Fixed a bug when loading mesh files for segmentation layer without fallback data. Such layer cannot have mesh files. #8726
- Fixed reading chunks from arrays where the whole shard is missing (should return fill_value) #8727
- Fixed fetching mesh files in view only mode. Bug introduced by #8726 #8728
- Fixed that on dataset upload the storage usage would get scanned even if it is disabled in config for that particular data store server. #8733
25.06.2
- Docker Image
scalableminds/webknossos:25.06.2
🐳 - Changelog
- Commits
Fixed
- Fixed a regression that led to incorrect behavior when trying to jump to the last branchpoint even though no branchpoint existed. #8695
25.06.1
- Docker Image
scalableminds/webknossos:25.06.1
🐳 - Changelog
- Commits
Fixed
- Fixed viewing the results of volume annotation tasks in compound view. #8668
25.06.0
- Docker Image
scalableminds/webknossos:25.06.0
🐳 - Changelog
- Commits
Highlights
- Meshes of Neuroglancer Precomputed Datasets can now be viewed. #8236
- Added checkboxes to the segments tab that allow to show/hide individual segments. The visibility of segments that are not listed in the segments list can be controlled with a new "Hide unlisted segments" toggle in the layer settings. Additionally, you can right-click a segment in a data viewport and select "Only show this segment" (and similar functionality). #8546
- Instead of pasting a dataset position from the clipboard to the position input box, you can simply paste it without focussing the position input first. Furthermore, you can also paste a "hash string", such as
#1406,1794,1560,0,0.234,186
, as it can be found in WK URLs. Pasting such a string will also set the encoded zoom, rotation, viewport etc. Note that the#
has to be included in the pasted text. You can also copy and paste an entire link, but note that the dataset or annotation id in the link will be ignored. #8652
Added
- Added the possibility to join an organization without requiring a paid user slot in case an organization already pays for the same user. Such a user is called a "Guest User". #8502
- Added that "Create Animation" jobs will now use the correct segment colors for rendering meshes. #8605
- In the NML upload route, the additional form field
description
can be specified. If so, it will overwrite the description contained in the NML files. #8631 - Added the possibility for super users to retry manually cancelled jobs from the jobs list. #8629
Changed
- Remove
data.maybe
dependency and replaced with regular Typescript types. #8563 - Updated
View Modes
documentation page with links for mouse and keyboard shortcuts. #8582 - Renamed the button to view the compound annotation of all tasks of a tasktype to be more descriptive. #8565
- Replaced fixed threshold of 40 meshes by a dynamic limit based on the number of triangles in the mesh for the "Create Animation" job. #8588
- Replaced Redux selector
useSelector((state: OxalisState) => ...)
with a typeduseWkSelector(state => ...)
shorthand. #8591 - Renamed
OxalisState
,OxalisApplication
, andOxalisApi
to their respectiveWebknossos{State, API, Application}
equivalent #8591 - Renamed
frontend/javascripts/oxalis
tofrontend/javascripts/viewer
. #8601 - When loading data from a data layer that has data stored beyond the bounding box specified in the datasource-properties.json, data outside of the bounding box is now zeroed. (the layer is “clipped”). #8551
- Updated to Typescript from version
5.5
to5.8
. #8613 - Updated Voxelytics log streaming to also include the
log_path
attribute. #8615 - When creating or uploading a non-task volume annotation layer with a fallback segmentation layer, the annotation layer’s bounding box will now be limited to that layer’s, instead of the whole dataset’s. #7580
- Refactored the
skeletonTracing.TreeMap
structure to useDiffableMap
type. #8626
Fixed
- When selecting a skeleton node in a viewport, its tree is focused and scrolled to in the skeleton tab, even if its parent group was collapsed before. #8585
- Fixed that the minimum size of bounding boxes for AI neuron and mitochondria inferral was not checked before starting the job. #8561
- Fixed that layer bounding boxes were sometimes colored green even though this should only happen for tasks. #8535
- Fixed that annotations could not be opened anymore (caused by #8535). #8599
- Voxels outside of the layer bounding box cannot be brushed, anymore. #8602
- The guest tag is now also shown for guest admin users. #8612
- Fixed a rare bug where segment bounding box would not be displayed correctly, with the request potentially even crashing the server. #8590
- Fixed a rare bug where download requests would terminate without sending the whole annotation. #8624
- Fixed that deletion of dataset would lead to an error. #8639
- Fixed a bug where merging annotations with large tree IDs could lead to an error. #8643
- Fixed that the segment stats were sometimes not displayed in the context menu. #8645
- Fixed a bug in zarr streaming where directly after the datastore startup, chunk responses would have status 404 (leading zarr clients to fill with fill_value). Now it will yield status 503, so that clients can retry or escalate this as an error. #8644
- Fixed regression which caused the import of trees (also of agglomerate skeletons) to crash if the annotation was not empty. #8656
- Fixed that one could activate unavailable tools or toolkits in read-only mode. #8658
Removed
- The old "Selective Segment Visibility" feature that allowed to only see the active and the hovered segment was removed. From now on the visibility of segments can be controlled with checkboxes in the segment list and with the "Hide unlisted segments" toggle in the layer settings. #8546
25.05.1
25.05.0
- Docker Image
scalableminds/webknossos:25.05.0
🐳 - Changelog
- Commits
Highlights
- Added the concept of "toolkits". By default, all tools are available to the user (as before), but one can select a specific toolkit to only see certain tools. Some toolkits also change the behavior of the tools. For example, the "Split Segments" toolkit (see below). #8434
- Added a toolkit for splitting segments (also see documentation). Select the "Split Segments" toolkit and create a bounding box in which you want to execute the split. Then, use the skeleton tool to place nodes on the boundary between two (merged) segments. The nodes will be used to construct a 3D surface. Finally, use the floodfill tool (enable 3D and bounding-box restriction) to relabel a part of the segment. the floodfill won't cross the 3D surface. #8434
- Added a new "draw" mode for the skeleton tool. When enabled, one can rapidly create notes by keeping the left mouse button pressed and moving the cursor. #8434
Added
- Added more layer specific settings to the configurations included in sharing links. #8539
- When uploading multiple NMLs at once, the description is now kept, if all NMLs with non-empty descriptions have the same description. #8533
Changed
- Updated E2E tests to use
vitest
framework instead ofava
. #8543 - Adjusted the names of custom model inference jobs and train model jobs to match the worker's naming. #8524
- Updated screenshot tests to use
vitest
framework instead ofava
. #8553 - The mapping dropdown for segmentation is wider now so that mapping names are fully readable. #8570
Fixed
- Fixed that the Version Restore sidebar did load forever when very large volume annotations were created. #8574
- Fixed rendering bug that could occur for transformed datasets when toggling the transform. #8568
- Fixed a bug in the trees tab where the color change of a tree would affect the tree on which the context menu was previously opened. #8562
Removed
- The Annotation update route can no longer update the description of the annotation. Please set the description before uploading the annotation instead. You can still edit the description in the UI. #8533
25.04.0
Highlights
- The opacity of meshes can be adjusted using the 'Change Segment Color' context menu entry in the segments tab. #8443
- Allow to mirror datasets along an axis in the dataset settings as part of the rotation feature. #8485
Added
- Performance improvements for volume annotation save requests. #8460
- Performance improvements for segment statistics (volume + bounding box in context menu). #8469
- Added that the dataset name is automatically corrected in view mode URLs upon loading. #8514
- Upgraded backend dependencies for improved performance and stability. #8507
- New config option
datastore.dataVaults.credentials
allows admins to set up global credentials for remote dataset loading. #8509
Changed
- When deleting a dataset / layer, layers that are referenced in other datasets are moved there instead of being deleted. #8437
- Added a parameter to the reserve manual upload route allowing to make the request fail if the name is already taken. Moreover, the new dataset's id and directory name are returned in the response. #8476
- The skeleton tool can no longer be activated if the skeleton layer is invisible. #8501
- Improved speed of mesh rendering and mouse interaction in 3D viewport. #8106
- Numbered docker image now use different and larger numbers. #8147
- Replace frontend unit testing framework
ava
withvitest
. Minimum required nodejs version is now22+
. #8479
Fixed
- Fixed a Bug where the "Save view configuration as default" modal's text included undefined. #8514
- Fixed the alignment of the button that allows restricting floodfill operations to a bounding box. #8388
- Fixed that it was possible to trigger the find largest segment id job on layers which are not stored as segmentation layers on the server. #8503
- Fixed a rare and subtle bug related to volume annotation and undo/redo. #7506
- Fixed a bug where segment statistics would sometimes be wrong in case of an on-disk segmentation fallback layer with segment index file. #8460
- Fixed a bug where sometimes outdated segment statistics would be displayed. #8460
- Fixed a bug where outbound zarr streaming would contain a typo in the zarr header dimension_separator field. #8510
- Fixed a bug where sometimes large skeletons were not saved correctly, making them inaccessible on the next load. #8513
- Fixed that meshes weren't loaded correctly if the precomputed mesh file contained multiple levels-of-detail. #8519
- Fixed that authentication-related token renewal did not work properly in certain scenarios. #8532
- Fixed resolution of legacy links having dataset names with
-
. #8548 - Fixed that adding a layer using the dataset settings' advanced tab would crash WEBKNOSSOS. Bug was introduced by #8503. #8550
Breaking Changes
- Removed
docker-compose.yml
in favor oftools/hosting/docker-compose.yml
#8147