diff --git a/README.md b/README.md index 1f6206cc..1cf2aec2 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Run Claude Code / Codex / Gemini sessions locally and control them remotely thro ## Features +- **Seamless Handoff** - Work locally with native Claude Code or Codex, switch to remote when needed, switch back anytime. - Start AI coding sessions from any machine. - Monitor and control sessions from your phone or browser. - Approve or deny tool permissions remotely. diff --git a/docs/guide/how-it-works.md b/docs/guide/how-it-works.md index 05ff0fcd..aedb5f55 100644 --- a/docs/guide/how-it-works.md +++ b/docs/guide/how-it-works.md @@ -166,3 +166,56 @@ For remote access outside your local network: - **Cloudflare Tunnel** (recommended) - Free, secure, reliable - **Tailscale** - Mesh VPN for private networks - **ngrok** - Quick setup for testing + +## Seamless Handoff + +HAPI's defining feature is the ability to seamlessly hand off control between local terminal and remote devices without losing session state. + +### Local Mode + +When working in local mode, you have the full terminal experience — it is native Claude Code or Codex: + +- Direct keyboard input with instant response +- Full terminal UI with syntax highlighting +- Best for focused, uninterrupted coding sessions +- All AI processing happens locally on your machine + +### Remote Mode + +Switch to remote mode when you need to step away: + +- Control via Web/PWA/Telegram from any device +- Approve permissions on the go +- Monitor progress while away from your desk +- Session continues running on your local machine + +### How Switching Works + +``` +┌─────────────────┐ ┌─────────────────┐ +│ Local Mode │◄──────────────────►│ Remote Mode │ +│ (Terminal) │ │ (Phone/Web) │ +└─────────────────┘ └─────────────────┘ + │ │ + │ ┌────────────────────────────┐ │ + └─►│ Same Session, Same State │◄─────┘ + └────────────────────────────┘ +``` + +**Local → Remote:** +- Receive a message from phone/web +- Session automatically switches to remote mode +- Terminal shows "Remote mode - waiting for input" + +**Remote → Local:** +- Press double-space in terminal +- Instantly regain local control +- Continue typing as if you never left + +### Use Cases + +1. **Remote Control While Away** - Start a session at your desk, continue from your phone during commute or coffee break + +2. **Permission Approval** - AI requests file access, you get notified on phone, approve with one tap, session continues + +3. **Multi-Device Collaboration** - View session progress on your phone while your desktop does the heavy lifting diff --git a/docs/guide/quick-start.md b/docs/guide/quick-start.md index 0dda463d..439c0b07 100644 --- a/docs/guide/quick-start.md +++ b/docs/guide/quick-start.md @@ -52,6 +52,7 @@ Enter your access token to log in. ## Next steps +- [Seamless Handoff](/guide/how-it-works#seamless-handoff) - Switch between terminal and phone seamlessly - [Remote access](/guide/installation#remote-access) - Access HAPI from anywhere - [Notifications](/guide/installation#telegram-setup) - Set up Telegram notifications - [Install the app](/guide/pwa) - Add HAPI to your home screen diff --git a/website/src/components/AppShowcase.tsx b/website/src/components/AppShowcase.tsx index 8f82d21d..d2fca04c 100644 --- a/website/src/components/AppShowcase.tsx +++ b/website/src/components/AppShowcase.tsx @@ -1,6 +1,6 @@ import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel"; -import { Laptop, Smartphone, RefreshCw, Wifi } from "lucide-react"; +import { Laptop, Smartphone, RefreshCw, Wifi, ArrowLeftRight } from "lucide-react"; import { useTranslation } from "react-i18next"; export default function AppShowcase() { @@ -91,6 +91,18 @@ export default function AppShowcase() { {t('showcase.remoteControl.desc')}
+ ++ {t('showcase.modeSwitch.desc')} +
+