13842 Commits

Author SHA1 Message Date
Mark Rachapoom
c73acb731f fix: send image attachments to gateway and prefix attached file paths
Two issues with image handling in chat:

1. Images pasted/dropped in chat were uploaded to disk but only file
   paths were sent as plain text. The model never received actual image
   bytes. Now sends base64 image data as `attachments` in the chat.send
   RPC so vision-capable models can see images directly.

2. Attached file paths (e.g. assets/screenshot.png) were not prefixed
   with the workspace root, unlike [Context: workspace file '...'] paths.
   The agent couldn't resolve relative paths. Now both patterns get the
   workspace prefix.

Files changed:
- chat-panel.tsx: read images as base64 via FileReader, send as FileUIPart
- chat/route.ts: extract image file parts, prefix attached file paths
- gateway/chat/route.ts: accept attachments in request body
- active-runs.ts: thread attachments through startRun
- agent-runner.ts: forward attachments to chat.send RPC
- chat-message.tsx: render inline image previews in user messages

Made-with: Cursor
2026-03-20 21:39:07 -07:00
Mark Rachapoom
c38d1281d4 fix: send Origin header in gateway WebSocket connections
The Node.js ws library doesn't send an Origin header by default.
When the client identifies as openclaw-control-ui, the gateway
enforces origin checks and rejects connections with missing origin.

Pass the gateway URL as the Origin header so the gateway's
local-loopback check sees a valid loopback origin and allows it.

Bump to v2.3.20.

Made-with: Cursor
2026-03-20 19:26:09 -07:00
Mark Rachapoom
587dd6ae64 feat: make gateway client ID configurable via OPENCLAW_GATEWAY_CLIENT_ID
The desktop app runs in daemonless mode without device identity files.
The gateway clears operator scopes for "gateway-client" connections
that lack device identity. Allow the client ID to be overridden via
env var so the desktop can identify as "openclaw-control-ui" and
receive operator scopes with dangerouslyDisableDeviceAuth enabled.

Fallback to "gateway-client" preserves existing behavior for CLI
and web users.

Bump to v2.3.19.

Made-with: Cursor
2026-03-20 16:26:25 -07:00
Kumar Abhirup
b78b67aedf
feat(bootstrap): enable elevated commands for webchat on first boot (#113)
Stages elevated tooling config pre-onboard and reapplies via CLI post-onboard so webchat gets host exec from first boot.
2026-03-20 13:13:46 -07:00
Kumar Abhirup
8b73cd45c0
feat(gateway): default to Claude Opus 4.6 as recommended model (#112)
Align extension fallback list with CLI so empty model selection resolves to Claude Opus 4.6 instead of GPT-5.4.
2026-03-20 13:13:40 -07:00
kumarabhirup
621c2cc821
🚀 RELEASE: v2.3.17 2026-03-20 12:19:22 -07:00
kumarabhirup
2ee170c347
🚀 RELEASE: v2.3.16 2026-03-20 11:28:10 -07:00
kumarabhirup
9e80d899d6
🐛 FIX: Next.js Build Errors on Table Click + Next.js Deployment issue 2026-03-20 11:27:51 -07:00
kumarabhirup
065dc6aa9a
TEST: fix tests for v2.3.15 2026-03-20 10:30:41 -07:00
Kumar Abhirup
df63d6d9b7
Merge pull request #110 from DenchHQ/kumareth/channels
feat(channels): show gateway channel sessions in chat sidebar
2026-03-20 09:59:54 -07:00
kumarabhirup
ecf0091b91
🐛 FIX: CodeQL 2026-03-20 09:59:16 -07:00
kumarabhirup
ec6415903e
🚀 RELEASE: v2.3.15 2026-03-20 09:53:38 -07:00
kumarabhirup
3b211eee04
👌 IMPROVE: responsiveness 2026-03-19 19:46:52 -07:00
kumarabhirup
5ebb752600
📦 NEW: Show channels 2026-03-19 19:39:07 -07:00
kumarabhirup
b20434ee98
👌 IMPROVE: refresh GitHub Actions versions
Keep the release workflow off deprecated Node 20-based action runtimes so the automation stays supported.
2026-03-19 17:44:16 -07:00
kumarabhirup
687b04a963
👌 IMPROVE: automate package releases
Keep GitHub releases and npm publishing aligned with package.json while making deploy.sh the single source of truth for release validation.
2026-03-19 17:41:52 -07:00
kumarabhirup
161d543229
🚀 RELEASE: v2.3.14 2026-03-19 17:26:10 -07:00
kumarabhirup
057fa3a764
👌 IMPROVE: dench version in web 2026-03-19 17:00:20 -07:00
kumarabhirup
4f523c74a7
🚀 RELEASE: Mobile Responsiveness 2026-03-19 15:54:20 -07:00
kumarabhirup
ab3ffa17e2
👌 IMPROVE: drop redundant Cache-Control from next.config headers
force-dynamic on root layout already handles page cache busting;
the blanket header risked overriding intentional API route caching.
2026-03-19 13:48:41 -07:00
kumarabhirup
08aa0949b7
👌 IMPROVE: identify 2026-03-19 13:33:15 -07:00
kumarabhirup
7fe870fec0
👌 IMPROVE: caching 2026-03-18 17:23:49 -07:00
kumarabhirup
f29bd0c5c1
🚀 RELEASE: v2.3.11 2026-03-18 17:12:55 -07:00
kumarabhirup
295f5c008d
fix(agent): lower thinking level to high, fix indentation, and handle terminated errors
- Change thinkingLevel from xhigh to high for session patches
- Fix indentation of event handler blocks in wireSubscribeOnlyProcess
  and wireChildProcess
- Add user-friendly message when agent run is terminated by the gateway
2026-03-18 16:56:13 -07:00
kumarabhirup
f04c1a5dc3
fix(terminal): proxy WebSocket through host in daemonless mode
When DENCHCLAW_DAEMONLESS=1, route the terminal WebSocket through
the app host instead of connecting directly to 127.0.0.1, allowing
it to work in environments without direct port access.
2026-03-18 16:56:01 -07:00
kumarabhirup
104628ed9c
fix(bootstrap): set agents.defaults.timeoutSeconds=86400 to prevent premature termination
OpenClaw's default agent timeout is 600s (10 min), which consistently kills
long-running agent responses — especially multi-file code generation and
complex multi-tool-call workflows. This triggers:

- 'terminated' errors mid-stream (webchat shows terminated banner)
- Retry storms: same runId retries ~60s apart, then new runIds also fail
- Follow-up messages silently dropped (shouldSkipMessageByAbortCutoff)

Set the default to 86400s (24 hours) during bootstrap so all DenchClaw
installations get a sane timeout out of the box. Note: the runtime code
supports timeoutSeconds=0 (no timeout) but the config schema validation
rejects 0 (exclusiveMinimum: 0), so 86400 is the practical maximum.

Also rename ensureSubagentDefaults -> ensureAgentDefaults since the function
now configures both agent-level and subagent-level settings.

Refs:
- https://github.com/openclaw/openclaw/issues/30487
- https://github.com/openclaw/openclaw/issues/46049
- https://github.com/openclaw/openclaw/issues/30083
2026-03-18 13:50:56 -07:00
kumarabhirup
351b71fd05
feat(telemetry): add person identity support and enable session replay
Add optional name, email, avatar, and denchOrgId fields to
telemetry.json. When present, all telemetry layers (CLI, web server,
web client, OpenClaw plugin) call PostHog identify() with $name,
$email, $avatar, and dench_org_id person properties.

Remove $process_person_profile:false from all layers so every install
gets a PostHog person profile. Enable session replay with masking
controlled by privacy mode (all text/inputs masked when on, nothing
masked when off).
2026-03-18 00:08:23 -07:00
kumarabhirup
9a26ab6de1
chore: bump version to 2.3.9
Reflects identity plugin extraction and workspace seed cleanup since v2.3.7.
2026-03-17 16:24:10 -07:00
kumarabhirup
98e9c245a5
feat(identity): extract DenchClaw identity into runtime plugin
Move identity injection from static IDENTITY.md generation at workspace seed
time to a runtime `dench-identity` OpenClaw plugin that prepends the system
prompt via the `before_prompt_build` hook. This keeps identity always current
without re-seeding, encourages dynamic skill discovery, and positions
DenchClaw as a CEO orchestrator that delegates to specialist subagents.
2026-03-17 16:24:00 -07:00
kumarabhirup
748e46ff9e
🚀 RELEASE: v2.3.7 2026-03-17 14:52:14 -07:00
kumarabhirup
1de6943773
docs(skills): refactor app-builder into focused child skills
Split monolithic skill into agent-builder, data-builder, game-builder, and platform-api child skills for better context efficiency.
2026-03-17 14:42:08 -07:00
kumarabhirup
ea8bab6179
feat(apps): expand platform API with objects, chat, store, cron, and webhooks
Enables apps to access the full DenchClaw platform — CRUD on workspace objects, AI chat with streaming, inter-app messaging, KV store, HTTP proxy, webhooks, cron scheduling, and widget display mode.
2026-03-17 14:42:01 -07:00
kumarabhirup
e92419760b
fix(workspace): show .app children in tree and fix cron tab opening
App folders are now expandable when hidden files are shown, and cron items properly open in tabs.
2026-03-17 14:41:52 -07:00
kumarabhirup
92b32fdf21
fix(chat): use refs in stop handler to avoid stale closures
Reads sessionId and subagentSessionKey from refs instead of state so the stop button works even before React re-renders.
2026-03-17 14:41:46 -07:00
kumarabhirup
786a729c83
fix(agent-runner): attach WS listeners before open and always use chat.send
Prevents listener-attachment race after handshake and ensures all runs are session-tracked for reliable abort.
2026-03-17 14:41:39 -07:00
Mark
f4ce923f5c fix(cli): add rollback safety net and crash diagnostics for web runtime updates
- Back up existing app dir before replacing (enables rollback on crash)
- Rollback to previous working runtime when new version fails readiness probe
- Early exit in waitForWebRuntime() when spawned process dies (saves 15s)
- Include web-app.err.log tail in probe failure reason for diagnostics
- Clean up backup after successful probe

Made-with: Cursor
2026-03-17 13:10:47 -07:00
kumarabhirup
ef72fe29d7
🚀 RELEASE: 2.3.6 2026-03-17 12:42:44 -07:00
kumarabhirup
8fa221554e
feat(agent-runner): per-session lanes, lifecycle error recovery, and slash command support
Use per-session gateway lanes (web:sessionId) so concurrent chat tabs
stream independently. Add a 15s recovery window after lifecycle errors
to accept continuation runIds. Route slash commands through chat.send
RPC and forward chat events to the UI.
2026-03-17 12:35:26 -07:00
kumarabhirup
11478c752e
refactor(workspace): remove chat-slot agent pool to prevent workspace pollution
Chat-slot agents were being persisted as durable entries in openclaw.json,
causing spurious workspace directories (e.g. chat-slot-main-1) to appear.
Only explicit workspace creation via init now creates durable agent entries.
Workspace discovery and session routing ignore chat-slot internals.
2026-03-17 12:35:18 -07:00
kumarabhirup
3cd51759da
📖 DOC: feat(cli): enhance daemonless mode support for container/cloud environments
Refine the handling of the DENCHCLAW_DAEMONLESS=1 environment variable and --skip-daemon-install flag to ensure consistent behavior across all commands, including bootstrap, update, start, restart, and stop, in environments lacking systemd/launchd.
2026-03-15 21:27:20 -07:00
kumarabhirup
76f8838362
feat(cli): add daemonless mode for container/cloud environments
Support DENCHCLAW_DAEMONLESS=1 env var and --skip-daemon-install flag
across all commands (bootstrap, update, start, restart, stop) to skip
gateway daemon management and LaunchAgent registration in environments
without systemd/launchd.
2026-03-15 21:25:25 -07:00
kumarabhirup
4436e57d9a
fix(bootstrap): eliminate gateway probe race and pre-onboard config failures
Pre-onboard config (gateway.mode, gateway.port, plugin trust) used to call
`openclaw config set` before `openclaw onboard` created the profile, causing
"Failed to set ..." errors on fresh installs (#101). All pre-onboard config is
now staged via raw JSON writes. Hidden gateway restarts inside syncBundledPlugins
are removed; one explicit restart happens after all post-onboard config, followed
by retried health probes so bootstrap no longer falsely reports "gateway closed"
while the gateway is simply finishing startup.
2026-03-15 17:16:05 -07:00
kumarabhirup
fc04de7eb8
🚀 RELEASE: v2.3.3 2026-03-15 14:52:23 -07:00
kumarabhirup
8fd2fe396a
🚀 RELEASE: v2.3.2 2026-03-15 13:53:53 -07:00
kumarabhirup
94ef2c0288
🚀 RELEASE: v2.3.1 2026-03-15 13:30:11 -07:00
kumarabhirup
c16ecb899f
🐛 FIX: model context 2026-03-15 13:27:09 -07:00
kumarabhirup
0f864fb0ef
fix(agent-runner): remove Origin header to fix pairing required error
Server-side WebSocket connections should not set Origin (a browser security
concept). The header caused the gateway to treat the web runtime as a browser
client, blocking silent local device pairing after device identity auth was
added.
2026-03-15 13:18:12 -07:00
kumarabhirup
45acfbb493
fix(telemetry): emit per-turn cost instead of cumulative session total
extractUsageFromMessages was summing ALL assistant messages, so each
$ai_generation event reported a growing cumulative total — PostHog's
sum() then massively over-counted costs (e.g. $634 reported vs $73 actual).
2026-03-15 13:09:54 -07:00
kumarabhirup
920bb1d12a
👌 IMPROVE: 🔧 UPDATE: Bump version to 2.3.0 and update denchclaw dependency to match 2026-03-15 04:41:37 -07:00
kumarabhirup
3f6fe5f892
🚀 RELEASE: v2.3.0 2026-03-15 04:39:22 -07:00