Skip to content

Commit b4e3e55

Browse files
merge master
2 parents 4477287 + 49d285d commit b4e3e55

File tree

478 files changed

+13568
-7402
lines changed

Some content is hidden

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

478 files changed

+13568
-7402
lines changed

.github/workflows/build_test_deploy.yml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -263,44 +263,58 @@ jobs:
263263
run: docker compose --file .github/docker-compose.yml down --volumes --remove-orphans
264264

265265
- uses: docker/login-action@v3
266+
if: ${{ github.actor != 'dependabot[bot]' &&
267+
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
266268
with:
267269
username: ${{ secrets.DOCKER_USER }}
268270
password: ${{ secrets.DOCKER_PASS }}
269271

270272
- name: Push webknossos image
271-
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
273+
if: ${{ ! startsWith(github.ref, 'refs/tags/') &&
274+
github.actor != 'dependabot[bot]' &&
275+
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
272276
uses: ./.github/actions/retry
273277
with:
274278
run: docker push "scalableminds/webknossos:${{ env.DOCKER_TAG }}"
275279
retries: 5
276280
retry_delay_seconds: 10
277281
- name: Push normalized webknossos image
282+
if: ${{ github.actor != 'dependabot[bot]' &&
283+
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
278284
uses: ./.github/actions/retry
279285
with:
280286
run: docker push "scalableminds/webknossos:${{ env.NORMALIZED_BRANCH }}"
281287
retries: 5
282288
retry_delay_seconds: 10
283289
- name: Push webknossos-datastore image
284-
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
290+
if: ${{ ! startsWith(github.ref, 'refs/tags/') &&
291+
github.actor != 'dependabot[bot]' &&
292+
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
285293
uses: ./.github/actions/retry
286294
with:
287295
run: docker push "scalableminds/webknossos-datastore:${{ env.DOCKER_TAG }}"
288296
retries: 5
289297
retry_delay_seconds: 10
290298
- name: Push normalized webknossos-datastore image
299+
if: ${{ github.actor != 'dependabot[bot]' &&
300+
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
291301
uses: ./.github/actions/retry
292302
with:
293303
run: docker push "scalableminds/webknossos-datastore:${{ env.NORMALIZED_BRANCH }}"
294304
retries: 5
295305
retry_delay_seconds: 10
296306
- name: Push webknossos-tracingstore image
297-
if: ${{ ! startsWith(github.ref, 'refs/tags/') }}
307+
if: ${{ ! startsWith(github.ref, 'refs/tags/') &&
308+
github.actor != 'dependabot[bot]' &&
309+
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
298310
uses: ./.github/actions/retry
299311
with:
300312
run: docker push "scalableminds/webknossos-tracingstore:${{ env.DOCKER_TAG }}"
301313
retries: 5
302314
retry_delay_seconds: 10
303315
- name: Push normalized webknossos-tracingstore image
316+
if: ${{ github.actor != 'dependabot[bot]' &&
317+
(github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
304318
uses: ./.github/actions/retry
305319
with:
306320
run: docker push "scalableminds/webknossos-tracingstore:${{ env.NORMALIZED_BRANCH }}"

.github/workflows/nightly.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
5454
- name: Refresh datasets
5555
run: |
56-
curl -X POST --fail https://${{ env.SUBDOMAIN }}.webknossos.xyz/data/triggers/checkInboxBlocking?token=${{ secrets.WK_AUTH_TOKEN }}
56+
curl -X POST --fail https://${{ env.SUBDOMAIN }}.webknossos.xyz/data/triggers/checkInboxBlocking?token=${{ secrets.WK_DEV_AUTH_TOKEN }}
5757
5858
- name: Run screenshot tests
5959
run: |
@@ -62,7 +62,7 @@ jobs:
6262
yarn test-screenshot
6363
env:
6464
URL: https://${{ env.SUBDOMAIN }}.webknossos.xyz/
65-
WK_AUTH_TOKEN: ${{ secrets.WK_AUTH_TOKEN }}
65+
WK_AUTH_TOKEN: ${{ secrets.WK_DEV_AUTH_TOKEN }}
6666
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
6767
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
6868

.github/workflows/wkorg-nightly.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
yarn test-wkorg-screenshot
2929
env:
3030
URL: https://webknossos.org/
31-
WK_AUTH_TOKEN: ${{ secrets.WK_AUTH_TOKEN }}
31+
WK_AUTH_TOKEN: ${{ secrets.WK_ORG_AUTH_TOKEN }}
3232
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
3333
BROWSERSTACK_ACCESS_KEY : ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
3434

@@ -57,4 +57,4 @@ jobs:
5757
--data-raw '[{"position":[2752,4320,1728],"additionalCoordinates":[],"mag":[1,1,1],"cubeSize":32,"fourBit":false}]' \
5858
'https://data-humerus.webknossos.org/data/datasets/scalable_minds/l4dense_motta_et_al_demo/layers/segmentation/data?token=' \
5959
| grep -q "content-encoding: gzip"
60-
echo Success.
60+
echo Success.

CHANGELOG.released.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,77 @@ 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.07.1](https://github.com/scalableminds/webknossos/releases/tag/25.07.1) - 2025-07-11
11+
[Commits](https://github.com/scalableminds/webknossos/compare/25.07.0...25.07.1)
12+
13+
### Highlights
14+
- 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](https://github.com/scalableminds/webknossos/pull/8648)
15+
16+
### Added
17+
- Segment index files can now also be read from the new zarr3-based format, and from remote object storage. [#8711](https://github.com/scalableminds/webknossos/pull/8711)
18+
- Connectomes can now also be read from the new zarr3-based format, and from remote object storage. [#8717](https://github.com/scalableminds/webknossos/pull/8717)
19+
20+
### Changed
21+
- Compound annotations (merged views of finished task annotations) now show the task bounding boxes. [#8735](https://github.com/scalableminds/webknossos/pull/8735)
22+
- Adapted zarr mesh loading to skip segments missing in the meshfile. This was already the case for the hdf5 variant. [#8771](https://github.com/scalableminds/webknossos/pull/8771)
23+
- Users of organizations with a trial pricing plan can now join other organizations as guests. [#8772](https://github.com/scalableminds/webknossos/pull/8772)
24+
25+
### Fixed
26+
- Fixed a bug where segment index files for segmentation layers with no mag1 would be read incorrectly. [#8711](https://github.com/scalableminds/webknossos/pull/8711)
27+
- Fixed a bug where authentication tokens would sometimes expire too soon. [#8738](https://github.com/scalableminds/webknossos/pull/8738)
28+
- Fixed a bug where duplicating a compound annotation would fail if it has volume annotation layers. [#8743](https://github.com/scalableminds/webknossos/pull/8743)
29+
- 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](https://github.com/scalableminds/webknossos/pull/8756)
30+
- Fixed a bug where dataset layer attachments with absolute paths would not get loaded unless the paths are specified with file:// scheme. [#8761](https://github.com/scalableminds/webknossos/pull/8761)
31+
- Fixed that WEBKNOSSOS would crash directly if the communication with the server was interrupted while using the proofreading tool. [#8767](https://github.com/scalableminds/webknossos/pull/8767)
32+
- Fixed a bug where WEBKNOSSOS would show an error toast for volume annotations that have no fallback segmentation layer. [#8768](https://github.com/scalableminds/webknossos/pull/8768)
33+
- Fixed broken node selection in 3d viewport when continuous drawing was enabled in skeleton tool. [#8769](https://github.com/scalableminds/webknossos/pull/8769)
34+
- Fixed layer linking to support non-WKW layers. [#8773](https://github.com/scalableminds/webknossos/pull/8773)
35+
36+
## [25.07.0](https://github.com/scalableminds/webknossos/releases/tag/25.07.0) - 2025-07-01
37+
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.2...25.07.0)
38+
39+
### Highlights
40+
- 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)
41+
- Added a new Account Settings page for managing user preferences, passwords and authentication methods. [#8672](https://github.com/scalableminds/webknossos/pull/8672)
42+
- Improved efficiency of saving bounding box related annotation changes. [#8492](https://github.com/scalableminds/webknossos/pull/8492)
43+
44+
### Added
45+
- 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)
46+
- Meshes are now reloaded using their previous opacity value. [#8622](https://github.com/scalableminds/webknossos/pull/8622)
47+
- Agglomerate Mappings can now also be read from the new zarr3-based format, and from remote object storage. [#8633](https://github.com/scalableminds/webknossos/pull/8633)
48+
- 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)
49+
- Added a new Account Settings page for managing user preferences, passwords and authentication methods. [#8672](https://github.com/scalableminds/webknossos/pull/8672)
50+
- Precomputed Meshes can now also be read from the new zarr3-based format, and from remote object storage. [#8682](https://github.com/scalableminds/webknossos/pull/8682)
51+
- Added Zstandard support for N5 [#8703](https://github.com/scalableminds/webknossos/pull/8703)
52+
- WKW datasets can now also have custom paths in their datasource-properties.json. [#8725](https://github.com/scalableminds/webknossos/pull/8725)
53+
54+
### Changed
55+
- 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](https://github.com/scalableminds/webknossos/pull/8518)
56+
- 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](https://github.com/scalableminds/webknossos/pull/8677)
57+
- Updated the UI for the organizations settings page. [#8679](https://github.com/scalableminds/webknossos/pull/8679)
58+
- 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](https://github.com/scalableminds/webknossos/pull/8698)
59+
- The HTTP API of tracing store and data store endpoints now also support versioning for better compatibility across webknossos-libs python clients. [#8705](https://github.com/scalableminds/webknossos/pull/8705)
60+
- Replaced withRouter HOC with useHistory hook for several components. [#8721](https://github.com/scalableminds/webknossos/pull/8721)
61+
62+
### Fixed
63+
- Improved efficiency of saving bounding box related annotation changes. [#8492](https://github.com/scalableminds/webknossos/pull/8492)
64+
- 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)
65+
- Fixed a race condition when starting proofreading with a split action. [#8676](https://github.com/scalableminds/webknossos/pull/8676)
66+
- Fixed that the healthcheck for a dedicated tracing store would fail sometimes. [#8683](https://github.com/scalableminds/webknossos/pull/8683)
67+
- Fixed that activating a mapping got stuck when a dataset was opened in "view" mode. [#8687](https://github.com/scalableminds/webknossos/pull/8687)
68+
- Fixed the contrast of the WelcomeToast buttons. Updated `antd` to version `5.22`. [#8688](https://github.com/scalableminds/webknossos/pull/8688)
69+
- 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)
70+
- Fixed the sandbox mode for annotations. [#8702](https://github.com/scalableminds/webknossos/pull/8702)
71+
- Fixed the nightly screenshot tests. [#8702](https://github.com/scalableminds/webknossos/pull/8702)
72+
- Fixed that one could not scroll to the last item in the segments and trees tab. [#8709](https://github.com/scalableminds/webknossos/pull/8709)
73+
- Fixed that WEBKNOSSOS could crash when mappings were requested for a volume layer that is not based on another segmentation layer. [#8710](https://github.com/scalableminds/webknossos/pull/8710)
74+
- Fixed a crash when an ad-hoc mesh could not be loaded for some reason. [#8716](https://github.com/scalableminds/webknossos/pull/8716)
75+
- Fixed a bug where the checks on relative paths were too strict when editing dataset settings. [#8720](https://github.com/scalableminds/webknossos/pull/8720)
76+
- Fixed a bug when loading mesh files for segmentation layer without fallback data. Such layer cannot have mesh files. [#8726](https://github.com/scalableminds/webknossos/pull/8726)
77+
- Fixed reading chunks from arrays where the whole shard is missing (should return fill_value) [#8727](https://github.com/scalableminds/webknossos/pull/8727)
78+
- Fixed fetching mesh files in view only mode. Bug introduced by #8726 [#8728](https://github.com/scalableminds/webknossos/pull/8728)
79+
- 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](https://github.com/scalableminds/webknossos/pull/8733)
80+
1081
## [25.06.2](https://github.com/scalableminds/webknossos/releases/tag/25.06.2) - 2025-06-17
1182
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.1...25.06.2)
1283

MIGRATIONS.released.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,21 @@ 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.07.1](https://github.com/scalableminds/webknossos/releases/tag/25.07.1) - 2025-07-11
10+
[Commits](https://github.com/scalableminds/webknossos/compare/25.07.0...25.07.1)
11+
12+
### Postgres Evolutions
13+
None.
14+
15+
## [25.07.0](https://github.com/scalableminds/webknossos/releases/tag/25.07.0) - 2025-07-01
16+
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.2...25.07.0)
17+
18+
- 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.
19+
20+
### Postgres Evolutions
21+
- [134-dataset-layer-attachments.sql](conf/evolutions/134-dataset-layer-attachments.sql)
22+
- [135-neuroglancer-attachment.sql](conf/evolutions/135-neuroglancer-attachment.sql)
23+
924
## [25.06.2](https://github.com/scalableminds/webknossos/releases/tag/25.06.2) - 2025-06-17
1025
[Commits](https://github.com/scalableminds/webknossos/compare/25.06.1...25.06.2)
1126

app/RequestHandler.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import com.scalableminds.util.mvc.{CspHeaders, ExtendedController}
1+
import com.scalableminds.util.mvc.{ApiVersioning, CspHeaders, ExtendedController}
22
import com.typesafe.scalalogging.LazyLogging
33
import controllers.{Assets, SitemapController, AboutPageRedirectController}
44

@@ -9,7 +9,7 @@ import play.api.mvc.{Handler, InjectedController, RequestHeader}
99
import play.api.routing.Router
1010
import play.core.WebCommands
1111
import play.filters.csp.CSPConfig
12-
import utils.{ApiVersioning, WkConf}
12+
import utils.WkConf
1313

1414
import scala.concurrent.ExecutionContext
1515

app/Startup.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import mail.{Mailer, MailerConfig}
88
import models.annotation.AnnotationDAO
99
import models.dataset.ThumbnailCachingService
1010
import models.user.InviteService
11-
import net.liftweb.common.{Failure, Full}
11+
import com.scalableminds.util.tools.{Failure, Full}
1212
import org.apache.http.client.utils.URIBuilder
1313
import play.api.inject.ApplicationLifecycle
1414
import security.WkSilhouetteEnvironment

app/controllers/AnalyticsController.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@ import play.api.libs.json.JsObject
66
import play.api.mvc.{Action, PlayBodyParsers}
77
import play.silhouette.api.Silhouette
88
import security.WkEnv
9-
import utils.{ApiVersioning, WkConf}
9+
import utils.WkConf
1010

1111
import javax.inject.Inject
1212
import scala.concurrent.ExecutionContext
1313

1414
class AnalyticsController @Inject()(analyticsService: AnalyticsService, conf: WkConf, sil: Silhouette[WkEnv])(
1515
implicit ec: ExecutionContext,
1616
bodyParsers: PlayBodyParsers)
17-
extends Controller
18-
with ApiVersioning {
17+
extends Controller {
1918

2019
def ingestAnalyticsEvents: Action[AnalyticsEventsIngestJson] = Action.async(validateJson[AnalyticsEventsIngestJson]) {
2120
implicit request =>

0 commit comments

Comments
 (0)