Skip to content

Commit 9ee0b24

Browse files
committed
Merge branch 'master' of github.com:scalableminds/webknossos into account-settings-page
2 parents 76616d0 + 573bcbe commit 9ee0b24

File tree

122 files changed

+1937
-1282
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+1937
-1282
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
------
1414
(Please delete unneeded items, merge only when none are left open)
15-
- [ ] Updated [changelog](../blob/master/CHANGELOG.unreleased.md#unreleased)
16-
- [ ] Updated [migration guide](../blob/master/MIGRATIONS.unreleased.md#unreleased) if applicable
15+
- [ ] Added changelog entry (create a `$PR_NUMBER.md` file in `unreleased_changes` or use `./tools/create-changelog-entry.py`)
16+
- [ ] Added migration guide entry if applicable (edit the same file as for the changelog)
1717
- [ ] Updated [documentation](../blob/master/docs) if applicable
1818
- [ ] Adapted [wk-libs python client](https://github.com/scalableminds/webknossos-libs/tree/master/webknossos/webknossos/client) if relevant API parts change
1919
- [ ] Removed dev-only changes like prints and application.conf edits

CHANGELOG.released.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
77
and this project adheres to [Calendar Versioning](http://calver.org/) `0Y.0M.MICRO`.
88
For upgrade instructions, please check the [migration guide](MIGRATIONS.released.md).
99

10+
## [25.06.2](https://github.com/scalableminds/webknossos/releases/tag/25.06.2) - 2025-06-17
11+
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.1...25.06.2)
12+
13+
### Fixed
14+
- Fixed a regression that led to incorrect behavior when trying to jump to the last branchpoint even though no branchpoint existed. [#8695](https://github.com/scalableminds/webknossos/pull/8695)
15+
1016
## [25.06.1](https://github.com/scalableminds/webknossos/releases/tag/25.06.1) - 2025-06-03
1117
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.0...25.06.1)
1218

CHANGELOG.unreleased.md

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1 @@
1-
# Changelog (Unreleased)
2-
3-
All notable (yet unreleased) user-facing changes to WEBKNOSSOS are documented in this file.
4-
See `CHANGELOG.released.md` for the changes which are part of official releases.
5-
6-
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
7-
and this project adheres to [Calendar Versioning](http://calver.org/) `0Y.0M.MICRO`.
8-
For upgrade instructions, please check the [migration guide](MIGRATIONS.released.md).
9-
10-
## Unreleased
11-
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.1...HEAD)
12-
13-
### Added
14-
- 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](https://github.com/scalableminds/webknossos/pull/8542)
15-
- 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](https://github.com/scalableminds/webknossos/pull/8662)
16-
- Meshes are now reloaded using their previous opacity value. [#8622](https://github.com/scalableminds/webknossos/pull/8622)
17-
18-
### Changed
19-
20-
### Fixed
21-
- Improved efficiency of saving bounding box related changes. [#8492](https://github.com/scalableminds/webknossos/pull/8492)
22-
- 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](https://github.com/scalableminds/webknossos/pull/8638)
23-
- Fixed the contrast of the WelcomeToast buttons. Updated `antd` to version `5.22`.[#8688](https://github.com/scalableminds/webknossos/pull/8688)
24-
- Fixed a race condition when starting proofreading with a split action. [#8676](https://github.com/scalableminds/webknossos/pull/8676)
25-
- Fixed that activating a mapping got stuck when a dataset was opened in "view" mode. [#8687](https://github.com/scalableminds/webknossos/pull/8687)
26-
27-
### Removed
28-
29-
### Breaking Changes
1+
WARNING: This file will be deleted in the next release. If you have a merge conflict in this file, please ensure that the file only contains this warning text after the merge. Please execute `./tools/create-changelog-entry.py` and move the changelog for your PR into the file that was created by the script. From now on, this will be the new way of adding changelog and migration guide entries for a PR. The created files will be aggregated when a release is created.

MIGRATIONS.released.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ See `MIGRATIONS.unreleased.md` for the changes which are not yet part of an offi
66
This project adheres to [Calendar Versioning](http://calver.org/) `0Y.0M.MICRO`.
77
User-facing changes are documented in the [changelog](CHANGELOG.released.md).
88

9+
## [25.06.2](https://github.com/scalableminds/webknossos/releases/tag/25.06.2) - 2025-06-17
10+
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.1...25.06.2)
11+
12+
### Postgres Evolutions:
13+
None.
14+
915
## [25.06.1](https://github.com/scalableminds/webknossos/releases/tag/25.06.1) - 2025-06-03
1016
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.0...25.06.1)
1117

MIGRATIONS.unreleased.md

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1 @@
1-
# Migration Guide (Unreleased)
2-
All migrations (for unreleased versions) of WEBKNOSSOS are documented in this file.
3-
See `MIGRATIONS.released.md` for the migrations which are part of official releases.
4-
5-
This project adheres to [Calendar Versioning](http://calver.org/) `0Y.0M.MICRO`.
6-
User-facing changes are documented in the [changelog](CHANGELOG.released.md).
7-
8-
## Unreleased
9-
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.1...HEAD)
10-
11-
- The default thread pool size was increased from 5 to 10 times the number of available CPUs (capped at 1000). Note that wk may need slightly more memory because of this. [#8686](https://github.com/scalableminds/webknossos/pull/8686)
12-
13-
### Postgres Evolutions:
14-
- [134-dataset-layer-attachments.sql](conf/evolutions/134-dataset-layer-attachments.sql)
1+
WARNING: This file will be deleted in the next release. If you have a merge conflict in this file, please ensure that the file only contains this warning text after the merge. Please execute `./tools/create-changelog-entry.py` and move the changelog for your PR into the file that was created by the script. From now on, this will be the new way of adding changelog and migration guide entries for a PR. The created files will be aggregated when a release is created.

app/controllers/AuthenticationController.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ class AuthenticationController @Inject()(
215215
} yield result
216216

217217
def accessibleBySwitching(datasetId: Option[ObjectId],
218-
annotationId: Option[String],
218+
annotationId: Option[ObjectId],
219219
workflowHash: Option[String]): Action[AnyContent] = sil.SecuredAction.async {
220220
implicit request =>
221221
for {

app/controllers/WKRemoteTracingStoreController.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ class WKRemoteTracingStoreController @Inject()(tracingStoreService: TracingStore
8282
tracingStoreService.validateAccess(name, key) { _ =>
8383
val report = request.body
8484
for {
85-
annotationId <- ObjectId.fromString(report.annotationId)
86-
annotation <- annotationDAO.findOne(annotationId)
85+
annotation <- annotationDAO.findOne(report.annotationId)
8786
_ <- ensureAnnotationNotFinished(annotation)
8887
_ <- annotationDAO.updateModified(annotation._id, Instant.now)
8988
_ = report.statistics.map(statistics => annotationService.updateStatistics(annotation._id, statistics))

app/models/annotation/AnnotationLayerPrecedence.scala

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ case class RedundantTracingProperties(
2929
zoomLevel: Double,
3030
userBoundingBoxes: Seq[NamedBoundingBoxProto],
3131
editPositionAdditionalCoordinates: Seq[AdditionalCoordinateProto],
32-
userStateBoundingBoxVisibilities: Map[String, Seq[Id32WithBool]] // UserId → Seq(bboxId, bboxIsVisible)
32+
userStateBoundingBoxVisibilities: Map[ObjectId, Seq[Id32WithBool]] // UserId → Seq(bboxId, bboxIsVisible)
3333
)
3434

3535
trait AnnotationLayerPrecedence extends FoxImplicits {
@@ -79,7 +79,7 @@ trait AnnotationLayerPrecedence extends FoxImplicits {
7979
userStates: Seq[SkeletonUserStateProto],
8080
oldPrecedenceLayerProperties: RedundantTracingProperties): Seq[SkeletonUserStateProto] = {
8181
val adaptedExistingUserStates = userStates.map { userState =>
82-
val userId = userState.userId
82+
val userId = ObjectId(userState.userId)
8383
oldPrecedenceLayerProperties.userStateBoundingBoxVisibilities.get(userId) match {
8484
case None => userState
8585
case Some(precedenceBboxVisibilities) =>
@@ -88,9 +88,9 @@ trait AnnotationLayerPrecedence extends FoxImplicits {
8888
}
8989
// We also have to create new user states for the users the old precedence layer has, but the new precedence layer is missing.
9090
val newUserPrecedenceProperties = oldPrecedenceLayerProperties.userStateBoundingBoxVisibilities.filter(tuple =>
91-
!userStates.exists(_.userId == tuple._1))
91+
!userStates.exists(_.userId == tuple._1.toString))
9292
val newUserStates = newUserPrecedenceProperties.map {
93-
case (userId: String, boundingBoxVisibilities: Seq[Id32WithBool]) =>
93+
case (userId: ObjectId, boundingBoxVisibilities: Seq[Id32WithBool]) =>
9494
SkeletonTracingDefaults
9595
.emptyUserState(userId)
9696
.copy(
@@ -104,7 +104,7 @@ trait AnnotationLayerPrecedence extends FoxImplicits {
104104
userStates: Seq[VolumeUserStateProto],
105105
oldPrecedenceLayerProperties: RedundantTracingProperties): Seq[VolumeUserStateProto] = {
106106
val adaptedExistingUserStates = userStates.map { userState =>
107-
val userId = userState.userId
107+
val userId = ObjectId(userState.userId)
108108
oldPrecedenceLayerProperties.userStateBoundingBoxVisibilities.get(userId) match {
109109
case None => userState
110110
case Some(precedenceBboxVisibilities) =>
@@ -113,9 +113,9 @@ trait AnnotationLayerPrecedence extends FoxImplicits {
113113
}
114114
// We also have to create new user states for the users the old precedence layer has, but the new precedence layer is missing.
115115
val newUserPrecedenceProperties = oldPrecedenceLayerProperties.userStateBoundingBoxVisibilities.filter(tuple =>
116-
!userStates.exists(_.userId == tuple._1))
116+
!userStates.exists(_.userId == tuple._1.toString))
117117
val newUserStates = newUserPrecedenceProperties.map {
118-
case (userId: String, boundingBoxVisibilities: Seq[Id32WithBool]) =>
118+
case (userId: ObjectId, boundingBoxVisibilities: Seq[Id32WithBool]) =>
119119
VolumeTracingDefaults
120120
.emptyUserState(userId)
121121
.copy(
@@ -194,7 +194,7 @@ trait AnnotationLayerPrecedence extends FoxImplicits {
194194
s.userBoundingBoxes ++ s.userBoundingBox.map(
195195
com.scalableminds.webknossos.datastore.geometry.NamedBoundingBoxProto(0, None, None, None, _)),
196196
s.editPositionAdditionalCoordinates,
197-
s.userStates.map(userState => (userState.userId, userState.boundingBoxVisibilities)).toMap
197+
s.userStates.map(userState => (ObjectId(userState.userId), userState.boundingBoxVisibilities)).toMap
198198
)
199199
case Right(v) =>
200200
RedundantTracingProperties(
@@ -204,7 +204,7 @@ trait AnnotationLayerPrecedence extends FoxImplicits {
204204
v.userBoundingBoxes ++ v.userBoundingBox.map(
205205
com.scalableminds.webknossos.datastore.geometry.NamedBoundingBoxProto(0, None, None, None, _)),
206206
v.editPositionAdditionalCoordinates,
207-
v.userStates.map(userState => (userState.userId, userState.boundingBoxVisibilities)).toMap
207+
v.userStates.map(userState => (ObjectId(userState.userId), userState.boundingBoxVisibilities)).toMap
208208
)
209209
}
210210
}

app/models/annotation/AnnotationMerger.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class AnnotationMerger @Inject()(datasetDAO: DatasetDAO, tracingStoreService: Tr
7474
for {
7575
dataset <- datasetDAO.findOne(datasetId)
7676
tracingStoreClient: WKRemoteTracingStoreClient <- tracingStoreService.clientFor(dataset)
77-
mergedAnnotationProto <- tracingStoreClient.mergeAnnotationsByIds(annotations.map(_.id),
77+
mergedAnnotationProto <- tracingStoreClient.mergeAnnotationsByIds(annotations.map(_._id),
7878
annotations.map(_._user),
7979
newAnnotationId,
8080
toTemporaryStore,

app/models/annotation/AnnotationService.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,7 @@ class AnnotationService @Inject()(
801801
dataStore <- dataStoreDAO.findOneByName(dataset._dataStore.trim) ?~> "datastore.notFound"
802802
tracingStore <- tracingStoreDAO.findFirst
803803
annotationSource = AnnotationSource(
804-
id = annotation.id,
804+
id = annotation._id,
805805
annotationLayers = annotation.annotationLayers,
806806
datasetDirectoryName = dataset.directoryName,
807807
organizationId = organization._id,

0 commit comments

Comments
 (0)