iOS: message action sheet opens on almost every scroll (200 ms long-press timeout)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 85/100
調査の方向性
mobile/lib/features/channels/message_long_press_region.dartから始めて、196行目付近でiOSの長押し時間がどのように選択されているかを読んでください。Flutterのデフォルトのタイムアウトと、issueで提案されている時間を比較してください。通常のスクロールではメッセージのアクションシートが開かず、意図的に長押しした場合は引き続き開く状態が完了の目安です。
索引モデルが issue の本文から書いたものです。
説明
What happens
On iPhone, the message action sheet (emoji row, Reply / Copy link / Remind me, Mark unread, Copy text, Edit, Delete) opens on almost every touch while scrolling a channel or thread. A normal scroll that starts with even a brief pause before the finger moves triggers it. Starting the touch on a different part of the screen does not help, because every row is a message.
Steps
- Open any channel with a long history in the iOS app.
- Scroll through it at a normal pace.
- The message action sheet opens repeatedly, interrupting scrolling.
Expected
The sheet opens only on a deliberate press and hold, as in other iOS apps and in Buzz on Android.
Likely cause
mobile/lib/features/channels/message_long_press_region.dart line 11:
const iosMessageLongPressDuration = Duration(milliseconds: 200);
This is used only when defaultTargetPlatform == TargetPlatform.iOS (around line 196). Other platforms use Flutter's default long-press timeout of 500 ms. The 200 ms value came in with ea143ea (#8055, "native iOS message menus and reaction sheets", 2 Oct). 200 ms is well inside the time a normal scroll gesture spends before crossing the drag threshold, so the hold wins against the scroll.
Suggested fix
Use the platform default (kLongPressTimeout, 500 ms) on iOS too, or at least something close to iOS's own context-menu timing. A setting to change or disable it would also help.
Environment
iPhone, current TestFlight/App Store build of Buzz mobile (as of 20 Oct 2026).
- 主要言語
- Rust
- スター
- 36.2k
- フォーク
- 4.8k
- 平均マージ
- 1日 11時間
- マージ済み PR(30日)
- 249
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
block/buzz のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
Mobile: show Topic, then Purpose, when a channel has no Description対応中かも @chkdesign が 6 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
nn::linear: weight initialization depends on `bias` because the bias is created before the weight対応中かも @monfortema が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
LaurentMazare/tch-rs#1067 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
FavioVazquez/mollify#62 ·
-
C-enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
obi1kenobi/cargo-semver-checks#1785 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 61/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
fendouai/awesome-deepseek-harness#125 ·
メンテナーはふだん 4 日以内に返信