From c6261feb4a20cef45d5260942feab9d3140231f7 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Fri, 19 Dec 2025 12:52:06 +0000 Subject: [PATCH 1/6] Bump 7.13.2 --- .changeset/bump-patch-1766148726545.md | 5 +++++ yarn.lock | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/bump-patch-1766148726545.md diff --git a/.changeset/bump-patch-1766148726545.md b/.changeset/bump-patch-1766148726545.md new file mode 100644 index 00000000000..e1eaa7980af --- /dev/null +++ b/.changeset/bump-patch-1766148726545.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/yarn.lock b/yarn.lock index c58e0363815..60688953181 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10748,7 +10748,7 @@ __metadata: peerDependencies: "@rocket.chat/layout": "*" "@rocket.chat/tools": 0.2.3 - "@rocket.chat/ui-contexts": 25.0.0 + "@rocket.chat/ui-contexts": 25.0.1 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" From eef2b390a8e4664ad4b974e7ea579982245efce5 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 14:34:08 +0000 Subject: [PATCH 2/6] fix(presence): update connections on heartbeat and remove them when stale (#37883) Co-authored-by: Matheus Cardoso <5606812+cardoso@users.noreply.github.com> --- .changeset/spicy-nails-design.md | 8 + .../externals/meteor/ddp-common.d.ts | 64 ++++++++ .../definition/externals/meteor/meteor.d.ts | 9 +- apps/meteor/ee/server/startup/presence.ts | 10 ++ ee/apps/ddp-streamer/src/Client.ts | 19 +++ ee/packages/presence/src/Presence.ts | 54 +++++- .../presence/src/lib/PresenceReaper.spec.ts | 154 ++++++++++++++++++ .../presence/src/lib/PresenceReaper.ts | 132 +++++++++++++++ packages/core-services/src/types/IPresence.ts | 1 + 9 files changed, 447 insertions(+), 4 deletions(-) create mode 100644 .changeset/spicy-nails-design.md create mode 100644 ee/packages/presence/src/lib/PresenceReaper.spec.ts create mode 100644 ee/packages/presence/src/lib/PresenceReaper.ts diff --git a/.changeset/spicy-nails-design.md b/.changeset/spicy-nails-design.md new file mode 100644 index 00000000000..23a5f82e7bb --- /dev/null +++ b/.changeset/spicy-nails-design.md @@ -0,0 +1,8 @@ +--- +"@rocket.chat/meteor": patch +"@rocket.chat/core-services": patch +"@rocket.chat/ddp-streamer": patch +"@rocket.chat/presence": patch +--- + +Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. \ No newline at end of file diff --git a/apps/meteor/definition/externals/meteor/ddp-common.d.ts b/apps/meteor/definition/externals/meteor/ddp-common.d.ts index 3a7f1538ab4..cbe96a97229 100644 --- a/apps/meteor/definition/externals/meteor/ddp-common.d.ts +++ b/apps/meteor/definition/externals/meteor/ddp-common.d.ts @@ -14,5 +14,69 @@ declare module 'meteor/ddp-common' { userId?: string; }); } + + /** + * Heartbeat options + */ + type HeartbeatOptions = { + /** + * interval to send pings, in milliseconds + */ + heartbeatInterval: number; + /** + * timeout to close the connection if a reply isn't received, in milliseconds. + */ + heartbeatTimeout: number; + /** + * function to call to send a ping on the connection. + */ + sendPing: () => void; + /** + * function to call to close the connection + */ + onTimeout: () => void; + }; + + class Heartbeat { + heartbeatInterval: number; + + heartbeatTimeout: number; + + _sendPing: () => void; + + _onTimeout: () => void; + + _seenPacket: boolean; + + _heartbeatIntervalHandle: ReturnType | null; + + _heartbeatTimeoutHandle: ReturnType | null; + + constructor(options: HeartbeatOptions); + + stop(): void; + + start(): void; + + _startHeartbeatIntervalTimer(): void; + + _startHeartbeatTimeoutTimer(): void; + + _clearHeartbeatIntervalTimer(): void; + + _clearHeartbeatTimeoutTimer(): void; + + /** + * The heartbeat interval timer is fired when we should send a ping. + */ + _heartbeatIntervalFired(): void; + + /** + * The heartbeat timeout timer is fired when we sent a ping, but we timed out waiting for the pong. + */ + _heartbeatTimeoutFired(): void; + + messageReceived(): void; + } } } diff --git a/apps/meteor/definition/externals/meteor/meteor.d.ts b/apps/meteor/definition/externals/meteor/meteor.d.ts index cab110392c1..e93445a891a 100644 --- a/apps/meteor/definition/externals/meteor/meteor.d.ts +++ b/apps/meteor/definition/externals/meteor/meteor.d.ts @@ -1,6 +1,6 @@ import 'meteor/meteor'; import type { ServerMethods } from '@rocket.chat/ddp-client'; -import type { IStreamerConstructor, IStreamer } from 'meteor/rocketchat:streamer'; +import type { DDPCommon, IStreamerConstructor, IStreamer } from 'meteor/ddp-common'; type StringifyBuffers = { [P in keyof T]: T[P] extends Buffer ? string : T[P]; @@ -39,7 +39,12 @@ declare module 'meteor/meteor' { isDesktop: () => boolean; } - const server: any; + const server: { + sessions: Map; + publish_handlers: { + meteor_autoupdate_clientVersions(): void; + }; + }; const runAsUser: (userId: string, scope: () => T) => T; diff --git a/apps/meteor/ee/server/startup/presence.ts b/apps/meteor/ee/server/startup/presence.ts index e0756e4b4c5..6bf587b500b 100644 --- a/apps/meteor/ee/server/startup/presence.ts +++ b/apps/meteor/ee/server/startup/presence.ts @@ -40,6 +40,16 @@ Meteor.startup(() => { return; } + const _messageReceived = session.heartbeat.messageReceived.bind(session.heartbeat); + session.heartbeat.messageReceived = function messageReceived() { + if (this._seenPacket === false) { + void Presence.updateConnection(login.user._id, login.connection.id).catch((err) => { + console.error('Error updating connection presence on heartbeat:', err); + }); + } + return _messageReceived(); + }; + void (async function () { await Presence.newConnection(login.user._id, login.connection.id, nodeId); updateConns(); diff --git a/ee/apps/ddp-streamer/src/Client.ts b/ee/apps/ddp-streamer/src/Client.ts index fb75af64b3d..0ce87629487 100644 --- a/ee/apps/ddp-streamer/src/Client.ts +++ b/ee/apps/ddp-streamer/src/Client.ts @@ -1,6 +1,7 @@ import { EventEmitter } from 'events'; import type { IncomingMessage } from 'http'; +import { Presence } from '@rocket.chat/core-services'; import type { ISocketConnection } from '@rocket.chat/core-typings'; import { v1 as uuidv1 } from 'uuid'; import type WebSocket from 'ws'; @@ -73,6 +74,8 @@ export class Client extends EventEmitter { public userToken?: string; + private _seenPacket = true; + constructor( public ws: WebSocket, public meteorClient = false, @@ -179,6 +182,18 @@ export class Client extends EventEmitter { this.ws.close(WS_ERRORS.TIMEOUT, WS_ERRORS_MESSAGES.TIMEOUT); }; + private messageReceived = (): void => { + if (this._seenPacket || !this.userId) { + this._seenPacket = true; + return; + } + + this._seenPacket = true; + void Presence.updateConnection(this.userId, this.connection.id).catch((err) => { + console.error('Error updating connection presence after heartbeat:', err); + }); + }; + ping(id?: string): void { this.send(server.serialize({ [DDP_EVENTS.MSG]: DDP_EVENTS.PING, ...(id && { [DDP_EVENTS.ID]: id }) })); } @@ -188,6 +203,9 @@ export class Client extends EventEmitter { } handleIdle = (): void => { + if (this.userId) { + this._seenPacket = false; + } this.ping(); this.timeout = setTimeout(this.closeTimeout, TIMEOUT); }; @@ -200,6 +218,7 @@ export class Client extends EventEmitter { handler = async (payload: WebSocket.Data, isBinary: boolean): Promise => { try { const packet = server.parse(payload, isBinary); + this.messageReceived(); this.emit('message', packet); if (this.wait) { return new Promise((resolve) => this.once(DDP_EVENTS.LOGGED, () => resolve(this.process(packet.msg, packet)))); diff --git a/ee/packages/presence/src/Presence.ts b/ee/packages/presence/src/Presence.ts index 5b537857698..0fe78b9e47d 100755 --- a/ee/packages/presence/src/Presence.ts +++ b/ee/packages/presence/src/Presence.ts @@ -4,6 +4,7 @@ import type { IUser } from '@rocket.chat/core-typings'; import { UserStatus } from '@rocket.chat/core-typings'; import { Settings, Users, UsersSessions } from '@rocket.chat/models'; +import { PresenceReaper } from './lib/PresenceReaper'; import { processPresenceAndStatus } from './lib/processConnectionStatus'; const MAX_CONNECTIONS = 200; @@ -25,9 +26,17 @@ export class Presence extends ServiceClass implements IPresence { private peakConnections = 0; + private reaper: PresenceReaper; + constructor() { super(); + this.reaper = new PresenceReaper({ + batchSize: 500, + staleThresholdMs: 5 * 60 * 1000, // 5 minutes + onUpdate: (userIds) => this.handleReaperUpdates(userIds), + }); + this.onEvent('watch.instanceStatus', async ({ clientAction, id, diff }): Promise => { if (clientAction === 'removed') { this.connsPerInstance.delete(id); @@ -72,7 +81,8 @@ export class Presence extends ServiceClass implements IPresence { return affectedUsers.forEach((uid) => this.updateUserPresence(uid)); } - async started(): Promise { + override async started(): Promise { + this.reaper.start(); this.lostConTimeout = setTimeout(async () => { const affectedUsers = await this.removeLostConnections(); return affectedUsers.forEach((uid) => this.updateUserPresence(uid)); @@ -89,7 +99,25 @@ export class Presence extends ServiceClass implements IPresence { } } - async stopped(): Promise { + private async handleReaperUpdates(userIds: string[]): Promise { + const results = await Promise.allSettled(userIds.map((uid) => this.updateUserPresence(uid))); + const fulfilled = results.filter((result) => result.status === 'fulfilled'); + const rejected = results.filter((result) => result.status === 'rejected'); + + if (fulfilled.length > 0) { + console.debug(`[PresenceReaper] Successfully updated presence for ${fulfilled.length} users.`); + } + + if (rejected.length > 0) { + console.error( + `[PresenceReaper] Failed to update presence for ${rejected.length} users:`, + rejected.map(({ reason }) => reason), + ); + } + } + + override async stopped(): Promise { + this.reaper.stop(); if (!this.lostConTimeout) { return; } @@ -137,6 +165,28 @@ export class Presence extends ServiceClass implements IPresence { }; } + async updateConnection(uid: string, connectionId: string): Promise<{ uid: string; connectionId: string } | undefined> { + const query = { + '_id': uid, + 'connections.id': connectionId, + }; + + const update = { + $set: { + 'connections.$._updatedAt': new Date(), + }, + }; + + const result = await UsersSessions.updateOne(query, update); + if (result.modifiedCount === 0) { + return; + } + + await this.updateUserPresence(uid); + + return { uid, connectionId }; + } + async removeConnection(uid: string | undefined, session: string | undefined): Promise<{ uid: string; session: string } | undefined> { if (!uid || !session) { return; diff --git a/ee/packages/presence/src/lib/PresenceReaper.spec.ts b/ee/packages/presence/src/lib/PresenceReaper.spec.ts new file mode 100644 index 00000000000..f8e6a83c498 --- /dev/null +++ b/ee/packages/presence/src/lib/PresenceReaper.spec.ts @@ -0,0 +1,154 @@ +import { UserStatus, type IUserSession, type IUserSessionConnection } from '@rocket.chat/core-typings'; +import { registerModel } from '@rocket.chat/models'; +import type { FindCursor, WithId } from 'mongodb'; + +import { PresenceReaper } from './PresenceReaper'; + +let sessions = 0; +const createSession = (overrides: Partial = {}): IUserSession => ({ + _id: `user-${sessions++}`, + connections: [], + ...overrides, +}); + +let connections = 0; +const createConnection = (overrides: Partial = {}): IUserSessionConnection => ({ + id: `conn-${connections++}`, + instanceId: `instanceId`, + status: UserStatus.ONLINE, + _createdAt: new Date(), + _updatedAt: new Date(), + ...overrides, +}); + +const createDates = () => { + const now = new Date(); + const stale = new Date(now.getTime() - 10 * 60 * 1000); // 10 mins ago + const active = new Date(now.getTime() - 1 * 60 * 1000); // 1 min ago + const cutoff = new Date(now.getTime() - 5 * 60 * 1000); // 5 mins ago + + return { now, stale, active, cutoff }; +}; + +const createCursor = (documents: WithId[]): FindCursor> => { + let index = 0; + return { + async *[Symbol.asyncIterator]() { + while (index < documents.length) { + yield documents[index++]; + } + }, + } as FindCursor>; +}; + +describe('PresenceReaper', () => { + let reaper: PresenceReaper; + const bulkWriteMock = jest.fn(); + const findMock = jest.fn(); + const onUpdateMock = jest.fn(); + registerModel('IUsersSessionsModel', { + find: findMock, + col: { + bulkWrite: bulkWriteMock, + }, + } as any); + + beforeEach(() => { + bulkWriteMock.mockClear(); + findMock.mockClear(); + onUpdateMock.mockClear(); + + reaper = new PresenceReaper({ + onUpdate: onUpdateMock, + staleThresholdMs: 5 * 60 * 1000, // 5 minutes + batchSize: 2, // small batch size for testing + }); + }); + + it('should not call onUpdate when there no connections', async () => { + findMock.mockReturnValue(createCursor([])); + + await reaper.run(); + + expect(onUpdateMock).not.toHaveBeenCalled(); + }); + + it('should process users with stale connections correctly', async () => { + const { stale } = createDates(); + + findMock.mockReturnValue( + createCursor([ + createSession({ + _id: 'user-789', + connections: [createConnection({ _updatedAt: stale })], + }), + ]), + ); + + await reaper.run(); + + expect(onUpdateMock).toHaveBeenCalledTimes(1); + expect(onUpdateMock).toHaveBeenCalledWith(['user-789']); + }); + + it('should process multiple users and batch updates correctly', async () => { + const { stale } = createDates(); + + findMock.mockReturnValue( + createCursor([ + createSession({ + _id: 'user-1', + connections: [createConnection({ _updatedAt: stale })], + }), + createSession({ + _id: 'user-2', + connections: [createConnection({ _updatedAt: stale })], + }), + createSession({ + _id: 'user-3', + connections: [createConnection({ _updatedAt: stale })], + }), + ]), + ); + + // Execute Run + await reaper.run(); + + // Verify 'users' Update called twice due to batch size of 2 + expect(onUpdateMock).toHaveBeenCalledTimes(2); + expect(onUpdateMock).toHaveBeenNthCalledWith(1, ['user-1', 'user-2']); + expect(onUpdateMock).toHaveBeenNthCalledWith(2, ['user-3']); + }); + + it('should process users with mixed connection states correctly', async () => { + const { stale, active } = createDates(); + + findMock.mockReturnValue( + createCursor([ + createSession({ + _id: 'no-connections', + connections: [], + }), + createSession({ + _id: 'all-active', + connections: [createConnection({ _updatedAt: active })], + }), + createSession({ + _id: 'all-stale', + connections: [createConnection({ _updatedAt: stale })], + }), + createSession({ + _id: 'mixed', + connections: [createConnection({ _updatedAt: stale }), createConnection({ _updatedAt: active })], + }), + ]), + ); + + // Execute Run + await reaper.run(); + + // Verify 'users' Update called for both users + expect(onUpdateMock).toHaveBeenCalledTimes(1); + expect(onUpdateMock).toHaveBeenNthCalledWith(1, ['all-stale', 'mixed']); + }); +}); diff --git a/ee/packages/presence/src/lib/PresenceReaper.ts b/ee/packages/presence/src/lib/PresenceReaper.ts new file mode 100644 index 00000000000..969465229ca --- /dev/null +++ b/ee/packages/presence/src/lib/PresenceReaper.ts @@ -0,0 +1,132 @@ +import { setInterval } from 'node:timers'; + +import type { IUserSession } from '@rocket.chat/core-typings'; +import { UsersSessions } from '@rocket.chat/models'; +import type { AnyBulkWriteOperation } from 'mongodb'; + +type ReaperPlan = { + userId: string; + removeIds: NonEmptyArray; + cutoffDate: Date; +}; + +type NonEmptyArray = Omit<[T, ...T[]], 'map'> & { + map(callbackfn: (value: T, index: number, array: T[]) => U): NonEmptyArray; +}; + +const isNonEmptyArray = (arr: T[]): arr is NonEmptyArray => arr.length > 0; + +type ReaperCallback = (userIds: NonEmptyArray) => Promise; + +type ReaperOptions = { + onUpdate: ReaperCallback; + staleThresholdMs: number; + batchSize: number; +}; + +export class PresenceReaper { + private staleThresholdMs: number; + + private batchSize: number; + + private running: boolean; + + private onUpdate: ReaperCallback; + + private intervalId?: NodeJS.Timeout; + + constructor(options: ReaperOptions) { + this.onUpdate = options.onUpdate; + this.staleThresholdMs = options.staleThresholdMs; + this.batchSize = options.batchSize; + this.running = false; + } + + public start() { + if (this.running) return; + this.running = true; + + // Run every 1 minute + this.intervalId = setInterval(() => { + this.run().catch((err) => console.error('[PresenceReaper] Error:', err)); + }, 60 * 1000); + } + + public stop() { + if (!this.running) return; + this.running = false; + + if (this.intervalId) { + clearInterval(this.intervalId); + this.intervalId = undefined; + } + } + + public async run(): Promise { + const cutoffDate = new Date(Date.now() - this.staleThresholdMs); + + // 1. Find users with potentially stale connections + const cursor = UsersSessions.find( + { 'connections._updatedAt': { $lte: cutoffDate } }, + { + projection: { _id: 1, connections: 1 }, + }, + ); + + const userChangeSet = new Map(); + + for await (const sessionDoc of cursor) { + this.processDocument(sessionDoc, cutoffDate, userChangeSet); + + if (userChangeSet.size >= this.batchSize) { + await this.flushBatch(userChangeSet); + userChangeSet.clear(); + } + } + + if (userChangeSet.size > 0) { + await this.flushBatch(userChangeSet); + } + } + + private processDocument(sessionDoc: IUserSession, cutoffDate: Date, changeMap: Map): void { + const userId = sessionDoc._id; + const allConnections = sessionDoc.connections || []; + + // Filter connections based on the cutoff + const staleConnections = allConnections.filter((c) => c._updatedAt <= cutoffDate); + + if (isNonEmptyArray(staleConnections)) { + changeMap.set(userId, { + userId, + removeIds: staleConnections.map((c) => c.id), + cutoffDate, // Keep reference for race-condition check + }); + } + } + + private async flushBatch(changeMap: Map): Promise { + const operations = []; + + for (const plan of changeMap.values()) { + operations.push({ + updateOne: { + filter: { _id: plan.userId }, + update: { + $pull: { + connections: { + id: { $in: plan.removeIds }, + _updatedAt: { $lte: plan.cutoffDate }, + }, + }, + }, + }, + } satisfies AnyBulkWriteOperation); + } + + if (isNonEmptyArray(operations)) { + await UsersSessions.col.bulkWrite(operations); + await this.onUpdate(operations.map((op) => op.updateOne.filter._id)); + } + } +} diff --git a/packages/core-services/src/types/IPresence.ts b/packages/core-services/src/types/IPresence.ts index 5f7c57d6799..268fed8cd1e 100644 --- a/packages/core-services/src/types/IPresence.ts +++ b/packages/core-services/src/types/IPresence.ts @@ -13,6 +13,7 @@ export interface IPresence extends IServiceClass { session: string | undefined, nodeId: string, ): Promise<{ uid: string; session: string } | undefined>; + updateConnection(uid: string, connectionId: string): Promise<{ uid: string; connectionId: string } | undefined>; removeLostConnections(nodeID: string): Promise; setStatus(uid: string, status: UserStatus, statusText?: string): Promise; setConnectionStatus(uid: string, status: UserStatus, session: string): Promise; From e9f1930a2765200118592aa9483e0d84fcdf7e3b Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 14:58:10 +0000 Subject: [PATCH 3/6] regression: fix presence connections not being updated in DDPStreamer (#37887) Co-authored-by: Matheus Cardoso <5606812+cardoso@users.noreply.github.com> --- ee/apps/ddp-streamer/src/Client.ts | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/ee/apps/ddp-streamer/src/Client.ts b/ee/apps/ddp-streamer/src/Client.ts index 0ce87629487..4807157212e 100644 --- a/ee/apps/ddp-streamer/src/Client.ts +++ b/ee/apps/ddp-streamer/src/Client.ts @@ -3,6 +3,7 @@ import type { IncomingMessage } from 'http'; import { Presence } from '@rocket.chat/core-services'; import type { ISocketConnection } from '@rocket.chat/core-typings'; +import { throttle } from 'underscore'; import { v1 as uuidv1 } from 'uuid'; import type WebSocket from 'ws'; @@ -74,7 +75,17 @@ export class Client extends EventEmitter { public userToken?: string; - private _seenPacket = true; + private updatePresence = throttle( + () => { + if (this.userId) { + void Presence.updateConnection(this.userId, this.connection.id).catch((err) => { + console.error('Error updating connection presence:', err); + }); + } + }, + TIMEOUT, + { leading: true, trailing: false }, + ); constructor( public ws: WebSocket, @@ -182,18 +193,6 @@ export class Client extends EventEmitter { this.ws.close(WS_ERRORS.TIMEOUT, WS_ERRORS_MESSAGES.TIMEOUT); }; - private messageReceived = (): void => { - if (this._seenPacket || !this.userId) { - this._seenPacket = true; - return; - } - - this._seenPacket = true; - void Presence.updateConnection(this.userId, this.connection.id).catch((err) => { - console.error('Error updating connection presence after heartbeat:', err); - }); - }; - ping(id?: string): void { this.send(server.serialize({ [DDP_EVENTS.MSG]: DDP_EVENTS.PING, ...(id && { [DDP_EVENTS.ID]: id }) })); } @@ -203,9 +202,6 @@ export class Client extends EventEmitter { } handleIdle = (): void => { - if (this.userId) { - this._seenPacket = false; - } this.ping(); this.timeout = setTimeout(this.closeTimeout, TIMEOUT); }; @@ -218,7 +214,7 @@ export class Client extends EventEmitter { handler = async (payload: WebSocket.Data, isBinary: boolean): Promise => { try { const packet = server.parse(payload, isBinary); - this.messageReceived(); + this.updatePresence(); this.emit('message', packet); if (this.wait) { return new Promise((resolve) => this.once(DDP_EVENTS.LOGGED, () => resolve(this.process(packet.msg, packet)))); From f8154f190ec0dd414f63d63128ee97039dc55d20 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 16:45:35 +0100 Subject: [PATCH 4/6] fix: imported fixes 2025-12-19 (#37876) Co-authored-by: Julio Araujo Co-authored-by: Ricardo Garim --- .changeset/fast-ligers-unite.md | 5 +++++ .../meteor/app/api/server/lib/isValidQuery.ts | 20 ++++++++++++------- apps/meteor/app/api/server/v1/users.ts | 20 ++++++++++++++----- .../lib/server/functions/getFullUserData.ts | 4 ++-- .../api/server/v1/lib/isValidQuery.spec.ts | 12 ++++++++++- 5 files changed, 46 insertions(+), 15 deletions(-) create mode 100644 .changeset/fast-ligers-unite.md diff --git a/.changeset/fast-ligers-unite.md b/.changeset/fast-ligers-unite.md new file mode 100644 index 00000000000..eacb88108a0 --- /dev/null +++ b/.changeset/fast-ligers-unite.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) diff --git a/apps/meteor/app/api/server/lib/isValidQuery.ts b/apps/meteor/app/api/server/lib/isValidQuery.ts index b4dd70c2ae0..97620cdb1b9 100644 --- a/apps/meteor/app/api/server/lib/isValidQuery.ts +++ b/apps/meteor/app/api/server/lib/isValidQuery.ts @@ -23,16 +23,22 @@ export const isValidQuery: { const verifyQuery = (query: Query, allowedAttributes: string[], allowedOperations: string[], parent = ''): boolean => { return Object.entries(removeDangerousProps(query)).every(([key, value]) => { const path = parent ? `${parent}.${key}` : key; - if (parent === '' && path.startsWith('$')) { - if (!allowedOperations.includes(path)) { - isValidQuery.errors.push(`Invalid operation: ${path}`); + if (key.startsWith('$')) { + if (!allowedOperations.includes(key)) { + isValidQuery.errors.push(`Invalid operation: ${key}`); return false; } - if (!Array.isArray(value)) { - isValidQuery.errors.push(`Invalid parameter for operation: ${path} : ${value}`); - return false; + + if (Array.isArray(value)) { + return value.every((v) => verifyQuery(v, allowedAttributes, allowedOperations)); } - return value.every((v) => verifyQuery(v, allowedAttributes, allowedOperations)); + + if (value instanceof Object) { + return verifyQuery(value, allowedAttributes, allowedOperations, path); + } + + // handles primitive values (strings, numbers, booleans, etc.) + return true; } if ( diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts index d4f0012cd57..f6058085dee 100644 --- a/apps/meteor/app/api/server/v1/users.ts +++ b/apps/meteor/app/api/server/v1/users.ts @@ -50,7 +50,7 @@ import { } from '../../../lib/server/functions/checkUsernameAvailability'; import { deleteUser } from '../../../lib/server/functions/deleteUser'; import { getAvatarSuggestionForUser } from '../../../lib/server/functions/getAvatarSuggestionForUser'; -import { getFullUserDataByIdOrUsernameOrImportId } from '../../../lib/server/functions/getFullUserData'; +import { getFullUserDataByIdOrUsernameOrImportId, defaultFields, fullFields } from '../../../lib/server/functions/getFullUserData'; import { generateUsernameSuggestion } from '../../../lib/server/functions/getUsernameSuggestion'; import { saveCustomFields } from '../../../lib/server/functions/saveCustomFields'; import { saveCustomFieldsWithoutValidation } from '../../../lib/server/functions/saveCustomFieldsWithoutValidation'; @@ -503,13 +503,18 @@ API.v1.addRoute( const { offset, count } = await getPaginationItems(this.queryParams); const { sort, fields, query } = await this.parseJsonQuery(); - const nonEmptyQuery = getNonEmptyQuery(query, await hasPermissionAsync(this.userId, 'view-full-other-user-info')); const nonEmptyFields = getNonEmptyFields(fields); const inclusiveFields = getInclusiveFields(nonEmptyFields); const inclusiveFieldsKeys = Object.keys(inclusiveFields); + const hasUserQuery = query && Object.keys(query).length > 0; + + const nonEmptyQuery = getNonEmptyQuery(query, await hasPermissionAsync(this.userId, 'view-full-other-user-info')); + + // if user provided a query, validate it with their allowed operators + // otherwise we use the default query (with $regex and $options) if ( !isValidQuery( nonEmptyQuery, @@ -521,7 +526,7 @@ API.v1.addRoute( inclusiveFieldsKeys.includes('type') && 'type.*', inclusiveFieldsKeys.includes('customFields') && 'customFields.*', ].filter(Boolean) as string[], - this.queryOperations, + hasUserQuery ? this.queryOperations : [...this.queryOperations, '$regex', '$options'], ) ) { throw new Meteor.Error('error-invalid-query', isValidQuery.errors.join('\n')); @@ -1144,8 +1149,13 @@ API.v1.addRoute( const selector: { exceptions: Required['username'][]; conditions: Filter; term: string } = JSON.parse(selectorRaw); try { - if (selector?.conditions && !isValidQuery(selector.conditions, ['*'], ['$or', '$and'])) { - throw new Error('error-invalid-query'); + if (selector?.conditions) { + const canViewFullInfo = await hasPermissionAsync(this.userId, 'view-full-other-user-info'); + const allowedFields = canViewFullInfo ? [...Object.keys(defaultFields), ...Object.keys(fullFields)] : Object.keys(defaultFields); + + if (!isValidQuery(selector.conditions, allowedFields, ['$and', '$ne', '$exists'])) { + throw new Error('error-invalid-query'); + } } } catch (e) { return API.v1.failure(e); diff --git a/apps/meteor/app/lib/server/functions/getFullUserData.ts b/apps/meteor/app/lib/server/functions/getFullUserData.ts index f66f8ecb49c..c55a5464a2a 100644 --- a/apps/meteor/app/lib/server/functions/getFullUserData.ts +++ b/apps/meteor/app/lib/server/functions/getFullUserData.ts @@ -7,7 +7,7 @@ import { settings } from '../../../settings/server'; const logger = new Logger('getFullUserData'); -const defaultFields = { +export const defaultFields = { name: 1, username: 1, nickname: 1, @@ -24,7 +24,7 @@ const defaultFields = { statusLivechat: 1, } as const; -const fullFields = { +export const fullFields = { emails: 1, phone: 1, statusConnection: 1, diff --git a/apps/meteor/tests/unit/app/api/server/v1/lib/isValidQuery.spec.ts b/apps/meteor/tests/unit/app/api/server/v1/lib/isValidQuery.spec.ts index e67ad244066..5f421578ed4 100644 --- a/apps/meteor/tests/unit/app/api/server/v1/lib/isValidQuery.spec.ts +++ b/apps/meteor/tests/unit/app/api/server/v1/lib/isValidQuery.spec.ts @@ -174,7 +174,7 @@ describe('isValidQuery', () => { }, }, }; - expect(isValidQuery(query, props, ['$or'])).to.be.true; + expect(isValidQuery(query, props, ['$or', '$regex'])).to.be.true; expect(isValidQuery.errors.length).to.be.equals(0); }); @@ -212,5 +212,15 @@ describe('isValidQuery', () => { ), ).to.be.false; }); + + it('should return false if the query contains nested conditions with disallowed operators', () => { + const props = ['username']; + const allowedOps = ['$and', '$ne']; + const query = { + $and: [{ username: { $exists: true } }, { username: { $ne: '1000' } }], + }; + expect(isValidQuery(query, props, allowedOps)).to.be.false; + expect(isValidQuery.errors.length).to.be.equals(1); + }); }); }); From aba62efb22277a0662dc9b2bd1486c993f31e595 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 20:03:33 +0000 Subject: [PATCH 5/6] fix: no amd64 binaries on manual installation (#37900) Co-authored-by: Rodrigo Nascimento <234261+rodrigok@users.noreply.github.com> --- .github/actions/build-docker/action.yml | 10 +++++++++- .github/actions/setup-node/action.yml | 10 ++++++++-- apps/meteor/.docker/Dockerfile.alpine | 9 +-------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.github/actions/build-docker/action.yml b/.github/actions/build-docker/action.yml index b00709834c3..5100528ac7a 100644 --- a/.github/actions/build-docker/action.yml +++ b/.github/actions/build-docker/action.yml @@ -75,7 +75,7 @@ runs: set -o xtrace export DENO_VERSION="${{ inputs.deno-version }}" - # Removes unnecessary swc cores to reduce image sized + # Removes unnecessary swc cores and sharp binaries to reduce image size swc_arch='x64' if [[ "${{ inputs.service }}" == 'rocketchat' ]]; then if [[ "${{ inputs.arch }}" == 'arm64' ]]; then @@ -83,6 +83,14 @@ runs: fi find /tmp/build/bundle/programs/server/npm/node_modules/meteor/babel-compiler/node_modules/@meteorjs/swc-core/.swc/node_modules/@swc -type d -name 'core-*' -not -name "*linux-${swc_arch}-gnu*" -exec rm -rf {} + + + find /tmp/build/bundle/programs/server/npm/node_modules/@img -type d -name 'sharp-*' -not -name "*-linuxmusl-${swc_arch}" -exec rm -rf {} + + + find /tmp/build/bundle/programs/server/npm/node_modules/@napi-rs -type d -name 'pinyin-linux-*' -not -name "*-linux-${swc_arch}-*" -exec rm -rf {} + + + find /tmp/build/bundle/programs/server/npm/node_modules/@esbuild -type d -name 'linux-*' -not -name "*-${swc_arch}" -exec rm -rf {} + + + find /tmp/build/bundle/programs/server/npm/node_modules/@rocket.chat/apps-engine/node_modules/@esbuild -type d -name 'linux-*' -not -name "*-${swc_arch}" -exec rm -rf {} + fi if [[ "${{ inputs.publish-image }}" == 'true' ]]; then diff --git a/.github/actions/setup-node/action.yml b/.github/actions/setup-node/action.yml index 6865b342b2d..faa3f6d7ed1 100644 --- a/.github/actions/setup-node/action.yml +++ b/.github/actions/setup-node/action.yml @@ -51,8 +51,8 @@ runs: apps/meteor/ee/server/services/node_modules packages/apps-engine/node_modules packages/apps-engine/.deno-cache - key: node-modules-${{ inputs.type }}-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('package.json') }}-${{ hashFiles('yarn.lock') }}-deno-v${{ inputs.deno-version }}-${{ hashFiles('packages/apps-engine/deno-runtime/deno.lock') }}-v3 - # key: node-modules-${{ inputs.type }}-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('package.json') }}-${{ hashFiles('yarn.lock') }}-deno-v${{ inputs.deno-version }}-${{ hashFiles('packages/apps-engine/deno-runtime/deno.lock') }}-v${{ github.run_id }} + key: node-modules-${{ inputs.type }}-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('package.json') }}-${{ hashFiles('yarn.lock') }}-${{ hashFiles('.yarnrc.yml') }}-deno-v${{ inputs.deno-version }}-${{ hashFiles('packages/apps-engine/deno-runtime/deno.lock') }}-v5 + # key: node-modules-${{ inputs.type }}-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('package.json') }}-${{ hashFiles('yarn.lock') }}-${{ hashFiles('.yarnrc.yml') }}-deno-v${{ inputs.deno-version }}-${{ hashFiles('packages/apps-engine/deno-runtime/deno.lock') }}-v${{ github.run_id }} # # Could use this command to list all paths to save: # find . -name 'node_modules' -prune | grep -v "/\.meteor/" | grep -v "/meteor/packages/" @@ -75,6 +75,12 @@ runs: run: | echo "//registry.npmjs.org/:_authToken=${{ inputs.NPM_TOKEN }}" > ~/.npmrc + - name: yarn config + if: inputs.install + shell: bash + run: | + yarn config set supportedArchitectures --json '{"os": ["linux"], "cpu": ["arm64", "x64"], "libc": ["glibc", "musl"]}' + - name: yarn install if: inputs.install && inputs.type == 'development' shell: bash diff --git a/apps/meteor/.docker/Dockerfile.alpine b/apps/meteor/.docker/Dockerfile.alpine index dbdeb5abc63..3761e501dcb 100644 --- a/apps/meteor/.docker/Dockerfile.alpine +++ b/apps/meteor/.docker/Dockerfile.alpine @@ -9,14 +9,7 @@ COPY . /app ENV NODE_ENV=production RUN cd /app/bundle/programs/server \ - && npm install --omit=dev \ - # Re install sharp dependencies to ensure proper binary for architecture - # We only need the @img folder from sharp dependencies - && cd /app/bundle/programs/server/npm/node_modules/sharp \ - && npm install --omit=dev \ - && rm -rf ../@img \ - && mv node_modules/@img ../@img \ - && rm -rf node_modules + && npm install --omit=dev FROM node:22.16.0-alpine3.20 From 72fe118ea71b654dafa0985e178f21eed18a8e9a Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Fri, 19 Dec 2025 20:13:50 +0000 Subject: [PATCH 6/6] Release 7.13.2 [no ci] --- .changeset/bump-patch-1766148726545.md | 5 -- .changeset/fast-ligers-unite.md | 5 -- .changeset/spicy-nails-design.md | 8 ---- .yarnrc.yml | 10 ++++ apps/meteor/CHANGELOG.md | 47 +++++++++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/ee/server/services/CHANGELOG.md | 14 ++++++ apps/meteor/ee/server/services/package.json | 2 +- apps/meteor/package.json | 2 +- apps/uikit-playground/CHANGELOG.md | 12 +++++ apps/uikit-playground/package.json | 2 +- ee/apps/account-service/CHANGELOG.md | 14 ++++++ ee/apps/account-service/package.json | 2 +- ee/apps/authorization-service/CHANGELOG.md | 14 ++++++ ee/apps/authorization-service/package.json | 2 +- ee/apps/ddp-streamer/CHANGELOG.md | 17 +++++++ ee/apps/ddp-streamer/package.json | 2 +- ee/apps/omnichannel-transcript/CHANGELOG.md | 15 ++++++ ee/apps/omnichannel-transcript/package.json | 2 +- ee/apps/presence-service/CHANGELOG.md | 14 ++++++ ee/apps/presence-service/package.json | 2 +- ee/apps/queue-worker/CHANGELOG.md | 14 ++++++ ee/apps/queue-worker/package.json | 2 +- ee/apps/stream-hub-service/CHANGELOG.md | 13 +++++ ee/apps/stream-hub-service/package.json | 2 +- ee/packages/federation-matrix/CHANGELOG.md | 15 ++++++ ee/packages/federation-matrix/package.json | 2 +- ee/packages/license/CHANGELOG.md | 9 ++++ ee/packages/license/package.json | 2 +- ee/packages/media-calls/CHANGELOG.md | 10 ++++ ee/packages/media-calls/package.json | 2 +- ee/packages/network-broker/CHANGELOG.md | 9 ++++ ee/packages/network-broker/package.json | 2 +- ee/packages/omni-core-ee/CHANGELOG.md | 11 +++++ ee/packages/omni-core-ee/package.json | 2 +- ee/packages/omnichannel-services/CHANGELOG.md | 15 ++++++ ee/packages/omnichannel-services/package.json | 2 +- ee/packages/pdf-worker/CHANGELOG.md | 9 ++++ ee/packages/pdf-worker/package.json | 2 +- ee/packages/presence/CHANGELOG.md | 13 +++++ ee/packages/presence/package.json | 2 +- package.json | 2 +- packages/api-client/CHANGELOG.md | 10 ++++ packages/api-client/package.json | 2 +- packages/apps/CHANGELOG.md | 10 ++++ packages/apps/package.json | 2 +- packages/core-services/CHANGELOG.md | 14 ++++++ packages/core-services/package.json | 2 +- packages/core-typings/CHANGELOG.md | 2 + packages/core-typings/package.json | 2 +- packages/cron/CHANGELOG.md | 10 ++++ packages/cron/package.json | 2 +- packages/ddp-client/CHANGELOG.md | 11 +++++ packages/ddp-client/package.json | 2 +- packages/freeswitch/CHANGELOG.md | 9 ++++ packages/freeswitch/package.json | 2 +- packages/fuselage-ui-kit/CHANGELOG.md | 13 +++++ packages/fuselage-ui-kit/package.json | 2 +- packages/gazzodown/CHANGELOG.md | 11 +++++ packages/gazzodown/package.json | 2 +- packages/http-router/CHANGELOG.md | 10 ++++ packages/http-router/package.json | 2 +- packages/instance-status/CHANGELOG.md | 9 ++++ packages/instance-status/package.json | 2 +- packages/livechat/CHANGELOG.md | 9 ++++ packages/livechat/package.json | 2 +- packages/mock-providers/CHANGELOG.md | 9 ++++ packages/mock-providers/package.json | 2 +- packages/model-typings/CHANGELOG.md | 9 ++++ packages/model-typings/package.json | 2 +- packages/models/CHANGELOG.md | 10 ++++ packages/models/package.json | 2 +- packages/omni-core/CHANGELOG.md | 9 ++++ packages/omni-core/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 9 ++++ packages/rest-typings/package.json | 2 +- packages/ui-avatar/CHANGELOG.md | 9 ++++ packages/ui-avatar/package.json | 2 +- packages/ui-client/CHANGELOG.md | 10 ++++ packages/ui-client/package.json | 2 +- packages/ui-contexts/CHANGELOG.md | 11 +++++ packages/ui-contexts/package.json | 2 +- packages/ui-video-conf/CHANGELOG.md | 10 ++++ packages/ui-video-conf/package.json | 2 +- packages/ui-voip/CHANGELOG.md | 11 +++++ packages/ui-voip/package.json | 2 +- packages/web-ui-registration/CHANGELOG.md | 9 ++++ packages/web-ui-registration/package.json | 4 +- 88 files changed, 543 insertions(+), 62 deletions(-) delete mode 100644 .changeset/bump-patch-1766148726545.md delete mode 100644 .changeset/fast-ligers-unite.md delete mode 100644 .changeset/spicy-nails-design.md diff --git a/.changeset/bump-patch-1766148726545.md b/.changeset/bump-patch-1766148726545.md deleted file mode 100644 index e1eaa7980af..00000000000 --- a/.changeset/bump-patch-1766148726545.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Bump @rocket.chat/meteor version. diff --git a/.changeset/fast-ligers-unite.md b/.changeset/fast-ligers-unite.md deleted file mode 100644 index eacb88108a0..00000000000 --- a/.changeset/fast-ligers-unite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) diff --git a/.changeset/spicy-nails-design.md b/.changeset/spicy-nails-design.md deleted file mode 100644 index 23a5f82e7bb..00000000000 --- a/.changeset/spicy-nails-design.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@rocket.chat/meteor": patch -"@rocket.chat/core-services": patch -"@rocket.chat/ddp-streamer": patch -"@rocket.chat/presence": patch ---- - -Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. \ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml index de41a1b2372..128ce3e5464 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -12,4 +12,14 @@ plugins: - path: .yarn/plugins/@yarnpkg/plugin-engines.cjs spec: "https://raw.githubusercontent.com/devoto13/yarn-plugin-engines/main/bundles/%40yarnpkg/plugin-engines.js" +supportedArchitectures: + cpu: + - arm64 + - x64 + libc: + - glibc + - musl + os: + - linux + yarnPath: .yarn/releases/yarn-4.11.0.cjs diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 1c254db369b..df458e70638 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,52 @@ # @rocket.chat/meteor +## 7.13.2 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- ([#37876](https://github.com/RocketChat/Rocket.Chat/pull/37876) by [@dionisio-bot](https://github.com/dionisio-bot)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +- ([#37883](https://github.com/RocketChat/Rocket.Chat/pull/37883) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/presence@0.2.46 + - @rocket.chat/federation-matrix@0.0.8 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/omni-core-ee@0.0.11 + - @rocket.chat/omnichannel-services@0.3.43 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/license@1.1.6 + - @rocket.chat/media-calls@0.1.2 + - @rocket.chat/pdf-worker@0.3.25 + - @rocket.chat/api-client@0.2.46 + - @rocket.chat/apps@0.5.25 + - @rocket.chat/cron@0.1.46 + - @rocket.chat/freeswitch@1.2.33 + - @rocket.chat/fuselage-ui-kit@25.0.2 + - @rocket.chat/gazzodown@25.0.2 + - @rocket.chat/http-router@7.9.13 + - @rocket.chat/message-types@0.0.1 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/ui-avatar@21.0.2 + - @rocket.chat/ui-client@25.0.2 + - @rocket.chat/ui-contexts@25.0.2 + - @rocket.chat/web-ui-registration@25.0.2 + - @rocket.chat/models@1.8.2 + - @rocket.chat/server-cloud-communication@0.0.2 + - @rocket.chat/ui-theming@0.4.4 + - @rocket.chat/ui-video-conf@25.0.2 + - @rocket.chat/ui-voip@15.0.2 + - @rocket.chat/instance-status@0.1.46 + - @rocket.chat/omni-core@0.0.11 +
+ ## 7.13.1 ### Patch Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index e36f9af3d9b..43d018b9597 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "7.13.1" + "version": "7.13.2" } diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index c985ce81ffc..b907a4cc87e 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,19 @@ # rocketchat-services +## 2.0.37 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 2.0.36 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index f0e0f8a65df..0a52be1ba6b 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -1,7 +1,7 @@ { "name": "rocketchat-services", "private": true, - "version": "2.0.36", + "version": "2.0.37", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 7db46e7a7ee..ebc19df83d3 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/meteor", "description": "The Ultimate Open Source WebChat Platform", - "version": "7.13.1", + "version": "7.13.2", "private": true, "type": "commonjs", "author": { diff --git a/apps/uikit-playground/CHANGELOG.md b/apps/uikit-playground/CHANGELOG.md index f3cae6cc4e2..8c15e284131 100644 --- a/apps/uikit-playground/CHANGELOG.md +++ b/apps/uikit-playground/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/uikit-playground +## 0.7.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/fuselage-ui-kit@25.0.2 + - @rocket.chat/ui-avatar@21.0.2 + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 0.7.1 ### Patch Changes diff --git a/apps/uikit-playground/package.json b/apps/uikit-playground/package.json index 2101a2d3945..6c2416ad3d3 100644 --- a/apps/uikit-playground/package.json +++ b/apps/uikit-playground/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/uikit-playground", "private": true, - "version": "0.7.1", + "version": "0.7.2", "type": "module", "scripts": { "dev": "vite", diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index 7900354e8cc..d93d0abc445 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/account-service +## 0.4.46 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.4.45 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index e891bca09b5..f4c895ad74a 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/account-service", "private": true, - "version": "0.4.45", + "version": "0.4.46", "description": "Rocket.Chat Account service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index 4d4fd993cb0..0ca24321a70 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/authorization-service +## 0.4.46 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.4.45 ### Patch Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index 37bc85fe350..7d60850c08a 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/authorization-service", "private": true, - "version": "0.4.45", + "version": "0.4.46", "description": "Rocket.Chat Authorization service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index 638d056f050..43845e85f30 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,22 @@ # @rocket.chat/ddp-streamer +## 0.3.46 + +### Patch Changes + +- ([#37883](https://github.com/RocketChat/Rocket.Chat/pull/37883) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 + - @rocket.chat/instance-status@0.1.46 +
+ ## 0.3.45 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index b114e66eb1c..f499cdc892e 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/ddp-streamer", "private": true, - "version": "0.3.45", + "version": "0.3.46", "description": "Rocket.Chat DDP-Streamer service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index f59a0ab8929..6d18a41a3ff 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/omnichannel-transcript +## 0.4.46 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/omnichannel-services@0.3.43 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/pdf-worker@0.3.25 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.4.45 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index d03e5df9b89..3abc1b28b06 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/omnichannel-transcript", "private": true, - "version": "0.4.45", + "version": "0.4.46", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index 7d4b47b6f8e..421c648183c 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/presence-service +## 0.4.46 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/presence@0.2.46 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.4.45 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 066937e7b1f..7740636ce49 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/presence-service", "private": true, - "version": "0.4.45", + "version": "0.4.46", "description": "Rocket.Chat Presence service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index 685231f06c1..f3cc9915fe3 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/queue-worker +## 0.4.46 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/omnichannel-services@0.3.43 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.4.45 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index d55b7bbecc1..4824ff8be37 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/queue-worker", "private": true, - "version": "0.4.45", + "version": "0.4.46", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/apps/stream-hub-service/CHANGELOG.md b/ee/apps/stream-hub-service/CHANGELOG.md index 9b7c98486ae..61b5c836661 100644 --- a/ee/apps/stream-hub-service/CHANGELOG.md +++ b/ee/apps/stream-hub-service/CHANGELOG.md @@ -1,5 +1,18 @@ # @rocket.chat/stream-hub-service +## 0.4.46 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.4.45 ### Patch Changes diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index 2ced5d89062..469c33e0b16 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/stream-hub-service", "private": true, - "version": "0.4.45", + "version": "0.4.46", "description": "Rocket.Chat Stream Hub service", "scripts": { "build": "tsc -p tsconfig.json", diff --git a/ee/packages/federation-matrix/CHANGELOG.md b/ee/packages/federation-matrix/CHANGELOG.md index f513e87f1a1..9df060f79c2 100644 --- a/ee/packages/federation-matrix/CHANGELOG.md +++ b/ee/packages/federation-matrix/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/federation-matrix +## 0.0.8 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/network-broker@0.2.25 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/license@1.1.6 + - @rocket.chat/http-router@7.9.13 + - @rocket.chat/models@1.8.2 +
+ ## 0.0.7 ### Patch Changes diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index 17f9ece50d5..fa2964b2f32 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/federation-matrix", - "version": "0.0.7", + "version": "0.0.8", "private": true, "devDependencies": { "@babel/cli": "~7.28.3", diff --git a/ee/packages/license/CHANGELOG.md b/ee/packages/license/CHANGELOG.md index 93b25185855..cd098fff787 100644 --- a/ee/packages/license/CHANGELOG.md +++ b/ee/packages/license/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/license +## 1.1.6 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 +
+ ## 1.1.5 ### Patch Changes diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json index fcf0740ec18..2c242ee71c7 100644 --- a/ee/packages/license/package.json +++ b/ee/packages/license/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/license", - "version": "1.1.5", + "version": "1.1.6", "private": true, "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", diff --git a/ee/packages/media-calls/CHANGELOG.md b/ee/packages/media-calls/CHANGELOG.md index b20aa2ba310..0ddb9af6cf9 100644 --- a/ee/packages/media-calls/CHANGELOG.md +++ b/ee/packages/media-calls/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/media-calls +## 0.1.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.1.1 ### Patch Changes diff --git a/ee/packages/media-calls/package.json b/ee/packages/media-calls/package.json index c84720fbed7..e748714b0aa 100644 --- a/ee/packages/media-calls/package.json +++ b/ee/packages/media-calls/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/media-calls", - "version": "0.1.1", + "version": "0.1.2", "private": true, "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", diff --git a/ee/packages/network-broker/CHANGELOG.md b/ee/packages/network-broker/CHANGELOG.md index abb053d5985..532f4c59e8a 100644 --- a/ee/packages/network-broker/CHANGELOG.md +++ b/ee/packages/network-broker/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/network-broker +## 0.2.25 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 +
+ ## 0.2.24 ### Patch Changes diff --git a/ee/packages/network-broker/package.json b/ee/packages/network-broker/package.json index 01d328a1472..4c703bdf576 100644 --- a/ee/packages/network-broker/package.json +++ b/ee/packages/network-broker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/network-broker", - "version": "0.2.24", + "version": "0.2.25", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/ee/packages/omni-core-ee/CHANGELOG.md b/ee/packages/omni-core-ee/CHANGELOG.md index 4410d833e8d..a545c50aa44 100644 --- a/ee/packages/omni-core-ee/CHANGELOG.md +++ b/ee/packages/omni-core-ee/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omni-core-ee +## 0.0.11 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/models@1.8.2 + - @rocket.chat/omni-core@0.0.11 +
+ ## 0.0.10 ### Patch Changes diff --git a/ee/packages/omni-core-ee/package.json b/ee/packages/omni-core-ee/package.json index 0fd09a545e8..2faa092df50 100644 --- a/ee/packages/omni-core-ee/package.json +++ b/ee/packages/omni-core-ee/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omni-core-ee", - "version": "0.0.10", + "version": "0.0.11", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index 8484003c27e..1e11bd52a3d 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/omnichannel-services +## 0.3.43 + +### Patch Changes + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/pdf-worker@0.3.25 + - @rocket.chat/message-types@0.0.1 + - @rocket.chat/model-typings@1.9.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.3.42 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index 9af8fa0c444..87e1cf44218 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-services", - "version": "0.3.42", + "version": "0.3.43", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md index 2f367a30ee3..bad4e7c2196 100644 --- a/ee/packages/pdf-worker/CHANGELOG.md +++ b/ee/packages/pdf-worker/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/pdf-worker +## 0.3.25 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 +
+ ## 0.3.24 ### Patch Changes diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index b1034f79e64..9949a95c606 100644 --- a/ee/packages/pdf-worker/package.json +++ b/ee/packages/pdf-worker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/pdf-worker", - "version": "0.3.24", + "version": "0.3.25", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index e9c1c95a104..9eeb34e3f36 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,18 @@ # @rocket.chat/presence +## 0.2.46 + +### Patch Changes + +- ([#37883](https://github.com/RocketChat/Rocket.Chat/pull/37883) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +-
Updated dependencies [eef2b390a8e4664ad4b974e7ea579982245efce5]: + + - @rocket.chat/core-services@0.11.2 + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.2.45 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index b463711ee7c..6d0e2c41cd4 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence", - "version": "0.2.45", + "version": "0.2.46", "private": true, "devDependencies": { "@babel/core": "~7.28.5", diff --git a/package.json b/package.json index b71238b6026..5864c6d5b15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "7.13.1", + "version": "7.13.2", "description": "Rocket.Chat Monorepo", "main": "index.js", "private": true, diff --git a/packages/api-client/CHANGELOG.md b/packages/api-client/CHANGELOG.md index 270268c286a..fe284944447 100644 --- a/packages/api-client/CHANGELOG.md +++ b/packages/api-client/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/api-client +## 0.2.46 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 +
+ ## 0.2.45 ### Patch Changes diff --git a/packages/api-client/package.json b/packages/api-client/package.json index 7f8281c8d46..58bfc648b99 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/api-client", - "version": "0.2.45", + "version": "0.2.46", "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", diff --git a/packages/apps/CHANGELOG.md b/packages/apps/CHANGELOG.md index 6b1816c02a6..2d5e6582f0d 100644 --- a/packages/apps/CHANGELOG.md +++ b/packages/apps/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/apps +## 0.5.25 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 +
+ ## 0.5.24 ### Patch Changes diff --git a/packages/apps/package.json b/packages/apps/package.json index 9f7c51f4d3a..ca73eed3db8 100644 --- a/packages/apps/package.json +++ b/packages/apps/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps", - "version": "0.5.24", + "version": "0.5.25", "private": true, "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index 15887fb43ea..d5a45a7cb9b 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/core-services +## 0.11.2 + +### Patch Changes + +- ([#37883](https://github.com/RocketChat/Rocket.Chat/pull/37883) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures presence stays accurate by refreshing connections on heartbeats and removing stale sessions. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/http-router@7.9.13 + - @rocket.chat/models@1.8.2 +
+ ## 0.11.1 ### Patch Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 4f18f993dbd..bcfac69b1b4 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-services", - "version": "0.11.1", + "version": "0.11.2", "private": true, "devDependencies": { "@babel/core": "~7.28.5", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 1b58b157f8d..bfc1fe6c5a7 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,7 @@ # @rocket.chat/core-typings +## 7.13.2 + ## 7.13.1 ## 7.13.0 diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 22ef3eb8840..ab5afdc5672 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/package", "name": "@rocket.chat/core-typings", "private": true, - "version": "7.13.1", + "version": "7.13.2", "devDependencies": { "@rocket.chat/apps-engine": "workspace:^", "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index ad9b5f93582..63745b64f53 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/cron +## 0.1.46 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/models@1.8.2 +
+ ## 0.1.45 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index 62c0b02e4b7..987c58c56cd 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/cron", - "version": "0.1.45", + "version": "0.1.46", "private": true, "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", diff --git a/packages/ddp-client/CHANGELOG.md b/packages/ddp-client/CHANGELOG.md index 1161aa2302d..a1c70224e97 100644 --- a/packages/ddp-client/CHANGELOG.md +++ b/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/ddp-client +## 0.3.46 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/api-client@0.2.46 +
+ ## 0.3.45 ### Patch Changes diff --git a/packages/ddp-client/package.json b/packages/ddp-client/package.json index b61f36bd12f..986a9f45181 100644 --- a/packages/ddp-client/package.json +++ b/packages/ddp-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-client", - "version": "0.3.45", + "version": "0.3.46", "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", diff --git a/packages/freeswitch/CHANGELOG.md b/packages/freeswitch/CHANGELOG.md index c45bf23a741..4556260f202 100644 --- a/packages/freeswitch/CHANGELOG.md +++ b/packages/freeswitch/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/freeswitch +## 1.2.33 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 +
+ ## 1.2.32 ### Patch Changes diff --git a/packages/freeswitch/package.json b/packages/freeswitch/package.json index 7a349d9cecd..309cd3a8a0b 100644 --- a/packages/freeswitch/package.json +++ b/packages/freeswitch/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/freeswitch", - "version": "1.2.32", + "version": "1.2.33", "private": true, "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index 8df9c1d02ef..a3d33729683 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,18 @@ # Change Log +## 25.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/gazzodown@25.0.2 + - @rocket.chat/ui-avatar@21.0.2 + - @rocket.chat/ui-contexts@25.0.2 + - @rocket.chat/ui-video-conf@25.0.2 +
+ ## 25.0.1 ### Patch Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index 3644ba01365..d6e142bbdb6 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/fuselage-ui-kit", - "version": "25.0.1", + "version": "25.0.2", "private": true, "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index feb85342480..516a845797c 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/gazzodown +## 25.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/ui-client@25.0.2 + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 25.0.1 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index a1a7a50bb2d..71ed6ab0f64 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/gazzodown", - "version": "25.0.1", + "version": "25.0.2", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/http-router/CHANGELOG.md b/packages/http-router/CHANGELOG.md index 0ca1faa92dc..846c2dd2591 100644 --- a/packages/http-router/CHANGELOG.md +++ b/packages/http-router/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/http-router +## 7.9.13 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 +
+ ## 7.9.12 ### Patch Changes diff --git a/packages/http-router/package.json b/packages/http-router/package.json index 8cb311bec00..f329dfaf496 100644 --- a/packages/http-router/package.json +++ b/packages/http-router/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/http-router", - "version": "7.9.12", + "version": "7.9.13", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:~", diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index 5c09d14544b..5feb2322af6 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/instance-status +## 0.1.46 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/models@1.8.2 +
+ ## 0.1.45 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 69e25dbec0b..de62a6cedad 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/instance-status", - "version": "0.1.45", + "version": "0.1.46", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md index f06e5c7001b..d08af193e84 100644 --- a/packages/livechat/CHANGELOG.md +++ b/packages/livechat/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/livechat Change Log +## 1.23.17 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/gazzodown@25.0.2 +
+ ## 1.23.16 ### Patch Changes diff --git a/packages/livechat/package.json b/packages/livechat/package.json index c9f71a25f8e..6f5f547ad32 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/livechat", - "version": "1.23.16", + "version": "1.23.17", "files": [ "/build" ], diff --git a/packages/mock-providers/CHANGELOG.md b/packages/mock-providers/CHANGELOG.md index 8dc9fcfe536..4b863c9df3d 100644 --- a/packages/mock-providers/CHANGELOG.md +++ b/packages/mock-providers/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/mock-providers +## 0.4.6 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 0.4.5 ### Patch Changes diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json index 981c97c28ec..f17b8de892f 100644 --- a/packages/mock-providers/package.json +++ b/packages/mock-providers/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/mock-providers", - "version": "0.4.5", + "version": "0.4.6", "private": true, "dependencies": { "@rocket.chat/emitter": "~0.31.25", diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 5b3cc1decd9..e24bc7c0ba2 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/model-typings +## 1.9.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 +
+ ## 1.9.1 ### Patch Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 2429ef706b7..9e88d58d0be 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "1.9.1", + "version": "1.9.2", "private": true, "devDependencies": { "@types/node-rsa": "^1.1.4", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index d4b8418d0e2..e0831a30f08 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/models +## 1.8.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/model-typings@1.9.2 +
+ ## 1.8.1 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index 0e926e56ea5..c5b847f8b4b 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "1.8.1", + "version": "1.8.2", "private": true, "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", diff --git a/packages/omni-core/CHANGELOG.md b/packages/omni-core/CHANGELOG.md index a6562efd1ec..627273742ca 100644 --- a/packages/omni-core/CHANGELOG.md +++ b/packages/omni-core/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/omni-core +## 0.0.11 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/models@1.8.2 +
+ ## 0.0.10 ### Patch Changes diff --git a/packages/omni-core/package.json b/packages/omni-core/package.json index 1d1f3d10ac0..2caecc13ac3 100644 --- a/packages/omni-core/package.json +++ b/packages/omni-core/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omni-core", - "version": "0.0.10", + "version": "0.0.11", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 6eb97f0c967..0322800a650 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/rest-typings +## 7.13.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 +
+ ## 7.13.1 ### Patch Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 3e7ec4c407d..d4d04b60438 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "7.13.1", + "version": "7.13.2", "devDependencies": { "@rocket.chat/apps-engine": "workspace:^", "@rocket.chat/eslint-config": "workspace:~", diff --git a/packages/ui-avatar/CHANGELOG.md b/packages/ui-avatar/CHANGELOG.md index fa39336c333..d28288cbf3e 100644 --- a/packages/ui-avatar/CHANGELOG.md +++ b/packages/ui-avatar/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/ui-avatar +## 21.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 21.0.1 ### Patch Changes diff --git a/packages/ui-avatar/package.json b/packages/ui-avatar/package.json index a005bd0a751..eda3228dbbe 100644 --- a/packages/ui-avatar/package.json +++ b/packages/ui-avatar/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-avatar", - "version": "21.0.1", + "version": "21.0.2", "private": true, "devDependencies": { "@babel/core": "~7.28.5", diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index 3226e37d3ec..f1b57a2711c 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/ui-client +## 25.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-avatar@21.0.2 + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 25.0.1 ### Patch Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 7c30cb21452..6d0d4e79b42 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-client", - "version": "25.0.1", + "version": "25.0.2", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index 8782687756d..21c193f3870 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/ui-contexts +## 25.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@7.13.2 + - @rocket.chat/rest-typings@7.13.2 + - @rocket.chat/ddp-client@0.3.46 +
+ ## 25.0.1 ### Patch Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index 1a527491d5d..5903e434c54 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-contexts", - "version": "25.0.1", + "version": "25.0.2", "private": true, "devDependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index 1ffcca6e63c..f5a617c18dc 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/ui-video-conf +## 25.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-avatar@21.0.2 + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 25.0.1 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 2c01a2f3743..fa5b1204d80 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "25.0.1", + "version": "25.0.2", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-voip/CHANGELOG.md b/packages/ui-voip/CHANGELOG.md index 22b87bb243e..17ba652ce46 100644 --- a/packages/ui-voip/CHANGELOG.md +++ b/packages/ui-voip/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/ui-voip +## 15.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-avatar@21.0.2 + - @rocket.chat/ui-client@25.0.2 + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 15.0.1 ### Patch Changes diff --git a/packages/ui-voip/package.json b/packages/ui-voip/package.json index 357f3492b5b..bb8e640b2ae 100644 --- a/packages/ui-voip/package.json +++ b/packages/ui-voip/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-voip", - "version": "15.0.1", + "version": "15.0.2", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index 62171375528..6fce57618bc 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/web-ui-registration +## 25.0.2 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@25.0.2 +
+ ## 25.0.1 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 814a2b8dc98..40edec1d373 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/web-ui-registration", - "version": "25.0.1", + "version": "25.0.2", "private": true, "homepage": "https://rocket.chat", "main": "./dist/index.js", @@ -63,7 +63,7 @@ "peerDependencies": { "@rocket.chat/layout": "*", "@rocket.chat/tools": "0.2.3", - "@rocket.chat/ui-contexts": "25.0.1", + "@rocket.chat/ui-contexts": "25.0.2", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*",