- Add a dedicated plan-approval bottom sheet (interactive-prompt) driven by
ExitPlanMode's now-4-option layout (Claude Code v2.1.177), with
approve/YOLO/reject/feedback wired through respondPlan(requestId).
- PermissionManager: stop auto-expiring AskUserQuestion/plan prompts and stop
releasing pending prompts on client disconnect — they reflect real CLI
state and must survive reconnects.
- Detect server-rejected tokens (401/403 or failed WS handshake) and bounce
back to the login screen via a new AUTH_EXPIRED_EVENT.
- Add `/cert` endpoint + Settings entry so phones can download/trust the
self-signed HTTPS cert directly; fix cert IP detection on non-macOS hosts.
- Add `clawtap reset-login` command and `/api/auth/reset-attempts` endpoint
to clear login rate-limit lockouts.
- Codex adapter: only forward recognized keystrokes/option indices to tmux,
never the synthetic "deny" dismissal signal.
- PWA: actively poll for service-worker updates (iOS standalone apps don't
reliably check on navigation).
- update-service.sh: install tmux if missing, prompt to create the env file
instead of failing, add --skip-firewall, and improve logging.
- fix(pwa): iOS keyboard gap caused by WebKit viewport-fit=cover bug.
After keyboard open/close, 100dvh permanently shrinks. Track max
innerHeight in --app-height CSS variable as stable replacement.
- feat(pwa): auto-prompt notification permission on first login in
standalone mode (once only, skips if denied).
- refactor: remove duplicate notification toggle from header menu
(already in Settings).
- feat(dev): expose Vite dev server on network (host: true) for
mobile testing via Tailscale.
- docs: update README — add Task Progress FAB, fix notification
flow description, document OPENAI_API_KEY / VAPID_EMAIL env vars,
clarify voice input backends, add CLI --version/--help, update
.env.example.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New Chat → Chat uses replaceState so back skips new chat screen
- Active tab persisted to sessionStorage, restored on back navigation
- Scroll-to-bottom button positioned relative to footer (not hardcoded)
- overscroll-behavior: none to prevent iOS rubber-band
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add safe-top to all full-screen overlays (PlanMode, DiffViewer, ChatView PlanViewer)
- Add safe-top to SessionsView drill-down header + swipe-back via pushState
- Move safe-top to ChatView outer container (persists when header hides)
- Add skipWaiting + clients.claim for immediate SW updates
- Create monochrome 96x96 badge icon for Android notifications
- Add -webkit-tap-highlight-color: transparent for dark theme
- Show SW update banner on all views, not just SessionsView
- Fix precache duplicates with specific glob patterns (18→16 entries)
- Add safe-bottom to ChatView saveToast
- Fix stale poll interval comment (10s→3s)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Multi-adapter mobile UI for AI coding assistants.
Supports Claude Code, Codex CLI, and Gemini CLI through one interface.
Features:
- Real-time bidirectional sync via tmux + WebSocket
- Cross-AI review (send one AI's output to another for review)
- Multi-review tabs with minimize/expand
- Push notifications (PWA) with smart session-aware filtering
- Three-channel event system (hooks, file watcher, pane monitor)
- Voice input, image paste, draft persistence
- Terminal-native design (JetBrains Mono, dark theme, pixel art claw)
- CLI with --adapter flag on every command
- Zero-overhead fire-and-forget hooks