Skip to content

perf: deduplicate inbox search results in linear time - #1410

Open
MrPunyapal wants to merge 1 commit into
dev-null-sh:productionfrom
MrPunyapal:perf/dedupe-conversation-search-with-set
Open

MrPunyapal wants to merge 1 commit into
dev-null-sh:productionfrom
MrPunyapal:perf/dedupe-conversation-search-with-set

Conversation

@MrPunyapal

@MrPunyapal MrPunyapal commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Change

Conversation search results are deduplicated by ID with a Set, preserving server result priority and the original order of first matches.

Tests

Focused search tests passed (4 tests), including empty results and duplicate IDs. Type checks and lint passed.

Summary by CodeRabbit

  • Bug Fixes
    • Conversation search results now show only one copy of each conversation, preferring the server result when duplicates exist.
    • Distinct matching conversations remain visible even when duplicate results are present.

@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Walkthrough

conversationsMatching now removes duplicate conversation IDs from combined server and local results while keeping the first occurrence. A unit test checks the result order and confirms that a distinct local match remains.

Changes: Conversation search

Layer / File(s) Summary
Deduplicate matching results
resources/js/lib/conversation-search.ts, tests/Unit/ConversationSearch.test.ts
conversationsMatching uses a Set to keep the first conversation for each ID. The test checks that the first server copy and a distinct local match remain, despite duplicate server and local results.

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Refactor

Possibly related PRs

  • dev-null-sh/dev-null.sh#1226: This PR also deduplicates server and local conversation results by ID with a Set, keeping the first occurrence.

Suggested reviewers: xheaven

Merge Risk: Minimal · up to 8536c

No actionable merge-blocking risk remains.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: linear-time deduplication of inbox search results.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 1 functions across 2 files.

Finishing Touches
Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Tip

🎯 Customize your risk assessments

Guide how CodeRabbit assesses merge risk and security architecture risk. Highlight sensitive changes and explain your security boundaries using Merge Risk Instructions and Security Risk Instructions in your review settings. Security architecture risk assessments require the Advanced plan or above.

✅ Automatic approvals, with your rules

Let CodeRabbit approve pull requests once required threads are resolved, pre-merge checks pass, and your risk limits are met. Enable Automatic approvals in review settings, with overrides for teams or file paths.

Usage-based review receipt

  • Mode: Continue automatically
  • Reviewed files: 2
  • Waived: $0.50 (charged $0.00)
  • View usage details

Note

This review exceeded your plan’s limits and used usage-based reviews—free during trial, billed after paid activation unless disabled. Manage usage-based reviews.

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 64fbd353-ced7-4b85-a8a8-d070ab7d3a39
Commits

Reviewing files that changed from the base of the PR and between c934501 and 8536c25.

Files selected for processing: 2
  • resources/js/lib/conversation-search.ts
  • tests/Unit/ConversationSearch.test.ts

Limit details: You’ve used all 10 included reviews currently available.

@MrPunyapal
MrPunyapal force-pushed the perf/dedupe-conversation-search-with-set branch from c8f29b1 to 8536c25 Compare November 3, 2026 05:56
@MrPunyapal
MrPunyapal marked this pull request as ready for review November 3, 2026 06:01
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