All migrations of WEBKNOSSOS are documented in this file.
See MIGRATIONS.unreleased.md
for the changes which are not yet part of an official release.
This project adheres to Calendar Versioning 0Y.0M.MICRO
.
User-facing changes are documented in the changelog.
24.04.0 - 2024-03-25
- WKW datasets can now only be read if they have a
header.wkw
file in their mag directories. If specific datasets can no longer be loaded, consider adding such a file. Backend logging should show according error message. #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 way the segment index is stored for nd-annotations has been changed (#7411). Annotations with old segment indices should be archived if they do not contain relevant data. The following SQL query can be used:
UPDATE webknossos.annotations_ SET state = 'Finished' WHERE _id IN (SELECT DISTINCT a._id AS nd_annotations_id FROM webknossos.annotations_ AS a INNER JOIN webknossos.datasets AS d ON a._dataset = d._id INNER JOIN webknossos.dataset_layer_additionalaxes AS dla ON d._id = dla._dataset)
- WEBKNOSSOS now uses Java 21 (up from Java 11). #7599
- NodeJS version 18+ is required for snapshot tests with ShadowDOM elements from Antd v5. #7522
- Email verification is disabled by default. To enable it, set
webKnossos.user.emailVerification.activated
totrue
in yourapplication.conf
. #7620 #7621 - New dependency draco/libdraco-dev needs to be installed when deploying without docker and for local development.
- Config block
braintracing
is now unused and can be removed. #7693
24.02.3 - 2024-02-22
24.02.2 - 2024-02-15
24.02.1 - 2024-02-15
24.02.0 - 2024-01-26
- The config
setting play.http.secret.key
(secret random string) now requires a minimum length of 32 bytes. - If your setup contains webknossos-workers, postgres evolution 110 introduces the column
supportedJobCommands
. This needs to be filled in manually for your workers. Currently available job commands arecompute_mesh_file
,compute_segment_index_file
,convert_to_wkw
,export_tiff
,find_largest_segment_id
,infer_nuclei
,infer_neurons
,materialize_volume_annotation
,render_animation
. #7463 - If your setup contains webknossos-workers, postgres evolution 110 introduces the columns
maxParallelHighPriorityJobs
andmaxParallelLowPriorityJobs
. Make sure to set those values to match what you want for your deployment. #7463 - If your setup contains webknossos-workers, you may want to add the new available worker job
compute_segment_index_file
to thesupportedJobCommands
column of one or more of your workers. #7493 - The WEBKNOSSOS api version has changed to 6. The
isValidNewName
route for datasets now returns 200 regardless of whether the name is valid or not. The body contains a JSON object with the key "isValid". #7550 - If your setup contains ND datasets, run the python3 script at
tools/migrate-axis-bounds/migration.py
on your datastores to update the datasource-properties.jsons of the ND datasets. - With the upgrade to Play 3 and the migration to pekko, configuration keys using akka need to be changed. For the default configuration this results in the following changes:
- akka.requestTimeout → pekko.requestTimeout
- akka.actor.default-dispatcher → pekko.actor.default-dispatcher
23.12.0 - 2023-11-27
- If your deployment starts FossilDB separately, make sure to upgrade to version 0.1.27 (build master__484). Note that with the upgraded version, the database contents are automatically migrated. A downgrade to an older FossilDB version is not possible afterwards (creating an additional backup of the FossilDB data directory is advised)
- WEBKNOSSOS now sets the Content-Security-Policy (CSP) HTTP response header restricting which dynamic resources are allowed to load. Please update the
application.conf
-play.filters.csp.directives
key if you'd like to change the default CSP. The default CSP is suited for WEBKNOSSOS development. For production follow the comments next to the respective directives in theapplication.conf
, i.e. remove 'unsafe-inline' from the script-src, remove ws://localhost:9002 from the connect-src, add the URLs of all external datastores to the connect-src, and add the host domain to the connect-src. #7367 and #7450
23.11.0 - 2023-10-24
- The
datastore/isosurface
configuration key was renamed to `datastore/adHocMesh. - In order to enable segment statistics for existing volume annotations (without fallback segmentation), a user with superuser rights can call a migration route during a downtime. This will transform all volume annotation layers that qualify (cross organization). This will take some time, results will be logged by WEBKNOSSOS to stdout. The trigger route is
curl -X PATCH "<domain>/api/annotations/addSegmentIndicesToAll?parallelBatchCount=16" -H 'X-Auth-Token: <token>'
with theparallelBatchCount
parameter controlling the parallelity of the migration (e.g. number of cpu cores of the tracingstore server). This action is designed to be idempotent.
23.10.2 - 2023-09-26
23.10.1 - 2023-09-22
23.10.0 - 2023-09-21
23.09.0 - 2023-08-29
- Postgres Evolution 105 (see below) adds email verification and sets the emails of all existing users as verified. To set all email addresses as unverified, execute this query:
UPDATE webknossos.multiUsers SET isEmailVerified = false;
-
When interacting with webknossos via the python library, make sure you update to the latest version, as the task and project api have changed. Compare webknossos-libs#930. #7220
-
If you have OIDC authentication set up, you can now remove the config keys
singleSignOn.openIdConnect.publicKey
andsingleSignOn.openIdConnect.publicKeyAlgorithm
, as the server’s public key is now automatically fetched. #7267
23.08.0 - 2023-07-24
23.07.0 - 2023-06-20
- FossilDB needs to be opened with new additional column family volumeSegmentIndex.
23.06.0 - 2023-05-30
- FossilDB needs to be opened with new additional column families editableMappingsInfo, editableMappingsAgglomerateToGraph, editableMappingsSegmentToAgglomerate.
- For instances with existing editable mapping (a.k.a supervoxel proofreading) annotations: To keep those annotations alive, a python migration has to be run with access to your tracingstore’s FossilDB. It is recommended to do this during a webknossos downtime to avoid data loss. It needs python 3.8+ and the pip packages installable by
pip install grpcio-tools grpcio-health-checking
. Run it withpython tools/migrate-editable-mappings/migrate-editable-mappings.py -v -w -o localhost:7155
. Omit -o for a faster migration but no access to older versions of the editable mappings. The migration is idempotent. - The datastore now needs
brotli
. For Debian-based systems, this can be installed withapt-get install libbrotli1
. - New FossilDB version 0.1.23 (
master__448
on Dockerhub) is required, compare FossilDB PR.
None.
23.05.2 - 2023-05-08
None.
23.05.1 - 2023-05-02
None.
23.05.0 - 2023-04-25
- The config key features.isDemoInstance was renamed to features.isWkorgInstance (only needs to be adapted for the main wkorg instance). #6941
None.
23.04.2 - 2023-04-14
None.
23.04.1 - 2023-04-06
None.
23.04.0 - 2023-03-27
23.03.1 - 2023-03-14
- WEBKNOSSOS now requires at least Java 11 (up from Java 8). #6869
None.
23.03.0 - 2023-02-28
- WEBKNOSSOS now requires Node.js not only for development and building, but also for execution. The prebuilt Docker images already contain this dependency. If you're using these, nothing needs to be changed. #6803
- Requires Voxelytics worker version 23.02.xx for long-running jobs. #6838
23.02.1 - 2023-02-07
None.
23.02.0 - 2023-02-01
- WEBKNOSSOS requires Loki instead of Elasticsearch for Voxelytics logging now. Please update the
application.conf
: Removevoxelytics.elasticsearch.index
, renamevoxelytics.elasticsearch
tovoxelytics.loki
, and updatevoxelytics.loki.uri
. #6770
- 094-pricing-plans.sql
- 095-constraint-naming.sql
- 096-storage.sql
- 097-credentials.sql
- 098-voxelytics-states.sql
23.01.0 - 2023-01-03
- Bulk task creation now needs the taskTypeId, the task type summary will no longer be accepted. If you have scripts generating CSVs for bulk task creation, they should not output task type summaries. #6640
22.12.0 - 2022-11-24
None.
22.11.2 - 2022-11-10
None.
22.11.1 - 2022-10-27
None.
22.11.0 - 2022-10-24
None.
22.10.0 - 2022-09-27
- To use the Voxelytics reporting features in webKnossos, the config field
features.voxelyticsEnabled
needs to be set to true. When also using the logging features, an Elasticsearch instance needs to be running and configured in the config fieldvoxelytics.elasticsearch.uri
.
22.09.0 - 2022-08-25
- webKnossos requires node 16 now. #6350
- Removed the foreign datastore feature. If you have any foreign datastores registered in your webKnossos, running this upgrade may result in undefined behavior. #6392
- 084-annotation-contributors.sql
- 085-annotation-publication.sql
- 086-drop-foreign-datastores.sql
- 087-zarr-private-links.sql
22.08.0 - 2022-07-20
- Postgres evolution 83 (see below) introduces unique and url-safe constraints for annotation layer names. If the database contains entries violating those new constraints, they need to be fixed manually, otherwise the evolution will abort:
-
change null names to the front-end-side defaults:
update webknossos.annotation_layers set name = 'Volume' where name is null and typ = 'Volume' update webknossos.annotation_layers set name = 'Skeleton' where name is null and typ = 'Skeleton'
-
find annotations with multiple layers, make unique manually
select _annotation, name from webknossos.annotation_layers where _annotation in (select s._annotation from (select _annotation, count(_annotation) from webknossos.annotation_layers where typ = 'Volume' group by _annotation order by count(_annotation) desc limit 1000) as s where count > 1) and typ = 'Volume' order by _annotation
-
find layers with interesting names, manually remove spaces and special characters
select * from webknossos.annotation_layers where not name ~* '^[A-Za-z0-9\-_\.]+$'
-
- 083-unique-layer-names.sql Note: Note that this evolution introduces constraints which may not be met by existing data. See above for manual steps
22.07.0 - 2022-06-28
- FossilDB now has to be started with two new additional column families: editableMappings,editableMappingUpdates. Note that this upgrade can not be trivially rolled back, since new rocksDB column families are added and it is not easy to remove them again from an existing database. In case webKnossos needs to be rolled back, it is recommended to still keep the new column families in FossilDB. #6195
22.06.1 - 2022-06-16
22.06.0 - 2022-05-27
- Note that the datastore API version has changed to 2.0. If you use webknossos-connect alongside your webKnossos instance, you will need to upgrade that one as well, compare webknossos-connect#129. #6159
22.05.1 - 2022-04-29
22.05.0 - 2022-04-26
22.04.0 - 2022-03-22
22.03.0 - 2022-02-21
- The config field
googleAnalytics.trackingId
needs to be changed to GA4 measurement id, if used.
22.02.0 - 2022-01-24
22.01.0 - 2022-01-04
- The datastore now also needs access to a Redis database. New config fields
datastore.redis.address
anddatastore.redis.port
are required. Note that this Redis instance may be the same one the tracingstore uses, but does not have to be.
21.11.0 - 2021-11-30
- The docker files now place the webKnossos installation under
/webknossos
instead of/srv/webknossos
. All mounts, most importantly/srv/webknossos/binaryData
, need to be changed accordingly. - The entrypoint of the docker files have changed. Therefore, any existing
docker-compose.yml
setups need to be adapted. In most cases, only theentrypoint: bin/webknossos
lines need to be removed (if existant). - To receive Slack notifications about slow bucket requests, overwrite
slackNotifications.uri
in the webknossos-datastore config. - If your setup includes a webknossos-worker, it needs to be updated to the latest version (PR https://github.com/scalableminds/webknossos-worker/pull/70)
21.10.0 - 2021-11-08
21.09.0 - 2021-10-01
- For webknossos.org: Change
publicDemoDatasetUrl
in thefeatures
-block withinapplication.conf
to be an actionable URL. For example, append/createExplorative/hybrid?fallbackLayerName=segmentation
to the URL so that a new annotation is created if a user clicks onOpen a Demo Dataset
in the dashboard.
21.08.0 - 2021-08-26
Commits No migrations necessary.
21.07.0 - 2021-07-21
- Consider setting
defaultToLegacyBindings
totrue
in application.conf if you want that new users use the classic controls by default. - To make the classic mouse bindings the default for existing users and task types execute the following (adapt
true
tofalse
if you want the opposite):
-- Activate legacy bindings for all users
UPDATE webknossos.users
SET userconfiguration = jsonb_set(
userconfiguration,
array['useLegacyBindings'],
to_jsonb('true'::boolean))
-- Recommend legacy bindings for users when starting a new task
UPDATE webknossos.tasktypes
SET recommendedconfiguration = jsonb_set(
recommendedconfiguration,
array['useLegacyBindings'],
to_jsonb('true'::boolean))
- The health check at api/health does not longer include checking data/health and tracings/health if the respective local modules are enabled. Consider monitoring those routes separately.
- Run as sql:
UPDATE webknossos.tasktypes SET recommendedconfiguration = recommendedconfiguration - 'highlightHoveredCellId';
to avoid invalid recommended configurations in existing task types. This was added later as evolution 75, but should be run already here (note that it is idempotent).
21.06.0 - 2021-06-01
21.05.1 - 2021-05-05
- The config keys in application.conf were restructured. If you overwrite any of them for your config, please adapt to the new structure, according to the table below. If you run any stand-alone datastores or tracingstores, make sure to update their config files as well.
old key | new key | notes |
---|---|---|
http.address |
removed | used by play, default is 0.0.0.0, you can still overwrite it if necessary |
actor.defaultTimeout |
removed | was already unused |
js.defaultTimeout |
removed | was already unused |
akka.loggers |
removed | was already unused |
application.name |
removed | was already unused |
application.branch |
removed | was already unused |
application.version |
removed | was already unused |
application.title |
webKnossos.tabTitle |
|
application.insertInitialData |
webKnossos.sampleOrganization.enabled |
|
application.insertLocalConnectDatastore |
removed | feature removed, insert manually instead |
application.authentication.defaultuser.email |
webKnossos.sampleOrganization.user.email |
|
application.authentication.defaultUser.password |
webKnossos.sampleOrganization.user.password |
|
application.authentication.defaultUser.token |
webKnossos.sampleOrganization.user.token |
|
application.authentication.defaultUser.isSuperUser |
webKnossos.sampleOrganization.user.isSuperUser |
|
application.authentication.ssoKey |
webKnossos.user.ssoKey |
|
application.authentication.inviteExpiry |
webKnossos.user.inviteExpiry |
|
webKnossos.user.time.tracingPauseInSeconds |
webKnossos.user.time.tracingPause |
type changed from Int to FiniteDuration, add seconds |
webKnossos.query.maxResults |
removed | was already unused |
user.cacheTimeoutInMinutes |
webKnossos.cache.user.timeout |
type changed from Int to FiniteDuration, add minutes |
tracingstore.enabled |
removed | info contained in play.modules.enabled |
datastore.enabled |
removed | info contained in play.modules.enabled |
datastore.webKnossos.pingIntervalMinutes |
datastore.webKnossos.pingInterval |
type changed from Int to FiniteDuration, add minutes |
braingames.binary.cacheMaxSize |
datastore.cache.dataCube.maxEntries |
|
braingames.binary.mappingCacheMaxSize |
datastore.cache.mapping.maxEntries |
|
braingames.binary.agglomerateFileCacheMaxSize |
datastore.cache.agglomerateFile.maxFileHandleEntries |
|
braingames.binary.agglomerateCacheMaxSize |
datastore.cache.agglomerateFile.maxSegmentIdEntries |
|
braingames.binary.agglomerateStandardBlockSize |
datastore.cache.agglomerateFile.blockSize |
|
braingames.binary.agglomerateMaxReaderRange |
datastore.cache.agglomerateFile.cumsumMaxReaderRange |
|
braingames.binary.loadTimeout |
removed | was already unused |
braingames.binary.saveTimeout |
removed | was already unused |
braingames.binary.isosurfaceTimeout |
datastore.isosurface.timeout |
type changed from Int to FiniteDuration, add seconds |
braingames.binary.isosurfaceActorPoolSize |
datastore.isosurface.actorPoolSize |
|
braingames.binary.baseFolder |
datastore.baseFolder |
|
braingames.binary.agglomerateSkeletonEdgeLimit |
datastore.agglomerateSkeleton.maxEdges |
|
braingames.binary.changeHandler.enabled |
datastore.watchFileSystem.enabled |
|
braingames.binary.tickerInterval |
datastore.watchFileSystem.interval |
type changed from Int to FiniteDuration, add minutes |
mail.enabled |
removed | now enabled if mail.host is non-empty |
jobs.username |
jobs.user |
|
braintracing.active |
braintracing.enabled |
|
braintracing.url |
braintracing.uri |
|
airbrake.apiKey |
removed | was already unused |
airbrake.ssl |
removed | was already unused |
airbrake.enabled |
removed | was already unused |
airbrake.endpoint |
removed | was already unused |
slackNotifications.url |
slackNotifications.uri |
|
google.analytics.trackingId |
googleAnalytics.trackingId |
|
operatorData |
webKnossos.operatorData |
21.05.0 - 2021-04-22
- Instances with long-running jobs only: the
tiff_cubing
job was renamed toconvert_to_wkw
. For old jobs to be listed properly, execute sqlupdate webknossos.jobs set command = 'convert_to_wkw' where command = 'tiff_cubing';
21.04.0 - 2021-03-22
21.03.0 - 2021-02-24
- Support for KNOSSOS cubes data format was removed. Use the webKnossos cuber tool to convert existing datasets saved as KNOSSOS cubes.
- Multi-organization instances only: user experience domains are now separated per organization. After postgres evolution 64 (see below), make sure to move existing experience domains to the correct organization in the database. (The evolution just selects any one from the database).
- 061-userinfos-view.sql
- 062-dataset-uploader.sql
- 063-novelUserExperienceinfos.sql
- 064-experienceDomains-per-orga.sql
- 065-unlisted-superusers.sql
21.02.1 - 2021-02-03
Commits No migrations necessary.
21.02.0 - 2021-01-20
- 060-multiusers.sql (Note that its reversion can only be performed if there are no multiple users per multiuser yet)
21.01.0 - 2020-12-21
No migrations necessary.
20.12.0 - 2020-11-23
- As volume annotations in arbitrary magnifications are now supported and the behavior of magnification restrictions of tasks has changed (allow full zoom, but disable tools unless in correct magnification), you may want to restrict all volume and hybrid task types to mag 1 to achieve the old behavior (mag1-only). NOTE: This query has to be executed BEFORE evolution 59 is performed.
update webknossos.tasktypes
set settings_allowedmagnifications = '{"min":1,"max":1,"shouldRestrict":true}'
where (tracingtype = 'volume' or tracingtype = 'hybrid')
and (settings_allowedmagnifications is null or settings_allowedmagnifications::json->>'shouldRestrict'='false');
- 057-add-layer-specific-view-configs.sql
- 058-add-onlyAllowedOrganization.sql
- 059-resolution-restrictions.sql
20.11.0 - 2020-10-26
20.10.0 - 2020-09-21
No migrations necessary.
20.09.0 - 2020-08-20
No migrations necessary.
20.08.0 - 2020-07-20
20.07.0 - 2020-06-29
No migrations necessary.
20.06.0 - 2020-05-25
20.05.0 - 2020-05-05
- The optional
defaultOrganization
attribute from thefeatures
block inapplication.conf
is not used anymore and can be removed. #4559
20.04.0 - 2020-03-23
- Default interval for detecting new/deleted datasets on disk (
braingames.binary.changeHandler.tickerInterval
in the config) has been reduced from 10 to 1 minute. If you relied on the value being 10 minutes, you have to set it explicitly now.
20.03.0 - 2020-02-27
No migrations necessary.
20.2.0 - 2020-01-27
20.1.0 - 2020-01-08
- The initial organization was renamed to
sample_organization
. Make sure to move the data over or to put a symlink in place. - The default
operatorData
was replaced. Make sure to update with valid information for public deployments. - The config
uri
has been refactored. Pairs ofuri
andsecured
have been replaced with justuri
which now requires ahttp://
orhttps://
prefix.
19.12.0 - 2019-11-25
No migrations necessary.
19.11.0 - 2019-10-28
19.10.0 - 2019-09-30
19.09.0 - 2019-08-28
No migrations necessary.
19.08.0 - 2019-07-29
No migrations necessary.
19.07.0 - 2019-07-01
19.06.0 - 2019-05-27
No migrations necessary.
19.05.0 - 2019-04-29
19.04.0 - 2019-04-01
- Redis is now needed for the tracingstore module. Make sure to install redis in your setup and adapt the config keys
tracingstore.redis.address
andtracingstore.redis.port
. - To ensure that the existing behavior for loading data is preserved ("best quality first" as opposed to the new "progressive quality" default) execute:
update webknossos.user_datasetconfigurations set configuration = configuration || jsonb '{"loadingStrategy":"BEST_QUALITY_FIRST"}'
. See #3801 for additional context. - The config parameter
application.title
has been added. Make sure to set a title for your instance. - The assets URLs now include
assets/
again, if you link to assets directly, please update the paths (e.g. in postgresorganizations.logoUrl
)
19.03.0 - 2019-03-04
- The config paramters
application.authentication.enableDevAutoVerify
andapplication.authentication.enableDevAutoAdmin
have been removed. To enable automatic verification for user signup, set the organization’s newenableAutoVerify
field totrue
in the database.
19.02.0 - 2019-02-04
- WebKnossos has a publication gallery now. There is no public interface to create publications yet, but instead those need to be inserted into the database directly.
Publications and additional dataset properties that are displayed in the gallery as well, can be inserted as follows:
insert into webknossos.publications(_id, publicationDate, imageUrl, title, description) values('5c3c9ec895010095014759fd', NOW(), '<LINK_TO_IMAGE>', '<TITLE>', '<DESCRIPTION>'); update webknossos.datasets set _publication = '5c3c9ec895010095014759fd', details='{"species":"<e.g. Mouse>", "brain-region":"<e.g. cortex>", "acquisition":"<e.g. Raw CLSM data>"}' where _id = '<DATASET_ID>' ;
19.01.0 - 2019-01-14
18.12.0 - 2018-11-26
- If additional dataset directories were watched using the config key
additionalFolders
, those symlinks are no longer updated. Consider setting up additional datastores for these directories respectively.
18.11.0 - 2018-10-29
- Some config keys have changed, if you overwrite them in your setup, please adapt: the
oxalis
prefix is renamed towebKnossos
so the new keys arewebKnossos.user.time.tracingPauseInSeconds
,webKnossos.tasks.maxOpenPerUser
,webKnossos.newOrganizationMailingList
as well asdatastore.webKnossos.uri
,datastore.webKnossos.secured
,datastore.webKnossos.pingIntervalMinutes
for the data store. - There is now a separate module for the tracingstore, the datastore is no longer responsible for saving tracings. This module can run as a standalone application, or as a module of webKnossos locally. It is recommended that you choose the option that was previously also in place for datastores. In case of a standalone datastore, the local one needs to be disabled in application.conf:
tracingstore.enabled = false
andplay.modules.disabled += "com.scalableminds.braingames.datastore.TracingStoreModule
– and in either case, the adress of the tracingstore (localhost or remote) needs to be inserted in the db inwebknossos.tracingStores
. - The FossilDB version has changed from
0.1.10
to0.1.14
. - The FossilDB needs to be run with an additional column family
volumeUpdates
. - If your setup overwrites the config key
play.http.router
to disable the local datastore, change it to"noDS.Routes"
(or"noDS.noTS.Routes"
to also disable the local tracingstore).
- 027-drop-dataset-name-unique-constraint.sql
- 028-add-isBlacklistedFromReport.sql
- 029-foreign-keys-deferrable.sql
- 030-tracingstore.sql
- 031-maintenance.sql
- 032-scratch-datastores.sql
18.10.0 - 2018-09-22
- 022-add-foreign-datastore.sql
- 023-drop-datastore-type.sql
- 024-drop-md5hash.sql
- 025-add-dataset-sortingKey.sql
- 026-decrease-total-instance.sql
- some keys in
application.conf
have changed, if you overwrite them in your setup, please adapt:application.secret
is nowplay.http.secret.key
,postgres.*
is nowslick.db.*
- Logger configuration has been simplified. Webknossos no longer comes with multiple logger config xmls, so if your setup selected a specific one of these, that needs to be removed (or a custom file needs to be supplied). Same for standalone datastore.
- Use
tools/volumeAddFallbackLayer.py
to add a fallback segmentation layer to existing volume tracing zip files (also compare CHANGELOG.md).
18.09.0 - 2018-08-20
18.08.0 - 2018-07-23
- 013-add-logoUrl.sql
- 014-equalize-schema-and-evolutions.sql
- 015-add-organization-displayname.sql
- To clean up half-deleted tasks as caused by this bug, run
update webknossos.annotations set isDeleted = true where _id in (select a._id from webknossos.annotations_ a join webknossos.tasks t on a._task = t._id where t.isDeleted and a.typ == 'Task')
- 016-add-schema-version.sql
- 017-add-organization-email.sql
- Add email addresses for notifications about new users and about task overtime to the
webknossos.organizations
entries in the Postgres database (previously inapplication.conf
>braintracing.newuserlist
andbraintracing.overTimeList
)
18.07.0 - 2018-07-05
First release