Skip to content

Conversation

@pierre-lehnen-rc
Copy link
Contributor

@pierre-lehnen-rc pierre-lehnen-rc commented Dec 19, 2025

Proposed changes (including videos or screenshots)

Issue(s)

VGA-115

Steps to test or reproduce

Further comments

Summary by CodeRabbit

  • New Features

    • Call history now accepts an optional filter enabling case-insensitive, partial searches across contact name, username, or extension while keeping existing direction and state filters.
  • Tests

    • Expanded end-to-end tests to cover exact/partial matches, combinations with state/direction, falsy values, and additional history items.
  • Chore

    • Added sample call history entries to support the new tests.

✏️ Tip: You can customize this high-level summary in your review settings.

@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Dec 19, 2025

Looks like this PR is ready to merge! 🎉
If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Dec 19, 2025

⚠️ No Changeset found

Latest commit: 7e15d92

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 19, 2025

Walkthrough

Adds an optional filter query to the call-history list endpoint, updates types and JSON schema, implements a case-insensitive multi-field MongoDB $or search (contactName, contactUsername for internal; contactExtension for external), updates test data, and expands end-to-end tests to validate filtering.

Changes

Cohort / File(s) Summary
API endpoint & types
apps/meteor/app/api/server/v1/call-history.ts
Adds optional filter?: string to CallHistoryList and CallHistoryListSchema; trims/parses the filter query; adds case-insensitive $or MongoDB search matching contactName/contactUsername (non-external) and contactExtension (external); preserves existing direction and state filters.
Test data
apps/meteor/server/startup/callHistoryTestData.ts
Adds two new internal call-history entries and extra call IDs; populates contactName/contactUsername on internal records; updates an external inbound entry's contactExtension from 10011002.
End-to-end tests
apps/meteor/tests/end-to-end/api/call-history.ts
Expands expected list size (4 → 6); adds assertions for contactName/contactUsername; adds comprehensive filter tests (exact/partial matches across name/username/extension, combinations with state/direction, and falsy filter handling).

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant Server
    participant MongoDB

    Client->>Server: GET /v1/call-history?filter=TEXT&direction=&state=
    Note right of Server: parse & trim query params\nbuild base query with direction/state
    Server->>Server: if filter non-empty -> construct $or with\n- contactName (case-insensitive) for non-external\n- contactUsername (case-insensitive) for non-external\n- contactExtension (case-insensitive) for external
    Server->>MongoDB: find(query)
    MongoDB-->>Server: results
    Server-->>Client: paginated results with matching items
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Review the MongoDB $or construction for correct scoping between external vs non-external checks and case-insensitive regex usage.
  • Verify schema/type updates align with exported typings and any runtime validation.
  • Check added E2E tests for robustness and any brittle assumptions about test data ordering or counts.

Possibly related PRs

Suggested labels

stat: ready to merge, stat: QA assured

Suggested reviewers

  • tassoevan
  • KevLehman
  • ricardogarim

Poem

🐰 Hopping through logs with a curious nose,
I sniff the names where the call-history grows.
A filter I plant, both nimble and neat,
Matches names, users, and extensions complete.
Tests cheer aloud — this rabbit hops fleet! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding a contact filter to the call history endpoint.
Linked Issues check ✅ Passed The PR implements contact filtering for the call history endpoint as required by VGA-115, with multi-field search across contactName, contactUsername, and contactExtension.
Out of Scope Changes check ✅ Passed All changes are scoped to implementing the contact filter feature: API type updates, endpoint logic, test data, and comprehensive end-to-end tests for filter functionality.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/history-filter

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@pierre-lehnen-rc pierre-lehnen-rc added this to the 7.14.0 milestone Dec 19, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 19, 2025

📦 Docker Image Size Report

📈 Changes

Service Current Baseline Change Percent
sum of all images 1.2GiB 1.2GiB +12MiB
rocketchat 358MiB 347MiB +12MiB
omnichannel-transcript-service 132MiB 132MiB +62B
queue-worker-service 132MiB 132MiB +1.7KiB
ddp-streamer-service 126MiB 126MiB +1.2KiB
account-service 113MiB 113MiB +974B
authorization-service 111MiB 111MiB +1.1KiB
stream-hub-service 111MiB 111MiB +1.1KiB
presence-service 111MiB 111MiB +445B

📊 Historical Trend

---
config:
  theme: "dark"
  xyChart:
    width: 900
    height: 400
