Skip to content

fix(header): 接続・切断後のフォーカスを summary へ戻す + SIWE flag テストのずれを直す - #545

Merged
cipherwebllc merged 3 commits into
mainfrom
test/wallet-badge-siwe-flags
Sep 21, 2026
Merged

cipherwebllc merged 3 commits into
mainfrom
test/wallet-badge-siwe-flags

Conversation

@cipherwebllc

@cipherwebllc cipherwebllc commented Sep 21, 2026

Copy link
Copy Markdown
Owner

#541#543 の Opus 5 抜け漏れチェックで見つかった既存の問題 2 件 (どちらも WalletBadge)。

1. テストの flag holder が実装とずれていた (commit 1・テストのみ)

tests/components/WalletBadge.test.tsx の flag holder は実在しない enableBilling を持ち、実装の siweEnabled が読む enableUsageFee / enableHandles を欠いていた。mock されない flag は実 env の false 固定になるので、掟 7 (「SIWE flag を足し忘れるとヘッダからサインインできない」) を守るテストがこの 2 flag で効いていなかった。

  • holder を実装の 8 flag に一致させる
  • フェンス: holder のキーを components/WalletBadge.tsxsiweEnabled ブロックの env.enable* と突き合わせる (今後 flag を足したらテストも足さないと落ちる)
  • flag 1 本ずつ「のみ ON → ログイン UI が出る」を it.each で網羅

2. 接続・切断のあとフォーカスが body に落ちる (commit 2)

メニュー内のボタンで接続 / 切断すると、押したボタンごと <details> が作り直されてフォーカスが body へ落ちる (#543 以前からの挙動)。メニュー内の操作を起点にしたときだけ、作り直された summary へフォーカスを戻す。

  • ページ読み込み時の自動再接続・ページ側の接続ボタンではフォーカスを奪わない
  • 接続が失敗・拒否で終わったら予約を捨てる

可視文言の変更なし・money-path 不変・page ファイル変更なし・新規依存なし (react の useEffect / useRef のみ)。

検証

  • WalletBadge テスト 45 件 pass (フォーカス 5 件・flag 9 件を追加)
  • Opus 5 抜け漏れチェック: P0 なし・P1 2 を反映 — ①フォーカスは body に落ちているときだけ戻す (承認待ちの間に利用者が別の場所へ移していたら奪わない・予約が残る 3 経路をまとめて塞ぐ) ②フェンスに「ブロック内の enable*env. 直読み」を追加 (分割代入や helper で足した flag が黙って通るのを防ぐ)。反映後も実機で activeElement = SUMMARY を再確認
  • 実機 (mock wallet・next dev -p 3142): 接続直後の document.activeElement = ヘッダの SUMMARY (アドレス表示)・details[open] = 0
  • typecheck / eslint OK
  • full vitest: 566 files pass・失敗なし。残る 1 file tests/lib/license/stock.test.ts は既知の wasmoon flaky で今回は worker がハング (CPU 99% で無応答) → node scripts/run-lua-tests.mjs で 213/213 pass (attempt 1 は同じハングで timeout・attempt 2 で成功)

🤖 Generated with Claude Code

https://claude.ai/code/session_01HeizmagJBgL5peL5mQpxkc

cipherwebllc and others added 2 commits September 22, 2026 04:16
旧 holder は実在しない enableBilling を持ち、実装が読む enableUsageFee / enableHandles を
欠いていた (mock されない flag は実 env の false 固定 = 掟 7 のガードが 2 flag で無効)。
holder のキーを siweEnabled のソースと突き合わせるフェンスと、flag 1 本ずつの網羅テストを追加。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HeizmagJBgL5peL5mQpxkc
接続 / 切断で branch が入れ替わると、押したボタンごと <details> が作り直され、フォーカスが
body へ落ちていた (キーボード利用者は位置を失う)。メニュー内の操作を起点にしたときだけ、
作り直された summary へフォーカスを戻す。

- ページ読み込み時の自動再接続・ページ側の接続ボタンではフォーカスを奪わない
- 接続が失敗・拒否で終わったら予約を捨てる

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HeizmagJBgL5peL5mQpxkc
@vercel

vercel Bot commented Sep 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
openpay Ignored Ignored Preview Sep 21, 2026 7:51pm UTC

Request Review

…ク反映)

- 承認待ちの間に利用者が別の場所へフォーカスを移していた場合、ヘッダへ奪っていた。
  予約が残る 3 経路 (長い承認待ち・同一 error の再発・state を変えない disconnect) を
  「落ちたフォーカスを拾うだけ」の 1 条件でまとめて塞ぐ
- フェンスは env.enableX という書き方にしか反応せず、分割代入や helper 経由で flag を足すと
  holder にも無いまま一致して通っていた → ブロック内の enable* は env. 直読みであることも検査
- 全 OFF テストの題が実態 (8 flag) とずれていたのを直す

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HeizmagJBgL5peL5mQpxkc
@cipherwebllc
cipherwebllc merged commit bf4dbef into main Sep 21, 2026
7 checks passed
@cipherwebllc
cipherwebllc deleted the test/wallet-badge-siwe-flags branch September 21, 2026 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant