diff --git a/.codespellrc b/.codespellrc
index 3f75a49db49..7c45be8d2f0 100644
--- a/.codespellrc
+++ b/.codespellrc
@@ -1,6 +1,6 @@
[codespell]
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
-skip = *.svg,*.sublime-workspace,*.lock,.codespellrc,./util/target/,./binaryData,./node_modules,./pg,./project/target,./target,./webknossos-datastore/target,./webknossos-jni/target,./webknossos-tracingstore/target,./util/target,./coverage,./public-test,./tools/proxy/node_modules,./docs/publications.md,./public/bundle,./public/assets,./tools/migration-unified-annotation-versioning/venv,./tools/migration-unified-annotation-versioning/*.json
+skip = *.svg,*.sublime-workspace,*.lock,.codespellrc,./util/target/,./binaryData,./node_modules,./pg,./project/target,./target,./webknossos-datastore/target,./webknossos-jni/target,./webknossos-tracingstore/target,./util/target,./coverage,./public-test,./tools/proxy/node_modules,./docs/publications.md,./public/bundle,./public/assets,./tools/migration-unified-annotation-versioning/venv,./tools/migration-unified-annotation-versioning/*.json,./fossildb/data,*.log,./webknossos-slick-codegen/target,./fossildb/backup,*_pb2.py
# some names and camelCased variables etc
ignore-regex = \b([a-z]+[A-Z][a-zA-Z]*|H Mattern|Manuel|Nat Commun)\b
-ignore-words-list = lod,nd,ue,DoubleClick,InOut
+ignore-words-list = lod,nd,ue,DoubleClick,InOut,Applyable
diff --git a/CHANGELOG.released.md b/CHANGELOG.released.md
index dd6ff5291a7..2c4e7fa46d4 100644
--- a/CHANGELOG.released.md
+++ b/CHANGELOG.released.md
@@ -317,7 +317,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released
- Clicking `Focus Tree in Skeleton Tab` or `Focus in Segment List` will not only focus the clicked tree/segment, but also open the right tab if it was not open already. [#8917](https://github.com/scalableminds/webknossos/pull/8917)
- Renamed Basic plan to Personal plan. [#8951](https://github.com/scalableminds/webknossos/pull/8951)
- Improved the error message when loading an unusable dataset or an annotation for an unusable dataset [#8956](https://github.com/scalableminds/webknossos/pull/8956)
-- Changed the pre-selected default format for volume annotation downloads from WKW to Zarr. [#8970](https://github.com/scalableminds/webknossos/pull/8970)
+- Changed the preselected default format for volume annotation downloads from WKW to Zarr. [#8970](https://github.com/scalableminds/webknossos/pull/8970)
- The tracingstore route `/mapping/:tracingId/agglomerateGraph/:agglomerateId` used by the python client now returns the static fallback agglomerate graph from the datastore in case of volume annotation layers with no editable mapping. [#9013](https://github.com/scalableminds/webknossos/pull/9013)
### Fixed
@@ -404,7 +404,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released
- Changed that the d/f switching setting no longer affects movements other than moving via the d/f keyboard shortcuts. [#8786](https://github.com/scalableminds/webknossos/pull/8786)
- Explicitly scanning datasets on disk is now faster for multi-organization setups. [#8791](https://github.com/scalableminds/webknossos/pull/8791)
- Integrated "Change Email" functionality into Account Settings [#8840](https://github.com/scalableminds/webknossos/pull/8840)
-- When adding a new dataset from UI modal, the organization's default team is now automatically pre-selected for dataset access permissions. [#8847](https://github.com/scalableminds/webknossos/pull/8847)
+- When adding a new dataset from UI modal, the organization's default team is now automatically preselected for dataset access permissions. [#8847](https://github.com/scalableminds/webknossos/pull/8847)
- Zarr streaming a volume annotation will now respond with errors (500) if the underlying data encountered errors. [#8853](https://github.com/scalableminds/webknossos/pull/8853)
- datasource-properties.jsons with wkwResolutions now do not need the cubeLength parameter anymore. [#8854](https://github.com/scalableminds/webknossos/pull/8854)
- Added protection against server outages by limiting the number of update actions in an annotation update transaction to 1000000. [#8866](https://github.com/scalableminds/webknossos/pull/8866)
@@ -1157,7 +1157,7 @@ For upgrade instructions, please check the [migration guide](MIGRATIONS.released
- Added the option to convert agglomerate skeletons to freely modifiable skeletons in the context menu of the Skeleton tab. [#7537](https://github.com/scalableminds/webknossos/pull/7537)
- The annotation list in the dashboard now also shows segment counts of volume annotations (after they have been edited). [#7548](https://github.com/scalableminds/webknossos/pull/7548)
- The buildinfo route now reports the supported HTTP API versions. [#7581](https://github.com/scalableminds/webknossos/pull/7581)
-- After deleting specific teams, projects and task types, their names can now be re-used when creating new ones. [#7573](https://github.com/scalableminds/webknossos/pull/7573)
+- After deleting specific teams, projects and task types, their names can now be reused when creating new ones. [#7573](https://github.com/scalableminds/webknossos/pull/7573)
### Changed
- Improved loading speed of the annotation list. [#7410](https://github.com/scalableminds/webknossos/pull/7410)
diff --git a/app/models/task/TaskCreationResult.scala b/app/models/task/TaskCreationResult.scala
index 2c0fd925741..cb1f5f9afb9 100644
--- a/app/models/task/TaskCreationResult.scala
+++ b/app/models/task/TaskCreationResult.scala
@@ -1,6 +1,6 @@
package models.task
-import com.scalableminds.util.mvc.JsonResultAttribues
+import com.scalableminds.util.mvc.JsonResultAttributes
import com.scalableminds.util.tools.Fox
import com.scalableminds.util.tools.{Box, Empty, Failure, Full, ParamFailure}
import play.api.http.Status
@@ -10,7 +10,7 @@ import scala.concurrent.{ExecutionContext, Future}
case class TaskCreationResult(tasks: List[JsObject], warnings: List[String])
-object TaskCreationResult extends JsonResultAttribues with Status {
+object TaskCreationResult extends JsonResultAttributes with Status {
implicit val jsonFormat: Format[TaskCreationResult] = Json.format[TaskCreationResult]
def fromTaskJsFoxes(taskJsons: List[Fox[JsObject]], warnings: List[String])(
diff --git a/app/security/CertificateValidationService.scala b/app/security/CertificateValidationService.scala
index 03a98eda1de..06e362ce489 100644
--- a/app/security/CertificateValidationService.scala
+++ b/app/security/CertificateValidationService.scala
@@ -63,7 +63,7 @@ class CertificateValidationService @Inject()(implicit ec: ExecutionContext) exte
(for {
certificate <- Properties.envOrNone("CERTIFICATE")
// JwtJson already throws an error which is transformed to an empty option when the certificate is expired.
- // In case the token is expired, tge default map will be used.
+ // In case the token is expired, the default map will be used.
token <- JwtJson.decodeJson(certificate, publicKey, JwtOptions(expiration = false)).toOption
featureOverrides <- Some(
(token \ "webknossos").asOpt[Map[String, Boolean]].getOrElse(defaultConfigOverridesMap))
diff --git a/conf/webknossos.versioned.routes b/conf/webknossos.versioned.routes
index db0938c73e6..4438bb85267 100644
--- a/conf/webknossos.versioned.routes
+++ b/conf/webknossos.versioned.routes
@@ -9,7 +9,7 @@
# changed in v12: Dataset upload now expects layersToLink in new format with datasetId instead of orgaId+directoryName
# changed in v11: Datasets reserveManualUpload flow via WK side. Note: older versions of the route are *not* supported for security reasons.
# changed in v9: Datasets are now identified by their id, not their name. The routes now need to pass a dataset id instead of a name and organization id tuple.
- # Requests to the TracingStore and DatasStore need to address a dataset based on its directoryName and organization id.
+ # Requests to the TracingStore and DataStore need to address a dataset based on its directoryName and organization id.
# changed in v8: Datasets' name was renamed to id and the displayName is now named name.
# changed in v7: datasources now contain scale as object with keys factor and unit, e.g. {"factor": [11,11,5.5], "unit": "nm"}
# changed in v6: isValidName always returns Ok, with a JSON object containing possible errors and key "isValid"
diff --git a/frontend/javascripts/admin/dataset/composition_wizard/03_select_datasets.tsx b/frontend/javascripts/admin/dataset/composition_wizard/03_select_datasets.tsx
index 46561a38991..d3d7b5b0ad0 100644
--- a/frontend/javascripts/admin/dataset/composition_wizard/03_select_datasets.tsx
+++ b/frontend/javascripts/admin/dataset/composition_wizard/03_select_datasets.tsx
@@ -50,7 +50,7 @@ export default function SelectDatasets({ wizardContext, setWizardContext }: Wiza
return (
- Select the datasets that you want to combine or doublecheck the pre-selected datasets. Note
+ Select the datasets that you want to combine or doublecheck the preselected datasets. Note
that the order of the datasets is important and needs to be equal to the order of the files
from the upload.
diff --git a/frontend/javascripts/admin/user/permissions_and_teams_modal_view.tsx b/frontend/javascripts/admin/user/permissions_and_teams_modal_view.tsx
index 7baec78f4d9..91535ae2db8 100644
--- a/frontend/javascripts/admin/user/permissions_and_teams_modal_view.tsx
+++ b/frontend/javascripts/admin/user/permissions_and_teams_modal_view.tsx
@@ -273,7 +273,7 @@ function PermissionsAndTeamsModalView(props: TeamRoleModalProps) {
const onlyEditingSingleUser = selectedUserIds.length === 1;
useEffect(() => {
- // If a single user is selected, pre-select their teams
+ // If a single user is selected, preselect their teams
const singleUserMaybe = getSingleUserMaybe(selectedUserIds, users);
if (singleUserMaybe) {
diff --git a/frontend/javascripts/test/sagas/save_mutex_strategy_switching.spec.ts b/frontend/javascripts/test/sagas/save_mutex_strategy_switching.spec.ts
index c8abca9322f..2ee36a92dbf 100644
--- a/frontend/javascripts/test/sagas/save_mutex_strategy_switching.spec.ts
+++ b/frontend/javascripts/test/sagas/save_mutex_strategy_switching.spec.ts
@@ -110,7 +110,7 @@ describe("Save Mutex Saga collaboration mode switching", () => {
/*
* Tests for:
- * Exclusive -> {Concurrent, OnwerOnly}
+ * Exclusive -> {Concurrent, OwnerOnly}
*/
it
("Switching from Exclusive to Concurrent should cancel the continuous mutex saga and start the ad-hoc saga.", async (context: WebknossosTestContext) => {
await setupWebknossosForTestingWithRestrictions(context, "Exclusive", true);
diff --git a/frontend/javascripts/viewer/model/accessors/annotation_accessor.ts b/frontend/javascripts/viewer/model/accessors/annotation_accessor.ts
index 1fce474a1bb..e44157af8d3 100644
--- a/frontend/javascripts/viewer/model/accessors/annotation_accessor.ts
+++ b/frontend/javascripts/viewer/model/accessors/annotation_accessor.ts
@@ -47,7 +47,7 @@ export function mayAddToSaveQueue(state: WebknossosState): boolean {
* with update actions.
*/
return (
- // allowSave is initialized with allowUpdate and may be overriden when
+ // allowSave is initialized with allowUpdate and may be overridden when
// saving is disabled (via DISABLE_SAVING action).
Boolean(state.annotation.restrictions.allowSave) &&
!state.uiInformation.showVersionRestore &&
diff --git a/frontend/javascripts/viewer/model/accessors/volumetracing_accessor.ts b/frontend/javascripts/viewer/model/accessors/volumetracing_accessor.ts
index 8f3b23af68a..a203708cf03 100644
--- a/frontend/javascripts/viewer/model/accessors/volumetracing_accessor.ts
+++ b/frontend/javascripts/viewer/model/accessors/volumetracing_accessor.ts
@@ -968,7 +968,7 @@ export type BucketRetrievalSource =
export const getBucketRetrievalSourceFn =
// The function that is passed to memoize will only be executed once
// per layerName. This is important since the function uses reuseInstanceOnEquality
- // to create a function that ensures that identical BucketRetrievalSource tuples will be re-used between
+ // to create a function that ensures that identical BucketRetrievalSource tuples will be reused between
// consecutive calls.
memoize((layerName: string) =>
reuseInstanceOnEquality((state: WebknossosState): BucketRetrievalSource => {
diff --git a/frontend/javascripts/viewer/model/sagas/saving/save_saga.tsx b/frontend/javascripts/viewer/model/sagas/saving/save_saga.tsx
index e0f96b8bc41..f4f0949f992 100644
--- a/frontend/javascripts/viewer/model/sagas/saving/save_saga.tsx
+++ b/frontend/javascripts/viewer/model/sagas/saving/save_saga.tsx
@@ -150,7 +150,7 @@ function needsPollAnnotationUpdates(state: WebknossosState): "yes" | "no" | "lat
// If the version restore view is open, newer versions should not be fetched
// as this could mess up the current state.
- // Similarily, we should not poll for updates when a rebase is in progress.
+ // Similarly, we should not poll for updates when a rebase is in progress.
const { isRestoringVersion, showVersionRestore } = state.uiInformation;
const isVersionRestoreActive = showVersionRestore && !isRestoringVersion;
const { isRebasingOrForwarding } = state.save.rebaseRelevantServerAnnotationState;
diff --git a/frontend/javascripts/viewer/view/right_border_tabs/abstract_tree_renderer.ts b/frontend/javascripts/viewer/view/right_border_tabs/abstract_tree_renderer.ts
index c89226aaf0e..9f4501cfc1f 100644
--- a/frontend/javascripts/viewer/view/right_border_tabs/abstract_tree_renderer.ts
+++ b/frontend/javascripts/viewer/view/right_border_tabs/abstract_tree_renderer.ts
@@ -5,7 +5,7 @@ import type { Tree } from "viewer/model/types/tree_types";
const NODE_RADIUS = 2;
const MAX_NODE_DISTANCE = 100;
-const CLICK_TRESHOLD = 6;
+const CLICK_THRESHOLD = 6;
const MODE_NORMAL = 0; // draw every node and the complete tree
const MODE_NOCHAIN = 1; // draw only decision points
@@ -70,7 +70,7 @@ class AbstractTreeRenderer {
let id = null;
for (const entry of nodeList) {
- if (Math.abs(x - entry.x) <= CLICK_TRESHOLD && Math.abs(y - entry.y) <= CLICK_TRESHOLD) {
+ if (Math.abs(x - entry.x) <= CLICK_THRESHOLD && Math.abs(y - entry.y) <= CLICK_THRESHOLD) {
id = entry.id;
break;
}
@@ -356,7 +356,7 @@ class AbstractTreeRenderer {
/**
* Draws the dashed chain indicator and the start and end nodes.
* @param {Number} top y coordinate in pixels
- * @param {Number} middle middel x coordinate in pixels
+ * @param {Number} middle middle x coordinate in pixels
* @param {AbstractNodeType} node
* @param {Decision} decision
*/
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index a3be17074e0..52794290775 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -1,5 +1,5 @@
-import play.sbt.PlayImport.{filters, _}
-import sbt._
+import play.sbt.PlayImport.{filters, *}
+import sbt.*
object Dependencies {
@@ -12,16 +12,16 @@ object Dependencies {
)
private val silhouetteVersion = "10.0.4"
- private val brotliVersion = "1.22.0"
- private val slickVersion = "3.5.2"
- private val postgresVersion = "42.7.10"
- private val awsVersion = "2.42.41"
+ private val brotliVersion = "1.23.0"
+ private val slickVersion = "3.6.1"
+ private val awsVersion = "2.46.10"
+ private val postgresVersion = "42.7.11"
private val scalapbVersion = scalapb.compiler.Version.scalapbVersion
private val grpcVersion = scalapb.compiler.Version.grpcJavaVersion
val utilDependencies: Seq[ModuleID] = Seq(
// Play Web Framework. import play
- "org.playframework" %% "play" % "3.0.10",
+ "org.playframework" %% "play" % "3.0.11",
// Play’s JSON serialization. import play.api.libs.json
"org.playframework" %% "play-json" % "3.0.6",
// Sending emails. import org.apache.commons.mail
@@ -33,7 +33,7 @@ object Dependencies {
// Protocol buffers. import scalapb
"com.thesamet.scalapb" %% "scalapb-runtime" % scalapbVersion,
// LazyLogging. import com.typesafe.scalalogging
- "com.typesafe.scala-logging" %% "scala-logging" % "3.9.5",
+ "com.typesafe.scala-logging" %% "scala-logging" % "3.9.6",
// Asynchronous caching. import com.github.benmanes.caffeine
caffeine,
// password hashing with bcrypt. import at.favre.lib.crypto.bcrypt
@@ -79,13 +79,13 @@ object Dependencies {
// AWS Transfer Manager for multipart uploads. import software.amazon.awssdk.transfer.s3
"software.amazon.awssdk" % "s3-transfer-manager" % awsVersion,
// Google cloud storage client. import com.google.cloud.storage, import com.google.auth.oauth2
- "com.google.cloud" % "google-cloud-storage" % "2.67.0",
+ "com.google.cloud" % "google-cloud-storage" % "2.69.0",
// Blosc compression. import dev.zarr.bloscjava
- "com.scalableminds" % "blosc-java" % "0.1-1.21.4",
+ "com.scalableminds" % "blosc-java" % "0.3-1.21.6",
// Zstd compression. import org.apache.commons.compress
"org.apache.commons" % "commons-compress" % "1.28.0",
// Zstd compression native bindings. not imported
- "com.github.luben" % "zstd-jni" % "1.5.7-7",
+ "com.github.luben" % "zstd-jni" % "1.5.7-11",
// Brotli compression. import com.aayushatharva.brotli4j
"com.aayushatharva.brotli4j" % "brotli4j" % brotliVersion,
// Brotli compression native bindings. not imported
@@ -113,9 +113,9 @@ object Dependencies {
// End-to-end test specs
specs2 % Test,
// Writing XML. import com.sun.xml.txw2
- "org.glassfish.jaxb" % "txw2" % "4.0.7",
+ "org.glassfish.jaxb" % "txw2" % "4.0.9",
// Makes txw2 write self-closing tags in xml (which we want). Not imported.
- "com.fasterxml.woodstox" % "woodstox-core" % "7.1.1",
+ "com.fasterxml.woodstox" % "woodstox-core" % "7.2.1",
// Json Web Tokens (used for OIDC Auth). import pdi.jwt
"com.github.jwt-scala" %% "jwt-play-json" % "11.0.4",
// SQL Queries. import slick
diff --git a/schema/evolutions/069-tasktype-project-unique-per-orga.sql b/schema/evolutions/069-tasktype-project-unique-per-orga.sql
index 527d96f6fe0..89596ef2515 100644
--- a/schema/evolutions/069-tasktype-project-unique-per-orga.sql
+++ b/schema/evolutions/069-tasktype-project-unique-per-orga.sql
@@ -17,7 +17,7 @@ ALTER TABLE webknossos.projects ALTER COLUMN _organization SET NOT NULL;
ALTER TABLE webknossos.tasktypes ALTER COLUMN _organization SET NOT NULL;
ALTER TABLE webknossos.taskTypes ADD CONSTRAINT tasktypes_summary__organization_key UNIQUE(summary, _organization);
--- Project name uniqueness only enforced in scala, to allow re-using names of deleted ones.
+-- Project name uniqueness only enforced in scala, to allow reusing names of deleted ones.
-- Compare https://github.com/scalableminds/webknossos/issues/5388
CREATE VIEW webknossos.projects_ AS SELECT * FROM webknossos.projects WHERE NOT isDeleted;
diff --git a/schema/evolutions/reversions/169-per-user-annotation-view-config.sql b/schema/evolutions/reversions/169-per-user-annotation-view-config.sql
index 26b872440c8..daa9ab8342a 100644
--- a/schema/evolutions/reversions/169-per-user-annotation-view-config.sql
+++ b/schema/evolutions/reversions/169-per-user-annotation-view-config.sql
@@ -4,7 +4,7 @@ do $$ begin if (select schemaVersion from webknossos.releaseInformation) <> 169
DROP VIEW webknossos.annotations_;
--- Readd old viewConfiguration column
+-- Re-add old viewConfiguration column
ALTER TABLE webknossos.annotations ADD COLUMN viewConfiguration JSONB;
-- migrate owner view config to annotation table
diff --git a/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala b/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala
index 9bd2945ad05..161b03fccb9 100644
--- a/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala
+++ b/util/src/main/scala/com/scalableminds/util/mvc/ExtendedController.scala
@@ -111,7 +111,7 @@ trait ResultImplicits extends BoxToResultHelpers {
class JsonResult(status: Int)
extends Result(header = ResponseHeader(status), body = HttpEntity.NoEntity)
- with JsonResultAttribues {
+ with JsonResultAttributes {
private def createResult(content: JsValue)(implicit writeable: Writeable[JsValue]): Result =
Result(header = ResponseHeader(status),
@@ -182,13 +182,13 @@ trait MimeTypes {
val octetStreamMimeType: String = "application/octet-stream"
}
-trait JsonResults extends JsonResultAttribues {
+trait JsonResults extends JsonResultAttributes {
val JsonOk = new JsonResult(OK)
val JsonBadRequest = new JsonResult(BAD_REQUEST)
val JsonNotFound = new JsonResult(NOT_FOUND)
}
-trait JsonResultAttribues {
+trait JsonResultAttributes {
val jsonSuccess = "success"
val jsonError = "error"
}
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/dataformats/SafeCachable.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/dataformats/SafeCacheable.scala
similarity index 97%
rename from webknossos-datastore/app/com/scalableminds/webknossos/datastore/dataformats/SafeCachable.scala
rename to webknossos-datastore/app/com/scalableminds/webknossos/datastore/dataformats/SafeCacheable.scala
index cc21fba9f36..46ed09af6c2 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/dataformats/SafeCachable.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/dataformats/SafeCacheable.scala
@@ -1,6 +1,6 @@
package com.scalableminds.webknossos.datastore.dataformats
-trait SafeCachable {
+trait SafeCacheable {
private var accessCounter = 0
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/AgglomerateFileCache.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/AgglomerateFileCache.scala
index 607c3305fe5..318ab91ef78 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/AgglomerateFileCache.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/AgglomerateFileCache.scala
@@ -4,7 +4,7 @@ import java.util
import ch.systemsx.cisd.hdf5.{HDF5DataSet, IHDF5Reader}
import com.scalableminds.util.cache.LRUConcurrentCache
import com.scalableminds.util.tools.{Box, Full}
-import com.scalableminds.webknossos.datastore.dataformats.SafeCachable
+import com.scalableminds.webknossos.datastore.dataformats.SafeCacheable
import com.scalableminds.webknossos.datastore.models.datasource.{DataSourceId, LayerAttachment}
import com.scalableminds.webknossos.datastore.models.requests.{Cuboid, DataServiceDataRequest}
import com.typesafe.scalalogging.LazyLogging
@@ -17,7 +17,7 @@ case class CachedAgglomerateFile(reader: IHDF5Reader,
dataset: HDF5DataSet,
agglomerateIdCache: AgglomerateIdCache,
cache: Either[AgglomerateIdCache, BoundingBoxCache])
- extends SafeCachable {
+ extends SafeCacheable {
override protected def onFinalize(): Unit = { dataset.close(); reader.close() }
}
diff --git a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/Hdf5FileCache.scala b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/Hdf5FileCache.scala
index 03f0a1f4834..e00479b04a5 100644
--- a/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/Hdf5FileCache.scala
+++ b/webknossos-datastore/app/com/scalableminds/webknossos/datastore/storage/Hdf5FileCache.scala
@@ -12,7 +12,7 @@ import ch.systemsx.cisd.hdf5.{
import com.scalableminds.util.Msg
import com.scalableminds.util.cache.LRUConcurrentCache
import com.scalableminds.util.tools.{Box, Failure, Full}
-import com.scalableminds.webknossos.datastore.dataformats.SafeCachable
+import com.scalableminds.webknossos.datastore.dataformats.SafeCacheable
import com.scalableminds.webknossos.datastore.models.datasource.LayerAttachment
import com.scalableminds.webknossos.datastore.services.ArrayArtifactHashing
import com.scalableminds.webknossos.datastore.services.mesh.MeshFileUtils
@@ -22,7 +22,7 @@ import java.nio.file.Path
import scala.util.Using
class CachedHdf5File(reader: IHDF5Reader)
- extends SafeCachable
+ extends SafeCacheable
with AutoCloseable
with ArrayArtifactHashing
with MeshFileUtils
diff --git a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/volume/VolumeUpdateActions.scala b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/volume/VolumeUpdateActions.scala
index eae464f1c66..5cf03a6f5b0 100644
--- a/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/volume/VolumeUpdateActions.scala
+++ b/webknossos-tracingstore/app/com/scalableminds/webknossos/tracingstore/tracings/volume/VolumeUpdateActions.scala
@@ -688,7 +688,7 @@ case class UpsertSegmentGroupVolumeAction(groupId: Int,
private def renameInGroups(groups: Seq[SegmentGroup]): (Seq[SegmentGroup], Boolean) = {
// To avoid traversing into the subbranch of the group which should be renamed, we pass the second argument to fold left.
- // It keeps track of whether the renaming was already done and then earlies out instead of traversing deeper.
+ // It keeps track of whether the renaming was already done and then stops early instead of traversing deeper.
val updated = groups.foldLeft((Vector.empty[SegmentGroup], false)) {
// Pass as already renamed.
case ((acc, true), g) =>