Commit Graph

6367 Commits

Author SHA1 Message Date
Peter Steinberger
cf8b57e7d0 feat(skills): scan session history for workshop ideas (#106766)
* feat: scan past sessions for skill proposals

* feat(ui): add progressive skill history scans

* fix(ui): keep skill history scans synchronized

* refactor: split skill history scan ownership

* style: fix mock helper formatting

* style: format skill history scan

* build: refresh skill history schema baselines

* build: refresh plugin SDK baseline after rebase

* perf(ui): keep startup request budget bounded

* fix(skills): satisfy history scan integration gates

* fix(ui): bound control ui startup chunks

* build: refresh plugin SDK API baseline

* build(ui): refresh self-learning translation memory

* refactor(ui): split skill workshop state

* fix(ci): refresh skill workshop gates

* fix(ci): satisfy skill history lint

* build: refresh plugin SDK baseline after main rebase
2026-07-13 16:15:50 -07:00
Vincent Koc
b952394bd0 fix(ci): heal current main blockers 2026-07-13 16:10:55 -07:00
Vincent Koc
9f06eb23e8 refactor(googlechat): privatize monitor access helpers (#106871) 2026-07-14 06:44:42 +08:00
Peter Steinberger
0f9cc945e3 fix: Windows installer fails after winget installs Node.js (#106862)
* fix(installer): recover winget Node path

* docs(changelog): note winget installer recovery
2026-07-13 15:43:19 -07:00
Peter Steinberger
0b96300fc6 refactor(shared): privatize internal helpers (#106868) 2026-07-13 15:40:31 -07:00
Peter Steinberger
334e7f3f21 feat(apps): add native mobile Automations parity (#106355)
* fix(apps): address native Skills review feedback

* feat(apps): add native Automations parity

* fix(ios): preserve automation editor selection

* fix(android): page automation discovery

* chore(apps): refresh native source inventory

* fix(ios): refresh invalid automation diagnostics

* chore(apps): sync native localization

* fix(cron): stabilize paginated snapshots

* refactor(cron): split pagination helpers

* fix(apps): address final native review feedback

* chore(apps): refresh native source inventory

* fix(ios): dedupe automation list actions

* chore: keep release note in PR context

* fix(ci): repair current main architecture gates

* fix(ios): default new skill requirement fields

* fix(ios): retain queued automation reservations
2026-07-13 15:35:32 -07:00
Peter Steinberger
4319ddbe8c feat(control-ui): import Codex and Claude Code memory (#106406)
* feat(control-ui): import coding assistant memory

* test(migrate): clean memory import temp dirs

* chore: move memory import note to PR body

* build: refresh memory import generated artifacts

* fix(control-ui): complete memory import checks

* build(control-ui): localize memory recovery labels

* fix(control-ui): harden memory import recovery

* refactor(migrate): keep memory import surfaces bounded

* fix(control-ui): use canonical agent row type

* fix(codex): drop dead migration type exports

* fix(migrate): restrict imported memory permissions

* fix(control-ui): preserve memory import recovery state

* fix(control-ui): retain memory import results

* build(control-ui): preserve translation memory history

* fix(control-ui): bind memory import state to agent

* fix(control-ui): unlock memory import after refresh

* test(gateway): preserve memory method suffix

* fix(migrate): bind reviewed memory imports

* fix(migrate): make memory imports retry-safe

* perf(ui): keep memory import lazy

* build: refresh generated artifacts after rebase

* chore: keep migration runtime within LOC guard

* build: refresh Swift protocol model
2026-07-13 15:30:06 -07:00
Peter Steinberger
4568606490 refactor(telegram): privatize doctor helpers (#106861) 2026-07-13 15:29:06 -07:00
Peter Steinberger
70833dab7f ci: scope PR Node tests to changed targets (#106633)
* ci: scope PR Node tests to changed targets

* ci: bound targeted Node test plans

* test: cover changed path manifest input

* fix(ui): preserve model providers lazy boundary

* ci: cover public SDK re-export consumers

* ci: reject unresolved changed test targets

* ci: cover public SDK wrapper imports

* ci: preserve global checks in targeted plans

* docs(ci): clarify targeted boundary coverage

* test(plugins): declare computed runtime dependencies
2026-07-13 15:26:02 -07:00
Vincent Koc
a8548a1191 refactor(shared): narrow entry status API (#106856) 2026-07-14 06:24:21 +08:00
Peter Steinberger
03455c9cd0 refactor(auto-reply): privatize finalization timeout (#106853) 2026-07-13 15:17:11 -07:00
Peter Steinberger
e69df7ef22 refactor(cli): privatize internal exports (#106848) 2026-07-13 15:09:26 -07:00
Peter Steinberger
3c58dba07b refactor(ui): privatize chat settings patch tracker (#106842) 2026-07-13 14:58:59 -07:00
Vincent Koc
d08228eee1 refactor(shared): privatize requirement helpers (#106837) 2026-07-14 05:50:55 +08:00
Peter Steinberger
2d362a9b01 fix(ui): show mock task transcripts (#106774) 2026-07-13 14:39:47 -07:00
Peter Steinberger
70ab6b324d refactor(lobster): use canonical core export 2026-07-13 14:39:18 -07:00
Josh Avant
65aa778171 fix: recover message sessions after reply finalization stalls (#106792)
* fix(auto-reply): bound reply finalization ownership

* fix(auto-reply): clean finalization exports

* fix(auto-reply): satisfy finalization lint
2026-07-13 16:36:35 -05:00
Vincent Koc
0f3dc25a3e refactor(cli): privatize precomputed help parser (#106692) 2026-07-14 05:33:19 +08:00
Peter Steinberger
9b64c861e5 fix(chat): prevent reasoning races after model changes (#106534)
* fix(chat): serialize session setting changes

* fix(chat): bind settings mutations to gateway routes

* fix(chat): align settings lanes with shared requests

* fix(ios): preserve injected session mutations

* fix(chat): preserve authoritative settings refreshes

* fix(chat): reconcile authoritative settings state

* fix(ci): satisfy session settings quality gates

* fix(android): regenerate native string resources

* fix(ci): update session settings export baseline

* fix(ci): reconcile dead export baseline

* fix(android): resume outbox after settings lane

* chore(i18n): refresh native source inventory

* chore(i18n): refresh rebased native inventory

* chore(i18n): sync control UI locales

* chore: keep release notes in pull request

* style(macos): fix settings comment format

* fix(ai): keep Google thinking type internal
2026-07-13 14:27:54 -07:00
Peter Steinberger
821ec6da45 refactor(agents): remove duplicate session tool exports (#106828) 2026-07-13 14:24:29 -07:00
Peter Steinberger
f1331bcea2 build(knip): model agent sessions SDK entry (#106807) 2026-07-13 13:58:03 -07:00
Peter Steinberger
995c75baa0 fix(ci): restore current-main quality gates (#106751)
* fix(ci): restore Control UI quality gates

* fix(ci): repair dead export cleanup fallout

* fix(ci): repair latest main quality gates

* fix(ci): satisfy current-main gate contracts

* docs: format Cloud Workers guide

* test: isolate context lookup module
2026-07-13 13:54:03 -07:00
Peter Steinberger
6d84622920 refactor(agents): privatize model catalog types (#106801) 2026-07-13 13:45:48 -07:00
Peter Steinberger
90a545b9e6 refactor(slack): trim internal exports (#106794) 2026-07-13 13:37:21 -07:00
Peter Steinberger
359c8917ec refactor(commands): privatize setup types (#106771)
* refactor(commands): privatize setup types

* chore(deadcode): refresh export baseline
2026-07-13 12:57:29 -07:00
Peter Steinberger
a3804782dc ci(ui): raise startup request budget 2026-07-13 12:51:36 -07:00
Peter Steinberger
6d299f383c refactor(memory-core): remove unused exports 2026-07-13 12:44:33 -07:00
Peter Steinberger
eb60b2208c refactor(feishu): remove unused exports 2026-07-13 12:44:33 -07:00
Peter Steinberger
35a02653c8 refactor(qqbot): remove unused exports 2026-07-13 12:44:33 -07:00
Peter Steinberger
bad37249f5 refactor(agents): privatize auth planning types (#106756)
* refactor(agents): privatize auth planning types

* chore(deadcode): refresh export baseline
2026-07-13 12:31:28 -07:00
Peter Steinberger
a15c6af48e refactor(auto-reply): privatize command helpers (#106750)
* refactor(auto-reply): privatize command helpers

* chore(deadcode): refresh export baseline
2026-07-13 12:26:17 -07:00
Peter Steinberger
d1684f48a3 refactor: delete dead infra and config exports (#106019)
* refactor: delete dead infra and config exports

* refactor: preserve live infra and config contracts

* refactor(config): remove obsolete file-store lifecycle APIs

* refactor(infra): finish current-main dead export cleanup
2026-07-13 12:00:47 -07:00
Peter Steinberger
e3c5821d98 feat(ui): redesign Channels page with guided channel setup wizard (#106469)
* feat(ui): redesign Channels page with guided channel setup wizard

Adds wizard.start flow=channels gateway RPC (additive protocol change) that
drives the shared channel-setup wizard (openclaw channels add) over the
session step protocol. Control UI Channels page becomes a card hub with
plugin-art covers, guided per-channel setup modal (WhatsApp QR pairing via
web.login.*, BotFather/Slack/Discord helper links), and a detail overlay
hosting the full schema config form.

* test(ui): cover channel wizard controller; refresh channels view test props

* chore(mock): use non-token-shaped wizard placeholder

* test(gateway): scanner-safe auth local in channels wizard test

* fix(ui): cancel gateway wizard session on channels page disconnect

* fix(ui): adopt browse-all channel pick and guard dirty config before setup

* fix(ui): cancel gateway session created by a stale wizard.start

* fix(ui): adopt multiselect channel picks; drop redundant String()

* fix(ui): track all wizard-adopted channels so WhatsApp QR runs regardless of pick order

* feat(gateway): report configured channels on terminal channel-wizard result

Replaces the Control UI's channel-adoption heuristic with the authoritative
outcome: the channels flow reports its actual selection after config commit,
the wizard session surfaces it as an additive channels field on the terminal
wizard.next result, and the UI keys WhatsApp QR linking off that.

* refactor(ui): align channels hub with the unified settings design language

Hub becomes settings-language rows (44px art tiles, status dots, uppercase
section headings, hairline groups) instead of a card gallery; the detail
overlay hosts the migrated per-channel settings sections with Run setup in
the header. Wizard dialog and tile/cover styles move to spacing tokens.

* chore(i18n): translate channels hub/setup strings; refresh raw-copy baseline

* refactor: satisfy LOC ratchet and dead-export gates

Split mock-dev channel/plugin fixtures into their own modules, move wizard
runner types/defaults to server-methods/wizard.ts, extract the channels page
wizard host and nostr profile HTTP ops, and unexport internal-only types
(incl. the unused config-form SECTION_META barrel re-export).

* chore(i18n): retranslate channels strings on rebased locale bundles

* fix(test): drop redundant String() in channels wizard e2e

* fix: address channel-wizard review findings

- lock wizard cancellation before durable installs/config writes
- report configured channel accounts on the terminal wizard result and
  start WhatsApp QR pairing for that account (web.login accountId)
- forward request options through the browser gateway client so wizard
  RPC timeouts apply
- render skipped setup as a no-change completion
- keep detail/advanced config reachable for unconfigured channels
- surface the dirty-config warning inside the detail overlay
- adopt the picked channel for wizard title/links in browse-all flows

* fix(ui): local wizard RPC timeout; translate no-change completion strings
2026-07-13 11:49:42 -07:00
Peter Steinberger
40b119f57a refactor(build): run generated formatter through oxfmt bin 2026-07-13 11:44:28 -07:00
Peter Steinberger
59003634ad refactor(cron): retire cron_run_logs; ledger-owned retention and cancellation
Stops the legacy run-log dual-write, auto-imports remaining rows and drops
the table at state-DB open (table-presence guard: self-heals downgrade
round-trips), keeps the newest 2000 terminal runs per job in the ledger,
retires cron.runLog config via doctor, and moves live-run cancellation to
src/cron behind the shared task control seam.

Part 2 of 2 for #106041.
2026-07-13 11:41:27 -07:00
Peter Steinberger
cdf4f2208b chore(deadcode): move resolveCronRunEndedAt baseline entry to event codec 2026-07-13 11:32:57 -07:00
Peter Steinberger
b1f765ae8b fix(cron): baseline transitional cron-ledger exports; drop dead migration re-export
check-dependencies (knip) flagged run-log read exports left unused after the
reader flip plus test-only ledger/migration exports. Baseline the genuine
test-only/transitional exports; remove the redundant state-migrations barrel
re-export (state-db imports the migration from the sibling module directly).
2026-07-13 11:32:57 -07:00
Peter Steinberger
b842be157a chore(cron): decompose oversized modules for the changed-file LOC ratchet
Extracts startup-run repair, timer outcome finalization, task record
normalization, legacy task-sidecar row codec, and state-schema helpers
into focused modules; exempts .generated.d.ts files from the ratchet
(policy gap: schema evolution regrows generated Kysely types).
2026-07-13 11:32:57 -07:00
Peter Steinberger
bfe2786957 refactor(ui): remove dead exports (#105979)
* refactor(ui): remove dead exports

* chore(deadcode): refresh export baseline

* refactor(gateway): privatize chat media fields
2026-07-13 11:32:00 -07:00
Peter Steinberger
db02a96c4c refactor(process): route bounded commands through Execa (#106495)
* refactor(process): centralize bounded command execution

* refactor(process): migrate core one-shot commands

* refactor(plugins): migrate one-shot commands

* fix(process): await Windows tree termination

* chore(plugin-sdk): refresh process runtime surface

* refactor(process): migrate remaining bounded commands

* refactor(process): normalize command result handling

* refactor(process): split execution responsibilities

* chore(plugin-sdk): refresh API baseline

* chore(process): remove release-owned changelog entry

* fix(process): narrow binary command input checks

* fix(process): cap sandbox command output

* fix(qa-lab): preserve exact node probe env

* chore(ci): refresh dead export baseline

* fix(process): preserve force-kill command deadlines

* fix(process): avoid post-exit timeout reclassification

* test(process): update scp staging wrapper mock

* test(process): update remaining wrapper mocks

* refactor(qa-lab): preserve Execa tar execution
2026-07-13 11:07:35 -07:00
Peter Steinberger
4c7efd2673 refactor(agents): privatize session state types (#106672)
* refactor(agents): privatize session state types

* chore(deadcode): shrink agents export baseline
2026-07-13 11:04:21 -07:00
Peter Steinberger
e30cc79b81 ci: remove redundant extension oxlint lanes 2026-07-13 11:02:51 -07:00
Vincent Koc
ee2efed993 refactor(commands): remove duplicate session target export (#106620) 2026-07-14 01:49:36 +08:00
Peter Steinberger
9544937b22 refactor(auto-reply): trim test facade exports (#106639) 2026-07-13 10:43:41 -07:00
Peter Steinberger
4f2553be5f fix(test): bound extension test inventory query (#106632) 2026-07-13 10:30:27 -07:00
Peter Steinberger
2b9991c748 refactor(agents): privatize native hook relay internals (#106634)
* refactor(agents): privatize native hook relay internals

* chore(ci): shrink dead-export baseline
2026-07-13 10:27:34 -07:00
Peter Steinberger
8d9950d8ae refactor(agents): split embedded runner orchestration (#106552)
* refactor(agents): split embedded runner orchestration

* test(agents): fix skill startup fixture type

* style(agents): format runner imports

* refactor(agents): remove stale attempt import

* refactor(agents): reuse attempt result slot type

* fix(test): avoid truncating extension test inventory
2026-07-13 10:22:38 -07:00
Peter Steinberger
edbcf11451 refactor(auto-reply): privatize reply helpers (#106600) 2026-07-13 10:12:17 -07:00
Peter Steinberger
8814e75cd6 perf(ci): start long node shards first (#106522) 2026-07-13 09:56:30 -07:00
Peter Steinberger
5d12f6bfb5 refactor(policy): remove remaining unused exports (#106591)
* refactor(policy): remove unused exports

* chore(deadcode): regenerate policy export baseline
2026-07-13 09:47:31 -07:00