openclaw/openclaw · Weekly · Sep 21, 2026 - Sep 27, 2026

OpenClaw Weekly Highlights: Performance, Test Parallelization, UI Fixes, and TypeSafe Plugin — 21–27 Sep 2026

Commits summarized
3,728
Period
Sep 21 - Sep 27, 2026
Published
Sep 28, 2026

OpenClaw Weekly Development Update — 21–27 September 2026

For developers integrating with OpenClaw, contributing to the repo, or deploying the Gateway: This edition covers 200 highlighted commits from an active week (3,728 total commits). It focuses on meaningful performance improvements, bug fixes, test reliability work, and new UI capabilities — not every change.

🚀 Performance & Latency

Reduced Gateway restart delays with multiple cloud sessions

57650789 — Workers now restart faster when multiple cloud sessions are active, cutting the serialization overhead that accumulated during reconnection.

History-wide scans eliminated during session refreshes

818ad65a — Session refresh no longer projects active descendants by scanning the full history. Active-descendant lookups now operate on current run keys only, reducing per-refresh overhead.

Faster pending-media session cleanup

e9aeaef9 — Cron-driven cleanup of pending media sessions now completes more quickly by avoiding redundant iteration.

Selected dirty flow records only

0e089a89 — Task flow refresh now only processes records flagged as dirty instead of re-reading every flow row. Larger task graphs see the biggest improvement.

Reduced Code Mode source preparation overhead

4912a41d — Code Mode source prep now avoids unnecessary copy and formatting work before inference begins.

Tool list and show reads moved off the main thread

680839f7 — Transcript tool-list and show reads are now dispatched to the SQLite worker, freeing the main thread for UI and request handling.

Session-list filtering overhead reduced

4172e9b2 — Gateway session list filtering now passes only system classification fields instead of shallow-copying every projected row.

Main-thread I/O guidance

7d14778d — A new documentation directive clarifies that database access belongs in worker threads: readers use the read-only worker scope, writers the SQLite worker broker. The Gateway main thread should only await results.

🧪 Test Reliability & CI

Gateway server tests now run in parallel

01050a71 — Gateway server test files are now parallelized by CI. Fixtures were isolated per-file, port claims retained through startup, and maintenance drained before assertions — enabling safe parallel execution without flakiness.

Foundry token-cache test: 130 CLI spawns → mocks

37833f67 — The cache-eviction boundary test formerly spent >60s booting cold runtimes and launching synthetic Azure CLI subprocesses. Cache pressure is now seeded through existing mocked CLI boundaries. Same assertions, same coverage, 65.061 s → 0.232 s.

Fixture sharing and deduplication

  • 9bfc8775 — Multi-file bootstrap budget fixtures shared across test suites.
  • 333994aa — Tool-stream event fixtures reused instead of rebuilt per test.
  • ceffd8e6 — Bootstrap budget fixtures simplified; cache simulation removed.
  • c729f693 — Doctor test suites reuse the real migration runtime where possible.

Shared state reader lifecycle fixes

  • 93d69d5a — Shared read-pool singletons retired between test files to prevent cleanup-callback leaks.
  • 4c63f004 — Same pattern applied to SQLite lifecycle owners.
  • 97a9339c — Duplicate shared-reader retirement call removed.

Vitest cache reuse restored

a4e3a5d5 — Cache fingerprinting was repaired so Vitest correctly reuses cached test transforms across runs, cutting cold-start overhead.

Other CI improvements

  • e08643dd — Control UI E2E rebalanced and bundle shared.
  • 5941d999 — Plugin rows reserved in compact Node admission budget.
  • 38525a21 — Shared MSYS temp mount preserved across checkout fixtures.
  • f5aeb9e3 — JavaScript-only Code Mode fixture calls emitted in QA.

🐛 Bug Fixes

Gateway & Connectivity

  • dc086903 — Cloud sessions now recover properly when workers reconnect after updates.
  • 57650789 — Gateway restart delay reduced with multiple cloud sessions (see Performance above).
  • 68def415 — macOS login keychain errors scoped to app launch environment only; no more false "no login keychain" claims.
  • 647e6236 — Tauri Cmd/Ctrl+Shift+O shortcut no longer registered system-wide, so other foreground apps receive their own New Session chord.

