Skip to content

Releases: cph-cachet/carp.core-kotlin

Version 1.0.0-alpha.21

14 Sep 12:16
Compare
Choose a tag to compare
Pre-release
  • Updated JSON serialization format to use class discriminators instead of array polymorphism, and serialize UUID and DataType as primitive types (#157)
  • Upgraded to Kotlin 1.4.10.
  • Dependency on kotlin.reflect has been removed.
  • Bugfix: incorrect return type for Array.size in TypeScript declarations (b2ff238)

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.20

11 Sep 10:02
Compare
Choose a tag to compare
Pre-release

This release is faulty; do not use: #159

  • Updated JSON serialization format to use class discriminators instead of array polymorphism, and serialize UUID and DataType as primitive types (#157)
  • Upgraded to Kotlin 1.4.10.
  • Dependency on kotlin.reflect has been removed.
  • Bugfix: incorrect return type for Array.size in TypeScript declarations (b2ff238)

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.19

03 Sep 14:10
43bea93
Compare
Choose a tag to compare
Pre-release
  • Upgraded to Kotlin 1.4.0 and kotlinx.serialization 1.0.0-RC. (#152) As part of this upgrade, the TypeScript declarations have changed.
  • Immutability checking at runtime replaced with a static checker plugin. (#149)
  • Bugfix: ManualTrigger was not properly implemented before. (45f6c18)

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.18

14 Jul 16:28
f0a3753
Compare
Choose a tag to compare
Pre-release

Application service changes:

  • Changed DeploymentService.getParticipationInvitations to getActiveParticipationInvitations, which no longer returns stopped deployments and now also contains the registration state of the devices the participant is invited to use. (854d3f7)
  • Added creationDate to all aggregate roots. Concretely, this means StudyRuntime on the client subsystem, and StudyDeployment on the deployment subsystem now have creationDate set whenever they are created. (9f5a073)

New extensibility:

  • Support deploying custom protocol definitions to clients, deviating from the CARP core protocol domain objects. (e611d9d)
  • Option to add application-specific data to StudyInvitation which can be sent to users when they are invited to studies. (5d465c5)

Bugfixes/enhancements:

  • StudyProtocol.description was not persisted in snapshot. (4a2d4c4)
  • Don't unnecessarily call the deployment subsystem from study subsystem when there are no deployments yet. (1b2d7b3)

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.17

26 Jun 09:33
e36edd8
Compare
Choose a tag to compare
Pre-release

Protocol changes/additions:

  • Helpers for testing (see README):
    • infrastructure.test holds stubs of protocol domain objects which can be used for testing.
    • Added String.makeUnknown helper methods to replace protocol domain object types in JSON strings with unknown types for testing (5fae88b).

Common:

  • Bugfix: JVM DateTime.toString() did not always have 3 digits decimal precision (1e1ff63).

Deployment:

  • Bugfix: StudyDeployment.getRemainingDevicesReadyToDeploy expected all devices to be registered (e86ef70). Now only dependent devices need to be.
  • Bugfix: Replace MasterDeviceDeployment checksum with lastUpdateDate (2607e02). This is a more robust implementation to verify on deviceDeployed whether the most recent MasterDeviceDeployment was deployed.

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.16

02 Jun 13:30
46da0e5
Compare
Choose a tag to compare
Pre-release

Study protocol changes/additions:

  • Support for sampling configurations (#124):
    • DeviceDescriptor can store new default sampling configurations for available sensors on the device, identified by DataType, which override the defaults for the DeviceDescriptor.
    • A DSL for setting up DeviceDescriptor's, including the sampling configuration (exemplified by Smartphone). Check the updated protocols code sample in the README to see what this looks like.
    • Introduction of DataTypeSamplingScheme which stores type information and sampling configuration options (and builders). As part of these changes, the PhoneSensorMeasureFactory interface was removed.
    • Moved access to smartphone sensor measures to Smartphone.Sensors, anticipating the need to add others later such as surveys.
  • description and creationDate added to StudyProtocol. (c1a9d01)
  • Stepcount no longer has an interval option (e4a6a1e); this is not how stepcount is physically measured/supported by devices.
  • StartOfStudyTrigger is now a more generic ElapsedTimeTrigger. (5f5f318)
  • Added ScheduledTrigger using RFC 5545 recurrence rule notation to create schedules. (c1635ec)
  • Added ManualTrigger. (0d49d4d)

DeploymentService changes:

  • StudyDeployment and StudyDeploymentStatus now contain startTime, which is set once all required devices have been deployed and all devices have been registered for the first time.
  • deploymentSuccessful requires all devices to be registered. (2599df6)
  • Bugfix: deployment could never be ready when there were connected devices. (479afd8)
  • Bugfix: registerDevice should not be idempotent when deployment has stopped. (5e79493)
  • deployParticipantGroup is now idempotent as long as the study deployment is running. (aef4aa5)

Repository changes:

  • Added a ClientRepository for the client subsystem, replacing ClientManager snapshots. (e455407)
  • All repository interfaces of all subsystems are now defined as suspending functions. (bdcac5c)
  • Study.ParticipationAdded event now contains studyDeploymentId. (ce6ca92)

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.15

20 Apr 17:05
1379ae3
Compare
Choose a tag to compare
Pre-release

The study subsystem now has access to deployment statuses. This can be used to show an overview of all running study deployments—or participant groups, as they are now called in the study subsystem. Participant groups can later carry extra study-subsystem-specific information, but there is a one-to-one mapping to deployments.

  • Upgraded to Kotlin 1.3.72

DeploymentService changes:

  • State-machine based StudyDeploymentStatus using sealed classes, containing a DeviceDeploymentStatus per device in the deployment. The different states are: Invited, DeployingDevices, DeploymentReady, and Stopped.
  • All devices (including connected) require registration on the back-end before a deployment can be considered ready (DeploymentReady).
  • State-machine based DeviceDeploymentStatus using sealed classes, also listing remainingDevicesToRegisterBeforeDeployment. The different states are: Unregistered, Registered, Deployed, and NeedsRedeployment.
  • registerDevice is now idempotent.

New DeploymentService endpoints:

  • deploymentSuccessful: called by client (master) devices to indicate to all stakeholders in the study deployment that deployment was successful and the device is ready to run the study.
  • unregisterDevice: to change devices during a study deployment, they need to be unregistered to then allow subsequent registration of a new device (registerDevice). This might invalidate the current deployment of other devices at which point they will be requested to be redeployed (NeedsRedeployment). This can be used, e.g., in case a previous deployment failed and you want to try out deploying on a new device.
  • stop: stops a study deployment after which no further changes are allowed and no more data will be collected.

StudyService changes:

  • deployParticipantGroup returns ParticipantGroupStatus, containing the StudyDeploymentStatus and deanonymized IDs of participants.

New StudyService endpoints:

  • getParticipantGroupStatusList: get the status of all deployed participant groups in a study.
  • stopParticipantGroup: the endpoint to stop study deployments from the study subsystem, where they are known as 'participant groups'. This call gets redirected to the deployment subsystem.

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.14

26 Mar 13:33
cca4126
Compare
Choose a tag to compare
Pre-release
  • Information on available actions added to StudyStatus (#112)
  • New StudyService endpoints:
    • setInternalDescription
    • setInvitation
    • getStudyDetails
  • description added to Study
  • description added to StudyInvitation
  • Upgrade to Kotlin 1.3.71

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.13

12 Mar 14:20
3bca375
Compare
Choose a tag to compare
Pre-release
  • Updated dependencies, primarily Kotlin 1.3.70 and kotlinx.serialization 0.20.0.
  • Added TypeScript descriptors for all objects depended on by StudyService.
  • Added AggregateRoot base class to Study, StudyProtocol, and StudyDeployment, which keeps tracks of changes applied to aggregate root objects. These changes can be 'consumed' by calling .consumeEvents() in a repository implementation of update( aggregateRootObject ) to have detailed information on which fields need to be updated. This simplifies repository implementations using a relational database.

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp

Version 1.0.0-alpha.12

02 Mar 10:10
0f9f512
Compare
Choose a tag to compare
Pre-release
  • AccountService invites receives additional additional study details (StudyInvitation and DeviceDescriptor of the devices to deploy), and inviteExistingAccount takes accountId rather than identity.
  • Participation is now stored within StudyDeployment, rather than a separate repository method.
  • New DeploymentService endpoint:
    • getParticipationInvitations
  • New StudyService endpoints:
    • getStudiesOverview
    • addParticipant
    • getParticipants
    • setProtocol
    • goLive
    • deployParticipantGroup
  • Refactoring: moved 'user' objects, such as StudyOwner to user namespace.
  • Bugfix: AltBeaconDeviceRegistration could not be serialized in JS.

Multiplatform release accessible through Maven:
https://mvnrepository.com/artifact/dk.cachet.carp