Skip to content

初回起動時 OAuth ガイド: claude /login を Tray から誘導 #187

@shomatan

Description

@shomatan

Epic: #184

背景

`.app` フル同梱化 (Epic #184) が進んでも、初回起動時にユーザーが `claude /login` で claude.ai と OAuth する手順が必要。これは現状ターミナル知識が要る:

  • ターミナルセッションを開く必要を理解
  • `/login` の打ち方を理解
  • ブラウザに表示される OAuth flow を完走

非エンジニア向けには、起動時 Welcome dialog で「ログインする」をクリックするだけで完了する UX が必要。

やること

1. 初回起動判定

  • `~/Library/Application Support/Ark/onboarding.json` (もしくは existing DB) で `first_run: false` flag を持つ
  • 起動時に未 set なら Welcome dialog を出す
  • `~/.claude/.credentials.json` が既に存在する場合 (= 過去 claude /login 済み) は Welcome をスキップ

2. Welcome dialog (Renderer)

  • `packages/web/src/components/WelcomeDialog.tsx` を新規追加
  • "Ark へようこそ"、"claude.ai にログインして始める" ボタン
  • ボタン押下で IPC `ark:start-onboarding-login` を main に送る

3. main プロセス側のログインフロー

候補 A: 既存 tmux session を作って `/login` を送る方式

  • pros: 既存 session-orchestrator 経路を再利用
  • cons: tmux 内のターミナル UI を見せることになり「ターミナルレス」のメリットが薄れる

候補 B: subprocess で `claude /login` を直接 spawn し、stdout を Renderer のモーダルに stream

  • pros: ターミナルを見せず、専用 OAuth フロー UI を出せる
  • cons: claude CLI の出力フォーマット依存 (URL 抽出 / 完了検知)

候補 C: shell.openExternal で claude.ai の OAuth URL を直接開き、callback はディープリンク

  • pros: 最もリッチな UX
  • cons: claude.ai 側に Ark 用 OAuth client 登録が必要 (Anthropic 側依頼)

MVP は B 案: `claude /login` の stdout を parse して claude.ai の URL を抽出 → `shell.openExternal` で開く → polling で credentials 完了検知。

4. 完了後の挙動

  • `~/.claude/.credentials.json` 検知で onboarding 完了
  • Welcome dialog を閉じてメインダッシュボードへ
  • 初回セッションは "ようこそ、まずはここに hello と入力してみましょう" 等のチュートリアル文を表示

スコープ外

  • F6 Keychain bridge: 現状 unsupported モード。本 issue では `~/.claude/.credentials.json` 平文に依存し、F6 完成 (別途) で Keychain 経由に切替
  • 多言語化: 日本語のみ初期対応、英語は別 issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions