iOS: clear and fill on a field over 120 characters leave old text behind (`estimatedDeleteCount` caps at 120)
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 76/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- ios, typescript
調査の方向性
Start in RunnerTests+TextEntry.swift and read clearTextInput and estimatedDeleteCount; then inspect the repair call in RunnerTests+TextTyping.swift. Reproduce with a 501-character value and verify that clear leaves the field empty and fill replaces the old value. The issue suggests bounding repeated delete bursts and using the existing single-burst behavior when the value cannot be read.
索引モデルが issue の本文から書いたものです。
説明
On iOS, fill <target> "" and fill <target> "<text>" delete at most 120 characters of the existing value. A longer value is only partly cleared, so a clear leaves text behind and a fill appends to the leftover instead of replacing it.
Reproduce
- A SwiftUI
TextEditor(or any text field) holding 501 characters. fill <field> "": 381 characters remain.- Put 501 characters back, then
fill <field> "<500 chars>": the field ends at 1261 characters and the fill fails text entry verification.
Seen on agent-device 0.21.28, iOS 26.5 simulator. The same code is on main (e35d8de8).
Cause
RunnerTests+TextEntry.swift:
private func estimatedDeleteCount(for element: XCUIElement) -> Int {
let valueText = normalizedElementText(element.value)
let base = valueText.isEmpty ? 24 : (valueText.count + 8)
return max(24, min(120, base))
}
clearTextInput sends that many delete keys once and never checks whether the field is empty afterwards. With 501 characters:
- clear: 501 - 120 = 381 left
- fill: 381 + 500 = 881, then the repair in
RunnerTests+TextTyping.swift(clearTextInput(app: app, repairTarget)beforetypeText(expectedText)) deletes another 120 and retypes 500: 881 - 120 + 500 = 1261
Suggested fix
In clearTextInput, re-read the value after each delete burst and keep going until it reads empty, with a bounded number of rounds so a field that never reports its value can't loop forever. Size each burst from the value just read (keep a per-burst cap if long typeText strings are slow). When the value can't be read (secure fields, bullet-only values), fall back to the current single burst, or to select-all then delete.
- 主要言語
- TypeScript
- スター
- 5.1k
- フォーク
- 339
- 平均マージ
- 11時間 59分
- マージ済み PR(30日)
- 736
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
callstack/agent-device のほかの issue
-
Limrun iOS fill reports success but drops non-ASCII text対応中かも @mvanhorn が 1 日前に担当しました。 オープンbug ready-for-agent
難易度 2/5 1〜3時間 初心者へのやさしさ 87/100
callstack/agent-device#3819 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
callstack/agent-device#1869 ·
メンテナーはふだん 1 日以内に返信
-
iOS: XCTest runner publishes window-relative frames and shifted taps for an iPad app that does not fill the screen (Windowed Apps / Stage Manager)対応中かも @thymikee が今日担当しました。 オープンneeds-triage
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
callstack/agent-device#3899 ·
メンテナーはふだん 1 日以内に返信
-
iOS 27: `_UIFloatingBarContainerView` still marks content "covered" when the container matches its parent or sits a few points below the viewport top対応中かも @jonstuebe が今日担当しました。 オープンbug
難易度 4/5 1〜2日 初心者へのやさしさ 68/100
callstack/agent-device#3883 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 24/100
callstack/agent-device#3871 ·
メンテナーはふだん 1 日以内に返信
callstack/agent-device の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
cloudscape-design/components#5184 ·
メンテナーはふだん 2 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
JarX-Concepts/react-native-platform-components#130 ·
メンテナーはふだん 1 日以内に返信
-
fix(api): optimize-for-web /preview outer catches miss asDecoderOutOfMemory on V8 OOM and SIGKILLオープンarea: backend bug priority: low
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
snapotter-hq/SnapOtter#3773 ·
メンテナーはふだん 1 日以内に返信
-
ai-driven-qa ux-audit
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
linagora/twake-contacts-frontend#386 ·
メンテナーはふだん 1 日以内に返信
-
git: README should state plainly that without --repository every reachable repository is in scopeオープンdocumentation server-git v2
難易度 1/5 1〜3時間 初心者へのやさしさ 84/100
modelcontextprotocol/servers#5225 ·
メンテナーはふだん 1 日以内に返信