Commit Graph

67530 Commits

Author SHA1 Message Date
Peter Steinberger
32c84b0f41 feat(skills): capture reusable techniques from successful work (#105674)
* feat(skills): capture reusable experience safely

* feat(skills): review completed work for reusable learning

* docs(skills): explain self-learning

* docs: clarify self-learning runtime scope

* fix(skills): harden autonomous workshop reviews

* test(skills): align review prompt fixture
2026-07-13 00:22:06 -07:00
Peter Steinberger
b2b87e956e fix(macos): center dashboard traffic lights with the hosted titlebar buttons (#106099)
* fix(macos): center dashboard traffic lights with the hosted titlebar buttons

Give the dashboard window an empty unified toolbar so its titlebar grows
to 52pt, vertically centering the macOS traffic lights against the row of
web-hosted titlebar buttons (sidebar toggle, back/forward) instead of
hugging the top edge. Bump the injected --openclaw-native-titlebar-height
to match, and nudge the hosted controls' left offset from 78px to 92px so
the traffic-light cluster and the first web button read as separate groups.

The toolbar exists only to size the titlebar, so View > Hide Toolbar (and
the corresponding shortcut) are refused; hiding it would collapse the
titlebar while the web inset stays pinned at 52pt, resurrecting the
misalignment. Smoke tests cover toolbar presence/style, hide refusal, and
the exact injected height.

* chore(i18n): resync native inventory line metadata
2026-07-13 00:17:13 -07:00
Peter Steinberger
b5273e78d6 fix(ui): restore app-sidebar content with IconName type import
The previous commit accidentally truncated app-sidebar.ts to an empty
file while fixing the missing IconName import from #105850. This
restores the full component with the corrected icons import.
2026-07-13 00:15:43 -07:00
Peter Steinberger
08843c74de fix(ui): restore IconName type import in app-sidebar
#105850 added AGENT_MENU_LINKS typed with IconName without importing
the type, breaking check-prod-types/check-test-types on main.
2026-07-13 00:14:34 -07:00
Peter Steinberger
b57e7b74e6 feat: add native Skills management parity (#105814)
* feat(apps): add native skills management parity

* chore(i18n): refresh native skills inventory

* style(apps): apply canonical Swift formatting

* style(ios): wrap skills status message

* chore(i18n): refresh native skill locales

* refactor(apps): trim native skills review surface

* chore(i18n): regenerate native app resources

* chore: keep release changelog owner-only

* fix(ios): remove dead gateway and watch wrappers
2026-07-13 00:11:11 -07:00
Peter Steinberger
78c190814f fix(ci): dedupe read-only state allowlist (#106132) 2026-07-13 00:09:55 -07:00
Peter Steinberger
3c30634de4 fix(ui): order model-dependent chat settings (#106095)
* fix(ui): order model-dependent chat settings

* fix(ui): serialize picker model transitions

* chore: remove release-owned changelog edit
2026-07-13 00:08:15 -07:00
Peter Steinberger
00e8ca6676 fix(ci): dedupe read-only state DB entry in kysely raw-sqlite allowlist
Three concurrent unbreak commits (#106124, #106126, a4467f1971) each
added src/state/openclaw-state-db-readonly.ts, so the guard now dies on
its own duplicate-path assertion before checking anything. Keep the
dedicated read-only shared-state group entry.
2026-07-13 00:06:27 -07:00
Peter Steinberger
6b506e9070 improve(gateway): reduce context-cache startup delay (#106117)
* perf(gateway): defer context cache prewarm

* refactor(gateway): keep prewarm internals private
2026-07-13 00:06:18 -07:00
Peter Steinberger
cb1b5779ea feat(ui): docs, help, Discord, and changelog links in the agent chip menu (#105850)
* feat(ui): docs, help, Discord, and changelog links in the agent chip menu

* chore(i18n): normalize locale bundle metadata after rebase

* refactor(ui): move the agent menu links into the nav-menus module for the LOC ratchet

* Revert "refactor(ui): move the agent menu links into the nav-menus module for the LOC ratchet"

This reverts commit 0e4d72f4c6.
2026-07-13 00:05:42 -07:00
Ben Badejo
2725742cad fix(memory): respect QMD timeout for memory_search (#95757)
* fix(memory): scope qmd search deadline

Preserve the phase-scoped QMD timeout semantics on current main.

Co-authored-by: Peter Steinberger <58493+steipete@users.noreply.github.com>

* docs: refresh generated docs map

* test(memory): reconcile manager mock with current main

* test(memory): isolate deadline mock import

* style(memory): format search test mocks

* test(memory): decouple mock from deadline symbol

* chore(memory): refresh reviewed pull request head

---------

Co-authored-by: Benjamin Badejo <ben@benbadejo.com>
Co-authored-by: Peter Steinberger <58493+steipete@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-13 00:05:13 -07:00
Peter Steinberger
d614920c3e fix(ci): allow read-only state database boundary (#106126)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-12 23:59:39 -07:00
Peter Steinberger
a4467f1971 ci: allowlist read-only state DB opener in kysely guardrails 2026-07-12 23:57:56 -07:00
Peter Steinberger
ad1b4d9731 fix(ci): classify read-only shared state SQLite (#106124) 2026-07-12 23:57:30 -07:00
Jason (Json)
4e1224ddbe fix(agents): follow through on promised asynchronous work (#105958)
* fix(agents): close promised asynchronous work loops

* fix(agents): close promised asynchronous work loops

* refactor(agents): keep promised work policy focused

* refactor(agents): preserve prompt module documentation

* style(agents): keep prompt renderer within LOC ratchet

* fix(agents): close promised asynchronous work loops

* fix(agents): close promised asynchronous work loops
2026-07-13 00:56:04 -06:00
Peter Steinberger
f1076c23d4 fix(ci): isolate macOS node restart notifications 2026-07-13 02:54:10 -04:00
Peter Steinberger
0cdb13abfc docs(gateway): dedicated 1Password integration page (#106109) 2026-07-12 23:52:33 -07:00
Jason (Json)
7d9fbb1db8 docs(coding-agent): secure worktree preparation (#106121) 2026-07-13 00:51:49 -06:00
Peter Steinberger
4cbbb86d5e refactor(zalouser): share offset-preserving text chunk ranges (#105842)
* refactor(zalouser): share text chunk ranges

* chore(plugin-sdk): refresh combined API baseline
2026-07-12 23:46:16 -07:00
Ben Badejo
be7241b656 fix: deliver completed replies when post-turn compaction fails (#105156)
* fix(agents): preserve final replies across compaction failures

* test(agents): normalize nullable pending final

* chore(deadcode): drop used outbound payload export baseline

* refactor(agents): clarify pending final compaction delivery guard

* fix(agents): preserve media in pending final recovery

* fix(agents): require persisted final marker before compaction

* fix: keep pending final marker result internal

* test: update plugin SDK surface budget

---------

Co-authored-by: Benjamin Badejo <ben@benbadejo.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 23:46:04 -07:00
Jason (Json)
9c94864746 docs(coding-agent): require fresh project worktrees (#105993)
* improve(agents): require fresh canonical worktrees

* fix(agents): scope fresh worktrees to project coding

* chore(agents): preserve prompt LOC baseline

* fix(skills): exempt scratch Codex scaffolds

* docs: refresh agent template map

* fix(agents): scope worktree policy to prepared workers

* fix(skills): require launcher-prepared worktrees

* fix(skills): sandbox untrusted contributor refs
2026-07-13 00:39:56 -06:00
Peter Steinberger
adf6b08ab4 refactor: consolidate duration parsing and formatting (#105988)
* refactor: consolidate duration handling

* docs: leave release notes to release workflow

* fix: preserve build timing precision

* ci: align plugin sdk surface budgets
2026-07-12 23:38:22 -07:00
Peter Steinberger
8a1201aa7b fix(docs-i18n): restore nested postprocess masks 2026-07-13 02:37:54 -04:00
Vincent Koc
bfa2eff32a fix(ci): refresh plugin SDK API baselines (#106108)
* fix(ci): refresh plugin SDK API baselines

* fix(ci): refresh plugin SDK API baselines

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 23:37:29 -07:00
Vincent Koc
4ea758dcf9 fix(sqlite): keep plugin index reads read-only (#106103) 2026-07-13 14:37:18 +08:00
Peter Steinberger
24ad2484e4 refactor(gateway): split websocket message handler (#106030)
* refactor(gateway): split websocket message handler

* chore(gateway): refresh dead export baseline

* fix(gateway): satisfy websocket handler checks

* fix(gateway): keep transcript read target internal

* fix(gateway): refresh plugin surface budget
2026-07-12 23:36:32 -07:00
Colin Johnson
6242842722 fix(ios): focus missing gateway credentials (#98189)
* fix(ios): focus missing gateway credentials

Co-authored-by: Colin <colin@solvely.net>

* test(macos): let main actor polling suspend

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 23:36:29 -07:00
Peter Steinberger
82d53fd91d fix(ci): stabilize CLI startup memory gate 2026-07-13 02:31:44 -04:00
Peter Steinberger
71295851d7 docs: refresh config baseline 2026-07-12 23:29:02 -07:00
Peter Steinberger
ab8cbfd73c fix(ui): allow manual folders on exec-only nodes (#106012)
* fix(ui): allow manual folders on exec-only nodes

* test(ui): type exec-node request params

* style(ui): format exec-node request assertion
2026-07-12 23:23:06 -07:00
Peter Steinberger
404651d9e8 docs: add HealthKit glossary terms 2026-07-12 23:15:20 -07:00
Peter Steinberger
8a375c4500 docs: document HealthKit summaries 2026-07-12 23:15:19 -07:00
Jason (Json)
3375e30d9c chore(ci): remove TypeScript LOC ratchet (#106096)
Remove the hard 500-line TypeScript LOC ratchet from CI and local check planning, along with its package commands, implementation, baseline, and dedicated tests. Keep the remaining pull-request temp-creation report on its own pr-base fetch.\n\nVerification: 99 focused tooling tests; actionlint; zizmor; workflow guards; exact-head autoreview.
2026-07-13 00:15:00 -06:00
Peter Steinberger
16fa19cd72 improve(control-ui): compress and cache bundled assets (#105890)
* perf(control-ui): compress bundled assets

* chore(control-ui): remove release-owned changelog edit

* fix(control-ui): release assets before compression

* refactor(control-ui): split static response helpers

* perf(control-ui): precompress bundled assets

* refactor(control-ui): keep encoding internals private

* chore(control-ui): refresh LOC baseline
2026-07-12 23:13:04 -07:00
NIO
70b3467484 fix(media): bound hung remote downloads in media store (#104624)
* fix(media): bound remote download lifecycle

Co-authored-by: hugenshen <hu.genshen@xydigit.com>

* fix(media): keep download test seam internal

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 23:12:03 -07:00
Peter Steinberger
fcb45b4400 feat(ui): render streaming chat markdown live instead of plain text (#106062)
Streaming assistant replies in the Control UI now render markdown live: the in-flight tail is repaired with remend (zero-dep, Apache-2.0, extracted from Vercel's Streamdown) before the existing markdown-it + DOMPurify pipeline, and open code fences stream as live-highlighted code blocks. Deletes the plain-text streaming tail path (toStreamingPlainTextHtml) and extracts an uncached render core so tail deltas stop churning the markdown LRU cache. Closes #106053
2026-07-12 23:11:45 -07:00
Peter Steinberger
0633afe6a5 fix(config): reject schema-only keys (#106031)
* fix(config): reject schema-only keys

* chore(config): refresh plugin SDK baseline

* test(config): remove stale remote enabled fixtures
2026-07-12 23:10:12 -07:00
Peter Steinberger
6410e33cb0 refactor(ci): restore LOC ratchet headroom (#106063)
* refactor(ci): restore TypeScript LOC ratchet

* fix(ci): keep source reply item type internal
2026-07-12 23:09:25 -07:00
Peter Steinberger
9cdf166d2e refactor(mattermost): trim monitor gating facade (#106021)
* refactor(mattermost): trim monitor gating facade

* chore(ci): shrink Mattermost LOC baseline

* chore(ci): refresh deadcode export baseline
2026-07-12 23:09:15 -07:00
Paul Campbell
008f04a656 feat(mxc): add Windows MXC sandbox backend (#97086)
* feat(mxc): add Windows MXC sandbox backend

Add the official MXC sandbox plugin package with Windows ProcessContainer execution, plugin-owned MXC SDK dependency packaging, host-backed filesystem bridge support, and configured MXC policy file loading via mxcPolicyPaths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(mxc): preserve Windows binary override paths

* fix: remove stray sandbox barrel export

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 9ea19539-b8ca-44fb-93bd-b8496e3deb2c

* fix(mxc): address sandbox review feedback

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(mxc): satisfy test type checks

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(mxc): clarify protected skill enforcement

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* test(mxc): align fail-closed expectations

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(mxc): satisfy extension lint

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(plugin-sdk): narrow fs-safe remove surface

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(mxc): repair rebased CI failures

* fix(scripts): declare shrinkwrap override normalizer

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Gio Della-Libera <235387111+giodl73-repo@users.noreply.github.com>
Co-authored-by: Dallin Romney <dallinromney@gmail.com>
2026-07-12 23:07:25 -07:00
Peter Steinberger
1cbb380f02 fix: resolve agent identity workspace (#106087) 2026-07-12 23:06:53 -07:00
Peter Steinberger
aa04722c5c fix(ci): make TypeScript LOC growth reviewable (#105952) 2026-07-12 23:06:30 -07:00
Peter Steinberger
03d4b05593 style(ui): format tool card tests 2026-07-13 02:05:04 -04:00
Peter Steinberger
ebe69fd238 fix(ci): stabilize dead-export ratchet (#105945)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-12 23:03:53 -07:00
Peter Steinberger
a5883c33d1 refactor: use semver package for version ordering (#105944)
* refactor: use semver package for version ordering

* refactor: centralize semver validation

* chore: keep release notes in PR body

* refactor: update semver LOC ratchet
2026-07-12 23:02:25 -07:00
Vincent Koc
2454511480 refactor(sms): consolidate webhook test hooks (#106072) 2026-07-13 14:02:10 +08:00
Peter Steinberger
bebcf52d23 ci: isolate Control UI tool card tests 2026-07-13 02:00:58 -04:00
Vincent Koc
f33ab243cf fix(sqlite): reject runtimes vulnerable to WAL corruption (#106065)
* fix(sqlite): require WAL-reset-safe Node runtime

* docs(sqlite): document safe Node runtime floor

* fix(sqlite): defer runtime library validation until use

* fix(ci): align startup memory with Node 24.15
2026-07-13 13:59:00 +08:00
Peter Steinberger
4349687b9d refactor(extensions): burn down Discord and Slack dead exports (#106017)
* refactor(discord): trim dead internal exports

* refactor(slack): trim dead internal exports

* test(discord): cover inherited streaming migration

* chore(tooling): ratchet reduced extension LOC

* refactor(discord): remove stale approval helper import

* chore(deadcode): remove reintroduced transcript baseline
2026-07-12 22:58:22 -07:00
NIO
ce990a3ad9 fix(googlechat): bound webhook cert fetch during token verification (#102924)
* fix(googlechat): bound webhook cert fetch during token verification

* refactor(googlechat): consolidate cert timeout proof

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 22:56:49 -07:00