Peter Steinberger
227533c813
fix(deadcode): track maturity renderer exports ( #106225 )
2026-07-13 02:13:02 -07:00
Peter Steinberger
bafabba0df
fix(gateway): preserve Control UI turns across restarts ( #106151 )
...
* fix(gateway): preserve Control UI turns across restart
* perf(sessions): index restart recovery state
* fix(sessions): avoid replaying pre-admitted turns
* fix(sessions): index per-entry recovery status
* fix(sessions): guard restart failure notices
* fix(sessions): preserve terminal claims across admissions
* fix(sessions): retry failed recovery notices
* fix(sessions): harden restart retry ownership
* fix(gateway): tighten restart recovery typing
* fix(sessions): close restart recovery races
* refactor(sessions): split restart recovery ownership
* chore(sessions): clean restart recovery lint
* chore: drop release-owned changelog entry
* fix(gateway): satisfy restart recovery guards
* test(gateway): cover Control UI durable admission
2026-07-13 02:08:56 -07:00
Peter Steinberger
48e212a19a
refactor(agents): trim embedded runner exports ( #105855 )
...
* refactor(agents): trim embedded runner exports
* chore(deadcode): refresh export baseline
2026-07-13 02:07:28 -07:00
Peter Steinberger
22daf8f234
fix(pr): paginate changed file metadata ( #106217 )
2026-07-13 02:02:47 -07:00
Peter Steinberger
1136757174
refactor: consolidate bounded concurrency on p-limit and p-map ( #106002 )
...
* refactor: adopt p-limit and p-map for bounded concurrency
* chore: normalize lockfile ordering
* fix: preserve memory host concurrency export
* refactor: keep media apply within size budget
* fix: drain memory concurrency before failure
* fix: satisfy memory concurrency guards
* chore: scope memory host dead-code checks
* chore: lower concurrency LOC baselines
* fix: preserve concurrency API surfaces
* chore: reconcile concurrency LOC baseline
* test: keep memory concurrency gate portable
* style: simplify concurrency drain
* ci: refresh deadcode export baseline
2026-07-13 01:53:28 -07:00
Peter Steinberger
83bf0379c9
refactor(channels): share plugin contract scaffolds ( #105838 )
...
* refactor(channels): share plugin contract scaffolds
* fix: preserve channel config hint metadata
* chore: refresh Plugin SDK API baseline
* ci: refresh plugin SDK surface budget
* fix(ci): allow read-only state database boundary
* fix(ci): dedupe read-only state database boundary
2026-07-13 01:51:32 -07:00
Peter Steinberger
39cda9e548
refactor(mattermost): trim private runtime facade ( #106114 )
...
* refactor(mattermost): trim private runtime facade
* refactor(mattermost): remove stale runtime note
* fix(mattermost): preserve legacy history exports
* chore(deadcode): refresh export baseline
2026-07-13 01:49:21 -07:00
Peter Steinberger
61a9b49cea
refactor(telegram): remove dead private exports ( #106175 )
...
* refactor(extensions): trim channel-private exports
* chore(deadcode): refresh Telegram export baseline
* fix(telegram): drop unused media import
* refactor(telegram): drop dead media re-export
* style(telegram): format media runtime imports
2026-07-13 01:46:24 -07:00
Peter Steinberger
c2da10585c
refactor(plugin-sdk): prune eligible deprecated exports ( #106010 )
...
* refactor(plugin-sdk): remove unshipped compatibility exports
* refactor(zalo): use typed outbound delivery results
* chore(plugin-sdk): ratchet deprecated surface budgets
* chore(changelog): defer release note to release automation
* fix(zalo): reject failed message adapter sends
* refactor(zalo): share typed send boundary
* chore(plugin-sdk): account for main deprecation drift
2026-07-13 01:39:38 -07:00
Peter Steinberger
b1ce84b079
ci: reduce Blacksmith registrations for pull requests ( #106146 )
2026-07-13 01:32:25 -07:00
Peter Steinberger
cd36a175e6
fix(ci): register experience review live opt-in ( #106157 )
2026-07-13 01:31:01 -07:00
Peter Steinberger
98e3f729bc
refactor: remove dead plugin loader exports ( #105937 )
...
* refactor(plugins): trim activation and contract exports
* test(plugins): restore fixture cleanup
* refactor(plugins): trim install and loader exports
* test(plugins): fully reset loader caches
* refactor(plugins): trim metadata and catalog exports
* test(plugins): preserve catalog trust coverage
* refactor(plugins): trim provider and plugin exports
* refactor(plugins): trim runtime and tool exports
* test(plugins): update dead-export consumers
* test(plugins): remove empty dead-export suites
* refactor(plugins): align exports with split registry
* refactor(plugins): trim drifted loader exports
* style(plugins): format test fixtures
* refactor(scripts): use supported plugin APIs
* refactor(plugins): finish dead export cleanup
* chore(deadcode): refresh export baseline
* test(cli): mock production memory state
* chore(deadcode): sync latest export baseline
* fix(tests): keep plugin fixtures inside core
* chore(deadcode): refresh rebased export baseline
* chore(deadcode): sync current ratchets
* fix(plugins): retain reserved slot invariant
* fix(plugins): preserve dead-export invariants
* test(plugins): use neutral catalog query fixture
* test(plugins): satisfy catalog lint
* test(plugins): preserve integrity drift coverage
* fix(ci): register skill experience live proof
2026-07-13 01:29:33 -07:00
Peter Steinberger
b9ab918354
feat(ui): surface still-running background tasks after the chat turn settles ( #106115 )
...
Control UI chat now keeps still-running background tasks visible after the agent turn settles: a status row above the composer shows the claw glyph parked nose-down (static, opacity breath only), a live elapsed time with tabular digits so the row never shifts, and a "1 running task"/"N running tasks" link that opens the background-tasks rail. The row hides while the agent is working, while disconnected, and once the last task finishes. Reuses the pane's existing tasks.list snapshot and live task events — no new polling or RPC. Includes a mock-dev-harness running-task fixture and generated locale translations for the two new strings.
Closes #106107
Evidence: focused suites green on Blacksmith Testbox (chat-background-tasks 16 tests, chat-view 185 tests); live mock-gateway verification with screenshots on the PR; autoreview (gpt-5.6-sol, xhigh) clean after fixing its two findings (aria-hidden ticking timer, disconnected suppression).
2026-07-13 01:25:56 -07:00
Peter Steinberger
380cd9b7c8
chore(ci): drop obsolete experience review exemptions
2026-07-13 04:09:02 -04:00
Peter Steinberger
26e05c1c56
ci: repair main gate drift from skills experience-review landing
2026-07-13 00:59:56 -07:00
Peter Steinberger
e2ec8283c4
refactor(deadcode): trim mid-size src exports ( #105888 )
...
* refactor(deadcode): trim auto-reply and CLI exports
* refactor(deadcode): trim cron and task exports
* refactor(deadcode): trim fleet and process exports
* test(deadcode): exercise live task and process seams
* test(fleet): cover stream redaction through owner module
* refactor(security): trim dead internal exports
* refactor(secrets): trim dead internal exports
* refactor(deadcode): trim remaining src exports
* refactor(deadcode): remove test-only runtime exports
* refactor(deadcode): trim pairing test exports
* refactor(deadcode): reconcile refreshed baseline
* test(auto-reply): deduplicate queue state imports
2026-07-13 00:42:56 -07:00
Peter Steinberger
92962af779
refactor: prune unsupported OPENCLAW env overrides ( #105970 )
...
* refactor: prune unsupported env overrides
* refactor: prune unsupported env overrides
* chore: keep dead export baseline current
* fix: preserve packaged telemetry override
2026-07-13 00:36:02 -07:00
Peter Steinberger
d2b382528e
feat(ios): guide first launch through pairing explainer and permissions ( #106129 )
...
* feat(ios): guide first launch through pairing explainer and permissions
* fix(ios): keep first-run flow resumable and surface limited grants in onboarding
* chore(ios): regenerate native i18n after rebase
* chore(android): project refreshed native translations into strings.xml
* fix(ios): move i18n wrapper contract to shared permission row and sync catalog
2026-07-13 00:35:31 -07:00
Peter Steinberger
29781ab39e
feat(android): generate gateway protocol models ( #106011 )
...
* feat(android): generate gateway protocol models
* fix(ci): recognize generated Kotlin event constants
* fix(android): normalize generated event catalog
* fix(ci): type Kotlin event coverage exports
* fix(ci): satisfy Kotlin codegen gates
2026-07-13 00:34:57 -07:00
Peter Steinberger
2237196871
refactor(extensions): remove dead QA and utility exports ( #105914 )
...
* refactor(extensions): remove dead QA and utility exports
* refactor(extensions): trim Matrix QA internal exports
* chore(deadcode): refresh extension export baseline
* chore(ci): reconcile deadcode and LOC baselines
* chore(deadcode): refresh baseline after main advance
* chore(deadcode): refresh baseline after main advance
* refactor(plugins): keep channel snapshot type private
* fix(ci): align Linux deadcode baseline
2026-07-13 00:34:46 -07:00
Peter Steinberger
af7379bceb
fix(docs): localize Russian plugin terminology
2026-07-13 03:34:26 -04: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
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
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
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
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
Peter Steinberger
82d53fd91d
fix(ci): stabilize CLI startup memory gate
2026-07-13 02:31:44 -04: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
aa04722c5c
fix(ci): make TypeScript LOC growth reviewable ( #105952 )
2026-07-12 23:06:30 -07: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
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
Peter Steinberger
e4a17ee160
refactor(ui): split Workboard controller modules ( #105995 )
...
* refactor(ui): split Workboard controller modules
* chore(ui): track moved Workboard export
* chore(ui): avoid unrelated LOC baseline validation
* ci: refresh TypeScript LOC baseline
* ci: drop stale transcript export baseline
2026-07-12 22:55:07 -07:00
Peter Steinberger
20c5b2282e
fix: render complete HTML entity set in agent workflows ( #105957 )
...
* fix(agents): decode full HTML entity set
* fix(agents): preserve mixed-case nbsp extraction
* chore: leave release notes to release automation
* chore(ci): lower web fetch LOC baseline
* fix(agents): use literal entity radices
2026-07-12 22:54:46 -07:00
Peter Steinberger
a0e5c15988
refactor(errors): consolidate shared error formatting ( #105927 )
...
* refactor(errors): consolidate shared formatting
* fix(errors): preserve structured diagnostic details
* fix(errors): preserve nested cause compatibility
* chore(ci): ratchet reduced formatter files
2026-07-12 22:48:55 -07:00
Jason (Json)
38808a43d6
ci: remove stale transcript deadcode baseline ( #106064 )
2026-07-13 13:46:59 +08:00
Peter Steinberger
807491e0f1
ci: consolidate SMS webhook test reset ( #106070 )
...
* ci: clear stale dead-export surfaces
* ci: align dead-export baseline
2026-07-12 22:41:35 -07:00
Peter Steinberger
db252ac417
refactor: move usage cost cache into agent database ( #106051 )
...
* refactor(infra): rename usage cache lock owner field
* refactor(state): migrate usage cost cache to SQLite
* fix(state): satisfy SQLite migration gates
* refactor(state): keep usage cache access synchronous
* chore: leave release notes to release workflow
* fix(state): satisfy dependency export gate
2026-07-12 22:39:54 -07:00