Skip to content

CHANGELOG

Michael MacFadden edited this page Jul 23, 2021 · 29 revisions

Introduction

This page outlines the changes made with each Convergence Release.

Releases

1.0.0-rc.12 (Jul 23, 2021)

1.0.0-rc.12 Release Milestone

Enhancements

General

  • Logging documentation (#233): A section for client and server logging was added to the Developer Guide.
  • Run containers as non root (#252): The Convergence containers have been updated to run as non-root users to support docker container platforms that don't run as root.

Admin Console

  • Settings link for offline / maintenance mode (#250): The banner indicating a domain is offline or in maintenance mode has been enhanced with a link to the settings where the domain can be put back on line.

Bug Fixes

Client

  • Unable to play back StringSpliceOperations (#253): A string constant in the StringSpliceOperation was fixed allowing playback to function.

Server

  • HistoricalModel.playToTime doesn't work for first version (#249): Playback to the time a model was created (before the first operation) is now possible.
  • ConvergenceDatabaseInitializer connection logic (#251): The initial connection retry logic for connecting to OrientDB on server initialization was fixed to avoid a spurious exception.

Admin Console

  • SideNav Background Improvement (#254): The CSS for the SideNavigation menu background was fixed in the production build.

1.0.0-rc.11 (Jul 13, 2021)

1.0.0-rc.11 Release Milestone

Bug Fixes

Server

  • Model playback of noOped string splice fails (#248): Playback of noOp'ed String Splice operations will null deletedVal's no longer causes an exception.

Admin Console

  • Model data fields not shown in query screen (#246): The admin console now properly render data columns in the Model screen.
  • Domain Database Upgrade Links fixed (#247): The links for upgrading and completing domain database upgrades now take the context root into account.

1.0.0-rc.10 (Jul 12, 2021)

1.0.0-rc.10 Release Milestone

Enhancements

General

  • RealTimeString.splice() (#237): A splice method was added to RealTimeString to allow atomic replacement of characters.
  • HistoricalModel.playToTime() (#240): Developers can not play to a time, in addition to a version, in the historical model.
  • ConvergenceDomain.serverTime() (#241): A method was added to the ConvergenceDomain class to get the servers current time.
  • Collection Rest API User Encoding (#235): The Collection REST API was updated to use the new DomainUserId encoding.
  • IConvergenceOptions.handshakeTimeout renamed (#239) (BREAKING): IConvergenceOptions.handshakeTimeout was renamed to connectionRequestTimeout.

Admin Console

  • Render user type for model / collection permissions (#236): The admin console now indicates if users are anonymous or admin users in collection and model permissions.

Server

  • Domains now in maintenance mode after upgrade (#242): Online domains are not put in maintenance mode after a schema upgrade.

Bug Fixes

Server

  • Incorrect reference transformation (#244): The server was improperly transforming reference values against unnecessary operations.
  • AlterProperty Schema Delta fails (#232): Schema deltas altering a database property with a linked class now work correctly.
  • Domain not ready after upgrade (#243): If clients were continually connecting to the server during an upgrade, the server would not come back online.

Admin Console

  • Admin console does not properly decode model permissions (#234): The admin console now properly decodes and renders model permissions.

Client

  • ModelPermissionManager.setAllUserPermissions doesn't set permissions (#238): The setAllUserPermissions method once again properly sets permissions.

1.0.0-rc.9 (Jun 30, 2021)

1.0.0-rc.9 Release Milestone

Enhancements

General

  • Open Source the Dev Guide (#68): The Convergence Developer Guide has been open sourced.
  • Migrate Dev Guide to MkDocs (#45): The Convergence Developer Guide was ported from GitBook to MkDocs.
  • Migrate Dev Guide to MkDocs (#163): A section on Docker was added to the Developer Guide.
  • Server configuration documentation (#162): The server's configuration was documented and added to the Dev Guide.
  • Activity types (#228) (BREAKING): Activities now have a user defined type that can be used to categorize them.
  • Activity Permissions (#161) (BREAKING): Activities now have permissions to control who can join them, remove them, etc.
  • Activity lurking (#229): Users can now join activities without showing up as a participant.
  • Simplify connection protocol (#219): The handshake and authentication messages were consolidated to make connecting more efficient and less complex.
  • Make collection auto creation configurable (#139) (BREAKING): The auto creation of collections when creating models can now be enabled/disabled.
  • Make reconnect token valid time configurable (#138): The time a session token for the REST API remains valid is now configurable.
  • Offline and Maintenance modes (#205): Domains can now be put in maintenance mode or offline such that users can not connect.
  • Domain id is now editable (#214): A domain's id can now be changed when it is in offline mode.
  • Model resource id is now an integer (#64): The protocol was updated to use an integer instead of a string for efficiency.
  • Resource id approach for Activities (#65): Activities now use a resource id concept similar to models to make the protocol more efficient.

Client

  • Call credential callbacks on demand (#222): The callbacks in the connect methods that get credentials are now called as needed instead of only once.
  • Better ConnectionFailed info (#221): The ConnectionFailed event was enhanced with an error message describing why the connection failed.
  • Ability to not reconnect on first connection (#178): The client can be configured to not reconnect if the very first connection fails.
  • Handle undefined values in model API (#179): The Realtime Model API now has several options for dealing with undefined values.

Admin Console

  • Auto focus login screen (#231): The username field in the Admin Console's login form is now auto focused.
  • Add Activities to Console (#227): Activities are now a first class citizen in the Admin Console along side the other features.
  • Offline indication (#223): The admin console now lets the user know when the server is offline.
  • AntD 4.x (#206): The admin console was upgraded to AntD 4.x.
  • Domain Database Upgrade initiation (#171): Domain databases can now be upgraded from within the Admin Console.

Bug Fixes

Server

  • Properly close WebSocket (#218): The Convergence Server now properly closes the WebSocket when the client disconnects.
  • Clean up orphan sessions(#213): The server now cleans up the sessions of orphan clients.
  • Missing DataValue index(#199): A missing index (by model) for the DataValue class was added to increase model deletion speed.
  • Namespace REST API ignores filter(#211): The /namespace API now properly obeys the filter query parameter.
  • User namespace not deleted (#212): The users private namespace is now properly deleted when the user is removed.
  • Disconnect clients on auth failure (#140): The server now aggressively disconnects a client whose authentication failed to release resources.
  • Handle client not responding with model auto create data (#181): The server now properly handles a client that doesn't respond with auto create data when opening a model.

Admin Console

  • Invalid setTimeout for session check (#216): The console now obeys the maximum value for setTimeout when checking session validity.

Client

  • Activity.Events.STATE_DELTA fixed (#230): The constant value of Activity.Events.STATE_DELTA was corrected.
  • Historical model playback timestamp fixed (#220): When playing a historical model backwards, the timestamp is now correct.

1.0.0-rc.8 (May 23, 2021)

1.0.0-rc.8 Release Milestone

Enhancements

General

  • Initial Model Fingerprint (#70): The protocol was updated to support model fingerprinting to allow better resumption of offline syncing.
  • Indicate anonymous auth is disabled (#177): The server and client will now indicate that anonymous authentication has failed because it is disabled.

Server

  • Auto upgrade convergence schema (#170): The convergence schema will be automatically updated when the server starts.
  • Semantic version schema manager (#58): The schema management and migration module has been upgraded to work with a semantic versioning strategy.

Client

  • Updated rollup version (#156): Upgraded rollup to remove deprecation warnings.

Admin Console

  • Display convergence schema version (#168): The admin console now shows the convergence database schema version.
  • Display domain schema version (#169): The admin console now shows the domain database schema versions.
  • Remove distribution designation (#173): Remove the deprecated distribution label in the homepage.

Bug Fixes

Server

  • Properly clean up deleted users (#194): When domain users are deleted, references to them in groups, permissions, chats, etc. are now removed.
  • Model Query Projection for models without field (#196): When using a query projection, models that don't contain the field are now handled.
  • ConvergenceDevSever startup timeout (#195): The startup timeout for the dev server now obeys the convergence.server-startup-timeout config.
  • Fix model error code on force close. (#180): The error code when a model closes after an error now is model_closing_after_error

Admin Console

  • Handle invalid JSON when creating models (#197): The admin console now properly handles invalid JSON in the model creation dialog.
  • Edit Collection title (#202): The title of the edit collection dialog has been corrected.
  • Disallow empty model ids (#198): Models can no longer be created with an undefined id.
  • Properly color domain status icon (#160): The domain status icon is now properly colored on the domains page.
  • Domain User auto select disallows invalid users (#207): The control used to select domain users no longer allows the entry of an invalid username.
  • Namespace auto select disallows invalid namespace (#208): The control used to select namespaces no longer allows the entry of an invalid namespaces.
  • Convergence user auto select disallows invalid user (#209): The control used to select convergence users no longer allows the entry of an invalid users.

Client

  • Presence for non-existent user (#204): Fixed subscribing for presence for a user that does exist.
  • LocalIndexReference not exported (#203): The LocalIndexReference class has been exported in the typings.
  • Fix playback for no-op'ed operations (#200):Playback for operations that were no-op'ed has been fixed.
  • Fix inconsistency in permissions API. (#187): (BREAKING) The API for the permissions map was updated.
  • Fixed model permissions lookup. (#185): (BREAKING) The client was updated to properly return a permissions object in all cases.
  • Model worldPermissions API fixed. (#183): The API for the ModelPermissions was updated to allow more natural parameter passing.
  • Historical model operation error message correction. (#186): An error message was misspelled when getting the history from models.

1.0.0-rc.7 (Jul 7, 2020)

1.0.0-rc.7 Release Milestone

Enhancements

General

  • Upgrade to Scala 2.13 (#130): Scala was upgraded from 2.12.x to 2.13.x.
  • Align Cluster Seed Version with the rest of Convergence (#155): (BREAKING) The cluster seed was misaligned to the rest of Convergence.
  • Move the ConvergenceDevServer into the "dev" page (#143): (BREAKING) Moving the ConvergenceDevServer package for clarity.

Server

  • Migrate to standard Akka Artery ports (#142): (BREAKING) The default Akka ports were adjusted to match the standard remoting ports for Akka Artery.
  • Silence nashorn warnings (#133): The warnings from nashorn deprecation were silenced.
  • Add comments to the reference.conf file (#148): Comments to document the base configuration were added.
  • Implement production cluster downing (#78): The new Akka 2.6.6 Split Brain Resolved in now used for cluster downing.
  • Make all timeouts configurable (#141): Remove hard coded time outs.
  • Improve Akka Message Serialization (#77): The server migrated from Java Serialization to Jackson CBOR.
  • Updated to Typed Actor (#131): The actor system was refactored to use the new Typed Actors.

Client

  • New offline model synchronization events (#152): (BREAKING) Several events we added to allow for better monitoring of offline model synchronization.
  • Remove ChatMessageEvent.sessionId (#136): (BREAKING) The ChatMessageEvent.sessionId was removed since messages are scoped to users not sessions.
  • Emit offline model status on creation (#158): A OfflineModelStatusChangedEvent is now emitted when a model is created.
  • New offline model download status event (#153): A OfflineModelsDownloadStatusChangedEvent is now emitted when models are downloading.
  • New offline model sync progress event (#151): A OfflineModelsSyncProgressEvent is now emitted when models are synchronizing.
  • IndexDB Maximum IPC exceeded (#135): A IndexDB Maximum IPC message size exceeded error was coming form the model offline subsystem.

Bug Fixes

General

  • Omnibus container sets Admin email as password (#144): The Omnibus Container was incorrectly using the CONVERGENCE_ADMIN_EMAIL to set the admin password.

Server

  • User roles not removed when deleting a user (#167): User roles are now removed from Convergence users when the user is deleted.
  • Reference not set when shared (#149): When a model reference was shared with an initial value, that value was not set.
  • REST calls return 404 (#76): Some REST calls were returning 404 when the result set is empty.
  • HTTP 400 when creating a domain in an non-existent namespace (#146): When creating a domain in a namespace that doesn't exist a 400 was returned.
  • Race condition creating resource ids (#147): Conflicting model resource ids could be created due to a threading issue.
  • Opening model could mis-order messages (#129): If a model was opened while it was being edited, operation messages could come before the open reply.
  • Can't change Convergence user's role (#132): The server was effectively ignoring calls to change a users role.
  • No permissions on /config REST endpoint (#134): Any user could post to /config.

Admin Console

  • AntD Table Key warning in Domain Members (#166): AntD was showing a console error when viewing domain members.
  • Incorrect toaster when saving JWT Auth Key (#165): The toaster message was wrong when updating a JWT Auth Key.
  • Incorrect toaster when saving User Group (#164): The toaster message was wrong when updating a User Group.
  • Model version off by one in editor (#145): When editing a model, the version number was off by one.

Client

  • Deleting model offline throws error (#157): An error was being thrown when deleting a model offline.
  • Deleting model while synchronizing throws error (#154): An error was being thrown when deleting a model that was actively synchronizing.
  • Uncommitted in OfflineModelStatusChangedEvent always false (#150): The Uncommitted flag of the OfflineModelStatusChangedEvent was aways false.
  • Activity.leave() should return a promise (#137): The Activity.leave() method was updated to return a promise.

1.0.0-rc.6 (May 16, 2020)

1.0.0-rc.6 Release Milestone

Enhancements

General

  • Allow searching for chats (#106): The client and server were updated to allow searching for chats.
  • Upgrade Akka to 2.6.x (#91): Akka was upgraded from 2.5.x to 2.6.x.

Server

  • Add HTTP health check endpoints (#99): A /health endpoint was added to the REST and Realtime APIs to facilitate cloud health checks.
  • Move the /apiKey under the /user/ path (#92): (BREAKING) The 'apiKeys' rest endpoint was relocated under /user/ for consistency.

Client

  • Support getting multiple chats at once (#112): The ChatService get, exists, and direct methods have ben enhanced to allow for multiple chats.
  • Rename ReferenceChangedEvent to ReferenceSetEvent (#120): (BREAKING) The ModelReference ReferenceChangedEvent was renamed to ReferenceSetEvent.
  • Chat.send() should return meta data (#110): The Chat.send() method now returns the event number and timestamp.
  • Add joined to IChatInfo (#107): A joined field was added to the IChatInfo interface.
  • Rename ChannelCreatedHistoryEntry to CreatedChatHistoryEntry (#108): (BREAKING) The Chat ChannelCreatedHistoryEntry was renamed to CreatedChatHistoryEntry.

Admin Console

  • Allow viewing chat info and events (#85): A new screen was added to allow viewing of chat info and events from the Admin Console.

Bug Fixes

General

  • Prevent sharing / unsharing reference multiple times (#121): Both the client and server allowed a reference to be shared / unshared multiple times which lead to errors on the receiving clients.
  • Convergence User Permissions ignored (#87): Both the client and server were not enforcing Convergence User Permissions.
  • User should not be able to edit their own server role (#97): A user could remove their own server role which could leave a server with no admin.
  • User should not be able to edit their own domain permissions (#97): A user could remove their own domain permissions which could leave a domain with no owner.

Server

  • Serialization error during model reconnect (#126): When multiple clients were reconnecting a model a Java Serialization error in Akka could occur.
  • Chat Room shutdown can cause Database error (#122): The ChatActor releases the persistence provider before removing members in chat room during shutdown.
  • Exception thrown on Chat mark seen (#117): The server would throw an exception when chat events were marked seen by a client.
  • Server incorrectly responds to chat join request (#113): The server was responding to the GetJoinedChatsRequestMessage with a GetChatsResponse.
  • Database error in UserSessionTokenStore (#104): In a distributed database, optimistic locking errors would arise when validating session tokens.
  • User roles not deleted with domain (#101): When deleting a domain the corresponding user roles were not deleted, causing issues with future login.
  • CORS headers left off rejected HTTP requests (#100): When an HTTP request was rejected (e.g. 404) the CORS headers were not added.
  • User not set as domain owner (#96): The user that creates a domain should be set as the owner of that domain.
  • Namespace permissions ignored in REST API (#95): The REST API was not authorizing users based on their namespace permissions, preventing users from seeing domains in their namespace.
  • Domain Developer role ignored (#93): A user that had Developer permissions on a Domain could not see that domain.
  • Non admins could make REST calls for UserRoles (#94): The REST endpoint for UserRoles would allow any authenticated user, instead of only admins.
  • Clustered database initialization (#89): Multiple instances in a clustered environment might try to concurrently bootstrap the convergence database.

Admin Console

  • Toasters for user operations incorrect (#88): The toasters for user operations mentioned "namespaces" instead of "users".

Client

  • Dispose of detached model references (#125): Model references are now properly disposed when their corresponding model element is detached.
  • LogLevel.SILENT results in tracing (#124): Setting the log level to LogLevel.SILENT behaved as if the level was LogLevel.TRACE.
  • LocalModelReference always calls unshare on dispose (#123): A local reference should only unshare on dispose if it is shared.
  • Missing event for chat events marked seen (#115): No event was being emitted when the client received notification that a remote user had marked messages as seen.
  • Exception in ChatService.joined() when not joined (#114): An exception was thrown when calling ChatService.joined() if the user was not joined to any chats.
  • Incorrect callbacks for Object / Array iteration methods (#119): The iteration methods in RealTimeObject / RealTimeArray incorrectly had the index / key parameter as optional
  • Activity participants not updated before joined event emitted (#118): Activity participants were being updated AFTER the ActivitySessionJoinedEvent was emitted.
  • ConvergenceSocket error when reconnecting (#116): Due to a non-cleared timeout, an innocuous socket error was being thrown on reconnect.
  • Getting info for chat with no members throws Error (#103): When getting the info of a Chat with no current members, an Error as thrown due to a undefined protobuf field.
  • Calling removeListeners on a ConvergenceEventEmitter throws an error (#84): This class now checks to see if there are actually listeners before trying to remove them.

1.0.0-rc.5 (Jan 19, 2020)

1.0.0-rc.5 Release Milestone

Enhancements

General

  • Convergence Omnibus Container Open Sourced (#49): The Convergence Omnibus Container is no open source.
  • Convergence Server Distribution Improvements(#29): A License, ReadMe, and configuration files were added.
  • Query models by Id (#31): Models can now be queried from the client by model id.
  • Convergence Protocol published to Maven Central (#38): The Convergence Protocol Scala implementation is now available in Maven Central.

Server

  • Convergence Server Published to Maven Central (#39): The Convergence Server is now available on Maven Central.
  • Convergence Server Distribution Improvements(#29): A License, ReadMe, and configuration files were added.
  • Cluster seed nodes handles ports (#41): When specifying the CONVERGENCE_SEED_NODES environment variable, ports can now be specified.

Bug Fixes

General

  • Resync would fail due to out of order messages (#63): When offline models resynchronized, occasionally operation acknowledgments were coming after the resync completion message.

Server

  • Chat REST call properly returns Paged Data (#74): The REST call for getting CHAT info now properly returns a paged data structure.
  • Chat Room errors when client disconnects (#59): The process for handling a client that disconnected from a Chat Room without leaving has been improved.
  • Session timeout can't be set via REST (#57): The exception when trying to set the session timeout via rest has been fixed.
  • Same client can't resubscribe to a model (#54): A client that subscribes and deletes a model, can now resubscribe to that model.
  • Default config file is now correct (#48): The default value of the config file was pointing to the wrong place.
  • Scallop Help not displayed (#51): Command line help was not being displayed.
  • CLI application name was wrong (#50): When launching the server, the name was wrong.

Admin Console

  • Collection pagination is fixed (#75): Pagination in the collection screen is now working.
  • Chat pagination is fixed (#73): Pagination in the chat screen is now working.
  • Domain card chat link is fixed (#71): The chat link on the domain card in the dashboard now works.
  • Sorting Chats by id throws an exception (#72): Sorting by id on the chats screen no longer throws an exception.
  • Admin console doesn't log you out when session expires (#10): The Admin Console now logs the user out when their session expires.
  • Edit state is now maintained when editing model source (#44): When editing the source of a model, after the user saves the source the tree view will still be in edit mode.
  • A newly added node in a model is now selected (#43): When adding a model element, that element is now properly selected.

Client

  • Open models not purged from offline store. (#60): If a user unloaded the page without disconnecting, any open models would be stuck in the offline store.
  • Not all operations deleted when model deleted. (#61): When deleting a model, only the first operation was deleted.
  • OfflineModelDownloadCompletedEvent not fired. (#46): This event is now properly fired when synchronization completes.
  • Exception if model query returns no results. (#42): When a model query returned no models, an exception was thrown.
  • Model created during resync process doesn't sync to the server. (#47): If model creation overlapped reconnection, then that model may not sync to the server.
  • ModelService does not subscribe on first connection. (#55): If the user started offline, and then went online, the ModelService would not subscribe to offline models.
  • Model not removed from offline storage. (#52): In certain cases a model stored offline was still stored locally after it was deleted.
  • Disconnect event not fired on auth failure. (#53): The ConvergenceDomain was not firing a DISCONNECTED event after an authentication failure.

1.0.0-rc.4 (Jan 3, 2020)

1.0.0-rc.4 Release Milestone

Enhancements

General

  • Experimental offline support (#6): Initial API to support offline editing of real time models.

Server

  • Setting model permissions when creating models via REST (#25): Model permissions can now be set when creating a model through the REST API.

Admin Console

  • User API key support (#8): Users can now create API keys that allow them to programmatically access the REST API.
  • Domain User Last Login Time (#11): The last login time of the domain users is now shown in the admin console.

Client

  • Automatic reconnection (#5): The Convergence client will now automatically reconnect when disconnected and the user operations will not be disrupted.
  • Protocol options configuration (#28): The web socket protocol can now be configured in the options.

Bug Fixes

Server

  • Model Query doesn't honor user model permissions (#32): If world permissions were not set, but a user had permissions to a model, the model was not being returned in a query.
  • Model REST PUT wipes out data (#27): Performing a PUT on a model would create empty data in the model.
  • Clients not removed from model when permissions change (#25): When a users permissions were revoked from a model, the changes would not take effect until they closed and reopened it.
  • Model permissions are not properly resolved (#24): The override flag was not properly handled.
  • JWT Auth sets last name as display name (#23): When connecting with JWT, the last name was being put into the display name field.
  • Editing a convergence user mixes up fields (#13): When editing a Convergence user the server was putting the data in the wrong fields.
  • Invalid pong timeout message on the server (#14): The server was erroneously giving an error when a client timeout occurred.

Admin Console

  • Model table context menu fixes (#30): Clicking on the model context menu in the Models screen was unreliable.
  • Collection breadcrumbs are incorrect (#22): The bread crumbs on the collection page were incorrect.
  • Collection pagination does not work (#21): Collection pagination would show up, but did not work.
  • User profile screen incorrect breadcrumbs (#20): The bread crumbs on the user profile page were incorrect.
  • Setting domain user password does not work (#15): Attempting to set a domain user's password threw an error.
  • Cannot create a convergence user without a first name (#12): The admin console would not allow the creation of a Convergence user without a first name.
  • Clicking browse on models pages does not refresh models (#3): Clicking browse a second time would not refresh the results.
  • Error when collection filter doesn't match any collections (#2): An error from the collection autocomplete was thrown when no collections matched.

Client

  • RealTimeModel never emits a deleted event. (#19): The RealTimeModel class was not emitting the "deleted" event.
  • Presence state messages are not sent (#18): Presence state setting messages were not sent to the server.
  • Model permissions changed event not emitted (#17): When model permissions were changed an event was not emitted.
  • Model version not updated before commit status change event (#16): The model version was incorrect when a commit state changed event was emitted.
  • ModelDeletedEvent fired by ModelService (#9): The model "deleted" event was being fired by the ModelService instead of the RealTimeModel.
  • Deleting and open model throws errors (#7): If a model was open when it was deleted, several errors were thrown.