v1.6.0 最終リリース動作確認
試験概要
| 項目 | 内容 |
|---|---|
| 対象アプリ | AI KeyChain v1.6.0 |
| 試験日 | 2026-04-14 |
| 試験実施者 | Claude Code (claude-opus-4-6) |
| GitHub Issue | #64 |
試験環境
| 項目 | 内容 |
|---|---|
| OS | macOS 26.2 |
| アーキテクチャ | arm64 |
| Swift | 6.3 |
| ビルド | Release + create-dmg + entitlements 付き ad-hoc 署名 |
| インストール元 | build/AIKeyChain-v1.6.0.dmg (1.9MB) |
エビデンス
メイン画面(日本語)

キー一覧、カテゴリサイドバー、ツールバー(Proxy バッジ、Import、+ Add Key)が正しく表示。
メイン画面(英語)

言語切替で全UI文字列が英語化(Categories, AI API, Code & Git, etc.)。
Add Key フォーム(未選択状態)

Service / Category が「Select a ...」プレースホルダー状態で開く(#68 修正)。
Add Key フォーム(サービス選択後)

GitHub 選択 → Environment Variable = GITHUB_TOKEN、Category = Code & Git に自動入力。
Mode Select ダイアログ(日本語)

3モードカード(Standard / Secret Reference / Proxy)、Proxy 選択中。
Mode Select ダイアログ(英語)

英語ローカライズ確認。
Mode Comparison 展開(上部)

「Mode Comparison Details」展開。各モードの星評価と説明。
Mode Comparison スクロール中(比較テーブル)

「Key Reach Scope」テーブル表示(Parent env / Child memory / Dump leakage / App always-on)。
Mode Comparison 末尾(Secret Ref vs Proxy の違い)

Secret Reference vs Proxy の技術的違いを注意喚起表示。
Help メニュー

User Manual / Change Mode / Recovery Guide / Shell Cleanup / 言語 / Language / Show Tutorial。
言語サブメニュー

🇯🇵 日本語 / 🇺🇸 English、現在の言語にチェックマーク。
Activity ログビュー(空状態)

Proxy モード起動直後。`Today: 0 requests` / "No Activity" 表示。
Activity ログビュー(全シナリオ網羅後)

`Today: 7 requests / Errors: 4` — 正常系・異常系の全パターンが記録:
- 200 OK × 3: xAI 正常リクエスト(通常 + ストリーミング含む、latency 4-7s)
- 403 × 2: トークン未送信・不正トークン
- 502 × 1: 未知ホスト
- 400 × 1: 破損HTTP
機密情報漏洩なし — Service / Endpoint / Status / Latency のみ表示。キー値・トークン値・リクエストボディは一切非表示。
カテゴリフィルタ

AI API カテゴリ選択で該当 4 件のみ表示(3/4 Configured)。
Proxy 正常系・異常系 網羅試験
全 7 シナリオ全パス。Activity ビューで全件ログ記録を確認済み。
| # | 種別 | シナリオ | 期待 | 結果 | Latency |
|---|---|---|---|---|---|
| 1 | 異常 | トークンなし | 403 | ✅ 403 | 0ms |
| 2 | 異常 | 間違ったトークン | 403 | ✅ 403 | 0ms |
| 3 | 異常 | 未知ホスト | 502 | ✅ 502 | 0ms |
| 4 | 異常 | 破損HTTP | 400 | ✅ 400 | 0ms |
| 5 | 正常 | xAI 通常リクエスト | 200 | ✅ 200 OK | 4.2s |
| 6 | 正常 | xAI 連続リクエスト | 200 | ✅ 200 OK | 5.1s |
| 7 | 正常 | xAI ストリーミング | 200 | ✅ 200 OK | 7.0s |
Codex レビューで発見した Activity ログ記録漏れを修正 (PR #85)
修正前は processRequest の 3 つの early-return 分岐(UTF-8 変換失敗 / HTTP parse 失敗 / セッショントークン不一致)で proxyLogStore.append が呼ばれず、特に「クライアントが ANTHROPIC_BASE_URL のみ設定してトークンヘッダを送らないケース」で 403 拒否が Activity に記録されない不具合があった。
| 修正前 | 修正後 | |
|---|---|---|
| 200 OK 記録 | ✅ | ✅ |
| 403 (未記録 3 分岐) 記録 | ❌ 空のまま | ✅ 全記録 |
| エラー総数カウント | 不正確 | 正確 |
受信リクエスト総数 (requestCount) | upstream 到達のみ | 受信全件 |
Xcode ユニットテスト
PR #85 で Xcode テストターゲットを追加(project.yml 更新 + XcodeGen 再生成)。
$ DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
xcodebuild test \
-project AIkeychain.xcodeproj \
-scheme AIkeychain \
-destination 'platform=macOS' \
CODE_SIGN_IDENTITY="-" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
Test run with 67 tests in 13 suites passed after 0.974 seconds.
** TEST SUCCEEDED **テスト構成 (67件 / 13スイート)
| スイート | 件数 | 内容 |
|---|---|---|
| ProxyRoute Tests | 4 | ルート検出 |
| HTTPRequestParser Tests | 4 | HTTP parse |
| ProxyServer Tests | 3 | 起動/停止 |
| HeaderInjectionSecurityTests | 2 | ヘッダ注入 |
| SetupManager Tests | 5 | .zshrc lifecycle |
| ServiceType Tests | 6 | enum / metadata |
| KeyCategory Tests | 2 | category rules |
| KeyEditorViewModel Tests | 10 | ViewModel |
| KeychainService Tests | 6 | Keychain CRUD |
| KeyListViewModel Tests | 7 | List ViewModel |
| ProxyLog Tests | 7 | Log store |
| ZshrcExporter Tests | 7 | .zshrc / .env 出力 |
| KeyManagementMode Tests | 2 | 3 モード |
| 合計 | 67 | ALL PASS |
v1.6.0 全リリースチェック項目
新機能
- [x] Secret Reference モード (keychain:// + akc run)
- [x] Activity ログモニタリング (#22)
- [x] 英語対応 (#67) — 81箇所 L10n 化
- [x] 言語切替メニュー(メインウィンドウのツールバー)
- [x] アプリアイコン表示(AppIcon.icns 同梱)
バグ修正
- [x] 新規キー追加フォーム初期選択問題 (#68, #69)
- [x] ModeSelectView スクロール対応
- [x] ModeCard / 比較リンクのタップ範囲拡大
- [x] 言語切替の即時反映
- [x] DMG ビルド手順書 (#71)
セキュリティ (Codex レビュー #73)
- [x] Proxy セッショントークン認証 (#74)
- [x] envVarName バリデーション
- [x] X-AIKeyChain-Token の upstream 漏洩防止
- [x] akc dry-run シークレット非表示 (#78)
堅牢性 (Codex レビュー)
- [x] .zshrc BEGIN/END マーカー方式 + レガシー自動アップグレード (#75)
- [x] HTTP リクエスト TCP 分割対応 (#76)
- [x] Proxy レスポンス転送(バッファリング、NWConnection制約による)(#77)
- [x] sendErrorResponse の JSONSerialization エスケープ
- [x] ad-hoc 署名に network entitlements 必須化
- [x] Activity ログ記録漏れ修正 (#84, PR #85) — 3 つの early-return で append 呼び出し追加
試験インフラ
- [x] Xcode ユニットテストターゲット追加 (project.yml + XcodeGen)
- [x] 67/67 ALL PASS
- [x] Codex レビュー実施 (正常系 + 異常系)
リリース
- [x] DMG 作成(entitlements 付き、1.9MB)
- [x] DMG インストール・起動確認
- [x] 試験仕様書作成 (v1.6.0-final.md)
- [x] 全シナリオエビデンス取得 (200 OK 含む)
- [ ] GitHub Release 作成
- [ ] README 更新(3モード比較表)
判定
動作確認テスト全項目 PASS ✅
- UI 試験 14 項目 全パス
- Proxy 機能試験 7 項目 全パス (正常系 200 OK × 3 含む)
- Xcode ユニットテスト 67/67 パス
- Codex コードレビュー 正常系・異常系 両方実施
リリース準備完了。