diff --git a/CHANGELOG.md b/CHANGELOG.md index 33c1222b7f0..d06ea0d7a52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Docs: https://docs.openclaw.ai ### Fixes +- Matrix/approvals: release in-flight reaction bindings when the channel approval handler stops mid-delivery, preventing stale approval targets after restart. Fixes #82485. (#82482) Thanks @Feelw00. - TUI: update the displayed model in real time when an auto-fallback resolution swaps in a different model mid-turn, so the status line reflects the actual model handling the run. Fixes #82296. Thanks @giodl73-repo. - Gateway/sessions: estimate context usage from local/OpenAI-compatible transcripts when provider usage telemetry is missing, so status no longer shows empty usage for real local-model sessions. Fixes #73990. (#82317) Thanks @giodl73-repo. - Agents/sessions: preserve fresh post-compaction token snapshots across stale usage updates, preventing repeated auto-compaction after every message. Fixes #82576. (#82578) Thanks @njuboy11. diff --git a/extensions/matrix/src/matrix/config-update.ts b/extensions/matrix/src/matrix/config-update.ts index a639196bfd1..69eed293c04 100644 --- a/extensions/matrix/src/matrix/config-update.ts +++ b/extensions/matrix/src/matrix/config-update.ts @@ -102,9 +102,11 @@ function cloneMatrixRoomMap(rooms: MatrixConfig["groups"]): MatrixConfig["groups if (!rooms) { return rooms; } - return Object.fromEntries( - Object.entries(rooms).map(([roomId, roomCfg]) => [roomId, roomCfg ? { ...roomCfg } : roomCfg]), - ); + const clonedRoomEntries: Array<[string, NonNullable[string]]> = []; + for (const [roomId, roomCfg] of Object.entries(rooms)) { + clonedRoomEntries.push([roomId, roomCfg ? { ...roomCfg } : roomCfg]); + } + return Object.fromEntries(clonedRoomEntries); } function applyNullableArrayField(