Skip to content

Changelog (Released)

All notable user-facing changes to WEBKNOSSOS are documented in this file. See CHANGELOG.unreleased.md for the changes which are not yet part of an official release.

The format is based on Keep a Changelog and this project adheres to Calendar Versioning 0Y.0M.MICRO. For upgrade instructions, please check the migration guide.

25.07.1 - 2025-07-11

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 - 2025-07-01

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 within unreleased_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 version 5.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 - 2025-06-17

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 - 2025-06-03

Commits

Fixed

  • Fixed viewing the results of volume annotation tasks in compound view. #8668

25.06.0 - 2025-05-26

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

  • Removed 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 typed useWkSelector(state => ...) shorthand. #8591
  • Renamed OxalisState, OxalisApplication, and OxalisApi to their respective Webknossos{State, API, Application} equivalent #8591
  • Renamed frontend/javascripts/oxalis to frontend/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 to 5.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 use DiffableMap 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 - 2025-05-19

Commits

Fixed

  • Fixed viewing datasets with legacy-style links (without ids) by sharing token. #8625

25.05.0 - 2025-04-29

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 workflow for splitting segments. 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 of ava. #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 of ava. #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 - 2025-04-22

Commits

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 with vitest. Minimum required nodejs version is now 22+. #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 of tools/hosting/docker-compose.yml #8147

25.03.1 - 2025-04-10

Commits

Fixed

  • Fixed a bug where the annotation list would sometimes load very long if you have many annotations. #8498
  • Fixed a bug where sometimes large skeletons were not saved correctly, making them inaccessible on the next load. #8513

25.03.0 - 2025-04-01

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
  • Added a credit system making payment for long running jobs possible. For now it is in testing phase. #8352
  • The maximum available storage of an organization is now enforced during upload. #8385

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
  • Fixed visual alignment of actions in ai model list. #8474
  • Improve formatting of credits amount in organization management page #8487
  • Re-enabled jobs planned to be paid with credits for organizations without a paid plan. #8478
  • Fixed that the dataset extent tooltip in the right details bar in the dashboard did not properly update when switching datasets. #8477
  • Fixed a bug where task creation with volume zip as input would fail. #8468
  • Fixed that a warning message about a newer version of an annotation was shown multiple times. #8486

25.02.1 - 2025-02-26

Commits

Fixed

  • Fixed rare bug where saving got stuck. #8409
  • Fixed the correct highlighting of navbar menu items depending on the current open page. #8473

25.02.0 - 2025-02-17

Commits

Highlights

  • Starting now, proofreading (editable mapping) annotations will have a revertible history. Also the annotation version history is no longer split in individual tabs per layer. #7917
  • Measurement tools are now accessible when viewing datasets outside of an annotation. #8334

Added

  • It is now possible to start a split-merger evaluation when starting a neuron inference. #8221
  • Added the possibility to configure a rotation for a dataset, which can be toggled off and on when viewing and annotating data. #8159
  • When using the “Restore older Version” feature, there are no longer separate tabs for the different annotation layers. Only one linear annotation history is now used, and if you revert to an older version, all layers are reverted. If layers were added/deleted since then, that is also reverted. This also means that proofreading annotations can now be reverted to older versions as well. The description text of annotations is now versioned as well. #7917
  • Added the possibility to use the "merger mode" even when the user has annotated volume data in the current layer (as long as no other mapping is active). #8335
  • Added a note explaining that imported data is private by default to the dataset upload view. #8354
  • Measurement tools are now accessible when viewing datasets outside of an annotation. #8334
  • Support reading Blosc-compressed datasets with the “autoshuffle” parameter. #8387

Changed

  • Improved the scrolling behaviour of sliders: Sliders must be focused to scroll them. Additionally, parent element scrolling is prevented when using the slider. #8321 #8321
  • Increase the flood fill maximum bounding box size limits for segmentation layers restricted to coarser mags. #8382

Fixed

  • Fixed a silent bug in the dashboard when refreshing newest dataset list. #8386
  • Fixed a bug that lead to trees being dropped when merging to trees together. #8359
  • Fixed that the onboarding screen incorrectly appeared when a certain request failed. #8356
  • Fixed the segment registering in coarser mags for non-mag-aligned bounding boxes. #8364
  • Fixed using the flood fill tool in 2D mode for mags other than the finest one. #8382

Removed

  • Removed the feature to downsample existing volume annotations. All new volume annotations had a whole mag stack since #4755 (four years ago). #7917

25.01.0 - 2025-01-22

Commits

Highlights

  • The fill tool can now be adapted so that it only acts within a specified bounding box. Use the new "Restrict Floodfill" mode for that in the toolbar. #8267
  • Added the option for "Selective Segment Visibility" for segmentation layers. Select this option in the left sidebar to only show segments that are currently active or hovered. #8281
  • Segment and tree names can be edited by double-clicking them. #8316

Added

  • Added the total volume of a dataset to a tooltip in the dataset info tab. #8229
  • Optimized performance of data loading with “fill value“ chunks. #8271
  • Added the option to export a segmentation that was corrected with the proofreading tool to a new segmentation. #8286
  • A segment can be activated with double-click now. #8281
  • It is now possible to select the magnification of the layers on which an AI model will be trained. #8266
  • Added support for translations in OME NGFF zarr datasets (translation within coordinateTransformations on datasets). #8311
  • When the eraser tool is active, one can switch temporarily to the fill-segment tool by pressing shift and ctrl. Only pressing shift, switches to the pick-segment tool. #8314
  • Enabled auto sorting of Typescript imports in Biome linter. #8313
  • Clicking on a segment or tree group will show some details in the details table. #8316

Changed

  • Renamed "resolution" to "magnification" in more places within the codebase, including local variables. #8168
  • Layer names are now allowed to contain $ as special characters. #8241
  • Datasets can now be renamed and can have duplicate names. #8075
  • Starting an AI training job using multiple annotations now supports inputting task-IDs and considers their task bounding boxes. #8310
  • Improved the default colors for skeleton trees. #8228
  • Allowed to train an AI model using differently sized bounding boxes. We recommend all bounding boxes to have equal dimensions or to have dimensions which are multiples of the smallest bounding box. #8222
  • Within the bounding box tool, the cursor updates immediately after pressing ctrl, indicating that a bounding box can be moved instead of resized. #8253
  • Improved the styling of active tools and modes in the toolbar. #8295

Fixed

  • Fixed that listing datasets with the api/datasets route without compression failed due to missing permissions regarding public datasets. #8249
  • A "Locked by anonymous user" banner is no longer shown when opening public editable annotations of other organizations. #8273
  • Fixed a bug that uploading a zarr dataset with an already existing datasource-properties.json file failed. #8268
  • Fixed the organization switching feature for datasets opened via old links. #8257
  • Fixed that uploading an NML file without an organization id failed. Now the user's organization is used as fallback. #8277
  • Fixed that the frontend did not ensure a minimum length for annotation layer names. Moreover, names starting with a . are also disallowed now. #8244
  • Fixed a bug where in the add remote dataset view the dataset name setting was not in sync with the datasource setting of the advanced tab making the form not submittable. #8245
  • Fixed read and update dataset route for versions 8 and lower. #8263
  • Fixed that task bounding boxes are again converted to user bounding boxes when uploading annotations via nmls. #8280
  • Added missing legacy support for isValidNewName route. #8252
  • Fixed some layout issues in the upload view. #8231
  • Fixed FATAL: role "postgres" does not exist error message in Docker compose. #8240
  • Fixed the Zarr 3 implementation not accepting BytesCodec without "configuration" key. #8282
  • Fixed that reloading the data of a volume annotation layer did not work properly. #8298
  • Removed the magnification slider for the TIFF export within the download modal if only one magnification is available for the selected layer. #8297
  • Fixed regression in styling of segment and skeleton tree tab. #8307
  • Fixed the template for neuron inferral using a custom workflow. #8312
  • Fixed that the list of processing jobs crashed for deleted job types. #8300
  • Fixed an issue where you could not maximize or reposition the 3D/XZ viewport in Safari. #8337
  • Fixed upload of NGFF datasets with only one directory named "color". #8341
  • Fixed an issue that could occur if the NGFF multiscale name was set to "/" when exploring. #8341

Removed

  • Removed support for HTTP API versions 3 and 4. #8075
  • Removed that a warning is shown when a dataset is served from a datastore that was marked with isScratch=true. #8296

24.12.0 - 2024-12-05

Commits

Added

  • When exploring remote URIs pasted from Neuroglancer, the format prefixes like precomputed:// are now ignored, so users don’t have to remove them. #8195

Changed

  • Reading image files on datastore filesystem is now done asynchronously. #8126
  • Improved error messages for starting jobs on datasets from other organizations. #8181
  • Terms of Service for Webknossos are now accepted at registration, not afterward. #8193
  • Removed bounding box size restriction for inferral jobs for super users. #8200
  • Improved logging for errors when loading datasets and problems arise during a conversion step. #8202

Fixed

  • Fixed performance bottleneck when deleting a lot of trees at once. #8176
  • Fixed a bug where changing the color of a segment via the menu in the segments tab would update the segment color of the previous segment, on which the context menu was opened. #8225
  • Fixed a bug when importing an NML with groups when only groups but no trees exist in an annotation. #8176
  • Fixed a bug where trying to delete a non-existing node (via the API, for example) would delete the whole active tree. #8176
  • Fixed a bug where dataset uploads would fail if the organization directory on disk is missing. #8230

Removed

  • Removed Google Analytics integration. #8201

24.11.1 - 2024-11-13

Commits

Highlights

  • It is now possible to add metadata in annotations to Trees and Segments. #7875
  • Added a button to the search popover in the skeleton and segment tab to select all matching non-group results. #8123

Added

  • It is now possible to add metadata in annotations to Trees and Segments. #7875
  • Added a summary row to the time tracking overview, where times and annotations/tasks are summed. #8092
  • Most sliders have been improved: Wheeling above a slider now changes its value and double-clicking its knob resets it to its default value. #8095
  • It is now possible to search for unnamed segments with the full default name instead of only their id. #8133
  • Increased loading speed for precomputed meshes. #8110
  • Added a button to the search popover in the skeleton and segment tab to select all matching non-group results. #8123
  • Unified wording in UI and code: “Magnification”/“mag” is now used in place of “Resolution“ most of the time, compare terminology document. #8111
  • Added support for adding remote OME-Zarr NGFF version 0.5 datasets. #8122
  • Workflow reports may be deleted by superusers. #8156

Changed

  • Some mesh-related actions were disabled in proofreading-mode when using meshfiles that were created for a mapping rather than an oversegmentation. #8091
  • Admins can now see and cancel all jobs. The owner of the job is shown in the job list. #8112
  • Migrated nightly screenshot tests from CircleCI to GitHub actions. #8134
  • Migrated nightly screenshot tests for wk.org from CircleCI to GitHub actions. #8135
  • Thumbnails for datasets now use the selected mapping from the view configuration if available. #8157

Fixed

  • Fixed a bug during dataset upload in case the configured datastore.baseFolder is an absolute path. #8098 #8103
  • Fixed bbox export menu item #8152
  • When trying to save an annotation opened via a link including a sharing token, the token is automatically discarded in case it is insufficient for update actions but the users token is. #8139
  • Fix that scrolling in the trees and segments tab did not work while dragging. #8162
  • Fixed that uploading a dataset which needs a conversion failed when the angstrom unit was configured for the conversion. #8173
  • Fixed that the skeleton search did not automatically expand groups that contained the selected tree #8129
  • Fixed interactions in the trees and segments tab like the search due to a bug introduced by #8162. #8186
  • Fixed a bug that zarr streaming version 3 returned the shape of mag (1, 1, 1) / the finest mag for all mags. #8116
  • Fixed sorting of mags in outbound zarr streaming. #8125
  • Fixed a bug where you could not create annotations for public datasets of other organizations. #8107
  • Users without edit permissions to a dataset can no longer delete sharing tokens via the API. #8083
  • Fixed downloading task annotations of teams you are not in, when accessing directly via URI. #8155
  • Removed unnecessary scrollbars in skeleton tab that occurred especially after resizing. #8148
  • Deleting a bounding box is now possible independently of a visible segmentation layer. #8164
  • S3-compliant object storages can now be accessed via HTTPS. #8167
  • Fixed that skeleton tree nodes were created with the wrong mag. #8185
  • Fixed the expected type of a tree node received from the server. Fixes nml export to include the inMag field correctly. #8187
  • Fixed a layout persistence bug leading to empty viewports, triggered when switching between orthogonal, flight, or oblique mode. #8177

Removed

Breaking Changes

24.10.0 - 2024-09-24

Commits

Highlights

  • It is now possible to focus a bounding box in the bounding box tab by clicking its edges in a viewport or via a newly added context menu entry. #8054
  • Clicking on a bounding box within the bounding box tab centers it within the viewports and focuses it in the list. #8049

Added

  • Added the option to export nd datasets as ome tiff or tiff stack. Previously, this was only possible for 3d datasets. #7971
  • Added an assertion to the backend to ensure unique keys in the metadata info of datasets and folders. #8068
  • The feature to register all segments within a bounding box now takes the current magnification into consideration, e.g. for calculating the volume limit for a bounding box. #8082

Changed

  • For self-hosted versions, the text in the dataset upload view was updated to recommend switching to webknossos.org. #7996
  • Updated frontend package management to yarn version 4. 8061
  • Updated React to version 18. Updated many peer dependencies including Redux, React-Router, antd, and FlexLayout. #8048
  • Improved the performance of context menus in the bounding box tab. #8059

Fixed

  • The JS API v2 has been removed as it was deprecated by v3 in 2018. Please upgrade to v3 in case your scripts still use v2. #8076
  • Fixed that the precompute-meshfile button did not work in the segments tab. #8077
  • Removed the superfluous _type field when writing zarr3 codec jsons.

Removed

Breaking Changes

24.08.1 - 2024-09-03

Commits

Added

  • If the opacity of a volume layer is zero, a warning is now shown in the layer settings tab. #8003

24.08.0 - 2024-09-02

Commits

Highlights

  • The AI-based Quick Select can now be run on multiple sections at once. This can be configured in the tool settings. Also, the underlying model now uses Segment Anything 2. #7965
  • Metadata entries can now be added to datasets and folders. The metadata can be viewed and edited in the dashboard in the right details tab. #7886
  • The AI-based Quick Select can now be triggered with a single click. Drawing a rectangle is still supported. #7993
  • Added the option to resume an unfinished upload even after browser restarts. #7981
  • Added a feature to register all segments for a given bounding box at once via the context menu of the bounding box. #7979

