Skip to content

Releases: TongilKim/ClauTunnel

Fix pairing screen on cold restart from Expo Go

Choose a tag to compare

@TongilKim TongilKim released this 19 Mar 08:49
cf34b16

Bug Fixes

  • Fix pairing screen shown on cold restart from Expo Go (#54, #56)

    • Expo Go caches the initial deep link URL — on cold restart, the same code= from the previous QR scan caused the app to sign out
      the valid session and show the pairing screen
    • Track last redeemed pairing code in SecureStore to skip re-pairing for cached URLs
    • Cache auth tokens in SecureStore adapter to recover sessions when Supabase's internal refresh fails on cold start (network not
      ready)
    • Validate expires_at on sessions returned by getSession() and refresh expired tokens synchronously
    • Skip cached token recovery when a new pairing code is present to avoid restoring old sessions during re-pairing
  • Fix mobile server setup (f3ad7c5)

    • Reset local changes before git pull in mobile server setup to avoid conflicts

Improvements

  • Auto-detect local mobile project in monorepopnpm start from apps/cli now automatically uses the sibling apps/mobile
    directory instead of cloning to ~/.clautunnel/repo/, eliminating the need for clautunnel mobile-setup during development

v1.7.0

Choose a tag to compare

@TongilKim TongilKim released this 15 Mar 14:26

What's New

QR-Based Device Pairing

Replace email/password mobile login with secure QR code pairing. Run clautunnel start on your computer, scan the QR code with Expo Go, and you're connected — no credentials to type on your phone.

  • Pairing codes are reusable within a 5-minute TTL for easy reconnection
  • Automatic retry on network errors during background→foreground transitions
  • Account switching support: scanning a new QR while already paired signs out the old session first
  • Pairing codes created via Edge Function (service role) with direct INSERT policy removed

clautunnel reset Command

New built-in command to cleanly reset to a fresh user state — stops processes, clears Supabase data, uninstalls CLI & ngrok, and removes local config. Supports --skip-db and --skip-ngrok flags.

Bug Fixes

  • Fix "Network request failed" when scanning QR after disconnect (retry with delay)
  • Fix instructions screen flashing briefly during warm-start deep links
  • Fix error screen flashing for one frame before pairing spinner appears
  • Move Expo Go install links below QR code for better readability
  • Reorder reset steps so CLI uninstall runs last (safer if earlier steps fail)
  • Add port 8081 cleanup to reset script
  • Fix Expo port conflicts in clautunnel start

Tests

  • Add P0 auth store tests: retry logic, verifyOtp failure, re-pairing sign-out, initialize with existing session/URL, onAuthStateChange updates, disconnect cleanup
  • Add pair screen logic tests: cold/warm-start deep link guards, URL parsing, render state decisions

v1.6.2

Choose a tag to compare

@TongilKim TongilKim released this 13 Mar 16:05

What's New

CLI

  • Auto-kill stale ngrok processes — leftover ngrok processes no longer cause ERR_NGROK_334 when starting a new tunnel
  • Expo Go install links — first-time users now see iOS/Android install links above the QR code, preventing the "No usable data found" error when Expo Go isn't installed

v1.6.0

Choose a tag to compare

@TongilKim TongilKim released this 11 Mar 14:32

What's New

Mobile

  • Fix markdown clipping in chat bubbles — long inline-code tokens and paragraphs no longer get cut off mid-word
  • Widen tool-use message cards — Edit/Write/Tool cards now fill the assistant bubble width instead of shrinking to content
  • Fix badge count — ended session count is now shown instead of offline count
  • Input messages no longer grouped — each user message renders as its own bubble, matching expected chat UX

CLI

  • Auth error detection — auth/API errors are now detected and broadcast to mobile
  • Harden compact fallback — improved completion handling in compact mode

E2E Testing

  • Comprehensive Maestro test suite — added 20+ edge-case flows covering permissions, model picker, command search, session CRUD, resume, and more
  • Seq-based testIDs — user message bubbles now use stable seq-based identifiers instead of position-based indices
  • Tool-use width probe — runtime width verification for tool-use cards in test mode
  • Android + iOS CI — stabilized E2E runs on both platforms

CI/CD

  • Codex PR review + Claude fix workflow — dual-agent review pipeline

v1.5.1

Choose a tag to compare

@TongilKim TongilKim released this 05 Mar 15:43

Highlights

  • Stabilized the Plan Mode approval flow: when approving ExitPlanMode, the CLI now safely falls back to the original input if updatedInput is missing.
  • Unified permission mode validation by moving duplicated validation logic into a shared utility.
  • Hardened pending-state cleanup during session/model/permission transitions to prevent stuck permission/question UI states.
  • Improved shutdown and stop reliability: better machine offline handling on shutdown and safer PID-file based stop behavior.
  • Aligned session list online/offline status semantics with chat room status behavior.
  • Moved the session status dot to sit next to the Active/Ended label in the session card.
  • Fixed mobile chat header layout so long titles no longer overlap with status badges (for example CLI Offline).

Testing

  • Added/expanded regression tests across CLI and mobile for permission mode flow, pending-state cleanup, PID handling, and session status rendering.

Update

  • npm: npm install -g @tongil_kim/clautunnel@1.5.1
  • Homebrew: brew update && brew upgrade clautunnel

Full Changelog: v1.5.0...v1.5.1

v1.4.0

Choose a tag to compare

@TongilKim TongilKim released this 02 Mar 04:39

What's Changed

  • feat: Add PR review agent with GitHub Agentic Workflows by @TongilKim in #1
  • refactor: Remove dead code and consolidate duplicated logic by @TongilKim in #2
  • Fix: Send error feedback when rejecting duplicate requests by @TongilKim in #3
  • Fix AskUserQuestion deadlock in SDK session by @TongilKim in #5
  • chore: Change default model from Sonnet 4.5 to Opus 4.6 by @TongilKim in #6
  • fix: Prevent isProcessing deadlock on unexpected stream termination by @TongilKim in #7
  • fix: Auto-grow multiline input and fix Claude message bubble width by @TongilKim in #8
  • fix: Queue messages during processing & add status sync by @TongilKim in #9
  • fix: Show all ended sessions in resume picker by @TongilKim in #12
  • feat: Auto-set session title from first user message by @TongilKim in #13
  • fix: Update session title in real-time and fix overflow by @TongilKim in #14
  • fix: Broadcast model confirmation when model doesn't change by @TongilKim in #15
  • ui: Replace Claude text avatar with official logo by @TongilKim in #16
  • feat: Collapsible code diff display for tool use by @TongilKim in #17
  • perf: Use expo-image for Claude avatar to fix slow icon rendering by @TongilKim in #18
  • feat: Add cancel/stop button to interrupt Claude mid-processing by @TongilKim in #19
  • chore: Remove unused expo-haptics from all components by @TongilKim in #20
  • fix: Prevent expanded tool accordion from pushing content behind input bar by @TongilKim in #21
  • fix: Auto-fallback to new session when resume fails by @TongilKim in #22
  • feat: Status-response and typing indicator on reconnect by @TongilKim in #23
  • fix: Persist Supabase session tokens after refresh by @TongilKim in #24

New Contributors

Full Changelog: v0.1.9...v1.4.0

v0.1.9

Choose a tag to compare

@TongilKim TongilKim released this 10 Feb 14:19

What's New

  • Updated SDK version
  • Bug fixes and improvements

Install

npm install -g @tongil_kim/termbridge

Or via Homebrew:

brew tap TongilKim/termbridge
brew install termbridge

Full Changelog: v0.1.8...v0.1.9