UI & Layout

  • 2969f4be — Layout stalls reduced during chat and sidebar interactions.
  • c2c55199 — Streaming Markdown DOM now updates in place instead of replacing growing subtrees, preserving reader controls and highlights while chat replies stream.
  • 03b63383 — Expanded Swarm results stay open during refresh cycles.
  • d6881180 — Transcript bubble corner radii now match code block corners.
  • 83ad51c3 — Stale main branch no longer used when starting a worktree from the UI.

Search & Providers

  • ddc25180 — Native search no longer uses credentials from unrelated providers. Managed search preserved when its native plugin is disabled. Provider HTTP status retained in safe error results.
  • 1ed0b7b1 — Provider selection in coding harnesses is now honored. Session search controls in MCP also respected; execution authority preserved when search is disabled.
  • b58603ee — Direct Anthropic OAuth requests no longer fail with claude_code_version_too_old. A minimum client version floor (2.1.278) is maintained, preferring a newer installed stable CLI.

State & Data Integrity

  • 746f3067 — Admission preserved when a retired inode is reused (new worker-created database keeps its captured admission). Obsolete records revoked without reviving retired callers.
  • 7a245b5f — Cancelled snapshot demand withdrawn before admission in SQLite.
  • dd5a7a87 — Shallow partial source checkouts now supported by the update mechanism.

Transcript & Session

  • 7b0d8fb0 — Transcript auto-start now exposes a settled completion handle, fixing intermittent CI failures when SQLite-backed startup exceeded polling deadlines.
  • 8586e929 — Catalog titles resolved after pagination instead of eagerly, reducing off-page transcript reads.
  • 47254939 — Guarded file operations and stream model verification simplified.

Application Settings

  • 052d26ee — Labs settings now apply without restarting the Gateway. Custom plugin UI and desktop policy changes take effect through the existing config reload lifecycle, including viewer/ticket revocation and connected UI refresh.

✨ New Features

Session links in member reports

42bc1afd — Each member report now links to owned sessions, making it easier to navigate from a report entry directly to the relevant session history.

Movable System busyness panel

8bae2c7a — The System busyness panel can now be dragged and its position is remembered across sessions. Panel controls load lazily only when opened.

Sidebar Archive replaces session menu button

f3050440 — The sidebar session menu button is replaced with a dedicated Archive control. All full actions remain available through row context menus and keyboard shortcuts, with Undo support and protected-session policy.

Paired-node workspaces

20db76a7 — Attachments, Memory, and Skills now use paired-node workspaces, improving how related data is structured and retrieved.

TypeSafe local decision model support

5acfb83d — TypeSafe is now available as an official external plugin (@openclaw/typesafe) supporting local System One decision models. Published to npm and ClawHub with protected credentials and decision-model configuration.

Model refresh indicators

4130e751 — Model refresh indicators are now compact and accurate. Focus stays in the picker when refresh completes, and reduced-motion transitions are properly disabled.

🔧 Refactoring & Developer Experience

Deterministic Feishu registration tests

a667c541 — Cancellation test replaced a 200 ms real-time wait with fetch injection and a fake clock. Same coverage, deterministic feedback: cancellation case went from 206 ms to 2 ms.

Reduced serialized Swift test execution

37bbf5a1 — Swift tests now synchronize readiness and completion, reducing wall-clock time from serialized waits.

Locale retry tests cleaned up

e270d802 — Polling and private state removed from locale retry tests, making them faster and more readable.

Gateway lifecycle notice queue context preserved

7974d9cf — Lifecycle notice queue context is retained across restart cleanup and sentinel snapshots, fixing an unrelated-root preservation bug.

📚 Documentation & Policy

  • c43b7990 — Compact execution discipline documented for developers.
  • 894fb140 — Test policy updated: unresolved test failures are best-effort, not blocking.
  • 7d14778d — Database access guidance (see Performance section).

🤖 Automated & Chore

  • 395690e8 / 20eebbd5 — Control UI locales refreshed by automation.

This update highlights 200 commits from a week totaling 3,728 commits. Full changelog available in the repository.

Repository updates

Follow future updates

Get generated openclaw/openclaw development summaries without adding another panel to your dashboard.

Sign in to choose an email address and delivery schedule.

Sign in to subscribe