镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

fix(mobile): show observed thread replies in Activity - #9286

Merged
klopez4212 merged 2 commits into
mainfrom
kennylopez-mobile-thread-activity-20261109
Nov 9, 2026
Merged

klopez4212 merged 2 commits into
mainfrom
kennylopez-mobile-thread-activity-20261109

Conversation

@klopez4212

Copy link
Copy Markdown
Contributor

Summary

A reply in a thread you started, participated in, or followed can light a mobile channel's attention dot without appearing in Activity. Activity now includes eligible replies already observed by the channel unread pipeline in All and Threads. Tapping a row uses the existing oldest-unread reply and thread navigation.

Retain the reply payload alongside its bounded unread evidence, then merge by event ID with the addressed feed. Mentions retain their category and do not duplicate. Deletion, eviction, and account/community resets share the same registry. This adds no relay queries or subscriptions.

Coverage follows the existing channel unread catch-up and live subscriptions. This does not introduce complete historical thread discovery: replies outside that retained window, and replies not eligible for the channel attention dot, are not newly fetched.

Related issue

Related to #9271 (clearing channel rows) and closed #9186 (broader Activity feed expansion). #9213 supplied the existing Activity filters. This PR connects existing observed replies to those filters.

Testing

  • Full mobile suite, push-unconfigured tests, analysis, formatting and file-size checks.
  • Production-provider regression: cold catch-up, live reply, mention deduplication, excluded unrelated/quiet replies, thread read markers, deletion/replay and identity reset.
  • Real Activity widget journey with fake relay/storage boundaries: show the unmentioned reply, select Threads, tap the row, and verify the reply ID and thread ID passed to the conversation page.
  • Mutation check: removing reply-payload retention makes the widget journey fail because the reply is absent.
  • Independent agent source review: no blockers.

Preview

Actual Flutter widgets at phone width with synthetic data and the new reply wiring disabled/enabled. These are widget-test captures, not installed-device or live-relay evidence.

Before After
Activity omits the unmentioned reply Activity shows the unmentioned thread reply

Human validation pending

Draft per the repository readiness checklist. On a device, receive an unmentioned reply in a thread you started, replied in, or followed. Check Activity → All and Threads, tap the row to reach the reply, then read it and confirm Unread clears without reading unrelated channel messages. Native/live-relay testing and human confirmation remain pending.

Reuse channel attention evidence in All and Threads without adding relay reads or subscriptions.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: kenny lopez <klopez4212@gmail.com>
@klopez4212
klopez4212 marked this pull request as ready for review November 9, 2026 17:07
@klopez4212
klopez4212 requested a review from a team as a code owner November 9, 2026 17:07
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-09T17:12:19.895805Z 0ca7100 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0ca710025a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