---
xychart
  title "Image Size Evolution by Service (Last 30 Days + This PR)"
  x-axis ["11/15 22:28", "11/16 01:28", "11/17 23:50", "11/18 22:53", "11/19 23:02", "11/21 16:49", "11/24 17:34", "11/27 22:32", "11/28 19:05", "12/01 23:01", "12/02 21:57", "12/03 21:00", "12/04 18:17", "12/05 21:56", "12/08 20:15", "12/09 22:17", "12/10 23:26", "12/11 21:56", "12/12 22:45", "12/13 01:34", "12/15 22:31", "12/16 22:18", "12/17 21:04", "12/18 23:12", "12/19 19:59", "12/19 20:21 (PR)"]
  y-axis "Size (GB)" 0 --> 0.5
  line "account-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "authorization-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "ddp-streamer-service" [0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12, 0.12]
  line "omnichannel-transcript-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "presence-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
  line "queue-worker-service" [0.14, 0.14, 0.14, 0.14, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
  line "rocketchat" [0.36, 0.36, 0.35, 0.35, 0.35, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.34, 0.35]
  line "stream-hub-service" [0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11]
Loading

Statistics (last 25 days):

  • 📊 Average: 1.5GiB
  • ⬇️ Minimum: 1.2GiB
  • ⬆️ Maximum: 1.6GiB
  • 🎯 Current PR: 1.2GiB
ℹ️ About this report

This report compares Docker image sizes from this build against the develop baseline.

  • Tag: pr-37896
  • Baseline: develop
  • Timestamp: 2025-12-19 20:21:59 UTC
  • Historical data points: 25

Updated: Fri, 19 Dec 2025 20:21:59 GMT

@pierre-lehnen-rc pierre-lehnen-rc marked this pull request as ready for review December 19, 2025 18:58
@pierre-lehnen-rc pierre-lehnen-rc requested a review from a team as a code owner December 19, 2025 18:58
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
apps/meteor/app/api/server/v1/call-history.ts (1)

115-115: Consider more explicit filter parsing.

The expression typeof filter === 'string' && filter.trim() works correctly but could be more readable. Consider:

const filterText = filter?.trim() || undefined;

This makes the intent clearer while maintaining the same behavior (falsy for empty/whitespace strings).

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 4829211 and 54e6776.

📒 Files selected for processing (3)
  • apps/meteor/app/api/server/v1/call-history.ts (3 hunks)
  • apps/meteor/server/startup/callHistoryTestData.ts (4 hunks)
  • apps/meteor/tests/end-to-end/api/call-history.ts (8 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx,js}

📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)

**/*.{ts,tsx,js}: Write concise, technical TypeScript/JavaScript with accurate typing in Playwright tests
Avoid code comments in the implementation

Files:

  • apps/meteor/server/startup/callHistoryTestData.ts
  • apps/meteor/app/api/server/v1/call-history.ts
  • apps/meteor/tests/end-to-end/api/call-history.ts
🧠 Learnings (3)
📚 Learning: 2025-12-18T15:18:23.819Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37773
File: apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx:24-34
Timestamp: 2025-12-18T15:18:23.819Z
Learning: In apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx, for internal call history items, the item.contactId is guaranteed to always match either the caller.id or callee.id in the call data, so the contact resolution in getContact will never result in undefined.

Applied to files:

  • apps/meteor/server/startup/callHistoryTestData.ts
  • apps/meteor/app/api/server/v1/call-history.ts
  • apps/meteor/tests/end-to-end/api/call-history.ts
📚 Learning: 2025-11-19T18:20:37.116Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: apps/meteor/server/services/media-call/service.ts:141-141
Timestamp: 2025-11-19T18:20:37.116Z
Learning: In apps/meteor/server/services/media-call/service.ts, the sendHistoryMessage method should use call.caller.id or call.createdBy?.id as the message author, not call.transferredBy?.id. Even for transferred calls, the message should appear in the DM between the two users who are calling each other, not sent by the person who transferred the call.

Applied to files:

  • apps/meteor/server/startup/callHistoryTestData.ts
  • apps/meteor/tests/end-to-end/api/call-history.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `expect` matchers for assertions (`toEqual`, `toContain`, `toBeTruthy`, `toHaveLength`, etc.) instead of `assert` statements in Playwright tests

Applied to files:

  • apps/meteor/tests/end-to-end/api/call-history.ts
🧬 Code graph analysis (1)
apps/meteor/tests/end-to-end/api/call-history.ts (1)
apps/meteor/tests/data/api-data.ts (2)
  • request (10-10)
  • credentials (39-42)
🔇 Additional comments (8)
apps/meteor/app/api/server/v1/call-history.ts (1)

17-21: LGTM!

The type definition correctly adds the optional filter field to support text-based search across contact fields.

apps/meteor/server/startup/callHistoryTestData.ts (3)

28-29: LGTM: Test data includes searchable contact fields.

The added contactName and contactUsername fields use patterns (Pineapple, Apple, Grapefruit, Pasta, fruit-001, fruit-002) that enable comprehensive testing of exact matches, partial matches, and cross-field searches.

Also applies to: 43-44, 58-59, 73-74


100-100: LGTM: contactExtension change aligns with test expectations.

Changing from '1001' to '1002' creates better test coverage for partial matches and ensures two distinct external extensions for filtering tests.


9-13: Incomplete test data setup: CallHistory entries reference non-existent MediaCalls entries.

Lines 9-10 define extraCallId1 and extraCallId2, which are inserted into CallHistory (lines 49, 64), but MediaCalls.insertMany (lines 104-233) only creates entries for callId1-4. The cleanup at line 13 also omits these extra IDs.

The call-history.info API endpoint gracefully handles missing MediaCalls (returns null for the optional call property), but the inconsistent test data setup creates orphaned history entries. Either add extraCallId1 and extraCallId2 to the cleanup at line 13, or create corresponding MediaCalls entries for these IDs in the insertMany block.

⛔ Skipped due to learnings
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: apps/meteor/server/services/media-call/service.ts:141-141
Timestamp: 2025-11-19T18:20:37.116Z
Learning: In apps/meteor/server/services/media-call/service.ts, the sendHistoryMessage method should use call.caller.id or call.createdBy?.id as the message author, not call.transferredBy?.id. Even for transferred calls, the message should appear in the DM between the two users who are calling each other, not sent by the person who transferred the call.
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37773
File: apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx:24-34
Timestamp: 2025-12-18T15:18:23.819Z
Learning: In apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx, for internal call history items, the item.contactId is guaranteed to always match either the caller.id or callee.id in the call data, so the contact resolution in getContact will never result in undefined.
apps/meteor/tests/end-to-end/api/call-history.ts (4)

35-37: LGTM: Test expectations correctly updated for new test data.

The updated counts (4→6) and assertions for the two new history entries (outbound.2, inbound.2) correctly reflect the expanded test data. The contactName and contactUsername assertions properly validate the new searchable fields.

Also applies to: 44-45, 55-56, 66-67, 69-79


211-231: LGTM: Exact match filter tests are comprehensive.

Tests correctly verify exact matches for contact name, username, and extension, expecting 1 result each with the correct history ID.

Also applies to: 256-276, 325-345


233-254: LGTM: Partial match tests correctly validate substring search.

These tests comprehensively verify that the filter matches substrings across contact name, username, and extension fields. The expected counts and history IDs align with the test data patterns.

Also applies to: 278-299, 301-323, 347-368


370-392: LGTM: Combined and edge case filter tests are correct.

Lines 370-392 correctly verify cross-field matching (filter '002' matches fruit-002, Grapefruit 002, 1002).

Lines 394-418 correctly test that a falsy-but-non-empty filter value ('0') still applies the search, matching 5 items that contain '0' in their contact fields while excluding items without '0' (e.g., 'Pasta 1', 'meal').

Also applies to: 394-418

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
apps/meteor/tests/end-to-end/api/call-history.ts (1)

211-418: Good coverage of filter scenarios.

The filter tests comprehensively validate exact and partial matching across contact names, usernames, and extensions, including cross-field queries and edge cases with falsy values. The test logic is correct and expectations match the test data.

Optional: Consider adding case-insensitivity and combined filter tests

Two optional test enhancements to consider:

  1. Case-insensitive matching: Explicitly verify case-insensitive behavior:
it('should return items with case-insensitive filter matching', async () => {
  await request
    .get(api('call-history.list'))
    .set(credentials)
    .query({ filter: 'PINEAPPLE' })
    .expect(200)
    .expect((res: Response) => {
      expect(res.body.items).to.have.lengthOf(1);
      expect(res.body.items[0]._id).to.equal('rocketchat.internal.history.test.outbound');
    });
});
  1. Combined filters: Test filter combined with state/direction:
it('should apply filter combined with state and direction', async () => {
  await request
    .get(api('call-history.list'))
    .set(credentials)
    .query({ filter: 'fruit', state: ['ended'], direction: 'outbound' })
    .expect(200)
    .expect((res: Response) => {
      expect(res.body.items).to.have.lengthOf(1);
      expect(res.body.items[0]._id).to.equal('rocketchat.internal.history.test.outbound');
    });
});
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 54e6776 and 7e15d92.

📒 Files selected for processing (3)
  • apps/meteor/app/api/server/v1/call-history.ts (3 hunks)
  • apps/meteor/server/startup/callHistoryTestData.ts (4 hunks)
  • apps/meteor/tests/end-to-end/api/call-history.ts (8 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • apps/meteor/server/startup/callHistoryTestData.ts
  • apps/meteor/app/api/server/v1/call-history.ts
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx,js}

📄 CodeRabbit inference engine (.cursor/rules/playwright.mdc)

**/*.{ts,tsx,js}: Write concise, technical TypeScript/JavaScript with accurate typing in Playwright tests
Avoid code comments in the implementation

Files:

  • apps/meteor/tests/end-to-end/api/call-history.ts
🧠 Learnings (3)
📚 Learning: 2025-12-18T15:18:23.819Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37773
File: apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx:24-34
Timestamp: 2025-12-18T15:18:23.819Z
Learning: In apps/meteor/client/views/mediaCallHistory/MediaCallHistoryInternal.tsx, for internal call history items, the item.contactId is guaranteed to always match either the caller.id or callee.id in the call data, so the contact resolution in getContact will never result in undefined.

Applied to files:

  • apps/meteor/tests/end-to-end/api/call-history.ts
📚 Learning: 2025-11-19T18:20:37.116Z
Learnt from: gabriellsh
Repo: RocketChat/Rocket.Chat PR: 37419
File: apps/meteor/server/services/media-call/service.ts:141-141
Timestamp: 2025-11-19T18:20:37.116Z
Learning: In apps/meteor/server/services/media-call/service.ts, the sendHistoryMessage method should use call.caller.id or call.createdBy?.id as the message author, not call.transferredBy?.id. Even for transferred calls, the message should appear in the DM between the two users who are calling each other, not sent by the person who transferred the call.

Applied to files:

  • apps/meteor/tests/end-to-end/api/call-history.ts
📚 Learning: 2025-11-24T17:08:17.065Z
Learnt from: CR
Repo: RocketChat/Rocket.Chat PR: 0
File: .cursor/rules/playwright.mdc:0-0
Timestamp: 2025-11-24T17:08:17.065Z
Learning: Applies to apps/meteor/tests/e2e/**/*.spec.ts : Use `expect` matchers for assertions (`toEqual`, `toContain`, `toBeTruthy`, `toHaveLength`, etc.) instead of `assert` statements in Playwright tests

Applied to files:

  • apps/meteor/tests/end-to-end/api/call-history.ts
🧬 Code graph analysis (1)
apps/meteor/tests/end-to-end/api/call-history.ts (1)
apps/meteor/tests/data/api-data.ts (2)
  • request (10-10)
  • credentials (39-42)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build
🔇 Additional comments (3)
apps/meteor/tests/end-to-end/api/call-history.ts (3)

35-79: LGTM! Test data and assertions updated correctly.

The updated counts (4→6 items) and new assertions for contactName and contactUsername correctly reflect the expanded test data needed to validate the new filter functionality.


177-184: LGTM! Direction filter test updated correctly.

The test now correctly expects 3 inbound items and includes the new test data ID.


445-446: LGTM! Contact fields verified in info endpoint.

The contactName and contactUsername assertions are correctly added to the /call-history.info tests and are consistent with the list endpoint expectations.

Also applies to: 492-493

@codecov
Copy link

codecov bot commented Dec 19, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.69%. Comparing base (17496df) to head (7e15d92).
⚠️ Report is 22 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #37896      +/-   ##
===========================================
+ Coverage    67.68%   67.69%   +0.01%     
===========================================
  Files         3474     3475       +1     
  Lines       113852   113863      +11     
  Branches     20938    20942       +4     
===========================================
+ Hits         77065    77085      +20     
+ Misses       34604    34592      -12     
- Partials      2183     2186       +3     
Flag Coverage Δ
e2e 57.16% <ø> (+0.02%) ⬆️
e2e-api 44.07% <100.00%> (+0.08%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@gabriellsh gabriellsh added the stat: QA assured Means it has been tested and approved by a company insider label Dec 19, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Dec 19, 2025
@ggazzo ggazzo merged commit 3f2ff26 into develop Dec 19, 2025
53 checks passed
@ggazzo ggazzo deleted the chore/history-filter branch December 19, 2025 22:13
gaolin1 pushed a commit to gaolin1/medsense.webchat that referenced this pull request Jan 6, 2026
@dougfabris dougfabris modified the milestones: 7.14.0, 8.0.0 Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants