Releases: scalableminds/webknossos
Releases · scalableminds/webknossos
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
25.03.01
Caution, this release deviates from the usual naming schema. It’s 25.03.01
, not 25.03.1
.
- Docker Image
scalableminds/webknossos:25.03.01
🐳
Run it viaexport DOCKER_TAG=="25.03.01" && ./start-docker.sh
. - Changelog
- Commits
Fixed
25.03.0
- Docker Image
scalableminds/webknossos:25.03.0
🐳
Run it viaexport DOCKER_TAG=="25.03.0" && ./start-docker.sh
. - Changelog
- Commits
Highlights
- Added a command palette that allows navigating between pages, switching tools and accessing some user settings via Ctrl+P. #8447
- Added support for datasets with the following data types: int8, int16, int32, uint32 (support for color was added, support for segmentation already existed before) and int64 (segmentation only). #8325
Added
- Super users can now share the trained AI models with other organizations. #8418
- Failed jobs may be retried by super-users. #8377
- Optimized server-side storage of skeleton annotation layers. #8423
- Added support for adding N5 datasets with compact-style multiscale metadata. #8456
Changed
- When using a zarr link to a wk-served data layer as another layer’s source, the user’s token is used to access the data. #8322
- Compound annotations (created when viewing all annotations of a task) no longer permanently store data in the FossilDB. #8422
- When creating multiple tasks at once (bulk task creation), they now all need to have the same task type. #8405
- Improved performance when changing the layout/viewports. #8448
- Annotation upload will now always add a skeleton annotation layer, even if the downloaded annotation was volume-only. #8466
Fixed
- Fixed a bug that would lock a non-existing mapping to an empty segmentation layer under certain conditions. #8401
- Fixed the alignment of the button that allows restricting floodfill operations to a bounding box. #8388
- Fixed a bug for rotated dataset where volume tools were disabled although the dataset was rendered untransformed. #8432
- Fixed rare bug where saving got stuck. #8409
- Fixed some rendering bugs for float datasets that used a large dynamic range. #8325
- Fixed a bug where reverting annotations could get stuck if some of its layers had been deleted in the meantime. #8405
- When removing a segment from the segment list, a corresponding precomputed mesh was not removed automatically. #8428
- Fixed a bug where newly added remote datasets would always appear in root folder, regardless of actual selected folder. #8425
- Fixed a bug where the python libs functionality
wk.RemoteDataset.explore_and_add_remote
would error. #8425 - Fixed a bug where various UI dialogs would be dark mode even the user preferred a light theme. #8445
- Fixed an issue with icon spacing on the task dashboard page. #8452
- Fixed a spacing issue in the statusbar. #8455
- Fixed a bug where the "Create Animation" modal did not open when selecting the corresponding feature from the navbar menu. #8444
- Fixed that the brightness/contrast settings (in the histogram) could not be changed if the histogram data could not be loaded for some reason. #8459
- Fixed that downloading + reupload of an annotation, in which the skeleton tools were never used, actually made them unreachable. #8466
- Fixed a bug where task creation with volume zip as input would fail. #8468
25.02.02
- Docker Image
scalableminds/webknossos:25.02.02
🐳
Run it viaexport DOCKER_TAG=="25.02.02" && ./start-docker.sh
. - Changelog
- Commits
Changed
- When using a zarr link to a wk-served data layer as another layer’s source, the user’s token is used to access the data. #8322
Fixed
- Fixed a bug that would lock a non existing mapping to an empty segmentation layer under certain conditions. #8401
- Fixed the alignment of the button that allows restricting floodfill operations to a bounding box. #8388
- Fixed rare bug where saving got stuck. #8409