diff --git a/README.md b/README.md index 8166ca3..173f78f 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,13 @@ Fast web client for OpenClaw. Currently in beta. -## Setup +## Installation + +```bash +curl -fsSL https://webclaw.dev/install | bash +``` + +## Other option Create `apps/webclaw/.env.local` with `CLAWDBOT_GATEWAY_URL` and either `CLAWDBOT_GATEWAY_TOKEN` (recommended) or `CLAWDBOT_GATEWAY_PASSWORD`. These map diff --git a/apps/landing/public/install b/apps/landing/public/install new file mode 100644 index 0000000..bf756cc --- /dev/null +++ b/apps/landing/public/install @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +set -euo pipefail + +REPO_URL="https://github.com/ibelick/webclaw" +APP_DIR="webclaw" +ENV_FILE="apps/webclaw/.env.local" +TRACKING_URL="https://collector.onedollarstats.com/events" + +cat <<'EOF' + ▄▄ ▄▄ + ██ ██ +██ ██ ▄█▀█▄ ████▄ ▄████ ██ ▀▀█▄ ██ ██ +██ █ ██ ██▄█▀ ██ ██ ██ ██ ▄█▀██ ██ █ ██ + ██▀██ ▀█▄▄▄ ████▀ ▀████ ██ ▀█▄██ ██▀██ + +Fast web client for OpenClaw + +EOF + +function track_install() { + if ! command -v curl >/dev/null 2>&1; then + return + fi + + local os + local arch + os="$(uname -s 2>/dev/null || echo "unknown")" + arch="$(uname -m 2>/dev/null || echo "unknown")" + + curl -sS -X POST \ + -H "Content-Type: application/json" \ + -d "{\"name\":\"install\",\"event\":\"install\",\"properties\":{\"source\":\"install-script\",\"os\":\"${os}\",\"arch\":\"${arch}\"}}" \ + "$TRACKING_URL" >/dev/null 2>&1 || true +} + +track_install + +if ! command -v git >/dev/null 2>&1; then + echo "git is required but not found." + exit 1 +fi + +if ! command -v pnpm >/dev/null 2>&1; then + echo "pnpm is required but not found." + echo "Install it with: corepack enable && corepack prepare pnpm@latest --activate" + exit 1 +fi + +if [ -d "$APP_DIR" ]; then + echo "Directory '$APP_DIR' already exists. Skipping clone." +else + git clone "$REPO_URL" "$APP_DIR" +fi + +cd "$APP_DIR" +pnpm install + +echo "" +printf "Create %s now? [Y/n]: " "$ENV_FILE" +read -r create_env + +if [ -z "$create_env" ] || [ "$create_env" = "y" ] || [ "$create_env" = "Y" ]; then + if [ -f "$ENV_FILE" ]; then + printf "%s already exists. Overwrite? [y/N]: " "$ENV_FILE" + read -r overwrite_env + if [ "$overwrite_env" != "y" ] && [ "$overwrite_env" != "Y" ]; then + echo "Keeping existing $ENV_FILE" + create_env="skip" + fi + fi + + if [ "$create_env" != "skip" ]; then + printf "CLAWDBOT_GATEWAY_URL: " + read -r gateway_url + printf "CLAWDBOT_GATEWAY_TOKEN: " + read -r gateway_token + + mkdir -p "$(dirname "$ENV_FILE")" + { + echo "CLAWDBOT_GATEWAY_URL=$gateway_url" + echo "CLAWDBOT_GATEWAY_TOKEN=$gateway_token" + } > "$ENV_FILE" + + echo "Wrote $ENV_FILE" + fi +else + echo "Skipping env file. Create it later at $ENV_FILE with:" + echo "CLAWDBOT_GATEWAY_URL=..." + echo "CLAWDBOT_GATEWAY_TOKEN=..." +fi + +echo "" +echo "Next step: pnpm -C apps/webclaw dev" diff --git a/apps/landing/src/app.tsx b/apps/landing/src/app.tsx index f8a1d39..a36bb07 100644 --- a/apps/landing/src/app.tsx +++ b/apps/landing/src/app.tsx @@ -256,10 +256,7 @@ export function App() {

Installation

@@ -270,7 +267,7 @@ pnpm run dev`} style={{ pointerEvents: "auto" }} > - ©2026{" "} + ©{new Date().getFullYear()}{" "} =6'} + lefthook-darwin-arm64@1.13.6: + resolution: {integrity: sha512-m6Lb77VGc84/Qo21Lhq576pEvcgFCnvloEiP02HbAHcIXD0RTLy9u2yAInrixqZeaz13HYtdDaI7OBYAAdVt8A==} + cpu: [arm64] + os: [darwin] + + lefthook-darwin-x64@1.13.6: + resolution: {integrity: sha512-CoRpdzanu9RK3oXR1vbEJA5LN7iB+c7hP+sONeQJzoOXuq4PNKVtEaN84Gl1BrVtCNLHWFAvCQaZPPiiXSy8qg==} + cpu: [x64] + os: [darwin] + + lefthook-freebsd-arm64@1.13.6: + resolution: {integrity: sha512-X4A7yfvAJ68CoHTqP+XvQzdKbyd935sYy0bQT6Ajz7FL1g7hFiro8dqHSdPdkwei9hs8hXeV7feyTXbYmfjKQQ==} + cpu: [arm64] + os: [freebsd] + + lefthook-freebsd-x64@1.13.6: + resolution: {integrity: sha512-ai2m+Sj2kGdY46USfBrCqLKe9GYhzeq01nuyDYCrdGISePeZ6udOlD1k3lQKJGQCHb0bRz4St0r5nKDSh1x/2A==} + cpu: [x64] + os: [freebsd] + + lefthook-linux-arm64@1.13.6: + resolution: {integrity: sha512-cbo4Wtdq81GTABvikLORJsAWPKAJXE8Q5RXsICFUVznh5PHigS9dFW/4NXywo0+jfFPCT6SYds2zz4tCx6DA0Q==} + cpu: [arm64] + os: [linux] + + lefthook-linux-x64@1.13.6: + resolution: {integrity: sha512-uJl9vjCIIBTBvMZkemxCE+3zrZHlRO7Oc+nZJ+o9Oea3fu+W82jwX7a7clw8jqNfaeBS+8+ZEQgiMHWCloTsGw==} + cpu: [x64] + os: [linux] + + lefthook-openbsd-arm64@1.13.6: + resolution: {integrity: sha512-7r153dxrNRQ9ytRs2PmGKKkYdvZYFPre7My7XToSTiRu5jNCq++++eAKVkoyWPduk97dGIA+YWiEr5Noe0TK2A==} + cpu: [arm64] + os: [openbsd] + + lefthook-openbsd-x64@1.13.6: + resolution: {integrity: sha512-Z+UhLlcg1xrXOidK3aLLpgH7KrwNyWYE3yb7ITYnzJSEV8qXnePtVu8lvMBHs/myzemjBzeIr/U/+ipjclR06g==} + cpu: [x64] + os: [openbsd] + + lefthook-windows-arm64@1.13.6: + resolution: {integrity: sha512-Uxef6qoDxCmUNQwk8eBvddYJKSBFglfwAY9Y9+NnnmiHpWTjjYiObE9gT2mvGVpEgZRJVAatBXc+Ha5oDD/OgQ==} + cpu: [arm64] + os: [win32] + + lefthook-windows-x64@1.13.6: + resolution: {integrity: sha512-mOZoM3FQh3o08M8PQ/b3IYuL5oo36D9ehczIw1dAgp1Ly+Tr4fJ96A+4SEJrQuYeRD4mex9bR7Ps56I73sBSZA==} + cpu: [x64] + os: [win32] + + lefthook@1.13.6: + resolution: {integrity: sha512-ojj4/4IJ29Xn4drd5emqVgilegAPN3Kf0FQM2p/9+lwSTpU+SZ1v4Ig++NF+9MOa99UKY8bElmVrLhnUUNFh5g==} + hasBin: true + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -5708,6 +5769,49 @@ snapshots: kleur@4.1.5: {} + lefthook-darwin-arm64@1.13.6: + optional: true + + lefthook-darwin-x64@1.13.6: + optional: true + + lefthook-freebsd-arm64@1.13.6: + optional: true + + lefthook-freebsd-x64@1.13.6: + optional: true + + lefthook-linux-arm64@1.13.6: + optional: true + + lefthook-linux-x64@1.13.6: + optional: true + + lefthook-openbsd-arm64@1.13.6: + optional: true + + lefthook-openbsd-x64@1.13.6: + optional: true + + lefthook-windows-arm64@1.13.6: + optional: true + + lefthook-windows-x64@1.13.6: + optional: true + + lefthook@1.13.6: + optionalDependencies: + lefthook-darwin-arm64: 1.13.6 + lefthook-darwin-x64: 1.13.6 + lefthook-freebsd-arm64: 1.13.6 + lefthook-freebsd-x64: 1.13.6 + lefthook-linux-arm64: 1.13.6 + lefthook-linux-x64: 1.13.6 + lefthook-openbsd-arm64: 1.13.6 + lefthook-openbsd-x64: 1.13.6 + lefthook-windows-arm64: 1.13.6 + lefthook-windows-x64: 1.13.6 + levn@0.4.1: dependencies: prelude-ls: 1.2.1