Added

  • WEBKNOSSOS now automatically searches in subfolder / sub-collection identifiers for valid datasets in case a provided link to a remote dataset does not directly point to a dataset. #7912
  • Added the option to move a bounding box via dragging while pressing ctrl / meta. #7892
  • Added route /import?url=<url_to_datasource> to automatically import and view remote datasets. #7844
  • Added that newly created, modified and clicked on bounding boxes are now highlighted and scrolled into view, while the bounding box tool is active. #7935
  • The configured unit in the dataset upload view is now passed to the convert_to_wkw worker job. #7970
  • Added option to expand or collapse all subgroups of a segment group in the segments tab. #7911
  • The context menu that is opened upon right-clicking a segment in the dataview port now contains the segment's name. #7920
  • Upgraded backend dependencies for improved performance and stability. #7922
  • Added Support for streaming datasets via Zarr version 3. #7941
  • It is now saved whether segment groups are collapsed or expanded, so this information doesn't get lost e.g. upon page reload. #7928
  • It is now saved whether skeleton groups are collapsed or expanded. This information is also persisted to NML output. #7939
  • The context menu entry "Focus in Segment List" expands all necessary segment groups in the segments tab to show the highlighted segment. #7950
  • In the proofreading mode, you can enable/disable that only the active segment and the hovered segment are rendered. #7654
  • Upgraded s3 client for improved performance when loading remote datasets. #7936
  • The performance of the bounding box tab was improved. #7974
  • Added support for reading zstd-compressed zarr2 datasets #7964
  • The alignment job is in a separate tab of the "AI Tools" now. The "Align Sections" AI job now supports including manually created matches between adjacent section given as skeletons. #7967
  • Added api.tracing.createNode(position, options) to the front-end API. #7998
  • Added links in the workflow report for skipped tasks to the corresponding workflow view. #8006
  • Upgraded backend dependencies for improved performance and stability, including a memory leak fix for FossilDB. #8014

Changed

  • Replaced skeleton tab component with antd's <Tree />component. Added support for selecting tree ranges with SHIFT. #7819
  • The warning about a mismatch between the scale of a pre-computed mesh and the dataset scale's factor now also considers all supported mags of the active segmentation layer. This reduces the false posive rate regarding this warning. #7921
  • It is no longer allowed to edit annotations of other organizations, even if they are set to public and to others-may-edit. #7923
  • When proofreading segmentations, the user can now interact with super-voxels directly in the data viewports. Additionally, proofreading is significantly faster because the segmentation data doesn't have to be re-downloaded after each merge/split operation. #7654
  • Changed internal data model changing an organization's name to id and its displayName to name. The previously existing id was removed. #7386
  • Because of the way our models are trained, AI analysis and training is disabled for 2D and ND datasets, as well as for color layers with data type uInt24. #7957
  • The overall performance was improved (especially for the segments tab). #7958
  • The performance for the skeleton tab was improved. #7989
  • Upgraded ant icons to version 5.4. #8007
  • Increased maximum depth for ai-based quick select from 5 to 16. #8021
  • Zarr-streaming now uses the new unit-aware voxel size. This means that wk-libs client v0.14.25 or newer is needed for dataset zarr streaming. #8012
  • Updated React to version 17. #7765

Fixed

  • Fixed a bug that allowed the default newly created bounding box to appear outside the dataset. In case the whole bounding box would be outside it is created regardless. #7892
  • Fixed a rare bug that could cause hanging dataset uploads. #7932
  • Fixed that comments of the active tree were not scrolled into view in some cases when switching to the comments tab. 8022
  • Fixed that trashcan icons to remove layers during remote dataset upload were floating above the navbar. #7954
  • Fixed that the flood-filling action was available in the context menu although an editable mapping is active. Additionally volume related actions were removed from the context menu if only a skeleton layer is visible. #7975
  • Fixed that activating the skeleton tab would always change the active position to the active node. #7958
  • Made the newly added filePaths argument of the reserve upload route (see #7981) optional to be backwards compatible with wklibs. #8045
  • Fixed that skeleton groups couldn't be collapsed or expanded in locked annotations. #7988
  • Fixed that the dashboard didn't notify the user about new datasets in the table. #8025
  • Fixed that registering segments for a bounding box did only work if the segmentation had mag 1. #8009
  • Fixed uploading datasets in neuroglancer precomputed and n5 data format. #8008
  • Various fixes for composing datasets with landmarks. Note that the interpretation of correspondence points was inverted for thin plate splines. #7992

24.07.0 - 2024-07-05

Commits

Highlights

  • Owners can lock explorative annotations now. Locked annotations cannot be modified by any user. An annotation can be locked in the annotations table and when viewing the annotation via the navbar dropdown menu. #7801
  • Added the ability to change the unit of the dataset voxel size to any supported unit of the ome/ngff standard. This allows users to upload and work with low-resolution datasets with a different base unit than nanometer. #7783

Added

  • Added that proofreading merge actions reuse custom names of segments. A merge action now combines the potential existing custom names of both segments and a split-action copies the custom name to the split-off segment. #7877
  • Added the option to set a default mapping for a dataset in the dataset view configuration. The default mapping is loaded when the dataset is opened and the user / url does not configure something else. #7858
  • Uploading an annotation into a dataset that it was not created for now also works if the dataset is in a different organization. #7816
  • When downloading + reuploading an annotation that is based on a segmentation layer with active mapping, that mapping is now still selected after the reupload. #7822
  • In the Voxelytics workflow list, the name of the WEBKNOSSOS user who started the job is displayed. #7794
  • Start an alignment job (aligns the section in a dataset) via the "AI Analysis" button (not available to all users yet). #7820
  • Added additional validation for the animation job modal. Bounding boxes must be larger then zero. #7883

Changed

  • The "WEBKNOSSOS Changelog" modal now lazily loads its content potentially speeding up the initial loading time of WEBKNOSSOS and thus improving the UX. #7843
  • Updated the min / max settings for the histogram to allow floating point color layers to have negative min / max values. #7873
  • Made the login, registration, forgot password and dataset dashboard pages more mobile friendly. #7876
  • From now on only project owner get a notification email upon project overtime. The organization specific email list overTimeMailingList was removed. #7842
  • Replaced skeleton comment tab component with antd's <Tree />component. #7802
  • Updated Typescript to version 5.5.0. #7878

Fixed

  • Fixed a bug where the warning to zoom in to see the agglomerate mapping was shown to the user even when the 3D viewport was maximized and no volume data was shown. #7865
  • Fixed a bug that prevented saving new dataset settings. #7903
  • Fixed that on large screens the login forms were not horizontally centered. #7909
  • Fixed a bug where brushing on a fallback segmentation with active mapping and with segment index file would lead to failed saves. #7833
  • Fixed a bug where the "Hide Meshes" / "Show Meshes" options of the context menu for segment groups were not available although at least one mesh was set to visible / invisible. #7890
  • Fixed a bug where sometimes old mismatching javascript code would be served after upgrades. #7854
  • Fixed a bug where dataset uploads of zipped tiff data via the UI would be rejected. #7856
  • Fixed a bug with incorrect validation of layer names in the animation modal. #7882
  • Fixed a bug in the fullMesh.stl route used by the render_animation worker job, where some meshes in proofreading annotations could not be loaded. #7887
  • Fixed that dataset composition did not work when selecting only one dataset for composition. #7889

Removed

  • REST API versions 1 and 2 are no longer supported. Current is 7. #7783
  • If the datasource-properties.json file for a dataset is missing or contains errors, WEBKNOSSOS no longer attempts to guess its contents from the raw data. Exploring remote datasets will still create the file. #7697

24.06.0 - 2024-05-27

Commits

Highlights

  • Within the proofreading tool, the user can now interact with the super voxels of a mesh in the 3D viewport. For example, this allows to merge or cut super voxels from another. As before, the proofreading tool requires an agglomerate file. #7742
  • In the time tracking view, all annotations and tasks can be shown for each user by expanding the table. The individual time spans spent with a task or annotating an explorative annotation can be accessed via CSV export. The detail view including a chart for the individual spans has been removed. #7733

Added

  • Minor improvements for the timetracking overview (faster data loading, styling). #7789
  • Updated several backend dependencies for optimized stability and performance. #7782
  • Voxelytics workflows can be searched by name and hash. #7790
  • If a self-hosted WEBKNOSSOS instance has not been updated for six months or more, a closable banner proposes an upgrade to webknossos.org. #7768

Changed

  • Non-admin or -manager users can no longer start long-running jobs that create datasets. This includes annotation materialization and AI inferrals. #7753
  • The config value datastore.localFolderWhitelist can now be set for each datastore individually. #7800

Fixed

  • Fixed a bug where a toast that was reopened had a flickering effect during the reopening animation. #7793
  • Fixed a bug where some annotation times would be shown double. #7787
  • Fixed a bug where no columns were shown in the time tracking overview. #7803
  • Fixed a bug where ad-hoc meshes for coarse magnifications would have gaps. #7799
  • Fixed that the context menu didn't open correctly in the 3D viewport when right-clicking a node. #7809
  • Fixed that right-clicking a mesh in the 3D viewport did crash when the corresponding segmentation layer was not visible. #7811

24.05.0 - 2024-04-29

Commits

Highlights

  • Changed the time-tracking overview to show times spent in annotations and tasks and filter them by teams and projects. In the linked detail view, the tracked times can also be filtered by type (annotations or tasks) and project. #7524
  • Time Tracking now also works when editing other users’ shared annotations, and when editing proofreading annotations (a.k.a. editable mappings). #7749
  • Creating and deleting edges is now possible with ctrl+(alt/shift)+leftclick in orthogonal, flight and oblique mode. Also, the flight and oblique modes allow selecting nodes with leftclick, creating new trees with 'c' and deleting the active node with 'del'. #7678

Added

  • Added Typescript definitions for @scalableminds/prop-types package. #7744
  • Added Typescript definitions for react-remarkable package. #7748

Changed

  • Improved task list to sort tasks by project date, add option to expand all tasks at once and improve styling. #7709
  • The time tracking api route /api/users/:id/loggedTime, which is used by the webknossos-libs client, and groups the times by month, now uses UTC when determining month limits, rather than the server’s local timezone. #7524
  • Duplicated annotations are opened in a new browser tab. #7724
  • When proofreading segments and merging two segments, the segment item that doesn't exist anymore after the merge is automatically removed. #7729
  • Changed some internal APIs to use spelling dataset instead of dataSet. This requires all connected datastores to be the latest version. #7690
  • Toasts are shown until WEBKNOSSOS is running in the active browser tab again. Also, the content of most toasts that show errors or warnings is printed to the browser's console. #7741
  • Improved UI speed when editing the description of an annotation. #7769
  • Updated dataset animations to use the new meshing API. Animitation now support ad-hoc meshes and mappings. #7692

Fixed

  • Fixed that the Command modifier on MacOS wasn't treated correctly for some shortcuts. Also, instead of the Alt key, the ⌥ key is shown as a hint in the status bar on MacOS. #7659
  • Moving from the time tracking overview to its detail view, the selected user was not preselected in the next view. #7722
  • Fixed incorrect position of WEBKNOSSOS logo in screenshots. #7726
  • Fixed that invisible nodes could be selected when using the skeleton tool. #7732
  • Fixed a bug where users that have no team memberships were omitted from the user list. #7721
  • Added an appropriate placeholder to be rendered in case the timetracking overview is otherwise empty. #7736
  • The overflow menu in the layer settings tab for layers with long names can now be opened comfortably. #7747
  • Fixed a bug where segmentation data looked scrambled when reading uint32 segmentation layers with CompressedSegmentation codec. #7757
  • Fixed a bug when downsampling a volume annotation that previously had only a restricted magnification set. #7759

Removed

  • Meshfiles with version 2 or older are no longer supported. Talk to us about support in converting your old meshfiles. #7764

Breaking Changes

  • When merging two trees or segments, the active item will always "survive" the merge operation (the clicked item will be merged into the active one). This was not consistent for certain skeleton-based operations (i.e., merging skeletons with a shortcut and proofreading segmentations with agglomerate skeletons). #7729

24.04.0 - 2024-03-25

Commits

Highlights

  • Segment statistics are now available for ND datasets. #7411
  • Added a new "Split from all neighboring segments" feature for the proofreading mode. #7611
  • Added support for uploading N5 and Neuroglancer Precomputed datasets. #7578

Added

  • Added support for storing analytics events in the Postgres. #7594 #7609
  • Webknossos can now open ND Zarr datasets with arbitrary axis orders (not limited to **xyz anymore). #7592
  • Added support for skeleton annotations within datasets that have transformed layers. The skeleton nodes will move according to the transforms when rendering a specific layer natively. Also, downloading visible trees can be done by incorporating the current transforms. However, note that the back-end export does not take transforms into account. #7588
  • If storage scan is enabled, the measured used storage is now displayed in the dashboard’s dataset detail view. #7677
  • Prepared support to download full stl meshes via the HTTP api. #7587
  • You can now place segment index files with your on-disk segmentation layers, which makes segment stats available when viewing these segmentations, and also when working on volume annotations based on these segmentation layers. #7437
  • Added an action to delete erroneous, unimported datasets directly from the dashboard. #7448
  • Added support for window, active, inverted keys from the omero info in the NGFF metadata. 7685
  • Added getSegment function to JavaScript API. Also, createSegmentGroup returns the id of the new group now. #7694
  • Added support for importing N5 datasets without multiscales metadata. #7664

Changed

  • Datasets stored in WKW format are no longer loaded with memory mapping, reducing memory demands. #7528
  • Content Security Policy (CSP) settings are now relaxed by default. To keep stricter CSP rules, add them to your specific application.conf. #7589
  • The state of whether a mapping is active and what exact mapping is now locked to the annotation upon the first volume annotation action to ensure future consistent results. Moreover, while a JSON mapping is active, no volume annotation can be done. #7549
  • WEBKNOSSOS now uses Java 21. #7599
  • Email verification is disabled by default. To enable it, set webKnossos.user.emailVerification.activated to true in your application.conf. #7620 #7621
  • Added more documentation for N5 and Neuroglancer precomputed web upload. #7622
  • Added the config key webKnossos.user.timeTrackingOnlyWithSignificantChanges, which when set to true will only track time if the user has made significant changes to the annotation. #7627
  • Only display UI elements to launch background jobs if the (worker) backend actually supports them. #7591
  • If the current dataset folder in the dashboard cannot be found (e.g., because somebody else deleted it), the page navigates to the root folder automatically. #7669
  • Voxelytics logs are now stored by organization name, rather than id, in Loki. This is in preparation of the unification of these two concepts. #7687
  • Using a segment index file with a different data type than uint16 will now result in an error. #7698
  • Improved performance of JSON mappings in preparation of frontend HDF5 mappings. #7706
  • Removed remaining ESLint configuration files and replaced circular dependency detection tool from madge to dpdm. #7743

Fixed

  • Fixed rare SIGBUS crashes of the datastore module that were caused by memory mapping on unstable file systems. #7528
  • Fixed loading local datasets for organizations that have spaces in their names. #7593
  • Fixed a bug where proofreading annotations would stay black until the next server restart due to expired but cached tokens. #7598
  • Fixed a bug where ad-hoc meshing didn't make use of a segment index, even when it existed. #7600
  • Fixed a bug where importing remote datasets with existing datasource-properties.jsons would not properly register the remote credentials. #7601
  • Fixed a bug in ND volume annotation downloads where the additionalAxes metadata had wrong indices. #7592
  • Fixed a bug in proofreading aka editable mapping annotations where splitting would sometimes give the new id to the selected segment rather than to the split-off one. #7608
  • Fixed small styling errors as a follow-up to the antd v5 upgrade. #7612
  • Fixed that the iOS keyboard automatically showed up when moving through a dataset. #7660
  • Fixed deprecation warnings caused by Antd \<Collapse> components. #7610
  • Fixed small styling error with a welcome notification for new users on webknossos.org. #7623
  • Fixed that filtering by tags could produce false positives. #7640
  • Fixed a slight offset when creating a node with the mouse. #7639
  • Fixed small styling error with NML drag and drop uploading. #7641
  • Fixed a bug where the annotation list would show teams the annotation is shared with multiple times. #7659
  • Fixed incorrect menu position that could occur sometimes when clicking the ... button next to a segment. #7680
  • Fixed an error in the Loki integration to support Loki 2.9+. #7684
  • Fixed inconsistent style of antd components and odd behavior of dataset/annotation description Markdown input. #7700

Removed

  • Removed the integration with BrainTracing user databases. #7693

Breaking Changes

  • Updated antd UI library from version 4.24.15 to 5.13.2. Drop support for nodeJs version <18. #7522

24.02.3 - 2024-02-22

Commits

Fixed

  • Fixed a bug where the user list view would show duplicate team roles, and user changes (e.g. giving experience) would sometimes fail. #7646

24.02.2 - 2024-02-15

Commits

Fixed

  • Fixed a bug where the annotation list in the dashboard would attempt to display deleted annotations, and then fail. #7628

24.02.1 - 2024-02-15

Commits

Fixed

  • Fixed a bug where the annotation list in the dashboard would attempt to display deleted annotations, and then fail. #7628

24.02.0 - 2024-01-26

Commits

Highlights

  • Added thumbnails to the dashboard dataset list. #7479
  • The data of segments can now be deleted in the segment side panel. #7435
  • Added the ability to compose a new dataset from existing dataset layers. This can be done with or without transforms (transforms will be derived from landmarks given via BigWarp CSV or WK NMLs). #7395

Added

  • Added support for S3-compliant object storage services (e.g. MinIO) as a storage backend for remote datasets. #7453
  • Added support for blosc compressed N5 datasets. #7465
  • Added route for triggering the compute segment index worker job. #7471
  • Added the option to configure the name of the output segmentation layer in the neuron inferral job. #7472
  • Adhoc mesh rendering is now available for ND datasets.#7394
  • When setting up WEBKNOSSOS from the git repository for development, the organization directory for storing datasets is now automatically created on startup. #7517
  • Multiple segments can be dragged and dropped in the segments tab. #7536
  • Added the option to convert agglomerate skeletons to freely modifiable skeletons in the context menu of the Skeleton tab. #7537
  • The annotation list in the dashboard now also shows segment counts of volume annotations (after they have been edited). #7548
  • The buildinfo route now reports the supported HTTP API versions. #7581
  • After deleting specific teams, projects and task types, their names can now be re-used when creating new ones. #7573

Changed

  • Improved loading speed of the annotation list. #7410
  • Improved loading speed for the users list. #7466
  • Admins and Team Managers can now also download job exports for jobs of other users, if they have the link. #7462
  • Updated some dependencies of the backend code (play 2.9, sbt 1.9, minor upgrades for others) for optimized performance. #7366
  • Processing jobs can now be distributed to multiple webknossos-workers with finer-grained configurability. Compare migration guide. #7463
  • A warning is shown when the user tries to annotate volume data in the "Overwrite Empty" mode when no voxels were changed. #7526
  • Updated antd UI library from version 4.24.8 to 4.24.15. #7505
  • Changed the default dataset search mode to also search in subfolders. #7539
  • When clicking a segment in the viewport, it is automatically focused in the segment list. A corresponding context menu entry was added as well. #7512
  • Updated the isValidName route in the API to return 200 for valid and invalid names. With this, the API version was bumped up to 6. #7550
  • Upgraded to Play 3. #7562
  • When no Email Address for New-User Notifications is configured, the organization owner will be notified. For overtime notifications, the project owner and the organization owner will be notified. #7561
  • The metadata for ND datasets and their annotation has changed: upper bound of additionalAxes is now stored as an exclusive value, called "end" in the NML format. #7547
  • Added support for the index_location parameter in sharded Zarr 3 datasets. #7553

Fixed

  • Datasets with annotations can now be deleted. The concerning annotations can no longer be viewed but still be downloaded. #7429
  • Fixed several deprecation warnings for using antd's Tabs.TabPane components. #7469
  • Fixed problems when requests for loading data failed (could impact volume data consistency and rendering). #7477
  • The settings page for non-wkw datasets no longer shows a wall of non-applying errors. #7475
  • Fixed a bug where dataset deletion for ND datasets and datasets with coordinate transforms would not free the name even if no referencing annotations exist. #7495
  • Fixed a bug where the URL in the sharing link was wrongly decoded before encoding into a URI. #7502
  • Fixed a bug where loaded meshes were not encoded in the sharing link. #7507
  • Fixed a bug where meshes (or chunks of them) were always colored white, if they were loaded while the corresponding segmentation layer was disabled. #7507
  • Fixed a race condition when opening a short link, that would sometimes lead to an error toast. #7507
  • Fixed that the Segment Statistics feature was not available in the context menu of segment groups and in the context menu of the data viewports. #7510
  • Fixed rare bug which produced a benign error toast on some mouse interactions. #7525
  • Fixed a bug where dataset managers were not allowed to assign teams to new datasets that they are only member of. This already worked while editing the dataset later, but not during upload. #7518
  • Fixed regression in proofreading tool when automatic mesh loading was disabled and a merge/split operation was performed. #7534
  • Fixed that last dimension value in ND dataset was not loaded. #7535
  • Fixed the initialization of the mapping list for agglomerate views if json mappings are present. #7537
  • Fixed a bug where uploading ND volume annotations would lead to errors due to parsing of the chunk paths. #7547
  • Fixed a bug where listing the annotations of other users would result in empty lists even if there are annotations and you should be allowed to see them. #7563
  • Fixed the "Download Meshes" functionality which was affected by the recent introduction of the CSP. #7577
  • Fixed a bug where listing the annotations of other users would result in empty lists even if there are annotations, and you should be allowed to see them. #7563
  • Fixed errors showing when viewing the annotation list. #7579
  • Fixed a bug where all-zero chunks/buckets were omitted when downloading volume annotation even in case of a fallback segmentation layer, where their zeroed-bucket information is actually needed. #7576
  • Fixed a bug where zarr3 datasets with sharding that didn’t specify an explicit index_location in their metadata could not be read. #7583

Removed

  • Removed Swagger/OpenAPI json description of the HTTP API. #7494
  • Removed several unused frontend libraries. #7521

23.12.0 - 2023-11-27

Commits

Highlights

  • Zarr datasets can now be directly uploaded to WEBKNOSSOS. #7397

Added

  • Added support for reading uint24 rgb layers in datasets with zarr2/zarr3/n5/neuroglancerPrecomputed format, as used for voxelytics predictions. #7413
  • Adding a remote dataset can now be done by providing a Neuroglancer URI. #7416
  • Added a filter to the Task List->Stats column to quickly filter for tasks with "Prending", "In-Progress" or "Finished" instances. #7430

Changed

  • An appropriate error is returned when requesting an API version that is higher than the current version. #7424
  • Upgraded FossilDB database used to store annotation data to version 0.1.27. #7440

Fixed

  • Searching the segments in the sidebar will highlight newly focused segments properly now. #7406
  • Fixed a bug when opening a task for which a mag restriction exists. The bug only occurred when the referenced mag didn't exist in the dataset. #7403
  • Fixed that trees with ids around 1023 were invisible on some systems. #7443
  • Fixed styling issues with the maintenance banner so that it no longer overlaps other menus, tabs, and buttons. #7421
  • Exploring HTTP uris of unknown hosts no longer causes an exception error message to be displayed. #7422
  • Fixed the initialization of the dark theme if it was active during page load. #7446
  • Fixed a rare bug in ad-hoc meshing for voxelytics-created segmentations with agglomerate mappings. #7449

23.11.0 - 2023-10-24

Commits

Highlights

  • Added a new tool that allows either measuring the distance of a path or a non-self-crossing area. #7258
  • For setups with webknossos-worker: Added a feature to create an engaging animation video of a dataset and its meshes processed in Blender. #7348

Added

  • Added social media link previews for links to datasets and annotations (only if they are public or if the links contain sharing tokens). #7331
  • Loading sharded zarr3 datasets is now significantly faster. #7363 and #7370
  • OME-NGFF datasets with only 2 dimensions can now be imported and viewed. #7349
  • Higher-dimension coordinates (e.g., for the t axis) are now encoded in the URL, too, so that reloading the page will keep you at your current position. Only relevant for 4D datasets. #7328
  • WEBKNOSSOS can now also explore datasets on the local file system if enabled in the new config key datastore.localFolderWhitelist. #7389
  • It is now possible to download volume annotations as zarr- rather than wkw-based zip. This case also supports annotations on timeseries (ND) datasets. #7288

Changed

  • Updated backend code to Scala 2.13, with upgraded Dependencies for optimized performance. #7327
  • Remote datasets with a datasource-properties.json can now also be imported without the need for OME metadata. #7372
  • Occurrences of isosurface were renamed to ad-hoc mesh. This also applies to configuration files. #7350
  • Improved user interface to start automatic AI analysis. #7368

Fixed

  • Fixed that some segment (group) actions were not properly disabled for non-editable segmentation layers. #7207
  • Fixed a bug where data from zarr2 datasets that have a channel axis was broken. #7374
  • Fixed a bug which changed the cursor position while editing the name of a tree or the comment of a node. #7390
  • Streaming sharded zarr3 datasets from servers which do not respond with Accept-Ranges header is now possible. #7392

23.10.2 - 2023-09-26

Commits

Fixed

  • Fixed that segment statistics were requested in the wrong resolution and without properly considering the dataset scale. #7355

23.10.1 - 2023-09-22

Commits

Fixed

  • Fixed that auto-saving only took place every 5 minutes instead of every 30 seconds. #7352

23.10.0 - 2023-09-21

Commits

Highlights

  • Datasets and annotations can now be more than 3-dimensional, using additional coordinates. #7136
  • Volume and bounding box information is shown in segments' context menus as well as in a separate modal in the segments tab. There is also an option to export the statistics. #7249

Added

  • Added disabled drag handles to volume and skeleton layers for visual consistency. These layer cannot be dragged or reordered. #7295
  • Dataset thumbnails for grayscale layers can now be colored using the value in the view configuration. #7255
  • OpenID Connect authorization is now compatible with Providers that send the user information in an id_token. #7294
  • Segments and segment groups can be modified via the JS API. The following functions are available: registerSegment, removeSegment, updateSegment, createSegmentGroup, renameSegmentGroup, deleteSegmentGroup. #7332
  • A banner underneath the navigation bar informs about current and upcoming maintenances of WEBKNOSSOS. #7284
  • The AI-based quick select tool can now also be used for ND datasets. #7287

Changed

  • On datasets with segment indices, ad-hoc meshing can now create non-connected meshes. #7244
  • Annotating volume data uses a transaction-based mechanism now. As a result, WK is more robust against partial saves (i.e., due to a crashing tab). #7264
  • Improved speed of saving volume data. #7264
  • Improved progress indicator when saving volume data. #7264
  • Adapted Zarr 3 implementations to recent changes in the specification (index codecs, zstd codec). #7305
  • When importing datasets with additional axes (more than 3 dimensions), the axis names are now sanitized and checked for duplicates. #7308

Fixed

  • Fixed that the deletion of a selected segment would crash the segments tab. #7316
  • Fixed reading sharded Zarr 3 data from the local file system. #7321
  • Fixed no-bucket data zipfile when downloading volume annotations. #7323
  • Fixed too tight assertions when saving annotations, leading to failed save requests. #7326
  • Fixed a bug when saving large amounts of skeleton annotation data at once. #7329
  • Fixed a bug that prevented downloading public skeleton-only annotations by other users. #7347

23.09.0 - 2023-08-29

Commits

Highlights

  • Added option to select multiple segments in the segment list in order to perform batch actions. #7242
  • Added the option to change the ordering of color layers via drag and drop. This is useful when using the cover blend mode. #7188

Added

  • Added configuration to require users' emails to be verified, added flow to verify emails via link. #7161
  • Added a route to explore and add remote datasets via API. #7176
  • Added a new button to the layer settings in view only dataset mode to save the current view configuration as the dataset's default. #7205
  • If a dataset layer is transformed (using an affine matrix or a thin plate spline), it can be dynamically shown without that transform via the layers sidebar. All other layers will be transformed accordingly. #7246
  • OpenID Connect authorization can now use a client secret for added security. #7263

Changed

  • Small messages during annotating (e.g. “finished undo”, “applying mapping…”) are now click-through, so they do not block users from selecting tools. #7239
  • When exploring remote NGFF datasets with channels, layer names and colors are automatically imported if available in the metadata. #7251
  • Annotating volume data uses a transaction-based mechanism now. As a result, WK is more robust against partial saves (i.e., due to a crashing tab). #7264
  • Improved speed of saving volume data. #7264
  • Improved progress indicator when saving volume data. #7264
  • The order of color layers can now also be manipulated in additive blend mode (see #7188). #7289
  • OpenID Connect authorization now fetches the server’s public key automatically. The config keys singleSignOn.openIdConnect.publicKey and singleSignOn.openIdConnect.publicKeyAlgorithm are now unused. 7267
  • When importing a remote dataset and adding another layer with a different voxel size, that layer is now scaled to match the first layer. #7213

Fixed

  • Fixed that it was possible to have larger active segment ids than supported by the data type of the segmentation layer which caused the segmentation ids to overflow. #7240
  • Fixed that folders could appear in the dataset search output in the dashboard. #7232
  • Fixed that the edit icon for an annotation description could disappear in Firefox. #7250
  • Fixed that assigning an invalid script name (e.g. with special characters) would trigger an error in the database. Now leads to a more descriptive error. #7525
  • Fixed rendering error when multiple segmentation layers exist and the user switched between these. #7291

Breaking Changes

  • The task and project api have changed. Make sure to update to the latest webknossos python library version when interacting with task and projects via the python library. Compare webknossos-libs#930. #7220

23.08.0 - 2023-07-24

Commits

Highlights

  • Added batch actions for segment groups, such as changing the color and loading or downloading all corresponding meshes. #7164.
  • Improved support for touch devices by adding floating buttons for easier navigation and layout changes. #7178
  • The brush size can now be changed by selecting brush size presets. These presets are user configurable by assigning the current brush size to any of the preset buttons. Additionally the preset brush sizes can be set with keyboard shortcuts. #7101

Added

  • Added a search feature for segments and segment groups. Listed segments/groups can be searched by id and name. #7175
  • Added a modal to the voxelytics workflow view that lists all artifacts with their file size and inode count. This helps to identify the largest artifacts to free disk space. #7152
  • Added new graphics and restyled empty dashboards. #7008
  • Added warning when using WEBKNOSSOS in an outdated browser. #7165
  • Re-added optional antialiasing for rendering. #7180
  • Added support for transformations with thin plate splines. #7131
  • WEBKNOSSOS can now read S3 remote dataset credentials from environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_KEY. Those will be used, if available, when accessing remote datasets for which no explicit credentials are supplied. #7170
  • Added security.txt according to RFC 9116. The content is configurable and it can be disabled. #7182
  • Added routes for super-users to manage users and organizations. #7196
  • Added tooltips to explain the task actions "Reset" and "Reset and Cancel". #7201
  • Thumbnail improvements: Thumbnails now use intensity configuration, thumbnails can now be created for float datasets, and they are cached across webknossos restarts. #7190

Changed

  • Redesigned the info tab in the right-hand sidebar to be fit the new branding and design language. #7110
  • The proofreading tool is always visible now (even when disabled). #7174
  • Optimized processing of parallel requests (new thread pool configuration, asynchronous FossilDB client), improving performance and reducing idle waiting. #7139
  • Renamed "open" tasks to "pending" and slightly redesigned the available task assignment view for clarity. #7187
  • Being the uploader of a dataset no longer grants edit permissions on that dataset. #7200
  • Enabled the "Shift + middle-click" shortcut to load agglomerate skeletons for all tools, not just the Skeleton tool. #7212

Fixed

  • Fixed rare rendering bug at viewport edge for anisotropic datasets. #7163
  • Fixed the dataset search which was broken when only the root folder existed. #7177
  • Correctly use configured fill-value for missing chunks of remote datasets hosted on gcs or s3. #7198
  • Correctly use configured fill-value for missing chunks of local non-wkw datasets. #7216
  • Adapted the proofreading docs to reflect the current state of the proofreading tool. #7212
  • Fixed a bug when adding remote datasets while not having write-access to the root folder. #7221

Removed

  • Removed the "Globalize Floodfill" feature that could extend partial floodfills across an entire dataset. Please use the fill tool multiple times instead or make use of the proofreading tool when correcting large structures. #7173

23.07.0 - 2023-06-20

Commits

Highlights

  • Added new shortcuts for fast tool switching. Look at the updated Keyboard Shortcuts documentation to see the new shortcuts. #7112
  • Creating bounding boxes can now be done by dragging the left mouse button (when the bounding box tool is selected). To move around in the dataset while this tool is active, keep ALT pressed. #7118

Added

  • Subfolders of the currently active folder are now also rendered in the dataset table in the dashboard. #6996
  • Added ability to view zarr v3 datasets. #7079
  • Added an index structure for volume annotation segments, in preparation for per-segment statistics. #7063
  • Instead of showing all possible action items next to each other, there is now an overflow menu for layer actions. #7123

Changed

  • Agglomerate skeletons can only be modified if the proofreading tool is active so they stay in sync with the underlying segmentation and agglomerate graph. Agglomerate skeletons cannot be modified using any other means. They are marked in the skeleton list using the clipboard icon of the proofreading tool. When exporting skeletons in the NML format, trees ("things") now have a type property which is either "DEFAULT" or "AGGLOMERATE". #7086
  • The cache for remote dataset array contents can now have a configured size in bytes. New config option datastore.cache.imageArrayChunks.maxSizeBytes. Default is 2 GB, consider increasing for production. #7067
  • Optimized processing of parallel requests for remote datasets, improving performance and reducing idle waiting. #7137

Fixed

  • Fixed a bug where some volume annotations could not be downloaded. #7115
  • Fixed reading of some remote datasets where invalid data would follow valid gzip data, causing the decompression to fail. #7119
  • Fixed problems which could arise when annotating volume data at negative positions (which is not supported and is properly ignored now). #7124
  • Fixed some requests failing for streaming remote data via HTTP, which was observed when streaming data via Zarr from another WEBKNOSSOS instance. #7125
  • Fixed that the brush preview was inaccurate in some scenarios. #7129
  • Fixed order of decompression on neuroglancer precomputed datasets, which caused some segmentation layers to not load correctly. #7135

Removed

  • Support for webknososs-connect data store servers has been removed. Use the "Add Remote Dataset" functionality instead. #7031

23.06.0 - 2023-05-30

Commits

Highlights

  • Added a machine-learning based quick select mode. Activate it via the "AI" button in the toolbar after selecting the quick-select tool. #7051
  • Added segment groups so that segments can be organized in a hierarchy (similar to skeletons). #6966
  • Added a new "cover" blend mode which renders the visible layers on top of each other. The new blend mode can be selected in the Data Rendering settings in the settings tab of the left side bar. #6936

Added

  • In addition to drag and drop, the selected tree(s) in the Skeleton tab can also be moved into another group by right-clicking the target group and selecting "Move selected tree(s) here". #7005
  • Added support for remote datasets encoded with brotli. #7041
  • Teams can be edited more straight-forwardly in a popup in the team edit page. #7043
  • Added support to download layers of a dataset as (OME) TIFF files in the download modal when viewing a dataset. #7068
  • Annotations with Editable Mappings (a.k.a Supervoxel Proofreading) can now be merged. #7026
  • The file size and inodes of artifacts are now aggregated and shown in the Voxelytics workflow list. #7071
  • It is possible to disable the automatic loading of meshes during proofreading. ##7076
  • When viewing a public dataset by another organization, the organization is shown next to the dataset list, and when viewing the dataset or an annotation. #7087

Changed

  • Loading of precomputed meshes got significantly faster (especially when using a mesh file for an oversegmentation with an applied agglomerate mapping). #7001
  • Improved speed of proofreading by only reloading affected areas after a split or merge. #7050
  • The minimum length of layer names in datasets was set from 3 to 1, enabling single-character names for layers. #7064
  • All dataset managers are now allowed to see all voxelytics workflow reports created in their organization. Previously, only admins could see all workflow reports, with other users seeing only their own. #7080
  • Improved performance for large meshes, especially when loaded from a precomputed oversegmentation mesh file. #7077
  • Slight increased the spacing and width of some VX reports elements. #7094

Fixed

  • Fixed that changing a segment color could lead to a crash. #7000
  • The fill_value property of zarr dataset is now used when it is not a number. #7017
  • Fixed a bug that made downloads of public annotations fail occasionally. #7025
  • Fixed layouting of used storage space on the organization page. #7034
  • Fixed a bug where updating skeleton annotation tree group visibility would break the annotation. #7037
  • Fixed importing Neuroglancer Precomputed datasets that have a voxel offset in their header. #7019, #7062
  • Fixed reading Neuroglancer Precomputed datasets with non-integer resolutions. #7041
  • Fixed a bug where invalid email addresses were not readable in dark mode on the login/signup pages. #7052
  • Fixed a bug where users could sometimes not access their own time tracking information. #7055
  • Fixed a bug in the wallTime calculation of the Voxelytics reports. #7059
  • Fixed a bug where thumbnails and raw data requests with non-bucket-aligned positions would show data at slightly wrong positions. #7058
  • Avoid crashes when exporting big STL files. #7074
  • Fixed rare rendering bug for datasets with multiple layers and differing magnifications. #7066
  • Fixed a bug where duplicating annotations with Editable Mappings could lead to a server-side endless loop. #7026
  • Fixed the datasource-properties.json route for zarr-streaminge export of datasets that are not wkw/zarr. #7065
  • Fixed an issue where you could no longer invite users to your organization even though you had space left. #7078
  • Fixed displayed units of used storage in the organization's overview page. #7057
  • Fixed a rendering bug that could occur when a dataset layer has missing mags (e.g., the first mag is 8-8-8). #7082
  • Fixed a bug where some volume annotations could not be duplicated or used as tasks. #7085
  • Fixed a superfluous rectangular geometry rendered at 0,0,0. #7088

23.05.2 - 2023-05-08

Commits

Fixed

  • Fixed a bug where users could sometimes not access their own time tracking information. #7055

23.05.1 - 2023-05-02

Commits

Fixed

  • Fixed rendering issues on some affected systems that led to "black holes". #7018
  • Added a workaround for a WebGL crash which could appear when a dataset contained many segmentation layers. #6995

23.05.0 - 2023-04-25

Commits

Highlights

  • Segments can now be removed from the segment list via the context menu. #6944
  • Added support for viewing neuroglancer precomputed segmentations using "compressed segmentation" compression. #6947

Added

  • WEBKNOSSOS screenshots now include a logo in the lower left corner. Users with a paid license can disable this feature in the viewport options in the settings tab on the left side of the screen. #6910
  • Added support for datasets with mixed magnifications (e.g., one layer contains mag 2-2-2 and another contains 2-2-1). #6943
  • Added rendering precomputed meshes with level of detail depending on the zoom of the 3D viewport. This feature only works with version 3 mesh files. #6909
  • Editing the meta data of segments (e.g., the name) is now undoable. #6944
  • Added more icons and small redesigns for various pages in line with the new branding. #6938
  • Added more graphics and branding to job notification emails. #6994
  • Added action button in Team Admin page that links to the User Admin page to edit team members there. #6999

Changed

  • Moved the view mode selection in the toolbar next to the position field. #6949
  • Redesigned welcome toast for new, anonymous users with new branding. #6961
  • When saving annotations, the URL of the webknossos instance is stored in the resulting NML file. #6964

Fixed

  • Fixed unintended dependencies between segments of different volume layers which used the same segment id. Now, using the same segment id for segments in different volume layers should work without any problems. #6960
  • Fixed incorrect initial tab when clicking "Show Annotations" for a user in the user list. Also, the datasets tab was removed from that page as it was the same as the datasets table from the main dashboard. #6957
  • Fixed that unsaved changes were shown when opening an annotation, although there weren't any. #6972
  • Fixed misleading email about successful dataset upload, which was in some cases sent even for unusable datasets. #6977
  • Fixed upload of skeleton annotations with no trees, only bounding boxes, being incorrectly rejected. #6985
  • Fixed that Google Cloud Storage URLs with bucket names containing underscores could not be parsed. #6998
  • Fixed regression that caused public datasets to crash when not being logged in. #7010

23.04.2 - 2023-04-14

Commits

Fixed

  • Fixed rendering problems in orthogonal when working with nodes that were created in flight or oblique mode. #6978

23.04.1 - 2023-04-06

Commits

Fixed

  • Fixed incorrect initial tab when clicking "Show Annotations" for a user in the user list. Also, the datasets tab was removed from that page as it was the same as the datasets table from the main dashboard. #6957

23.04.0 - 2023-03-27

Commits

Highlights

  • Added email notifications for WK worker jobs. #6918
  • Added support for viewing sharded neuroglancer precomputed datasets. #6920

Added

  • Added support for datasets where layers are transformed individually (with an affine matrix). Transformations can be specified via datasource-properties.json or via JS API (will be ephemeral, then). #6748
  • Added list of all respective team members to the administration page for teams. #6915
  • Added support for uploading zip64 files. #6939

Changed

  • Interpolation during rendering is now more performance intensive, since the rendering approach was changed. Therefore, interpolation is disabled by default. On the flip side, the rendered quality is often higher than it used to be. #6748
  • Updated the styling of the "welcome" screen for new users to be in line with the new branding. #6904
  • Improved Terms-of-Service modal (e.g., allow to switch organization even when modal was blocking the remaining usage of WEBKNOSSOS). #6930
  • Uploads are now blocked when the organization’s storage quota is exceeded. #6893

Fixed

  • Fixed an issue with text hints not being visible on the logout page for dark mode users. #6916
  • Fixed creating task types with a selected preferred mode. #6928
  • Fixed support for rendering of negative floats. #6895
  • Fixed caching issues with webworkers. #6932
  • Fixed download button for annotations which was disabled in some cases. #6931
  • Fixed antd deprecation warning for Dropdown menus. #6898

23.03.1 - 2023-03-14

Commits

Added

  • Added support for remote Zarr datasets with a datasource-properties.json as created by the WEBKNOSSOS Python library. #6879

Changed

  • Upgraded antd UI library to v4.24.8 #6865
  • The view mode dropdown was slimmed down by using icons to make the toolbar more space efficient. #6900

Fixed

  • Fixed a bug where N5 datasets reading with end-chunks that have a chunk size differing from the metadata-supplied chunk size would fail for some areas. #6890
  • Fixed potential crash when trying to edit certain annotation properties of a shared annotation. #6892
  • Fixed a bug where merging multiple volume annotations would result in inconsistent segment lists. #6882
  • Fixed a bug where uploading multiple annotations with volume layers at once would fail. #6882
  • Fixed a bug where dates were formatted incorrectly in Voxelytics reports. #6908
  • Fixed a rare bug which could cause an incorrectly initialized annotation so that changes were not saved in the current session. #6914

23.03.0 - 2023-02-28

Commits

Highlights

  • Remote datasets can now also be streamed from Google Cloud Storage URIs (gs://). #6775
  • Remote volume datasets in the neuroglancer precomputed format can now be viewed in WEBKNOSSOS. #6716
  • Added new mesh-related menu items to the context menu when a mesh is hovered in the 3d viewport. #6813

Added

  • If an annotation that others are allowed to edit is opened, it will now be automatically locked. This prevents conflicts when multiple users try to edit it at the same time. #6819
  • Highlight 'organization owner' in Admin>User page. #6832
  • Added OME-TIFF export for bounding boxes. #6838 #6874
  • Added functions to get and set segment colors to the frontend API (api.data.{getSegmentColor,setSegmentColor}). #6853

Changed

  • Limit paid team sharing features to respective organization plans. #6767
  • Rewrite the database tools in tools/postgres to JavaScript and adding support for non-default Postgres username-password combinations. #6803
  • Added owner name to organization page. #6811
  • Remove multiline