diff --git a/README.md b/README.md index 8b4725a8..1afc6b06 100644 --- a/README.md +++ b/README.md @@ -74,12 +74,6 @@ The fastest way to get started — no local setup required. Get a fully managed, **[Get started with CloudCLI Cloud](https://cloudcli.ai)** -### Desktop App - -Download the latest macOS or Windows desktop app from the **[GitHub Releases](https://github.com/siteboon/claudecodeui/releases)** page. - -Use the desktop app to open CloudCLI Cloud environments, switch between local and remote workspaces, copy mobile/browser URLs, and keep Local CloudCLI available from your menu bar or tray. To work locally, choose **Local CloudCLI** in the desktop app; it will use your running local server or start one for you. - ### Self-Hosted (Open source) #### npm @@ -111,6 +105,16 @@ npx @cloudcli-ai/cloudcli@latest sandbox ~/my-project Supports Claude Code, Codex, and Gemini CLI. See the [sandbox docs](docker/) for setup and advanced options. +### Desktop Companion App + +CloudCLI Desktop is an optional native companion for CloudCLI Cloud and Local CloudCLI. It ships from this repository's GitHub Releases and keeps CloudCLI available from your menu bar or tray. + +- **[macOS](https://cloudcli.ai/download/macos)** +- **[Windows](https://cloudcli.ai/download/windows)** +- **[Download page](https://cloudcli.ai/download)** · **[GitHub Releases and checksums](https://github.com/siteboon/claudecodeui/releases)** + +Use it to open CloudCLI Cloud environments, switch between local and remote workspaces, and copy mobile/browser URLs. To work locally, choose **Local CloudCLI** in the desktop app; it will use your running local server or start one for you. + --- @@ -125,7 +129,8 @@ CloudCLI UI is the open source UI layer that powers CloudCLI Cloud. You can self | **Setup** | `npx @cloudcli-ai/cloudcli` | `npx @cloudcli-ai/cloudcli@latest sandbox ~/project` | No setup required | | **Isolation** | Runs on your host | Hypervisor-level sandbox (microVM) | Full cloud isolation | | **Machine needs to stay on** | Yes | Yes | No | -| **Mobile access** | Any browser on your network | Any browser on your network | Any device, native app coming | +| **Mobile access** | Any browser on your network | Any browser on your network | Any device | +| **Desktop companion** | Optional. Choose Local CloudCLI | Optional. Choose Local CloudCLI | Optional. Opens cloud environments | | **Agents supported** | Claude Code, Cursor CLI, Codex, Gemini CLI | Claude Code, Codex, Gemini CLI | Claude Code, Cursor CLI, Codex, Gemini CLI | | **File explorer and Git** | Yes | Yes | Yes | | **MCP configuration** | Synced with `~/.claude` | Managed via UI | Managed via UI | diff --git a/index.html b/index.html index 37d2217d..1fdfcc7c 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,15 @@ CloudCLI UI - + + + + + + diff --git a/src/components/auth/view/AuthErrorAlert.tsx b/src/components/auth/view/AuthErrorAlert.tsx index 96a6be41..b9b65625 100644 --- a/src/components/auth/view/AuthErrorAlert.tsx +++ b/src/components/auth/view/AuthErrorAlert.tsx @@ -1,3 +1,5 @@ +import { AlertCircle } from 'lucide-react'; + type AuthErrorAlertProps = { errorMessage: string; }; @@ -8,8 +10,12 @@ export default function AuthErrorAlert({ errorMessage }: AuthErrorAlertProps) { } return ( -
-

{errorMessage}

+
+ +

{errorMessage}

); } diff --git a/src/components/auth/view/AuthInputField.tsx b/src/components/auth/view/AuthInputField.tsx index b382a059..86b68854 100644 --- a/src/components/auth/view/AuthInputField.tsx +++ b/src/components/auth/view/AuthInputField.tsx @@ -1,3 +1,7 @@ +import { useState } from 'react'; +import type { ComponentType } from 'react'; +import { Eye, EyeOff } from 'lucide-react'; + type AuthInputFieldProps = { id: string; label: string; @@ -8,13 +12,14 @@ type AuthInputFieldProps = { type?: 'text' | 'password' | 'email'; name?: string; autoComplete?: string; + icon?: ComponentType<{ className?: string }>; }; /** * A labelled input field for authentication forms. * Renders a `