Repository navigation
Conversation
A deleted message that had thread replies showed the "Message deleted" placeholder without its "N replies" row, so the thread could no longer be opened from the channel. Fixes FLU-1092. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
flu-1092-a-deleted-thread-parent-loses-its-n-replies-footer-so-the
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
StreamThreadPage hid the composer whenever the parent message was deleted. A deleted parent that already has replies still accepts new ones, so the composer now stays unless the parent is deleted and has no replies. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…parent-loses-its-n-replies-footer-so-the' into sahil/thread-composer-deleted-parent # Conflicts: # packages/stream_chat_flutter/CHANGELOG.md
Contributor
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 27 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## sahil/flu-1092-a-deleted-thread-parent-loses-its-n-replies-footer-so-the #3111 +/- ##
=========================================================================================================
Coverage 80.38% 80.39%
=========================================================================================================
Files 455 455
Lines 29628 29628
=========================================================================================================
+ Hits 23817 23818 +1
+ Misses 5811 5810 -1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
* test(repo): assert the token date and signature policy (FLU-1083) The SDK refreshes the token on code 40 only. A token used before its issue date (42) is reconnected as-is until the server's clock catches up, and a bad signature (43) is not retried with a new token. The four tests now assert that instead of a refresh. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(repo): tighten the token date and signature tests (FLU-1083) Keep the invalid window open past the refresh so the refreshed token is always rejected, count token requests through an env assertion, and fix the step and file comments to match what the tests assert. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(repo): drop the token signature after login test (FLU-1083) A signing secret doesn't go bad mid-session, and the test only timed the SDK's reconnect backoff. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * test(repo): keep the login error across the loading screen (FLU-1083) The chooser page is replaced while connecting, so an error it stored itself was gone by the time the login failed. The auth state now carries it, and the rebuilt page shows it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vTgFwqhUc2wKCWrw635yC --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix(ui): keep the footer of a sent message before a failed one (FLU-1090) A message that failed now starts its own group, so the sent message before it keeps its timestamp and delivery status. Consecutive failed messages still group together. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * docs(ui): describe every failed message in the changelog (FLU-1090) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vTgFwqhUc2wKCWrw635yC --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
flu-1092-a-deleted-thread-parent-loses-its-n-replies-footer-so-the # Conflicts: # packages/stream_chat_flutter/CHANGELOG.md
…parent-loses-its-n-replies-footer-so-the' into sahil/thread-composer-deleted-parent
…leted-thread-parent-loses-its-n-replies-footer-so-the # Conflicts: # e2e_app/README.md # e2e_app/fastlane/Fastfile # e2e_app/integration_test/authentication_test.dart # e2e_app/integration_test/giphy_test.dart # e2e_app/integration_test/hyper_links_test.dart # e2e_app/integration_test/message_actions_test.dart # e2e_app/integration_test/message_delivery_status_test.dart # e2e_app/integration_test/message_list_test.dart # e2e_app/integration_test/pages/channel_list_page.dart # e2e_app/integration_test/robots/backend_robot.dart # e2e_app/integration_test/robots/participant_robot.dart # e2e_app/integration_test/robots/user_robot.dart # e2e_app/integration_test/robots/user_robot_message_list_asserts.dart # e2e_app/integration_test/support/stream_test_env.dart # e2e_app/lib/auth/auth_controller.dart # e2e_app/lib/pages/channel_list_tab.dart # e2e_app/lib/pages/home_page.dart # e2e_app/lib/pages/thread_list_tab.dart # e2e_app/lib/widgets/e2e_message_actions.dart # e2e_app/lib/widgets/search_text_field.dart # e2e_app/pubspec.yaml # packages/stream_chat_flutter/CHANGELOG.md # packages/stream_chat_flutter/test/src/message_list_view/message_list_failed_message_grouping_test.dart
…parent-loses-its-n-replies-footer-so-the' into sahil/thread-composer-deleted-parent
VelikovPetar
approved these changes
Oct 28, 2026
…leted-thread-parent-loses-its-n-replies-footer-so-the # Conflicts: # packages/stream_chat_flutter/CHANGELOG.md
…parent-loses-its-n-replies-footer-so-the' into sahil/thread-composer-deleted-parent
Base automatically changed from
sahil/flu-1092-a-deleted-thread-parent-loses-its-n-replies-footer-so-the
to
master
October 28, 2026 13:03
…er-deleted-parent # Conflicts: # packages/stream_chat_flutter/CHANGELOG.md
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
StreamThreadPagehid the composer whenever the thread's parent message was deleted. The backend still accepts replies to a deleted parent that already has replies; it only refuses them when the parent has none. The page now follows the same rule: the composer stays unless the parent is deleted and has no replies.Follow-up to #3110 (FLU-1092), which makes a deleted parent's thread reachable again. Stacked on it.
Verification
thread_page_test.dart: the composer is hidden for a deleted parent without replies, and shown for one with replies. The second fails without the fix.🤖 Generated with Claude Code