Releases: ueberdosis/hocuspocus
v2.0.0 - Multiplexing
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
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
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
What's Changed
Full Changelog: v1.1.1...v1.1.2
v2.0.0-alpha.1
Full Changelog: v2.0.0-alpha.0...v2.0.0-alpha.1
v1.1.1 - Version bump to keep the stable default
Version bump to make npm install @hocuspocus/server
install the stable, not the pre-release
Full Changelog: v1.1.0...v1.1.1
multiplexing
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.
v1.1.0 - Stateless messages, redis cluster support, tiptap/pm
What's Changed
- feature: send stateless messages over the existing websocket connection by @solirpa in #516
- feature/stateless message redis compatibility by @janthurau in #522
- feature: support redis cluster for extension-redis by @lzj723 in #517
- Additional documentation on Laravel integration by @fredpedersen in #518
- Use Tiptap pm package by @svenadlung in #504
- removes "update" field from onStoreDocument hook documentation. It is… by @janthurau in #524
New Contributors
Full Changelog: v1.0.2...v1.1.0
v1.0.2
What's Changed
- Handle errors caused by incorrect websocket close codes in auth hook by @ralphiee22 in #503
- chore: synchronize package-lock.json by @Deckluhm in #511
- Fix bugs in webhook extension by @fredpedersen in #506
- fix: make
transformer
compatible with@tiptap/core@^2.0.0-beta.210
by @Deckluhm in #512
New Contributors
- @ralphiee22 made their first contribution in #503
- @Deckluhm made their first contribution in #511
- @fredpedersen made their first contribution in #506
Full Changelog: v1.0.1...v1.0.2
v1.0.1
What's Changed
- docs/cli: Use npx by @raineorshine in #483
- Fixes #479 by @janthurau in #480
- docs: Fix some typos and grammar by @raineorshine in #485
- Update contributing.md testing instructions by @raineorshine in #489
- Run the build action on all PR's by @raineorshine in #496
- Add instructions to compile code by @raineorshine in #493
- Change import of node-static in monitor extension by @iSplasher in #488
- feature: remove node-static in favor of serve-handler by @mkriegeskorte in #500
New Contributors
- @iSplasher made their first contribution in #488
- @mkriegeskorte made their first contribution in #500
Full Changelog: v1.0.0...v1.0.1