diff --git a/CHANGELOG.released.md b/CHANGELOG.released.md index c8a9f8d4e4..7bb00f66ae 100644 --- a/CHANGELOG.released.md +++ b/CHANGELOG.released.md @@ -7,6 +7,38 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Calendar Versioning](http://calver.org/) `0Y.0M.MICRO`. For upgrade instructions, please check the [migration guide](MIGRATIONS.released.md). +## [25.10.0](https://github.com/scalableminds/webknossos/releases/tag/25.10.0) - 2025-09-22 +[Commits](https://github.com/scalableminds/webknossos/compare/25.09.0...25.10.0) + +### Highlights +- Added a new multi cut mode to the proofreading tool, allowing more precise agglomerate splits. Instead of marking just one point per partition, users can now specify multiple points for each side of the split before performing the cut. [#8824](https://github.com/scalableminds/webknossos/pull/8824) + +### Added +- When starting an inference job on a dataset with inverted intensity values, that inversion now also applies in the inference job. [#8796](https://github.com/scalableminds/webknossos/pull/8796) +- Added a new multi cut mode to the proofreading tool, allowing more precise agglomerate splits. Instead of marking just one point per partition, users can now specify multiple points for each side of the split before performing the cut. [#8824](https://github.com/scalableminds/webknossos/pull/8824) +- Added the option to log out from all devices. [#8850](https://github.com/scalableminds/webknossos/pull/8850) +- Added a placeholder to the voxel size input field in the upload form. [#8876](https://github.com/scalableminds/webknossos/pull/8876) +- Added new camera positioning option for animations. [#8909](https://github.com/scalableminds/webknossos/pull/8909) + +### Changed +- Use blosc-java instead of jblosc. [#8882](https://github.com/scalableminds/webknossos/pull/8882) +- The webknossos-worker jobs export_tiff and render_animation are now allowed also for public datasets of other organizations. [#8911](https://github.com/scalableminds/webknossos/pull/8911) + +### Fixed +- Fixed that segmentation layer names were incorrectly displayed as obfuscated strings (tracing ids) in the viewport status indicator when viewing areas with missing data (e.g. at certain zoom levels). [#8865](https://github.com/scalableminds/webknossos/pull/8865) +- Fixed a bug where reading zarr3 data would return failures instead of the fill value if requested source chunks don’t exist. [#8885](https://github.com/scalableminds/webknossos/pull/8885) +- Fixed a bug where zarr streaming could fail for volume annotations that have a larger bbox than their fallback layer. (Some of those were created before #7580) [#8888](https://github.com/scalableminds/webknossos/pull/8888) +- Fixed that pressing AltGr, Ctrl or Command closed the authentication modal when viewing a public dataset. [#8895](https://github.com/scalableminds/webknossos/pull/8895) +- Fixed a bug where annotation updates would fail if multiple annotation layers are renamed such that a previously-taken name is then used by another layer. [#8896](https://github.com/scalableminds/webknossos/pull/8896) +- Fixed that the frontend requested ad-hoc meshes with out-of-layer-bounds coordinates. [#8901](https://github.com/scalableminds/webknossos/pull/8901) +- Fixed loading ad-hoc-computed meshes for static segmentation layers. [#8903](https://github.com/scalableminds/webknossos/pull/8903) +- Ad hoc mesh requests loading infinitely. [#8915](https://github.com/scalableminds/webknossos/pull/8915) +- Fix periodic polling of missing updates when another user edits an annotation. [#8919](https://github.com/scalableminds/webknossos/pull/8919) +- Fixed WK crashing when navigating between pages while maintenance banner is visible. [#8925](https://github.com/scalableminds/webknossos/pull/8925) +- Fixed navbar height when navigating between pages while maintenance banner is visible. [#8925](https://github.com/scalableminds/webknossos/pull/8925) +- Fixed running custom-model worker inferences with models shared from other wk organizations. [#4283](https://github.com/scalableminds/voxelytics/pull/4283) [#8926](https://github.com/scalableminds/webknossos/pull/8926) +- Fixed a bug in reading zarr3-format connectome files caused by a wrong metadata key [#8927](https://github.com/scalableminds/webknossos/pull/8927) + ## [25.09.0](https://github.com/scalableminds/webknossos/releases/tag/25.09.0) - 2025-08-26 [Commits](https://github.com/scalableminds/webknossos/compare/25.07.1...25.09.0) diff --git a/MIGRATIONS.released.md b/MIGRATIONS.released.md index 28ad42b41b..e03e1a311c 100644 --- a/MIGRATIONS.released.md +++ b/MIGRATIONS.released.md @@ -6,13 +6,20 @@ See `MIGRATIONS.unreleased.md` for the changes which are not yet part of an offi This project adheres to [Calendar Versioning](http://calver.org/) `0Y.0M.MICRO`. User-facing changes are documented in the [changelog](CHANGELOG.released.md). +## [25.10.0](https://github.com/scalableminds/webknossos/releases/tag/25.10.0) - 2025-09-22 +[Commits](https://github.com/scalableminds/webknossos/compare/25.09.0...25.10.0) + +### Postgres Evolutions +- [139-logout-everywhere.sql](conf/evolutions/139-logout-everywhere.sql) +- [140-annotation-layer-name-check-deferrable.sql](conf/evolutions/140-annotation-layer-name-check-deferrable.sql) + ## [25.09.0](https://github.com/scalableminds/webknossos/releases/tag/25.09.0) - 2025-08-26 [Commits](https://github.com/scalableminds/webknossos/compare/25.07.1...25.09.0) ### Postgres Evolutions -- [138-add-webauthn-credentials.sql](conf/evolutions/138-add-webauthn-credentials.sql) - [136-extra-column-for-email-changed.sql](conf/evolutions/136-extra-column-for-email-changed.sql) - [137-virtual-datasets.sql](conf/evolutions/137-virtual-datasets.sql) +- [138-add-webauthn-credentials.sql](conf/evolutions/138-add-webauthn-credentials.sql) ## [25.07.1](https://github.com/scalableminds/webknossos/releases/tag/25.07.1) - 2025-07-11 [Commits](https://github.com/scalableminds/webknossos/compare/25.07.0...25.07.1) @@ -891,4 +898,4 @@ First release - [009-remove-team-assignment-from-task.sql](conf/evolutions/009-remove-team-assignment-from-task.sql) - [010-add-organization-data.sql](conf/evolutions/010-add-organization-data.sql) - [011-add-isOrganizationTeam.sql](conf/evolutions/011-add-isOrganizationTeam.sql) -- [012-add-foreign-keys.sql](conf/evolutions/012-add-foreign-keys.sql) \ No newline at end of file +- [012-add-foreign-keys.sql](conf/evolutions/012-add-foreign-keys.sql) diff --git a/frontend/javascripts/viewer/api/api_latest.ts b/frontend/javascripts/viewer/api/api_latest.ts index 03718e2581..b24a845b19 100644 --- a/frontend/javascripts/viewer/api/api_latest.ts +++ b/frontend/javascripts/viewer/api/api_latest.ts @@ -57,6 +57,7 @@ import { import { flatToNestedMatrix } from "viewer/model/accessors/dataset_layer_transformation_accessor"; import { getActiveMagIndexForLayer, + getAdditionalCoordinatesAsString, getPosition, getRotationInRadian, } from "viewer/model/accessors/flycam_accessor"; @@ -2575,12 +2576,18 @@ class DataApi { * api.data.setMeshVisibility(segmentId, false); */ setMeshVisibility(segmentId: number, isVisible: boolean, layerName?: string) { + const state = Store.getState(); const effectiveLayerName = getRequestedOrVisibleSegmentationLayerEnforced( - Store.getState(), + state, layerName, ).name; + const additionalCoordinates = state.flycam.additionalCoordinates; + const additionalCoordKey = getAdditionalCoordinatesAsString(additionalCoordinates); - if (Store.getState().localSegmentationData[effectiveLayerName].meshes?.[segmentId] != null) { + if ( + state.localSegmentationData[effectiveLayerName]?.meshes?.[additionalCoordKey]?.[segmentId] != + null + ) { Store.dispatch(updateMeshVisibilityAction(effectiveLayerName, segmentId, isVisible)); } else { throw new Error( @@ -2597,12 +2604,18 @@ class DataApi { * api.data.removeMesh(segmentId, layerName); */ removeMesh(segmentId: number, layerName?: string): void { + const state = Store.getState(); const effectiveLayerName = getRequestedOrVisibleSegmentationLayerEnforced( - Store.getState(), + state, layerName, ).name; + const additionalCoordinates = state.flycam.additionalCoordinates; + const additionalCoordKey = getAdditionalCoordinatesAsString(additionalCoordinates); - if (Store.getState().localSegmentationData[effectiveLayerName].meshes?.[segmentId] != null) { + if ( + state.localSegmentationData[effectiveLayerName]?.meshes?.[additionalCoordKey]?.[segmentId] != + null + ) { Store.dispatch(removeMeshAction(effectiveLayerName, segmentId)); } else { throw new Error( @@ -2619,12 +2632,16 @@ class DataApi { * api.data.resetMeshes(); */ resetMeshes(layerName?: string) { + const state = Store.getState(); const effectiveLayerName = getRequestedOrVisibleSegmentationLayerEnforced( - Store.getState(), + state, layerName, ).name; + const additionalCoordinates = state.flycam.additionalCoordinates; + const additionalCoordKey = getAdditionalCoordinatesAsString(additionalCoordinates); const segmentIds = Object.keys( - Store.getState().localSegmentationData[effectiveLayerName].meshes || EMPTY_OBJECT, + Store.getState().localSegmentationData[effectiveLayerName]?.meshes?.[additionalCoordKey] || + EMPTY_OBJECT, ); for (const segmentId of segmentIds) { diff --git a/frontend/javascripts/viewer/controller/segment_mesh_controller.ts b/frontend/javascripts/viewer/controller/segment_mesh_controller.ts index 3667d4f68e..8bbf6b2b9a 100644 --- a/frontend/javascripts/viewer/controller/segment_mesh_controller.ts +++ b/frontend/javascripts/viewer/controller/segment_mesh_controller.ts @@ -261,7 +261,15 @@ export default class SegmentMeshController { group.segmentId = segmentId; this.addMeshToMeshGroups(additionalCoordinatesString, layerName, segmentId, lod, group); - const segmentationTracing = getActiveSegmentationTracing(Store.getState()); + const state = Store.getState(); + if (isNewlyAddedMesh) { + const isVisible = + state.localSegmentationData?.[layerName]?.meshes?.[additionalCoordinatesString]?.[segmentId] + .isVisible ?? true; + this.setMeshVisibility(segmentId, isVisible, layerName, additionalCoordinates); + } + + const segmentationTracing = getActiveSegmentationTracing(state); if (segmentationTracing != null) { // addMeshFromGeometry is often called multiple times for different sets of geometries. // Therefore, used a throttled variant of the updateActiveUnmappedSegmentIdHighlighting method. diff --git a/unreleased_changes/8796.md b/unreleased_changes/8796.md deleted file mode 100644 index a876efe3db..0000000000 --- a/unreleased_changes/8796.md +++ /dev/null @@ -1,2 +0,0 @@ -### Added -- When starting an inference job on a dataset with inverted intensity values, that inversion now also applies in the inference job. diff --git a/unreleased_changes/8824.md b/unreleased_changes/8824.md deleted file mode 100644 index b72c65d254..0000000000 --- a/unreleased_changes/8824.md +++ /dev/null @@ -1,2 +0,0 @@ -### Added -- Added a new multi cut mode to the proofreading tool, allowing more precise agglomerate splits. Instead of marking just one point per partition, users can now specify multiple points for each side of the split before performing the cut. \ No newline at end of file diff --git a/unreleased_changes/8850.md b/unreleased_changes/8850.md deleted file mode 100644 index b94f7e0306..0000000000 --- a/unreleased_changes/8850.md +++ /dev/null @@ -1,5 +0,0 @@ -### Added -- Added the option to log out from all devices. - -### Postgres Evolutions -- [139-logout-everywhere.sql](conf/evolutions/139-logout-everywhere.sql) diff --git a/unreleased_changes/8865.md b/unreleased_changes/8865.md deleted file mode 100644 index b4791e9091..0000000000 --- a/unreleased_changes/8865.md +++ /dev/null @@ -1,3 +0,0 @@ -### Fixed -- Fixed that segmentation layer names were incorrectly displayed as obfuscated strings (tracing ids) in the viewport status indicator when viewing areas with missing data (e.g. at certain zoom levels). - diff --git a/unreleased_changes/8876.md b/unreleased_changes/8876.md deleted file mode 100644 index fdf9a4ec25..0000000000 --- a/unreleased_changes/8876.md +++ /dev/null @@ -1,2 +0,0 @@ -### Added -- Added a placeholder to the voxel size input field in the upload form. diff --git a/unreleased_changes/8882.md b/unreleased_changes/8882.md deleted file mode 100644 index d82805c7c0..0000000000 --- a/unreleased_changes/8882.md +++ /dev/null @@ -1,2 +0,0 @@ -### Changed -- Use blosc-java instead of jblosc. diff --git a/unreleased_changes/8885.md b/unreleased_changes/8885.md deleted file mode 100644 index ba03706c53..0000000000 --- a/unreleased_changes/8885.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fixed a bug where reading zarr3 data would return failures instead of the fill value if requested source chunks don’t exist. diff --git a/unreleased_changes/8888.md b/unreleased_changes/8888.md deleted file mode 100644 index 8332161b2c..0000000000 --- a/unreleased_changes/8888.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fixed a bug where zarr streaming could fail for volume annotations that have a larger bbox than their fallback layer. (Some of those were created before #7580) diff --git a/unreleased_changes/8895.md b/unreleased_changes/8895.md deleted file mode 100644 index 86e2b25ab0..0000000000 --- a/unreleased_changes/8895.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fixed that pressing AltGr, Ctrl or Command closed the authentication modal when viewing a public dataset. diff --git a/unreleased_changes/8896.md b/unreleased_changes/8896.md deleted file mode 100644 index e0f251d961..0000000000 --- a/unreleased_changes/8896.md +++ /dev/null @@ -1,5 +0,0 @@ -### Fixed -- Fixed a bug where annotation updates would fail if multiple annotation layers are renamed such that a previously-taken name is then used by another layer. - -### Postgres Evolutions -- [140-annotation-layer-name-check-deferrable.sql](conf/evolutions/140-annotation-layer-name-check-deferrable.sql) diff --git a/unreleased_changes/8901.md b/unreleased_changes/8901.md deleted file mode 100644 index 29b222b945..0000000000 --- a/unreleased_changes/8901.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fixed that the frontend requested ad-hoc meshes with out-of-layer-bounds coordinates. \ No newline at end of file diff --git a/unreleased_changes/8903.md b/unreleased_changes/8903.md deleted file mode 100644 index 45b951d0ce..0000000000 --- a/unreleased_changes/8903.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fixed loading ad-hoc-computed meshes for static segmentation layers. diff --git a/unreleased_changes/8909.md b/unreleased_changes/8909.md deleted file mode 100644 index b8897649d3..0000000000 --- a/unreleased_changes/8909.md +++ /dev/null @@ -1,2 +0,0 @@ -### Added -- Added new camera positioning option for animations. diff --git a/unreleased_changes/8911.md b/unreleased_changes/8911.md deleted file mode 100644 index 8451492bbd..0000000000 --- a/unreleased_changes/8911.md +++ /dev/null @@ -1,2 +0,0 @@ -### Changed -- The webknossos-worker jobs export_tiff and render_animation are now allowed also for public datasets of other organizations. diff --git a/unreleased_changes/8915.md b/unreleased_changes/8915.md deleted file mode 100644 index 60b3094c8f..0000000000 --- a/unreleased_changes/8915.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Ad hoc mesh requests loading infinitely. \ No newline at end of file diff --git a/unreleased_changes/8919.md b/unreleased_changes/8919.md deleted file mode 100644 index e9fe704314..0000000000 --- a/unreleased_changes/8919.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fix periodic polling of missing updates when another user edits an annotation. \ No newline at end of file diff --git a/unreleased_changes/8925.md b/unreleased_changes/8925.md deleted file mode 100644 index 0e1adcb05e..0000000000 --- a/unreleased_changes/8925.md +++ /dev/null @@ -1,4 +0,0 @@ -### Fixed -- Fixed WK crashing when navigating between pages while maintenance banner is visible. -- Fixed navbar height when navigating between pages while maintenance banner is visible. - diff --git a/unreleased_changes/8926.md b/unreleased_changes/8926.md deleted file mode 100644 index abb514d20b..0000000000 --- a/unreleased_changes/8926.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fixed running custom-model worker inferences with models shared from other wk organizations. [#4283](https://github.com/scalableminds/voxelytics/pull/4283) diff --git a/unreleased_changes/8927.md b/unreleased_changes/8927.md deleted file mode 100644 index ac9a780fb8..0000000000 --- a/unreleased_changes/8927.md +++ /dev/null @@ -1,2 +0,0 @@ -### Fixed -- Fixed a bug in reading zarr3-format connectome files caused by a wrong metadata key diff --git a/unreleased_changes/8936.md b/unreleased_changes/8936.md new file mode 100644 index 0000000000..02d10ae4af --- /dev/null +++ b/unreleased_changes/8936.md @@ -0,0 +1,5 @@ +### Added +- Added a function to the frontend, that allows to react to specific actions for better script customizability. + +### Fixed +- Fixed multiple mesh related frontend API function (setMeshVisibility, removeMesh, and resetMeshes). Moreover, the mesh visibility is now applied even when changed during loading the mesh. \ No newline at end of file