The newline to break replacement only matched paragraph to paragraph, so a blank
line after a list was dropped and the text following it glued to the last item.
Only a following paragraph is matched, because without a blank line its text
would have continued the last item instead of starting a paragraph of its own.
Tapping the SafariViewService app object makes XCUITest activate it as a
standalone app. That backgrounds Element X, which hosts the web view, so the
hosted scene goes to the background too and WebKit suspends it mid load. The
sign in page is fetched successfully but never rendered, and the test times
out waiting for the username field.
The tap dates from when the element was a web view inside the app, where it
was a plain in app tap, so it no longer does what its comment describes.
* Make sure user profiles are up to date when mentioning.
* Automatically focus the custom status text field.
* Make sure to clear the previous custom status text before input.
* Attempt to fix the user status sheet sometimes disappearing.
Growing the list only once the last row was already visible, on top of the half a
second visible range throttle, meant hitting and bouncing off the end of the list
while the next page loaded. Ask for the next page half a page early instead, so
the growth happens while the user is still scrolling towards the boundary.
The threshold is clamped so that it stays positive for accounts with fewer rooms
than half a page, where it would otherwise always match and leave the list unable
to shrink back to a single page.
The room summary provider subscription only delivers its current state through an
async main queue hop, which can end up queued behind the first render. On a warm
launch, where the cached rooms have already been published before the home screen
exists, that leaves the skeletons up for the whole duration.
Read the current state at the end of init instead, alongside the rooms which were
already being read there.
The room summary provider publishes its loading state and its rooms through two
independent streams, so the state can report loaded before the first summaries
have been applied. Flipping the room list mode to .rooms at that point renders
an empty list until the summaries arrive.
Combine the two publishers into a single subscription so that the mode and the
rooms are always updated from the same pair of values, and keep the skeletons up
until the rooms have published. Only the initial transition is held back, an
empty list later on is a filter or a search result and must not send the mode
back to the skeletons.
* Fix an issue with macro compilation when using Xcode previews.
* Update the Chats/Spaces toolbars to match the Figma.
Fixes a bug with the status emoji in the liquid glass button.
- Resolve the send handle at tap time and pass it through the alert,
removing the duplicated lookup and the stale-itemID window between
tapping the indicator and pressing Retry.
- Route 'Remove message' through the existing timeline item menu redact
action instead of a bespoke redact path with a fatalError.
- Surface a retry failure to the user with an indicator toast rather
than only logging it.
- Only set the send-info accessibility identifier when the label has a
tappable status, so plain timestamps don't create ambiguous matches.
Tapping the red (!) on a message that failed to send used to show a bare
"Sending failed" alert with only an OK button. Now the alert includes the
failure reason from the SDK (e.g. the HTTP error that caused it) and offers
Retry sending, Remove message and Cancel actions, wired to the send handle's
resend and to redacting the local echo respectively.