Skip to content

Releases: ueberdosis/hocuspocus

v2.0.3

05 Apr 18:48
v2.0.3
0e68cd6
Compare
Choose a tag to compare

What's Changed

  • Delaying redis extension disconnect to allow last minute syncs to happen by @ebads67 in #573
  • emit event when unsyncedChanges changes, fixes #548 by @janthurau in #574

New Contributors

Full Changelog: v2.0.2...v2.0.3

v2.0.2

04 Apr 17:06
v2.0.2
38bd18b
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.0.1...v2.0.2

v2.0.1

30 Mar 06:02
v2.0.1
3996c2a
Compare
Choose a tag to compare

What's Changed

  • fix: connection.sendStateless error when connections more than one by @groot9325 in #556

New Contributors

  • @groot9325 made their first contribution in #556

Full Changelog: v2.0.0...v2.0.1

v2.0.0 - Multiplexing

29 Mar 14:40
v2.0.0
2580d56
Compare
Choose a tag to compare

Hocuspocus 2.0.0 Release

After the stable release in January 2023, Hocuspocus gets its first major version update with the new core feature called “Multiplexing”.
Multiplexing allows you to synchronize multiple documents over the same websocket connection. This is especially useful when working with multiple documents at the same time and will make this experience even faster.

Please note that you need to update both the provider and the server, versions cannot be mixed


The client/server protocol has been changed, so if you are handling messages directly, you might have to adjust something. Otherwise, if you don't want to use multiplexing, you don't need to change anything.

Before:
[HocuspocusMessageType][YjsMessageType][yjs binary]

After:
[documentName][HocuspocusMessageType][YjsMessageType][yjs binary]

Using multiplexing

See this example on how to use multiplexing (more docs will follow):

const socket = new HocuspocusProviderWebsocket({
  url: 'ws://127.0.0.1:1234',
})

const provider = new HocuspocusProvider({
  websocketProvider: socket,
  name: 'hocuspocus-demo',
  broadcast: false,
})

const anotherProvider = new HocuspocusProvider({
  websocketProvider: socket,
  name: 'hocuspocus-demo2',
  broadcast: false,
})

TiptapCollab

TiptapCollab runs Hocuspocus 2, so it fully supports multiplexing

Multiplexing - now in beta

28 Mar 06:30
v2.0.0-beta.0
c37186a
Compare
Choose a tag to compare
Pre-release

Please see v2.0.0-alpha.0 for release notes. This beta release includes small fixes & bumps to beta to better reflect the current stage.

Multiplexing has been used in a few test projects now and is considered working. Any further testing is highly welcome as this will move to stable soon.

TiptapCollab

28 Mar 08:24
v1.1.3
0f25bdd
Compare
Choose a tag to compare

What's Changed

  • extension-webhook: fixes JSON.parse issue when empty response is returned
  • TiptapCollabProvider

Full Changelog: v1.1.2...v1.1.3

v1.1.2

27 Mar 15:05
v1.1.2
656cbe5
Compare
Choose a tag to compare

v2.0.0-alpha.1

23 Mar 20:34
v2.0.0-alpha.1
2ee7abd
Compare
Choose a tag to compare
v2.0.0-alpha.1 Pre-release
Pre-release

v1.1.1 - Version bump to keep the stable default

02 Mar 07:08
v1.1.1
d719ea5
Compare
Choose a tag to compare

Version bump to make npm install @hocuspocus/server install the stable, not the pre-release

Full Changelog: v1.1.0...v1.1.1

multiplexing

28 Feb 17:09
v2.0.0-alpha.0
c0dd61b
Compare
Choose a tag to compare
multiplexing Pre-release
Pre-release

This is the first alpha release introducing multiplexing support.

The status is still a bit early, but I already wanted to gather as much feedback as possible and find potential testers in the community. I currently do not have a bigger project where I can test this, so if you can use multiplexing in your project and are willing to give the current implementation a try, this would be much appreciated and helps to get this merged soon.

On the frontend side, all connection logic has been split to a new ‘HocuspocusProviderWebsocket’, which needs to be passed to your HocuspocusProvider(s). So if you want to synchronize three documents, you’ll create one HocuspocusProviderWebsocket and three HocuspocusProvider, which gets passed the websocket (webSocket param). Authentication works per document, so the URL has to be passed to the HocuspocusProviderWebsocket, tokens to the provider related with the document. A working example can be found in playground/frontend/src/pages/Index.vue. Provider events are filtered by documentName, so the frontend shouldnt require further changes. Same on the backend, note that internally we’re spawning different Connection instances that each handle one document connection (through the same websocket). If you are somehow parsing the websocket messages yourself, please note that the protocol has changed and now includes the documentName at the first segment of the message.

You can find the PR here for details: #484

If you need any help, feel free to ping me (@janthurau) on Discord or send me a direct message.