Closed
Conversation
Adds a complete cloud deployment mode that runs DataConnect in Docker with a headed Chromium instance, allowing users without desktop apps to run Playwright connectors via a web UI with CDP screencast. Key changes: - cloud-server: Express API server with token auth, CDP screencast WebSocket relay, and connector orchestration (ports Tauri commands) - Runtime abstraction layer (src/lib/runtime): allows frontend to work with both Tauri (desktop) and HTTP/WebSocket (cloud) backends - ConnectorView: canvas-based CDP screencast viewer with mouse/keyboard input forwarding - playwright-runner: connectOverCDP mode for attaching to existing Chromium instances instead of launching new ones - Docker infrastructure: Playwright-based image with Xvfb, Chromium, and entrypoint for cloud deployment - All existing tests updated for runtime abstraction; 313 tests passing
Multiple fixes to get the cloud connector end-to-end functional: - Fix camelCase property names in invoke routes (runId, platformId, connectUrl) - Set CDP_ENDPOINT and headless:false for cloud connector runs - Fix entrypoint.sh: init vars before cleanup trap, remove stale X lock, add --no-sandbox, guard find with || true - Rewrite cdp-relay to poll for connector page targets (skip about:blank and chrome:// pages), normalize ws://0.0.0.0 to 127.0.0.1 - Port Puppeteer USKeyboardLayout key definitions (windowsVirtualKeyCode, rawKeyDown) so Backspace/Delete/Enter/arrows work via CDP - Use Input.insertText for printable chars to avoid double-character bug - Remove duplicate onClick handler that interfered with text selection - Add ScreencastModal component and wire it into home page for HTTP mode - Add paste support (Ctrl+V passthrough + Input.insertText for bulk text) - Add /api/version endpoint to cloud server - Add useRuntime mock to home page tests
…e button - Reverse-proxy n.eko at /neko for same-origin iframe clipboard access - Add ?view=cdp URL param for CDP screencast mode alongside default n.eko - Add close button to screencast modal (stops running connectors) - Remove ws:true from proxy to avoid intercepting /ws/events and /ws/screencast - Remove socat, use --remote-debugging-address=0.0.0.0 directly - Add --kiosk and --no-sandbox to Chromium config - Update spec to reflect current architecture
873d376 to
be5537f
Compare
…keyboard support Embed @demodesk/neko Vue 2 component directly in React via a thin wrapper instead of iframing the legacy v2 client. This enables native touch input, a manual keyboard toggle button, and hidden remote cursor for mobile UX. - Add neko-client.tsx React wrapper (direct Vue component instantiation) - Switch docker-compose to NEKO_LEGACY=false for v3 API endpoints - Add Chromium wrapper script for mobile UA and env var expansion - Add xorg.conf with portrait modes for mobile viewports - Hide remote cursor canvas and CSS cursor for touch-only use - Add keyboard toggle button with focus-theft prevention Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…nector runs Add GCP deployment tooling (VM creation, image push, compose prod config). Add session reset (wipe Chromium profile + export data) triggered automatically after each connector run completes, plus manual reset via URL param and nav button. Also includes H-E-B/Whole Foods connectors and deep-link isTauri guard. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Warning
Do not merge — this is a demo/evaluation branch for the cloud connector feature.
Demo
https://www.loom.com/share/7a1760437a814ed08d2075fb2285a23e
What this is
A Docker-hosted browser automation runtime that lets users run DataConnect connectors from a web browser — no desktop app required. The user sees a remote browser view (streamed via WebRTC or CDP screencast) where they log in to platforms, then Playwright automation takes over.
Spec
See docs/cloud-connector-spec.md for the full architecture, design decisions, and implementation status.
Key changes
cloud-server/): Express API server that replaces Tauri invoke commands, reverse-proxies n.eko for same-origin iframe access, and provides a CDP screencast relay?view=neko(default, WebRTC via n.eko) and?view=cdp(canvas + WebSocket). n.eko has better input fidelity; CDP has reliable clipboard pastem1k1o/neko:chromiumwith Node.js API server, Playwright runner, and Chromium kiosk configsrc/lib/runtime/): Frontend works in both Tauri desktop and HTTP cloud modes viauseRuntime()hookscripts/validate-cloud-connector.sh): Builds and tests the Docker image end-to-endHow to test
Known limitations
Input.insertTextPUBLIC_IPenv var for WebRTC on non-localhost deployments