diff --git a/CHANGELOG_PUBLIC.md b/CHANGELOG_PUBLIC.md index f882b80ad9f..d4047107c77 100644 --- a/CHANGELOG_PUBLIC.md +++ b/CHANGELOG_PUBLIC.md @@ -18,6 +18,97 @@ list and feel free to give them credit at the end of a line, e.g.: --> +# Week 14 (2026-04-03) + +## v3.17.0 + +### `@liveblocks/react-flow` + +- Introduce the package. Install with `npm install @liveblocks/react-flow`. + Provides hooks and components that add collaboration to any React Flow diagram + using Liveblocks Storage: + - Use the `useLiveblocksFlow` hook to make React Flow synced and + collaborative. + - Use the `Cursors` component to show other users' cursors inside React Flow. + +### `@liveblocks/react-ui` + +- Allow customizing cursors in the `Cursors` component by passing a + `components={{ Cursor: MyCursor }}` prop. + +## v3.16.0 + +### `@liveblocks/chat-sdk-adapter` + +- Introduce the package. Install with + `npm install @liveblocks/chat-sdk-adapter`. Provides a + [`chat-sdk`](https://www.npmjs.com/package/chat)-compatible backend adapter + backed by Liveblocks Comments: webhooks, posting and editing messages, + reactions, paginated fetches, thread and channel helpers, and optional + `resolveUsers` / `resolveGroupsInfo` hooks. + +### `@liveblocks/react` + +- Add Feeds hooks: `useFeeds`, `useFeedMessages`, `useCreateFeed`, + `useDeleteFeed`, `useUpdateFeedMetadata`, `useCreateFeedMessage`, + `useDeleteFeedMessage`, and `useUpdateFeedMessage`. + +### `@liveblocks/node` + +- Add REST client methods for Feeds: `getFeeds`, `getFeed`, `createFeed`, + `updateFeed`, `deleteFeed`, `getFeedMessages`, `createFeedMessage`, + `updateFeedMessage`, and `deleteFeedMessage`. + +### Python SDK + +- Add Feeds REST API support on the sync and async clients (`get_feeds`, + `get_feed`, `create_feed`, `update_feed`, `delete_feed`, `get_feed_messages`, + `create_feed_message`, `update_feed_message`, `delete_feed_message`) with + matching request/response models. + +### `@liveblocks/client` + +- Add **Feeds**: room-scoped feeds with metadata and messages and APIs to list, + create, update, and delete feeds and messages (`fetchFeeds`, + `fetchFeedMessages`, `addFeed`, `updateFeed`, `deleteFeed`, `addFeedMessage`, + `updateFeedMessage`, `deleteFeedMessage`). + +### `@liveblocks/react-ui` + +- Add `body` prop to `Comment` to allow overriding only the default rich-text + comment body while still keeping attachments, reactions, and + `additionalContent` as is, unlike when using the `children` prop. +- Fix `AvatarStack` negative margin breaking alignment. + +## Liveblocks dev server (v1.3.0) + +- Add feeds support (feeds:write permission) +- Add verbose logging toggle +- Fix permission validation to accept all valid permission combinations +- Support passing extra arguments to `--cmd` dynamically + +## Website +- [Liveblocks Unveil](https://liveblocks.io/unveil/april-2026): April 6–10, 5 days of launches. + +## Documentation + +- New page: [n8n nodes](https://liveblocks.io/docs/tools/n8n-nodes). +- New page: [AI Collaboration](https://liveblocks.io/docs/collaboration-features/ai-collaboration). +- New get started: [Next.js + Realtime feeds](https://liveblocks.io/docs/get-started/nextjs-feeds). +- New get started: [Next.js + React Flow](https://liveblocks.io/docs/get-started/nextjs-react-flow). +- Add Feeds to API reference pages. +- New concepts and WebSocket images. + +## Examples + +- New example: [AI Comments](https://liveblocks.io/examples/ai-comments/nextjs-comments-ai). +- New example: [Chat SDK Bot](https://liveblocks.io/examples/chat-sdk-bot/nextjs-chat-sdk-bot). +- New example: [Chat SDK AI Bot](https://liveblocks.io/examples/chat-sdk-ai-bot/nextjs-chat-sdk-ai-bot). + +## Contributors + +nvie, ctnicholas, marcbouchenoire, sugardarius, nimeshnayaju, jrowny + # Week 13 (2026-03-27) ## 3.15.5 diff --git a/examples/nextjs-react-flow/package-lock.json b/examples/nextjs-react-flow/package-lock.json index 29650488d53..97ac7190c72 100644 --- a/examples/nextjs-react-flow/package-lock.json +++ b/examples/nextjs-react-flow/package-lock.json @@ -2533,6 +2533,70 @@ "node": ">=14.0.0" } }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/core": { + "version": "1.8.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/runtime": { + "version": "1.8.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi/node_modules/tslib": { + "version": "2.8.1", + "dev": true, + "inBundle": true, + "license": "0BSD", + "optional": true + }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", diff --git a/examples/nuxtjs-live-avatars/package-lock.json b/examples/nuxtjs-live-avatars/package-lock.json index ddc411bf762..ee832c282d0 100644 --- a/examples/nuxtjs-live-avatars/package-lock.json +++ b/examples/nuxtjs-live-avatars/package-lock.json @@ -6772,9 +6772,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, diff --git a/examples/react-comments/package-lock.json b/examples/react-comments/package-lock.json index 2998cd22651..3926dc20ee8 100644 --- a/examples/react-comments/package-lock.json +++ b/examples/react-comments/package-lock.json @@ -3228,9 +3228,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/loose-envify": {