// rather than opening another set of channel subscriptions here.
final byId = <String, FeedItem>{
for (final event
in ref.read(channelsProvider.notifier).observedThreadReplies(channels))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Cap projected replies across all channels

For users in many busy channels, this eagerly projects and groups every retained reply whenever channelsProvider changes—even while Activity is closed, because HomePage watches inboxHasUnreadProvider. The registry limit is 1,000 events per channel, so 300 channels can retain and synchronously process roughly 300,000 full NostrEvent payloads on the UI isolate; this commit also adds the payload retention itself. Add a global bound or a lightweight unread summary, and load/paginate full Activity rows only when needed.

AGENTS.md reference: AGENTS.md:L249-L257

Useful? React with 👍 / 👎.

Targets `kennylopez-mobile-thread-activity-20261109`, the branch of
[#9286 Activity observed
replies](#9286).

**Context.** Tom's mobile review team reviewed #9286 and approved it
with this one small fix. Report and discussion:
buzz://message?channel=e71f9a2a-ac46-473d-a24e-5e16fd8cb7b1&id=fdd32a9ef3580be56547ce7b4451404525b0d4cd56e291a2ce807ab68e035875

**Problem.** An Activity row shows the newest event in its thread, but
its label comes from the highest-priority category in the thread. When
you are mentioned in a thread and someone later replies without
mentioning you, the row shows that reply under the label "Mentioned in".

**Fix.** The label now comes from the event the row shows. Filters still
use all categories in the thread, so the Mentions filter does not
change.

### Validation

New test in `inbox_item_test.dart` fails without the fix. Full mobile
suite and `flutter analyze` pass.

Please approve and merge this into your branch. Tom's team then approves
and merges #9286.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Tom Brow <tomb@squareup.com>
Co-authored-by: Tom Brow <tomb@squareup.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@brow
brow deployed to codex-review November 9, 2026 19:07 — with GitHub Actions Active
@github-actions github-actions Bot added the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 9, 2026
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown

🔐 Codex Security Review

Note: This is an automated, security-focused review generated by Codex.
Use it as a supplement to human review; false positives are possible.

Scope

  • Exact PR diff: b082b1464ce51be18cc5e260ec0f29bca63ef8d0...d35a9a08c56cab40eca89b19da28ba8a8d3f5a9d
  • Model: gpt-6.1-sol

💡 Click "edited" above to see earlier reviews for this PR.


Review Summary

Overall Risk: NONE

No concrete security, correctness, or reliability findings were identified in the authorized PR range.

Findings

No concrete security, correctness, or reliability findings were identified.

Notes

  • Review used read-only inspection of the diff, surrounding code, callers, tests, and history. Builds and tests were not executed.

Generated by Codex Security Review |
Requested by: @brow |
Workflow run

@brow brow left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed by Tom's mobile review team; head d35a9a0 is the reviewed code plus the label fix from #9294.

@klopez4212
klopez4212 enabled auto-merge (squash) November 9, 2026 19:13
@klopez4212
klopez4212 disabled auto-merge November 9, 2026 19:47
@klopez4212
klopez4212 merged commit 49511f0 into main Nov 9, 2026
53 checks passed
@klopez4212
klopez4212 deleted the kennylopez-mobile-thread-activity-20261109 branch November 9, 2026 19:48
fsola-sq added a commit that referenced this pull request Nov 9, 2026
…-profile

* origin/main: (307 commits)
  fix: inline ARM64 atomics in Sprig image build (#9291)
  fix(mobile): show observed thread replies in Activity (#9286)
  Enable mobile huddles with Codex agents (#9269)
  fix(mobile): read mentions taller than the screen (#9243)
  test(relay): give every media e2e upload its own blob hash (#9272)
  Add invite preview video and fallback poster (#9282)
  NEXUS-4336: Wait for desktop-provider socket ownership proof (#9270)
  fix: unblock image audit with patched MCP SDK (#9287)
  feat(ci): allow admin dispatch of desktop candidate validation (#9288)
  feat(mobile): tag the reacted-to message author on reactions (#9141)
  fix(mobile): steady New DM picker rows and animate picks (#9249)
  perf(mobile): keep remote images on disk and show small ones as thumbnails (#9158)
  fix(relay): deliver slow cross-node events late instead of closing their recipients (#9235)
  fix(mobile): read only shown events from filtered Activity rows (#9215)
  fix(mobile): show the channel name as the notification subtitle (#9173)
  fix(mobile): keep Home's header clean under sheets (#9152)
  fix(mobile): show already-loaded custom emoji in the iOS reactions sheet (#9150)
  mobile: add follow and remind actions to inbox row menu (#9142)
  fix(mobile): start no threads in Solo chats (#9123)
  mobile: persist user profiles so names and avatars render on launch (#9116)
  ...

Signed-off-by: Franco Sola <fsola@squareup.com>

# Conflicts:
#	docs/nips/NIP-FA.md
#	docs/nips/NIP-FI.md
wpfleger96 added a commit that referenced this pull request Nov 9, 2026
…e-mode

* origin/main: (36 commits)
  feat(relay): let an operator mint invites for a community owner or admin (#9265)
  fix: inline ARM64 atomics in Sprig image build (#9291)
  fix(mobile): show observed thread replies in Activity (#9286)
  Enable mobile huddles with Codex agents (#9269)
  fix(mobile): read mentions taller than the screen (#9243)
  test(relay): give every media e2e upload its own blob hash (#9272)
  Add invite preview video and fallback poster (#9282)
  NEXUS-4336: Wait for desktop-provider socket ownership proof (#9270)
  fix: unblock image audit with patched MCP SDK (#9287)
  feat(ci): allow admin dispatch of desktop candidate validation (#9288)
  feat(mobile): tag the reacted-to message author on reactions (#9141)
  fix(mobile): steady New DM picker rows and animate picks (#9249)
  perf(mobile): keep remote images on disk and show small ones as thumbnails (#9158)
  fix(relay): deliver slow cross-node events late instead of closing their recipients (#9235)
  fix(mobile): read only shown events from filtered Activity rows (#9215)
  fix(mobile): show the channel name as the notification subtitle (#9173)
  fix(mobile): keep Home's header clean under sheets (#9152)
  fix(mobile): show already-loaded custom emoji in the iOS reactions sheet (#9150)
  mobile: add follow and remind actions to inbox row menu (#9142)
  fix(mobile): start no threads in Solo chats (#9123)
  ...

Signed-off-by: Will Pfleger <wpfleger@block.xyz>

This branch was successfully deployed

1 active deployment
codex-review — d35a9a08 Deployed Nov 9, 2026 by brow via Run Codex Security Review #14061
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

codex-security-review-current The posted Codex security review matches its recorded range.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants