Commit Graph

59 Commits

Author SHA1 Message Date
Haze
c969e899c8 feat(chat): enhance image extraction and file path handling in messages (#116) 2026-02-20 10:48:46 +08:00
Haze
1759b98443 fix(chat): optimize chat with pic response (#103) 2026-02-19 00:29:10 +08:00
Haze
26ce009a41 chore(guide): opt guide frontend optimization (#88) 2026-02-14 20:35:32 +08:00
Haze
d108a850ef feat(chat): opt pic show in chat history (#87) 2026-02-14 18:00:57 +08:00
Haze
cf8091d81f feat(chat): improve media handling and caching for user messages (#81) 2026-02-14 00:21:04 +08:00
Haze
8a49c66891 fix(chat): enhance file handling and error reporting in ChatInput (#80) 2026-02-13 20:43:42 +08:00
Haze
36fb4bffc7 feat(chat): implement file upload support with staging and media handle (#77) 2026-02-13 18:23:47 +08:00
paisley
e8915831dc feat: localize custom provider name and ollama placeholder (#75) 2026-02-13 17:42:52 +08:00
Haze
312f8f38de chore(url): update documentation links to point to the new domain (#73) 2026-02-13 16:31:34 +08:00
Felix
6a865da4f1 feat(setup): enhance provider selection with dropdown menu and keyboard accessibility (#71) 2026-02-13 11:40:56 +08:00
paisley
712f379226 fix(setup): translate docsUrl before opening in browser (#70) 2026-02-13 11:19:56 +08:00
Felix
541a85a5b0 feat: ensure OpenClaw skills directory exists and add a clear button to the marketplace search input (#65) 2026-02-12 16:54:56 +08:00
Haze
300a219f95 chore(UI): ux model settings (#64) 2026-02-12 13:28:20 +08:00
paisley
8ade06d7b8 fix(channels): restrict available set to primary channels only (#63) 2026-02-12 13:09:02 +08:00
Felix
8ab1b3af36 misc: provider icons, tooltip in chat toolbar, conditionally display the "Open Skills Folder" button and update "Documentation" to "Website" in settings (#60) 2026-02-12 11:11:28 +08:00
Felix
fcba8b86d5 fix(chat): improve message handling, fix type errors and migrate changes to enhance branch (#50) 2026-02-11 17:10:53 +08:00
paisley
bc7da0085b chore: fix some ui problems (#51) 2026-02-11 17:08:57 +08:00
paisley
6e09a69f4f feat(app): i18n (#48) 2026-02-11 15:34:53 +08:00
Felix
f9581d2516 fix(chat): improve handling of streaming messages and add pending state management (#46) 2026-02-11 13:55:34 +08:00
Haze
1267e0cc56 fix(updater): update function support alpha (#45) 2026-02-11 13:49:03 +08:00
DigHuang
0ced0b042c refactor(provider): provider API validation & CN defaults (#47) 2026-02-11 13:48:15 +08:00
paisley
01f4d4800e Fix channel configured status (#44) 2026-02-11 11:44:06 +08:00
DigHuang
1b508d5bde feat(provider): mainly support moonshot / siliconflow on setup (#43) 2026-02-11 11:33:33 +08:00
Felix
a0505490cd feat: enhance ClawHub integration with new CLI paths and IPC handlers for config and skills directories (#41) 2026-02-11 11:32:03 +08:00
Felix
816a0e24a2 misc: chat stop button and tool typing indicator and prevent sending message during composition (#37) 2026-02-10 19:12:22 +08:00
paisley
29d0db706f fix(whatsapp): wait for creds update and fix config path (#38) 2026-02-10 19:07:44 +08:00
Felix
e8a7377525 feat(skills): improve marketplace disclaimer and icon (#30)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-02-10 14:44:18 +08:00
DigHuang
a27f3b4113 feat(gateway): improve Gateway process management & logging (#26) 2026-02-10 14:14:56 +08:00
paisley
7a9fd7fc0f feat(channels): implement WhatsApp QR login proxy (#29) 2026-02-10 14:06:53 +08:00
Felix
0cf4ad3a8c feat: add OpenClaw CLI command and install flow (#25)
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
2026-02-10 13:56:29 +08:00
Haze
c440e95464 chore(product): fix link in app (#22) 2026-02-09 22:20:51 +08:00
paisley
905b828e9b fix crontab task (#19) 2026-02-09 18:59:21 +08:00
Felix
ba53fa5ab2 feat: restore dev console link and show gateway token (#15) 2026-02-09 18:04:12 +08:00
DigHuang
05b5874832 feat(style): refactor layout, remove Header & Improve gateway readiness checks (#12) 2026-02-09 17:00:27 +08:00
Haze
de445ae3d5 Chore/build npm (#9)
Co-authored-by: DigHuang <114602213+DigHuang@users.noreply.github.com>
Co-authored-by: Felix <24791380+vcfgv@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 15:10:08 +08:00
Haze
e6317cafd6 chore(frontend): fix corn task (#3) 2026-02-07 01:28:38 +08:00
Felix
fa6c23b82a feature: channels and skills (#2)
Co-authored-by: paisley <8197966+su8su@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 18:26:06 +08:00
Haze
9fe27e3510 chore(lint): remove ESLint configuration file and update lint scripts
- Deleted the .eslintrc.cjs file to simplify configuration management.
- Updated lint scripts in package.json to remove unnecessary extensions for linting.
- Added new devDependencies for ESLint and globals to enhance linting capabilities.
2026-02-06 05:50:20 +08:00
Haze
e9ad15bf6f fix(ui): move chat controls to header, add new session, fix settings layout
Chat page:
- Move session selector, refresh, thinking toggle to the Header bar
  (same level as "Chat" title) instead of inside the chat content area
- Add "New Session" button (+ icon) to create fresh chat sessions
- Remove duplicate toolbar from chat body

Settings page:
- Remove max-w-2xl constraint so cards fill available width
- Redesign provider cards: compact layout with key + actions in one row
- Shorten API key display (sk-...df67 format instead of full masked key)
- Move edit/delete/star buttons inside the key row background area
- Remove duplicate "AI Providers" heading (already in card header)
2026-02-06 05:11:39 +08:00
Haze
7fded9bf8d refactor(chat): remove instruction text from ChatInput component
- Removed the instruction text for sending messages (Enter to send, Shift+Enter for new line) from the ChatInput component to streamline the UI.
2026-02-06 04:59:40 +08:00
Haze
94a6cecf2f fix(chat): move toolbar to Header and add New Session button
- Move ChatToolbar (session selector, refresh, thinking toggle) from
  the Chat page body into the Header component, so controls appear
  at the same level as the "Chat" title
- Add New Session button (+) to create a fresh conversation
- Add newSession action to chat store
- Header conditionally renders ChatToolbar only on /chat route
- Chat page fills full content area without duplicate toolbar
2026-02-06 04:57:25 +08:00
Haze
3468d1bdf4 feat(chat): native React chat page with session selector and streaming
Replace the iframe-based Control UI embed with a native React
implementation that communicates directly with the Gateway via
gateway:rpc IPC calls and chat event streaming.

New components:
- ChatToolbar: session selector dropdown, refresh button, thinking toggle
- ChatMessage: message bubbles with markdown (react-markdown + GFM),
  collapsible thinking blocks, tool use cards, image attachments
- ChatInput: textarea with Enter to send, Shift+Enter for new line
- message-utils: extractText/extractThinking/extractImages/extractToolUse
  ported from OpenClaw's message-extract.ts

Rewritten chat store with:
- Session management (sessions.list, switchSession)
- Proper chat.history loading with raw message preservation
- chat.send with idempotencyKey and run tracking
- Streaming via handleChatEvent (delta/final/error/aborted)
- Thinking toggle (show/hide reasoning blocks)
2026-02-06 04:49:01 +08:00
Haze
191948ce51 fix(docs): update repository links in README and menu to reflect new GitHub organization 2026-02-06 04:18:16 +08:00
Haze
f67370ce03 fix(app): scope header overrides to gateway URLs only
- The session.webRequest.onHeadersReceived was stripping X-Frame-Options
  and modifying CSP for ALL responses including the Vite dev server,
  which could break the main app rendering. Now only applies to
  gateway URLs (127.0.0.1:18789 / localhost:18789).
- Dashboard: only fetch channels/skills when gateway is running
- Dashboard: guard against non-array channels/skills data
- Gateway store: use dynamic import() instead of require() for chat
  store to avoid ESM/CJS issues in Vite
2026-02-06 03:40:47 +08:00
Haze
542178c1e7 fix(chat): switch from webview to iframe for Control UI embedding
The <webview> tag had issues with event listener attachment and React
ref handling, causing the loading overlay to stay forever (white screen).
Switched to a standard <iframe> which is simpler and works reliably:
- Uses iframe onLoad/onError instead of webview dom-ready events
- Added 5s fallback timeout to dismiss loading overlay
- The X-Frame-Options/CSP header overrides from session.webRequest
  allow the iframe to load the Control UI
2026-02-06 03:21:43 +08:00
Haze
284861a0f5 feat(chat): write API keys to OpenClaw and embed Control UI for chat
Part 1: API Key Integration
- Create electron/utils/openclaw-auth.ts to write keys to
  ~/.openclaw/agents/main/agent/auth-profiles.json
- Update provider:save and provider:setApiKey IPC handlers to
  persist keys to OpenClaw auth-profiles alongside ClawX storage
- Save API key to OpenClaw on successful validation in Setup wizard
- Pass provider API keys as environment variables when starting
  the Gateway process (ANTHROPIC_API_KEY, OPENROUTER_API_KEY, etc.)

Part 2: Embed OpenClaw Control UI for Chat
- Replace custom Chat UI with <webview> embedding the Gateway's
  built-in Control UI at http://127.0.0.1:{port}/?token={token}
- Add gateway:getControlUiUrl IPC handler to provide tokenized URL
- Enable webviewTag in Electron BrowserWindow preferences
- Override X-Frame-Options/CSP headers to allow webview embedding
- Suppress noisy control-ui token_mismatch stderr messages
- Add loading/error states for the embedded webview

This fixes the "No API key found for provider" error and replaces
the buggy custom chat implementation with OpenClaw's battle-tested
Control UI.
2026-02-06 03:12:17 +08:00
Haze
931fea3735 refactor(setup): replace skills selection with auto-install progress UI
- Replace manual skill bundle selection with automatic installation step
- Add InstallingContent component with real-time progress feedback
- Auto-install essential components: OpenCode, Python, Code Assist, File Tools, Terminal
- Show animated progress bar and per-skill installation status
- Auto-proceed to completion after installation finishes
- Update CompleteContent to display installed components
- Update architecture docs and build process documentation
2026-02-06 02:07:02 +08:00
Haze
3fd62e112f refactor(setup): remove channel step from setup wizard
- Remove channel connection step from onboarding flow (6 steps -> 5 steps)
- Users can now start using ClawX immediately
- Channel configuration moved to Settings > Channels (future)
- Update architecture doc to reflect simplified setup flow
- Reduces onboarding friction for new users
2026-02-06 01:48:34 +08:00
Haze
4431d2ba1d feat(providers): implement real API key validation with OpenRouter support
- Replace mock API key validation with actual API calls to verify keys
- Add validateApiKeyWithProvider() with provider-specific implementations
- Support Anthropic, OpenAI, Google, and OpenRouter validation
- Add OpenRouter as a new provider option in setup wizard and settings
- Fix setup page to call real validation instead of mock length check
- Allow validation during setup before provider is saved
- Return user-friendly error messages instead of raw API errors
2026-02-06 01:25:33 +08:00
Haze
29ee21754a feat(gateway): integrate OpenClaw as git submodule
- Add OpenClaw as git submodule at ./openclaw/
- Update GatewayManager to start gateway from submodule path
- Support both production (dist) and development (pnpm dev) modes
- Add IPC handler for OpenClaw status check
- Update Setup wizard to check real OpenClaw submodule status
- Configure electron-builder to include submodule in packaged app
- Add npm scripts for submodule management:
  - postinstall: auto-init submodule
  - openclaw:init: initialize and install dependencies
  - openclaw:install: install dependencies only
  - openclaw:build: build OpenClaw
  - openclaw:update: update to latest version
2026-02-06 00:24:36 +08:00