Four commits. Three change tests and scripts/instrumented.sh; ONE CHANGES APP CODE (ChatScreens.kt). (1) Sign-up: the helpers typed the relay, then tapped Create an account; the keyboard slides in after performScrollTo measures, so the tap landed on the keyboard (logged: toggle at y=1878, content ending at y=1517). The toggle is now tapped first, then the email field is waited for. (2) Peers: the suites added peerjvmone, a standing relay1 account with no one-time prekeys left and 114 uncollected messages. instrumented.sh now creates two fresh accounts per run with the interop peer (contactPeer, and echoPeer running autoreply), with no fallback to peerjvmone. The reply case now fails when no echo arrives instead of passing silently, and FeatureUseTest waits for the lookup result instead of a disabled confirm button. (3) Groups: the test matched group-\d+ but group ids are the relay randomHexToken(), so it passed only when the id started with a digit (10 in 16); now group-[0-9a-f]{16,}. (4) APP: the chat opened at, and followed the keyboard to, its newest message with listState.scrollToItem, which forces a layout; the screen is composed inside the Scaffold measure pass, so it threw "performMeasureAndLayout called during measure layout" (ChatScreens.kt:1740). Both now use requestScrollToItem (foundation 1.7.6), still instant, not animated. The frames that ran the effect inline were the Compose test dispatcher, so there is no evidence this crashed a real device. The source guard TheKeyboardDoesNotHideTheMessagesTest now requires requestScrollToItem and refuses scrollToItem (fails on the old line). Result on relay1: the full on-device suite passed 10 of 10. App unit tests 358 debug + 323 release green; Android unit suites 1959 green, run locally. 🤖 Generated with Claude Code
Four commits. Three change tests and scripts/instrumented.sh; ONE CHANGES APP CODE (ChatScreens.kt). (1) Sign-up: the helpers typed the relay, then tapped Create an account; the keyboard slides in after performScrollTo measures, so the tap landed on the keyboard (logged: toggle at y=1878, content ending at y=1517). The toggle is now tapped first, then the email field is waited for. (2) Peers: the suites added peerjvmone, a standing relay1 account with no one-time prekeys left and 114 uncollected messages. instrumented.sh now creates two fresh accounts per run with the interop peer (contactPeer, and echoPeer running autoreply), with no fallback to peerjvmone. The reply case now fails when no echo arrives instead of passing silently, and FeatureUseTest waits for the lookup result instead of a disabled confirm button. (3) Groups: the test matched group-\d+ but group ids are the relay randomHexToken(), so it passed only when the id started with a digit (10 in 16); now group-[0-9a-f]{16,}. (4) APP: the chat opened at, and followed the keyboard to, its newest message with listState.scrollToItem, which forces a layout; the screen is composed inside the Scaffold measure pass, so it threw "performMeasureAndLayout called during measure layout" (ChatScreens.kt:1740). Both now use requestScrollToItem (foundation 1.7.6), still instant, not animated. The frames that ran the effect inline were the Compose test dispatcher, so there is no evidence this crashed a real device. The source guard TheKeyboardDoesNotHideTheMessagesTest now requires requestScrollToItem and refuses scrollToItem (fails on the old line). Result on relay1: the full on-device suite passed 10 of 10. App unit tests 358 debug + 323 release green; Android unit suites 1959 green, run locally. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
changed title from Tap "Create an account" before the relay is typed, not after to On-device suite: tap before typing, and a fresh peer each run
<p>changed title from <code class="idiff"><span class="idiff left right deletion">Tap "Create an account" before the relay is typed, not after</span></code> to <code class="idiff"><span class="idiff left right addition">On-device suite: tap before typing, and a fresh peer each run</span></code></p>
added 1 commit
<ul><li>cd5d1d8f - A fresh peer for each on-device run, not peerjvmone</li></ul>
[Compare with previous version](/paulhitt/flamenet-messenger-android/-/merge_requests/155/diffs?diff_id=2058414163&start_sha=32a258bc1fb59c39e24f9097ac9c11e51b2f8d6a)
added 1 commit
<ul><li>a44624cf - Find the new group by its hex id, not by a number</li></ul>
[Compare with previous version](/paulhitt/flamenet-messenger-android/-/merge_requests/155/diffs?diff_id=2058459872&start_sha=cd5d1d8f44913bae55904046b175d65d8fefd83b)
changed title from On-device suite: tap before typing, and a fresh peer each run to On-device suite green: sign-up tap, fresh peers, group id, and the chat scroll crash
<p>changed title from <code class="idiff">On-device suite<span class="idiff left right deletion">: tap before typing, and a fresh peer each run</span></code> to <code class="idiff">On-device suite<span class="idiff left right addition"> green: sign-up tap, fresh peers, group id, and the chat scroll crash</span></code></p>
added 1 commit
<ul><li>d33bb338 - Scroll the chat by request, not by forcing a layout</li></ul>
[Compare with previous version](/paulhitt/flamenet-messenger-android/-/merge_requests/155/diffs?diff_id=2058624644&start_sha=a44624cfad128ad2af746618d185741694ed77bb)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Four commits. Three change tests and scripts/instrumented.sh; ONE CHANGES APP CODE (ChatScreens.kt). (1) Sign-up: the helpers typed the relay, then tapped Create an account; the keyboard slides in after performScrollTo measures, so the tap landed on the keyboard (logged: toggle at y=1878, content ending at y=1517). The toggle is now tapped first, then the email field is waited for. (2) Peers: the suites added peerjvmone, a standing relay1 account with no one-time prekeys left and 114 uncollected messages. instrumented.sh now creates two fresh accounts per run with the interop peer (contactPeer, and echoPeer running autoreply), with no fallback to peerjvmone. The reply case now fails when no echo arrives instead of passing silently, and FeatureUseTest waits for the lookup result instead of a disabled confirm button. (3) Groups: the test matched group-\d+ but group ids are the relay randomHexToken(), so it passed only when the id started with a digit (10 in 16); now group-[0-9a-f]{16,}. (4) APP: the chat opened at, and followed the keyboard to, its newest message with listState.scrollToItem, which forces a layout; the screen is composed inside the Scaffold measure pass, so it threw "performMeasureAndLayout called during measure layout" (ChatScreens.kt:1740). Both now use requestScrollToItem (foundation 1.7.6), still instant, not animated. The frames that ran the effect inline were the Compose test dispatcher, so there is no evidence this crashed a real device. The source guard TheKeyboardDoesNotHideTheMessagesTest now requires requestScrollToItem and refuses scrollToItem (fails on the old line). Result on relay1: the full on-device suite passed 10 of 10. App unit tests 358 debug + 323 release green; Android unit suites 1959 green, run locally. 🤖 Generated with Claude Code
assigned to @paulhitt
changed title from
Tap "Create an account" before the relay is typed, not aftertoOn-device suite: tap before typing, and a fresh peer each runchanged the description
added 1 commit
cd5d1d8f- A fresh peer for each on-device run, not peerjvmoneCompare with previous version
changed the description
added 1 commit
a44624cf- Find the new group by its hex id, not by a numberCompare with previous version
changed title from
On-device suite: tap before typing, and a fresh peer each runtoOn-device suite green: sign-up tap, fresh peers, group id, and the chat scroll crashchanged the description
added 1 commit
d33bb338- Scroll the chat by request, not by forcing a layoutCompare with previous version
mentioned in commit
fdee288111