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— TauriCmd/Ctrl+Shift+Oshortcut 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 withclaude_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.