canary - #6985
Merged
Merged
canary#6985
Conversation
* DevOverlayに診断情報をクリップボードへコピーするボタンを追加 地下のワープ調査で必要になる値を、画面から読み上げる代わりに丸ごと持ち出せるようにする。 テレメトリは本番で無効、かつ送っているのはlocationAtom(フィルタ後)だけなので、 生の精度・実効設定を取り出す手段が無かった。 ヘッダーのステータスピル横にCOPYボタンを置き、押すと整形済みJSONをクリップボードへ載せる。 含めるのは、フィルタ前後の測位(座標・精度・速度・タイムスタンプ)、精度履歴、ETAの フェーズとアンカー、次駅と距離、ビルド情報、そして実効設定(max_permit_accuracy / eta_assist_enabled / オートモード / テレメトリ / バックグラウンド測位)。設定が分からないと 同じ測位でも挙動を説明できないため、座標と必ずセットで持ち出す。 JSONの組み立てはsrc/utils/devDiagnosticsSnapshot.tsへ純関数として切り出した (DevOverlay.tsxが既に1100行あるため)。タイムスタンプを持たない測位が届いても 例外を出さないよう、ISO文字列化はnullへ倒す。診断情報の持ち出しで落ちては本末転倒なため。 クリップボードはreact-native coreのClipboardを使う。core から切り出され将来削除が 予告されている非推奨APIだが、expo-clipboardの追加はネイティブモジュールの追加になり Devクライアントのリビルドとロックファイルの更新を伴うため、まずは依存を増やさない。 呼び出しをsrc/utils/clipboard.tsの1関数へ閉じてあるので、移行時はそこだけ差し替えればよい。 パネルのPanResponderはcaptureを使っていないため子のPressableが先にタッチを取り、 展開/折りたたみのトグルとは競合しない。折りたたみ中は上に載るcollapsedOverlayが タッチを受けるので押せない。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sfi8S4Yvob2sEzib4VUUBs * クリップボードをexpo-clipboardへ移し非推奨のreact-native Clipboardをやめる react-nativeのClipboardはcoreから切り出され「将来のリリースで削除する」と予告されている 非推奨API。現時点のRN 0.86.2では動くが、新規に使い始める先としては選ばない。 expo-clipboard@~57.0.2(expoのbundledNativeModulesがSDK 57に対して示すバージョン)を追加し、 src/utils/clipboard.tsの中だけを差し替える。setStringAsyncはPromise<boolean>を返すため、 copyTextToClipboardも非同期にして載せられたかどうかを返す。DevOverlay側は結果を待ち、 実際に載ったときだけCOPIEDを出す。失敗しているのに成功表示を出すと、貼り付けてみるまで 気付けないため。失敗時はCOPYのまま据え置き、例外はwarnで記録する。 ネイティブモジュールの追加なので、Devクライアントの再ビルドが要る。 ロックファイルはnpm 11で生成し、npm ci --dry-runが通ることを確認した。差分は expo-clipboardの12行のみで他パッケージへの波及は無い。 CodeRabbitの指摘(#6983)への対応。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sfi8S4Yvob2sEzib4VUUBs * コピー失敗時にCOPIED表示と解除タイマーを落とす 成功で立てた解除タイマーが生きているあいだに次のコピーが失敗すると、早期returnが 表示とタイマーを残したままにしていた。結果として、最後のコピーが失敗しているのに 前回のタイマーが切れるまでボタンがCOPIEDのままになる。「実際に載ったときだけCOPIEDを 出す」という契約と食い違う。 タイマーの解除を成否の判定より前へ出し、失敗時はsetHasCopied(false)して戻る。 成功直後に失敗させる回帰テストを追加した(修正前は失敗する)。 CodeRabbitの指摘(#6983)への対応。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Sfi8S4Yvob2sEzib4VUUBs --------- Co-authored-by: Claude <noreply@anthropic.com>
* 公開物に書いてよい根拠を定めるPublishing gateを自動化エージェント向け手引きに追加 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * 公開前チェックリストにPublishing gateの秘匿情報と裏取りの項目を補う Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q --------- Co-authored-by: Claude <noreply@anthropic.com>
* テレメトリを本番でオプトイン可能にする場合のリスク評価をドキュメント化 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * テレメトリ本番オプトインのリスク評価にレビュー指摘を反映 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * コンソールテレメトリの送信先が基盤に存在しない事実をリスク評価へ追記 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * リスク評価の未確定な記述を実装とポリシー原文から確定した内容へ置き換え Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * リスク評価から裏付けの無い記述を外し、ビルド設定から確認できる事実に揃える Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * コンソール経路の記述をルータ定義から言える範囲に限定 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * 公開物に書いてよい根拠を定めるPublishing gateを自動化エージェント向け手引きに追加 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * スロットルが位置送信のみに効くことをリスク評価に明記 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * 公開済みの記述の訂正は自己判断ではなく報告と指示を経る規則へ修正 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * 公開済みの記述を訂正する際の承認対象をpush以外の公開操作にも広げる Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * 訂正の速さを一律に求める記述を削除 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q * AGENTS.mdの変更を別PRへ分離するためこのブランチから取り除く Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzKkzvpiWBmFsBJvBTCc2Q --------- Co-authored-by: Claude <noreply@anthropic.com>
Contributor
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Essentials Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
devの内容をcanaryへ反映するリリース PR。変更の種類
変更内容
DevOverlay の診断情報コピー (#6983)
DevOverlay に
DIAGNOSTICS/COPYピルを 1 つ追加し、表示中の診断値(実効設定・測位の生値とフィルタ後の値・速度・精度履歴・ETA・ビルド情報)を JSON でクリップボードへ載せられるようにした。コピー成功後 1.5 秒は値がCOPIEDに変わる。新規ファイルは
src/utils/devDiagnosticsSnapshot.ts(スナップショット組み立て)とsrc/utils/clipboard.ts(コピーの薄いラッパ)。DevOverlay はsrc/screens/Main.tsxでisDevApp && devOverlayEnabledのときだけマウントされるため、本番ビルドの画面には出ない。ネイティブ依存が 1 つ増えている:
expo-clipboard@~57.0.2。ios/Podfile.lockはリポジトリに無く、build_ios_canary.ymlがpod install --repo-updateを実行するため、autolinking で解決される。この canary ビルドが新依存を含む最初のネイティブビルドになる。公開物への記述ゲート (#6984)
AGENTS.mdに、docs・README・PR 本文・レビュー返信・issue といった取り消せない公開物を書く前の条件(出典の無い主張を書かない/「未確認」で逃げない/実装の事実と運用の結果を混同しない/引用は一次情報から取る 等)と、チェックリスト「Before publishing prose」を追加した。エージェントの手引きのみの変更で、アプリの挙動には影響しない。テレメトリのオプトイン化リスク評価 (#6982)
docs/telemetry-production-optin-risk.mdを追加し、docs/README.mdから参照を張った。ドキュメントのみの追加。テスト
npm run lintが通ることnpm testが通ることnpm run typecheckが通ることorigin/dev(2fabe4d) をローカルで検証した結果:npm run lint→ Checked 767 files, No fixes appliednpm run typecheck→ エラーなしnpm test→ 287 suites / 3133 tests。ただし下記のとおりDevOverlay.test.tsxの 1〜2 件がタイムアウトで落ちたsrc/components/DevOverlay.test.tsxの「診断情報のコピー」ブロックが、フルスイートを並列実行したときだけExceeded timeout of 5000 msで落ちる。ローカルで 2 回実行し、1 回目は 2 件・2 回目は 1 件(クリップボードへ載せられなかった場合はCOPIEDを出さない)が失敗しており、件数が実行ごとに揺れる。同ファイルを単独実行すると 51 件すべて 5.0 秒で pass する。#6983 の CI(Jest, 1m23s)も pass している。実行環境の負荷でタイムアウト閾値を超えているだけで、production コードの不具合ではないと判断してチェックを ON にしている。テスト側の安定化は別途対応する。
関連Issue
スクリーンショット(任意)
未添付: 製品画面の変更はありません。見た目が変わるのは DevOverlay(
src/screens/Main.tsxでisDevApp && devOverlayEnabledのときだけマウントされる開発ビルド専用オーバーレイ)に増えたDIAGNOSTICS/COPYピル 1 つだけで、未添付の理由は元 PR #6983 に記載済みです。🤖 Generated with Claude Code