fix(mobile-ui): stop forcing mobile mode on wide short screens + add mode override (#865)#866
Conversation
…mode override (#865) Chromebook をズームして高さだけ縮んだ広い画面 (例 1380x480) が意図せずスマホ モードに入る問題を修正する。狭幅判定の `(max-height: 500px)` 条件を幅 950px 以下に限定し、スマホ横持ちは拾いつつ広い画面を除外する。 加えて、ユーザーが表示モード (自動/PC/スマホ) を明示指定して localStorage に 固定できるようにする。スマホモードのモバイルドロワーに "PCモードに切り替える" ボタン、設定メニューに "表示モード" 切替を追加。一度切り替えたらそのマシンでは 維持され、設定メニューからいつでも変更できる。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖 autopilot status
Linked issue #865. Maintained by autopilot (single writer); do not edit. |
|
🚀 Preview deployed: https://smalruby.jp/smalruby3-editor/topic/autopilot-865/ |
🤖 autopilot 敵対的レビュー完了別の批判的レビュアーとして差分をレビューしました。ブロッキングな問題は無く、自動修正が必要な指摘もありませんでした。 そのまま人間レビューへ渡します。 確認した観点
ローカル検証
人間レビュー / DoD 向けメモ
|
🧪 DoD 引き継ぎ(headful Playwright / ホスト Claude 用)このコメントは DoD フェーズの引き継ぎドキュメントです。コンテナ内 autopilot は headless の
役割: PR smalruby/smalruby3-editor #866(Issue #865)の DoD を headful Playwright MCP(ホストの実 Chrome)で 対象
事前準備
検証手順(Issue の DoD チェックリスト)以下は Issue #865 の DoD をそのまま転記したもの。各項目を headful で確認し、結果を記録する。 (Issue 本文に DoD チェックリストが見つかりませんでした。Issue と PR 本文を読んで検証項目を補完してください。) 報告(完了の出口)
検証は 本番 Chrome で行うこと(Playwright の Chromium はポリシーが緩く誤検知することがある)。 |
✅ DoD 手動検証 完了(ローカル/ホストの Playwright・実 Chrome)ブランチプレビュー
判定の要点
補足(無関係)
結論: 全 DoD クリア。マージ可能。 |
takaokouji
left a comment
There was a problem hiding this comment.
PCの設定メニューは、他のメニューにならって、表示モードをクリックすると、サブメニューアイテムが表示されて、PC / SPを選べるようにしてください。また、表示モードを示す適切なアイコンを設定してください。
また、スマホモードのときに、いまはスマホモードであるため、PCモードとは異なる画面であること。もし、切り替えたければメニューから切り替え可能であること、を伝えるための方法がわかりませんでした。もし用意していないのであれば、用意してください。
用意してあれば、確認手順を提示してください。
Address review feedback on PR #866: - 設定メニューの「表示モード」を、テーマ / Ruby バージョンと同じ PreferenceMenu サブメニュー形式に変更し、専用アイコンを追加。 クリックで 自動 / PCモード / スマホモード のサブメニューが開く。 (reducers/menus.js に displayModeMenu の開閉 state を追加) - スマホモードに入ったことをユーザーに伝える一度きりの案内バー MobileModeNotice を追加。「いまはスマホ用の画面 / PC とは違う / ここから PC モードへ切り替え可能」を伝え、閉じると localStorage に 記録して以後出さない。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖 レビュー対応(@takaokouji さんのご指摘 2 件)指摘 2 件: 対応 2 件 / 返信 0 件 / 対応不要 0 件。commit ① 設定メニューの「表示モード」をサブメニュー化 + アイコン他のメニュー(テーマ / Ruby バージョン)と同じ
以前のフラットな 3 項目直置き( ② スマホモードであること/PCへ切り替えられることの気付き用意しました。 「切り替える手段」(ドロワーの『PCモードに切り替える』・設定メニューの表示モード)は既にありましたが、スマホモードだと気付かせる/PCと違うと伝える通知が無かったため、新規に追加しました。
確認手順① PC 設定メニュー(デスクトップ幅)
② スマホモードの案内バー
テスト / lint
実機ブラウザでの最終確認(DoD)は headful でお願いします。再レビューをお願いします 🙏 |
…ot-865 fix(mobile-ui): stop forcing mobile mode on wide short screens + add mode override (#865)
Summary
Chromebook をズームして高さだけ縮んだ広い画面 (例 1380×480) が意図せずスマホモードに入ってしまう問題を修正する (Issue #865)。あわせて、ユーザーが表示モードを明示指定して固定できるようにする。
Changes Made
src/lib/use-is-narrow-screen.js): 高さ条件(max-height: 500px)を 幅 950px 以下に限定 ((max-width: 950px) and (max-height: 500px))。これによりスマホ横持ち (iPhone Pro Max ~932px) は拾いつつ、Chromebook / ノート PC の一般的な幅 (>=1280px) を確実に除外する。1380×480 の Chromebook はスマホモードにならない。iPhone 縦持ちのように横が極端に狭い端末は従来どおり(max-width: 743px)で拾う。src/lib/settings/display-mode/):auto/desktop/mobileの 3 モード。localStorage (smalruby:displayMode) に保存し、そのマシンでは以後ずっと維持される。ResponsiveGuiがモード設定を優先 (src/lib/responsive-gui.jsx+src/lib/use-display-mode.js):desktopは常に PC GUI、mobileは常に MobileGui、autoは viewport 判定。設定変更は同一タブ / 他タブともにリアルタイム追従。src/components/mobile-drawer/): 意図せずスマホモードに入ったユーザーがワンタップで PC モードへ抜け出せる。src/components/menu-bar/settings-menu.jsx): 自動 / PC / スマホをいつでも切り替え可能。ja.js/ja-Hira.js)、upstream マーカー一覧、mobile-ui ドキュメントを更新。Test Coverage
test/unit/lib/display-mode-persistence.test.js— localStorage 読み書き / バリデーション / イベント発火test/unit/lib/use-display-mode.test.js— hook のイベント購読とリアルタイム追従test/unit/lib/responsive-gui.test.jsx— モード優先ロジック (desktop/mobile/auto)test/unit/components/mobile-drawer.test.jsx— PCモード切替ボタンnpm run lintが pass。Related Issues
Closes #865