Commit Graph

38310 Commits

Author SHA1 Message Date
Peter Steinberger 26fe6e8ea3 refactor(audit): trim internal input types (#107390) 2026-07-14 03:43:49 -07:00
Peter Steinberger 3229fbdc48 fix(config): render Feishu group policy in Form mode (#107336)
* fix(ui): scope unsupported config guidance to fields

* fix(config): export Feishu transform inputs

* chore: remove release-owned changelog entry
2026-07-14 03:42:43 -07:00
Peter Steinberger b68714ee42 refactor(backup): use tar read-entry APIs 2026-07-14 03:42:07 -07:00
Peter Steinberger 09e5d60d3c fix(ci): format node-host runtime/worker tests
Unformatted test edits landed on main and fail check-lint's oxfmt gate
on every branch.
2026-07-14 03:35:07 -07:00
Peter Steinberger 50e777bc25 refactor(tasks): trim internal export surface (#107385) 2026-07-14 03:33:52 -07:00
Peter Steinberger 20f145f9c1 fix(mac): enable terminal actions for paired-node sessions (#107361)
* fix(mac): enable paired-node terminal sessions

* fix(ci): align node worker bridge checks
2026-07-14 03:22:28 -07:00
Peter Steinberger b9d0473b2e refactor(plugins): match Jiti callable contract 2026-07-14 03:20:29 -07:00
Jason (Json) 01a7f4fb3f feat(ui): add images and model selection to new sessions (#107358)
Merged via squash.

Prepared head SHA: cf99b5bab5
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
Reviewed-by: @fuller-stack-dev
2026-07-14 04:14:01 -06:00
Peter Steinberger 693d4f8fa3 test: avoid unrelated runtime discovery in agent runner tests (#107354) 2026-07-14 03:05:45 -07:00
Peter Steinberger 8ea5ee2f17 refactor(terminal): unify bounded buffers (#107337)
* refactor(terminal): unify bounded buffers

* refactor(terminal): tighten buffer closure

* refactor(terminal): keep buffer policy private
2026-07-14 03:04:37 -07:00
Peter Steinberger ac4fd2ad42 refactor(media): use qrcode buffer renderer 2026-07-14 02:59:19 -07:00
Peter Steinberger d8f705c0a2 refactor(skills): trim internal exports (#107353)
* refactor(skills): trim internal exports

* test(skills): derive mismatch fixture type
2026-07-14 02:58:34 -07:00
Peter Steinberger d79573d457 fix: avoid redundant image-model calls for vision agents (#107311)
* fix: route native image inspection directly

* fix: narrow image fallback route

* style: satisfy image tool size ratchet

* test: align image fallback auth coverage

* fix: complete native image routing
2026-07-14 02:54:34 -07:00
Peter Steinberger 673b163b72 refactor(cli): use Commander native APIs 2026-07-14 02:45:52 -07:00
xingzhou 8acbf209cd fix(gateway): prevent broken emoji in WebSocket log IDs (#105001)
* fix(gateway): preserve Unicode in WebSocket log IDs

* test(gateway): cover UTF-16-safe log IDs

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 02:41:55 -07:00
Peter Steinberger 103d9ceb5e refactor(secrets): trim internal exports (#107342) 2026-07-14 02:38:46 -07:00
Peter Steinberger 92cca9343e feat(linux): headless node device capabilities (camera, location, notifications) (#107193)
* feat(linux): add node device capabilities

* fix(linux-node): actionable pending-approval error + node-host advertise integration test

* fix(linux-node): map geoclue access-denied to LOCATION_DISABLED; floor camera maxWidth to avoid zero-height scale

* fix(linux-node): clamp small camera maxWidth to 2 instead of default

* docs(linux-node): clarify where-am-i -t is a process timeout, not update throttle

* refactor(gateway): extract legacy-node filter + rejection hint to fit LOC ratchet; docs-map + deadcode baseline

* fix(gateway): drop now-unused DEFAULT_DANGEROUS_NODE_COMMANDS import after hint extraction

* test(node-host): drop imports orphaned by removed error-code test
2026-07-14 02:30:36 -07:00
snowzlmbot e8ad0466ff fix: render assistant transcript headers safely (#99404)
* fix: render assistant transcript headers safely

Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>

* fix(markdown): nest crossing annotation spans

* fix(markdown): protect final transport projections

* refactor(markdown): split transcript render ownership

* test(ui): cover assistant transcript render flag

* refactor(markdown): keep transcript helpers private

* docs(changelog): note assistant transcript headers

* chore(plugin-sdk): refresh transcript annotation baseline

* fix(markdown): harden final transcript projections

* docs(changelog): defer transcript note to release

* refactor(markdown): centralize HTML tokenization

* fix(markdown): satisfy lint gates

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>
2026-07-14 02:25:37 -07:00
Peter Steinberger b89f6df6b8 refactor(net): share Undici fetch normalization 2026-07-14 02:22:28 -07:00
Peter Steinberger d87aea2b83 test(auto-reply): accelerate fallback coverage (#107316) 2026-07-14 02:21:21 -07:00
SL4N 275cc7fd8f fix(sessions): disk budget counts unremovable *.migrated sidecars and evicts live sessions instead (#107238)
* fix(sessions): exclude migration archives from disk budget

Co-authored-by: SL4N <272086617+SL4N@users.noreply.github.com>

* refactor(sessions): keep disk budget scan bounded

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: SL4N <272086617+SL4N@users.noreply.github.com>
2026-07-14 02:19:08 -07:00
Peter Steinberger 7ab879b45c refactor(net): consolidate Undici runtime loading 2026-07-14 02:11:05 -07:00
SL4N 45e651314c fix(cron): retry session lifecycle claim conflicts (#107236)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: SL4N <272086617+SL4N@users.noreply.github.com>
2026-07-14 02:02:39 -07:00
Peter Steinberger 4ab40c621a refactor(sqlite): use Kysely compile helpers 2026-07-14 02:01:04 -07:00
Peter Steinberger c0e0be041a fix: retain who said what across group chat turns (#107025)
* fix(sessions): preserve group sender context across turns

* refactor(sessions): isolate sender replay boundary

* refactor(sessions): adapt sender replay to session boundary

* fix(agent): align sender context boundary projections

* fix(agent): retain queued sender transcript pairs

* fix(agent): forward sender boundary through session runtime

* fix(agent): preserve sender boundary invariants

* fix(agent): correlate persisted sender turns

* test(agent): satisfy sender correlation lint

* fix(agent): retain sender on persisted retries

* test(agent): type persisted retry harness

* fix(agent): match textless sender turns exactly

* refactor(agent): keep session guard within LOC budget
2026-07-14 01:58:29 -07:00
Peter Steinberger 625d859938 test(ci): harden scheduled release probes (#107272)
* test(ci): harden scheduled release probes

* docs(agents): record testbox warmup failure

* test(wizard): avoid Promise executor return
2026-07-14 01:48:10 -07:00
Peter Steinberger 69e2282c46 test(wizard): satisfy promise executor lint (#107301) 2026-07-14 01:44:26 -07:00
Peter Steinberger 03a8a7dd17 refactor(json): share JSON5 fallback parsing 2026-07-14 01:35:48 -07:00
Peter Steinberger eb7e32d2a2 refactor(llm): parse retry units with ms 2026-07-14 01:23:46 -07:00
Peter Steinberger 89f53f1c38 fix(terminal): keystrokes typed while a terminal opens are lost; node PTY relay lifecycle races (#107214)
* fix(terminal): harden node PTY relay and terminal session lifecycle

Pin node relay invokes to the authorized node connection (ROUTE_CHANGED
guard), stop node-side input writes to settled/dead PTYs, finalize
sessions on resize failure like write failure, keep surrogate pairs
intact across scrollback and relay prelude truncation, bound the relay
pre-registration output buffer, and buffer Control UI keystrokes typed
while terminal.open/attach is in flight so slow node-relay opens no
longer drop input. Correct the terminal.data seq doc to its real
contract and pin seq monotonicity, seq-gap bounds, input coercion, and
runner event routing with new tests.

* refactor(terminal): extract startup input buffer and fix CI findings

Move Control UI startup input buffering into terminal-startup-input.ts
(LOC budget), drop a stale session-manager comment, remove a map
spread, and fix test typings for event frames and typed mock access.
2026-07-14 01:22:22 -07:00
Peter Steinberger 16ff48c729 refactor(time): trust pretty-ms defaults 2026-07-14 01:15:43 -07:00
Peter Steinberger 47d37804a8 improve(ui): catch i18n catalog drift locally (#107253)
* ci(ui): verify i18n catalogs locally

* fix(ui): preserve scoped i18n sync errors

* refactor(ui): share i18n raw-copy verifier

* test(ui): cover i18n lint gate

* fix(ui): route lint threads to oxlint
2026-07-14 01:12:36 -07:00
Peter Steinberger da9f974886 fix(cli): adopt native Clack prompt contracts 2026-07-14 01:10:19 -07:00
Peter Steinberger bb6874fddf feat(sessions): upstream liveness for adopted catalog sessions (#107009) 2026-07-14 01:09:05 -07:00
Peter Steinberger 5bcee076a5 refactor(channels): deprecate the never-consumed group intro hint adapter (#107252)
* refactor(channels): deprecate the never-consumed group intro hint adapter

* chore(channels): compress the intro-hint deprecation note to satisfy the size ratchet
2026-07-14 01:06:13 -07:00
Peter Steinberger 202dea59bd fix(workboard): grant dispatch workers required tools 2026-07-14 01:00:37 -07:00
Peter Steinberger b940339c32 fix: use plain agent progress labels (#107260)
* fix(channels): simplify agent progress labels

* chore: keep changelog release-owned

* chore: refresh bundled channel metadata
2026-07-14 01:00:24 -07:00
Peter Steinberger 4ed76a7ddb refactor(acp): use SDK protocol contracts 2026-07-14 00:56:11 -07:00
Peter Steinberger b0104bd2cd refactor(tui): centralize pending submission lifecycle (#107242)
* refactor(tui): centralize pending submit state

* fix(tui): keep submit state dependency leaf
2026-07-14 00:54:00 -07:00
Peter Steinberger 4dff4e95b1 refactor(node-host): trim internal exports (#107270) 2026-07-14 00:49:54 -07:00
Peter Steinberger 489690fa16 fix(process): apply undefined env removals (#107258)
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com>
2026-07-14 00:43:30 -07:00
Peter Steinberger 41c0c150b5 refactor(config): use Zod strict object builders 2026-07-14 00:29:58 -07:00
Peter Steinberger 9bf994f399 refactor(cron): trust Croner run results 2026-07-14 00:22:14 -07:00
Michael Appel 18ec9ce8f7 fix: block workspace dotenv endpoint overrides [AI] (#103914)
* fix: block workspace dotenv endpoint overrides

* docs: clarify workspace endpoint env sources

* style: format dotenv suffix blocklist

---------

Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com>
2026-07-14 12:51:15 +05:30
ml12580 ad17f451d8 fix(skills): globally-installed ClawHub skills falsely show as not tracked [AI-assisted] (#106479)
* fix(skills): link globally-installed ClawHub skills via managed lockfile

buildWorkspaceSkillStatus read the ClawHub lockfile only from the workspace
dir, so globally-installed skills (source "openclaw-managed", tracked in the
managed lockfile at <dirname(managedSkillsDir)>/.clawhub/lock.json) were
falsely reported as "not tracked by the workspace ClawHub lockfile". Resolve
openclaw-managed skills against the managed lockfile and managed parent dir
so the link status and expected-install-dir check match. Workspace-local
skills are unchanged.

Closes #105530

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(skills): make ClawHub lockfile diagnostics scope-aware

resolveClawHubSkillStatusLinkSync hardcoded "workspace ClawHub lockfile" in
its invalid-path diagnostics, so a globally-managed skill (checked against
the managed lockfile) still got a misleading "workspace" troubleshooting
message. Add an optional lockfileScope ("workspace" | "managed") and use it
in the diagnostics; buildSkillStatus passes "managed" for openclaw-managed
skills. Extends the managed missing-entry regression test to assert the
managed diagnostic.

Addresses ClawSweeper [P2] review finding on #106479.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(skills): relabel managed-lockfile diagnostics from status.ts

Compute the managed-lockfile diagnostic relabel in status.ts instead of
threading a scope parameter through clawhub.ts. clawhub.ts is an oversized
legacy module under the check:loc ratchet ('oversized legacy files may not
grow'), so the prior +8 net lines tripped checks-fast-loc-ratchet. Behavior
is unchanged: globally-managed skills still surface 'managed ClawHub
lockfile' diagnostics.

* fix(skills): strengthen managed ClawHub status linkage

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 00:16:55 -07:00
Peter Steinberger 84500db379 refactor(plugin-sdk): isolate HTML entity runtime 2026-07-14 00:16:37 -07:00
Michael Appel 99ca3599d6 fix: block cloud sdk workspace env controls (#103918)
Co-authored-by: Pavan Kumar Gondhi <pavangondhi@gmail.com>
2026-07-14 12:46:26 +05:30
Peter Steinberger e91d0fc8b7 refactor(tui): remove dead exports (#107241) 2026-07-14 00:07:41 -07:00
Peter Steinberger b58a75d726 refactor(html): share entity decoding 2026-07-14 00:00:05 -07:00
Peter Steinberger 25a0f270ea test: isolate queued CLI progress ordering (#107212) 2026-07-13 23:57:49 -07:00