Skip to content

Improve inbox thread updates#1114

Open
klopez4212 wants to merge 29 commits into
mainfrom
kennylopez-inbox-updates
Open

Improve inbox thread updates#1114
klopez4212 wants to merge 29 commits into
mainfrom
kennylopez-inbox-updates

Conversation

@klopez4212

Copy link
Copy Markdown
Contributor

Summary

  • Surface interested thread replies in Home inbox without turning on main channel unread dots
  • Add inbox item read/unread handling, Threads filtering, unread-only toggle, and numeric dock badge counting
  • Polish inbox row labels, channel chips, two-line previews, and thread context loading

Tests

  • cd desktop && . ../bin/activate-hermit && ../node_modules/.bin/biome check --write ...
  • cd desktop && . ../bin/activate-hermit && pnpm typecheck
  • cd desktop && . ../bin/activate-hermit && pnpm test -- src/features/channels/unreadReadMarker.test.mjs src/features/home/lib/inbox.test.mjs src/features/home/lib/inboxViewHelpers.test.mjs
  • git diff --check

klopez4212 added a commit that referenced this pull request Jun 18, 2026

@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: f6387f9aed

ℹ️ 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".

Comment thread desktop/src/features/notifications/hooks.ts Outdated
klopez4212 added a commit that referenced this pull request Jun 18, 2026

@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: 66d905a89b

ℹ️ 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".

Comment thread desktop/src/features/channels/useUnreadChannels.ts Outdated
Comment thread desktop/src/features/notifications/hooks.ts Outdated

@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: 084e71809b

ℹ️ 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".

Comment thread desktop/src/features/channels/useUnreadChannels.ts Outdated
Comment thread desktop/src/features/home/ui/HomeView.tsx Outdated

@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: 279381c4be

ℹ️ 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".

Comment thread desktop/src/features/home/useHomeInboxReadState.ts

@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: 248244200a

ℹ️ 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".

Comment thread desktop/src/app/AppShell.tsx

@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: 248244200a

ℹ️ 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".

Comment thread desktop/src/app/AppShell.tsx
klopez4212 added a commit that referenced this pull request Jun 19, 2026
@klopez4212

Copy link
Copy Markdown
Contributor Author

🤖 Updated screenshots from the latest kennylopez-inbox-updates branch.

Inbox overview

Inbox rows with unread dots, muted metadata, channel chips, two-line previews, thread activity, and the selected item detail.

inbox-overview

Filter menu

Inbox header controls with the filter menu, including Threads.

inbox-filter-menu

Inbox hover tray

Hovering an inbox item reveals the row action tray.

inbox-hover-tray

Inbox detail action tray

The selected inbox message detail uses the same midpoint action tray placement as the channel view.

inbox-detail-action-tray

@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: 460a75f954

ℹ️ 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".

Comment thread desktop/src/app/AppShell.tsx

@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: a2cb35c921

ℹ️ 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".

Comment thread desktop/src/features/channels/useLiveChannelUpdates.ts Outdated

@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: b58412ed7d

ℹ️ 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".

Comment thread desktop/src/app/AppShell.tsx Outdated

@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: 742b8c57d7

ℹ️ 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".

Comment thread desktop/src/features/notifications/hooks.ts Outdated
Comment thread desktop/src/features/home/useHomeInboxReadState.ts

@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

const merged = [...threadActivityRef.current, ...newItems];
const capped =
merged.length > MAX_ACTIVITY_ITEMS
? merged.slice(merged.length - MAX_ACTIVITY_ITEMS)

P2 Badge Preserve newest thread replies when capping

When a cold-start catch-up returns more than MAX_ACTIVITY_ITEMS thread replies, relay history is newest-first (the DB query orders by created_at DESC in crates/buzz-db/src/event.rs), but this merge appends that newest-first batch and then keeps the tail. With an empty or small threadActivityRef, the cap drops the newest replies and persists older ones, so the Inbox can miss the latest unread thread activity after restart; sort by createdAt before slicing or reuse the sorted addThreadActivityItems helper here.

ℹ️ 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".

@klopez4212

Copy link
Copy Markdown
Contributor Author

🤖 Addressed the latest Codex review note in 5ce9be2: cold-start thread activity now reuses the sorted addThreadActivityItems helper for capping, so newest-first relay batches preserve the newest unread thread replies. Added a regression test for newest-first capping as well.

@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: 049aa2bfd3

ℹ️ 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".

Comment thread desktop/src/app/AppShell.tsx

@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: 704d620f4c

ℹ️ 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".

options.onThreadReplyNotification?.(channelId, event);
}
} else {
options.onThreadReplyNotification?.(channelId, event);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Record mentioned roots on the thread-only route

When a non-DM thread reply @mentions the user in a thread they have not followed/participated in, shouldNotify is true but this new branch bypasses onChannelMessage. In useUnreadChannels, the only live path that calls recordMentionedRoot is handleChannelMessage, so the root never enters mentionedRootIds; the Home row can appear, but the channel thread's notification/read gate will not recognize the user's interest for that live mention-only thread.

Useful? React with 👍 / 👎.

Comment on lines +259 to +260
await expect(badges).toHaveCount(1);
await expect(badges).toContainText("2");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Align casual-thread badge expectation with the notify gate

In this test, Tyler has no authored/participated/followed/mentioned stake in the Alice/Bob thread, but computeThreadBadgeCounts skips roots unless isNotifiedForThread(rootId) is true, so thread-unread-badge remains absent rather than reaching count 1/"2". I checked desktop/playwright.config.ts: this screenshot spec is included in the smoke project, so the new expectation will fail CI unless the production notification gate is changed too.

Useful? React with 👍 / 👎.

@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: a419a8a57c

ℹ️ 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".

? threadBadgeFrontiersRef.current.get(activeChannelId)
: undefined,
isNotifiedForThread,
(rootId) => !isThreadMuted(rootId),

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Clear casual thread badges when opened

With this broadened gate, every unmuted casual thread now gets a main-timeline unread badge, but the read effect above still returns unless isNotifiedForCurrentThread is true. For a thread the user has not authored, participated in, followed, or been mentioned in, opening the thread never advances thread:<root>, so the badge this line creates remains after the user reads and closes the thread. Either keep the badge gate aligned with the read gate or mark these casual threads read on open.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant