Skip to content

chore: drop @rocket.chat/string-helpers in favor of @rocket.chat/tools - #41763

Merged
dionisio-bot[bot] merged 4 commits into
developfrom
chore/string-helpers
Aug 12, 2026
Merged

chore: drop @rocket.chat/string-helpers in favor of @rocket.chat/tools#41763
dionisio-bot[bot] merged 4 commits into
developfrom
chore/string-helpers

Conversation

@tassoevan

@tassoevan tassoevan commented Aug 12, 2026

Copy link
Copy Markdown
Member

Proposed changes (including videos or screenshots)

@rocket.chat/string-helpers was a Fuselage package with four exports, all of them tiny pure string functions: escapeRegExp, escapeHTML, unescapeHTML and capitalize. This repo already has a home for exactly that kind of function — @rocket.chat/tools — and most of the files importing from string-helpers were already importing from tools on the line above.

So rather than moving the package here as its own workspace package, this PR absorbs it into @rocket.chat/tools and deletes the dependency. See Further comments for why this deviates from what ARCH-2361 describes.

Two commits do the work, and they are worth reading in order:

  1. feat(tools): embed functions from @rocket.chat/string-helpers — the four functions are copied into packages/tools/src, each with a spec file. The implementations are the published 0.32.0 ones, with the types tightened where the originals were loose:

    • capitalize is now generic, so it returns Capitalize<T> instead of string.
    • escapeHTML/unescapeHTML now take string instead of any; the runtime coercion they relied on is kept, moved into a small internal toString helper, so a nullish value passed from untyped JS still becomes '' rather than "undefined".
    • escapeRegExp keeps its behavior exactly (the spec pins the full escaped character set).
  2. chore: drop @rocket.chat/string-helpers in favor of @rocket.chat/tools — 122 files, almost entirely one-line import rewrites: 67 escapeRegExp, 29 escapeHTML, 14 capitalize, 2 unescapeHTML. The dependency is removed from nine package.jsons — apps/meteor, apps/meteor/ee/server/services, packages/models, ee/packages/omnichannel-services and the four ee/apps/* services (account, authorization, ddp-streamer, presence) — and @rocket.chat/tools is added to packages/models and packages/ui-client, the two consumers that did not already depend on it. fuselage.sh stops bumping the package, and it is gone from yarn.lock entirely — it was not a transitive dependency of anything else.

    Because the embedded signatures are tighter, a handful of type assertions that only existed to work around the old ones could go: capitalize(this.name) as Capitalize<TServiceName> in CustomOAuth, indexOf(_emoji as never) in the emoji helpers, and similar casts in packages/models. Those are the only non-import changes in the commit.

Issue(s)

ARCH-2361

Steps to test or reproduce

Nothing should change for the user — the functions are the same code, called from the same places.

  1. yarn workspace @rocket.chat/tools test — 14 suites, 118 tests, with the four new files at 100% coverage.
  2. yarn workspace @rocket.chat/meteor typecheck — clean. Same for @rocket.chat/models, @rocket.chat/ui-client and @rocket.chat/abac, the packages whose diffs are more than import rewrites.
  3. Anything that goes through the touched paths: search (spotlight, message search), emoji and custom emoji, mentions, markdown, highlighted words, message previews, OAuth service names in the login buttons, and the omnichannel admin tables.

Further comments

This is not the migration the ticket describes. ARCH-2361 is written as step 8 of 19 in the Fuselage migration: copy packages/string-helpers in, add the workspaces glob entry, keep the dual ESM/CJS build and the API report, flip consumers to workspace:^. It also owns repointing the package's npm trusted publisher from RocketChat/fuselage to RocketChat/Rocket.Chat.

Absorbing the package instead makes all of that unnecessary: there is no new workspace package to build, no API report to maintain, and the npm trusted-publishing repoint can be dropped from the migration plan — this package will never be published again from either repo. The tradeoff is that @rocket.chat/string-helpers stops existing as a published package after 0.32.0. Nothing outside Rocket.Chat and Fuselage consumes it, and Fuselage froze it in ARCH-2350, so I think that is the right call — but it is a plan change, not just an implementation detail, so flagging it explicitly for review. If we would rather keep the package alive as a published artifact, this PR should be replaced with the literal migration.

One follow-up is needed, not done here. apps/meteor/tests/end-to-end/api/http-response-truncation.ts replays a captured dynamic-import request whose body hardcodes a client module tree containing node_modules/@rocket.chat/string-helpers. That path no longer exists in the bundle. The test's own comment warns that these fixtures are build-dependent — if the tree changes, the response shrinks below the gzip threshold and loses the chunked+gzip shape the race needs, which is what its first assertion checks. The fixture has to be recaptured. I left it alone because it only runs under the specific traefik configuration it was written for, and recapturing it means reproducing that setup.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added shared utilities for capitalizing text, converting values to strings, and escaping or unescaping HTML and regular expressions.
    • Expanded shared tooling exports for consistent text handling across the application.
  • Refactor

    • Consolidated text and escaping helpers without changing existing behavior.
    • Simplified internal type handling and removed obsolete helper usage.
  • Tests

    • Added comprehensive coverage for text conversion, capitalization, and HTML and regular-expression escaping utilities.

tassoevan and others added 3 commits August 12, 2026 10:56
…ools`

`@rocket.chat/tools` now embeds `escapeRegExp`, `escapeHTML`, `unescapeHTML`
and `capitalize`, so point every consumer at it and remove the external
dependency from the workspaces, the lockfile and `fuselage.sh`.

Since the embedded signatures are tighter than the originals, this also drops
the type assertions that only existed to work around them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tassoevan
tassoevan requested review from a team as code owners August 12, 2026 14:13
@dionisio-bot

dionisio-bot Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

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

@changeset-bot

changeset-bot Bot commented Aug 12, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: cda66e7

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 27 packages
Name Type
@rocket.chat/tools Minor
@rocket.chat/omnichannel-services Patch
rocketchat-services Patch
@rocket.chat/authorization-service Patch
@rocket.chat/presence-service Patch
@rocket.chat/account-service Patch
@rocket.chat/ddp-streamer Patch
@rocket.chat/ui-client Major
@rocket.chat/abac Patch
@rocket.chat/models Patch
@rocket.chat/meteor Patch
@rocket.chat/i18n Major
@rocket.chat/mock-providers Patch
@rocket.chat/server-fetch Patch
@rocket.chat/ui-contexts Major
@rocket.chat/web-ui-registration Major
@rocket.chat/omnichannel-transcript Patch
@rocket.chat/ui-composer Major
@rocket.chat/uikit-playground Patch
@rocket.chat/fuselage-ui-kit Major
@rocket.chat/gazzodown Major
@rocket.chat/livechat Patch
@rocket.chat/ui-avatar Major
@rocket.chat/ui-video-conf Major
@rocket.chat/ui-voip Major
@rocket.chat/core-typings Patch
@rocket.chat/rest-typings Patch

Not sure what this means? Click here to learn what changesets are.

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

@tassoevan tassoevan added this to the 8.8.0 milestone Aug 12, 2026
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: bf007b30-4c54-4161-b63b-d8a592b0fd34

📥 Commits

Reviewing files that changed from the base of the PR and between 9202145 and cda66e7.

📒 Files selected for processing (1)
  • packages/tools/src/unescapeHTML.spec.ts
💤 Files with no reviewable changes (1)
  • packages/tools/src/unescapeHTML.spec.ts
📜 Recent review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build
⚠️ CI failures not shown inline (4)

GitHub Check: Dionisio QA: Some checks did not pass

Conclusion: failure

View job details

**Conclusion:** failure
### Steps
- ✅ **No merge conflicts**
- ❌ **QA assured** — This PR is missing the 'stat: QA assured' label
- ✅ **Mergeable**
- ✅ **Has milestone or project**
- ✅ **Valid PR title**
- ✅ **Correct target version**

GitHub Check: Dionisio QA: Some checks did not pass

Conclusion: failure

View job details

**Conclusion:** failure
### Steps
- ✅ **No merge conflicts**
- ❌ **QA assured** — This PR is missing the 'stat: QA assured' label
- ✅ **Mergeable**
- ✅ **Has milestone or project**
- ✅ **Valid PR title**
- ✅ **Correct target version**

GitHub Check: Dionisio QA: Some checks did not pass

Conclusion: failure

View job details

**Conclusion:** failure
### Steps
- ✅ **No merge conflicts**
- ❌ **QA assured** — This PR is missing the 'stat: QA assured' label
- ✅ **Mergeable**
- ✅ **Has milestone or project**
- ✅ **Valid PR title**
- ✅ **Correct target version**

GitHub Check: Dionisio QA: Some checks did not pass

Conclusion: failure

View job details

**Conclusion:** failure
### Steps
- ✅ **No merge conflicts**
- ❌ **QA assured** — This PR is missing the 'stat: QA assured' label
- ✅ **Mergeable**
- ✅ **Has milestone or project**
- ✅ **Valid PR title**
- ✅ **Correct target version**

Walkthrough

The pull request adds string utilities to @rocket.chat/tools, re-exports them, and migrates workspace consumers from @rocket.chat/string-helpers. It also removes obsolete dependencies, simplifies selected type assertions, updates tests and tooling, and adds release metadata.

Changes

String tools migration

Layer / File(s) Summary
Tools utility implementation and exports
packages/tools/src/*
Adds toString, capitalize, escapeHTML, unescapeHTML, and escapeRegExp, with tests and barrel exports.
Application import migration
apps/meteor/app/*, apps/meteor/client/*, packages/ui-client/*
Redirects client-side and application imports from @rocket.chat/string-helpers to @rocket.chat/tools.
Server and enterprise import migration
apps/meteor/server/*, apps/meteor/ee/*, ee/packages/abac/*
Redirects server-side and enterprise imports, including test mocks, to @rocket.chat/tools.
Workspace cleanup and release metadata
packages/models/*, */package.json, fuselage.sh, .changeset/*
Removes obsolete dependencies, simplifies selected type assertions, updates package tooling, and adds release metadata.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ 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%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ 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 clearly and concisely describes the primary change: replacing @rocket.chat/string-helpers with @rocket.chat/tools.
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.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (2)
  • ARCH-2361: Request failed with status code 401
  • ARCH-2350: Request failed with status code 401

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.

sampaiodiego
sampaiodiego previously approved these changes Aug 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/tools/src/toString.ts`:
- Around line 1-2: Update the toString function to convert truthy objects with
String(object) instead of template interpolation, so symbols are handled safely,
and remove the now-unnecessary ESLint disable directive.

In `@packages/tools/src/unescapeHTML.ts`:
- Around line 30-37: Update numeric entity handling in unescapeHTML to parse
decimal and hexadecimal values with Number.parseInt, validate that each code
point is within 0–0x10FFFF, and decode valid values with String.fromCodePoint
instead of String.fromCharCode. In packages/tools/src/unescapeHTML.spec.ts lines
4-31, add regression cases covering decimal and hexadecimal supplementary-plane
entities.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5635c44e-54c8-4160-bc69-4ca5295ab10a

📥 Commits

Reviewing files that changed from the base of the PR and between 5eb48dc and 9202145.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (132)
  • .changeset/thick-kings-type.md
  • apps/meteor/app/emoji-native/lib/getEmojiConfig.ts
  • apps/meteor/app/emoji/client/helpers.ts
  • apps/meteor/app/highlight-words/client/helper.ts
  • apps/meteor/app/markdown/lib/markdown.js
  • apps/meteor/app/markdown/lib/parser/original/code.js
  • apps/meteor/app/mentions/lib/MentionsParser.ts
  • apps/meteor/app/utils/lib/getURL.ts
  • apps/meteor/client/components/GazzodownText.tsx
  • apps/meteor/client/components/UserAndRoomAutoCompleteMultiple/UserAndRoomAutoCompleteMultiple.tsx
  • apps/meteor/client/lib/chats/flows/processSlashCommand.ts
  • apps/meteor/client/lib/customEmoji.ts
  • apps/meteor/client/lib/customOAuth/CustomOAuth.ts
  • apps/meteor/client/lib/loginServices.ts
  • apps/meteor/client/lib/utils/normalizeMessagePreview/getMessagePreview.ts
  • apps/meteor/client/lib/utils/normalizeMessagePreview/normalizeMessagePreview.ts
  • apps/meteor/client/navbar/NavBarSearch/hooks/useAISearchRooms.ts
  • apps/meteor/client/navbar/NavBarSearch/hooks/useSearchItems.ts
  • apps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsx
  • apps/meteor/client/providers/TranslationProvider.tsx
  • apps/meteor/client/views/admin/customUserStatus/CustomUserStatusTable/CustomUserStatusTable.tsx
  • apps/meteor/client/views/admin/integrations/IntegrationsTable.tsx
  • apps/meteor/client/views/admin/permissions/helpers/mapPermissionKeys.ts
  • apps/meteor/client/views/admin/settings/groups/OAuthGroupPage/OAuthGroupPage.tsx
  • apps/meteor/client/views/omnichannel/components/outboundMessage/utils/template.spec.ts
  • apps/meteor/client/views/omnichannel/components/outboundMessage/utils/template.ts
  • apps/meteor/client/views/omnichannel/contactHistory/MessageList/useHistoryMessageList.ts
  • apps/meteor/client/views/omnichannel/reports/hooks/useChannelsSection.ts
  • apps/meteor/client/views/room/contextualBar/Discussions/useDiscussionsList.ts
  • apps/meteor/client/views/room/contextualBar/ExportMessages/useExportMessagesAsPDFMutation.tsx
  • apps/meteor/client/views/room/contextualBar/Threads/hooks/useNormalizedThreadTitleHtml.ts
  • apps/meteor/client/views/room/contextualBar/Threads/hooks/useThreadsList.ts
  • apps/meteor/client/views/room/hooks/useBanUser.tsx
  • apps/meteor/client/views/room/hooks/useUnbanUser.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeModeratorAction.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useChangeOwnerAction.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useMuteUserAction.tsx
  • apps/meteor/client/views/room/hooks/useUserInfoActions/actions/useRemoveUserAction.tsx
  • apps/meteor/client/views/room/providers/ComposerPopupProvider.tsx
  • apps/meteor/client/views/root/hooks/useIframeCommands.ts
  • apps/meteor/client/views/root/hooks/useOAuthPopupCommands.ts
  • apps/meteor/ee/server/api/lib/canned-responses.js
  • apps/meteor/ee/server/api/sessions.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/monitors.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/priorities.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/sla.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/tags.ts
  • apps/meteor/ee/server/api/v1/omnichannel/lib/units.ts
  • apps/meteor/ee/server/configuration/oauth.ts
  • apps/meteor/ee/server/lib/audit/functions.ts
  • apps/meteor/ee/server/lib/omnichannel/Department.ts
  • apps/meteor/ee/server/lib/omnichannel/business-hour/lib/business-hour.ts
  • apps/meteor/ee/server/models/raw/LivechatRooms.ts
  • apps/meteor/ee/server/services/package.json
  • apps/meteor/lib/utils/stringUtils.ts
  • apps/meteor/package.json
  • apps/meteor/server/api/lib/users.ts
  • apps/meteor/server/api/v1/chat.ts
  • apps/meteor/server/api/v1/custom-sounds.ts
  • apps/meteor/server/api/v1/custom-user-status.ts
  • apps/meteor/server/api/v1/emoji-custom.ts
  • apps/meteor/server/api/v1/integrations.ts
  • apps/meteor/server/api/v1/misc.ts
  • apps/meteor/server/api/v1/moderation.ts
  • apps/meteor/server/api/v1/omnichannel/contact.ts
  • apps/meteor/server/api/v1/omnichannel/lib/customFields.ts
  • apps/meteor/server/api/v1/omnichannel/lib/departments.ts
  • apps/meteor/server/api/v1/omnichannel/lib/users.ts
  • apps/meteor/server/api/v1/omnichannel/visitors.ts
  • apps/meteor/server/api/v1/teams.ts
  • apps/meteor/server/api/v1/users.ts
  • apps/meteor/server/lib/auth/startup.js
  • apps/meteor/server/lib/autotranslate/autotranslate.ts
  • apps/meteor/server/lib/dataExport/exportRoomMessagesToFile.ts
  • apps/meteor/server/lib/dataExport/processDataDownloads.ts
  • apps/meteor/server/lib/dataExport/sendViaEmail.ts
  • apps/meteor/server/lib/findUsersOfRoomOrderedByRole.ts
  • apps/meteor/server/lib/messaging/Message.ts
  • apps/meteor/server/lib/notifications/email/api.ts
  • apps/meteor/server/lib/notifications/mail-messages/functions/sendMail.ts
  • apps/meteor/server/lib/notifications/message/email.js
  • apps/meteor/server/lib/notifications/message/index.ts
  • apps/meteor/server/lib/notifications/message/messageContainsHighlight.ts
  • apps/meteor/server/lib/oauth/addOAuthService.ts
  • apps/meteor/server/lib/oauth/allowPassportOAuthMiddleware.ts
  • apps/meteor/server/lib/oauth/createOAuthServiceConfig.ts
  • apps/meteor/server/lib/parseMessageSearchQuery.ts
  • apps/meteor/server/lib/saml/lib/SAML.ts
  • apps/meteor/server/lib/spotlight.js
  • apps/meteor/server/lib/ui-master/index.ts
  • apps/meteor/server/lib/users/checkUsernameAvailability.ts
  • apps/meteor/server/lib/users/setEmail.ts
  • apps/meteor/server/lib/utils/lib/getValidRoomName.ts
  • apps/meteor/server/meteor-methods/auth/removeOAuthService.ts
  • apps/meteor/server/meteor-methods/rooms/browseChannels.ts
  • apps/meteor/server/services/team/service.ts
  • apps/meteor/tests/mocks/data/outbound-message.ts
  • apps/meteor/tests/unit/app/markdown/client.tests.js
  • apps/meteor/tests/unit/server/lib/notifications/message/getEmailContent.spec.ts
  • apps/meteor/tests/unit/server/lib/saml/server.tests.ts
  • apps/meteor/tests/unit/server/services/team/service.tests.ts
  • ee/apps/account-service/package.json
  • ee/apps/authorization-service/package.json
  • ee/apps/ddp-streamer/package.json
  • ee/apps/presence-service/package.json
  • ee/packages/abac/src/index.ts
  • ee/packages/abac/src/store/LocalAttributeStore.ts
  • ee/packages/omnichannel-services/package.json
  • fuselage.sh
  • packages/models/package.json
  • packages/models/src/models/CallHistory.ts
  • packages/models/src/models/LivechatContacts.ts
  • packages/models/src/models/LivechatDepartment.ts
  • packages/models/src/models/LivechatPriority.ts
  • packages/models/src/models/LivechatRooms.ts
  • packages/models/src/models/LivechatVisitors.ts
  • packages/models/src/models/Messages.ts
  • packages/models/src/models/Rooms.ts
  • packages/models/src/models/Subscriptions.ts
  • packages/models/src/models/Users.ts
  • packages/tools/src/capitalize.spec.ts
  • packages/tools/src/capitalize.ts
  • packages/tools/src/escapeHTML.spec.ts
  • packages/tools/src/escapeHTML.ts
  • packages/tools/src/escapeRegExp.spec.ts
  • packages/tools/src/escapeRegExp.ts
  • packages/tools/src/index.ts
  • packages/tools/src/toString.ts
  • packages/tools/src/unescapeHTML.spec.ts
  • packages/tools/src/unescapeHTML.ts
  • packages/ui-client/package.json
  • packages/ui-client/src/views/setupWizard/steps/AdminInfoStep.tsx
💤 Files with no reviewable changes (7)
  • apps/meteor/package.json
  • ee/apps/account-service/package.json
  • apps/meteor/ee/server/services/package.json
  • ee/apps/authorization-service/package.json
  • ee/packages/omnichannel-services/package.json
  • ee/apps/ddp-streamer/package.json
  • ee/apps/presence-service/package.json

Comment thread packages/tools/src/toString.ts
Comment thread packages/tools/src/unescapeHTML.ts
@codecov

codecov Bot commented Aug 12, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.66667% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 68.98%. Comparing base (57f7a0c) to head (cda66e7).
⚠️ Report is 5 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #41763      +/-   ##
===========================================
- Coverage    68.99%   68.98%   -0.01%     
===========================================
  Files         4219     4224       +5     
  Lines       165981   166089     +108     
  Branches     29519    29557      +38     
===========================================
+ Hits        114513   114572      +59     
- Misses       46313    46365      +52     
+ Partials      5155     5152       -3     
Flag Coverage Δ
e2e 58.88% <100.00%> (+<0.01%) ⬆️
e2e-api 45.74% <66.66%> (+0.02%) ⬆️
unit 70.90% <98.21%> (-0.01%) ⬇️

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.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 133 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread packages/tools/src/toString.ts
Comment thread packages/tools/src/unescapeHTML.ts
Comment thread packages/tools/src/unescapeHTML.ts
Comment thread packages/tools/src/toString.ts
Comment thread packages/tools/src/unescapeHTML.spec.ts
dougfabris
dougfabris previously approved these changes Aug 12, 2026
The spec was copied verbatim from `@rocket.chat/string-helpers`, which
asserted `unescapeHTML('&nbsp;')` three times and `unescapeHTML('&#39;')`
twice with identical inputs and expectations. Coverage stays at 100%.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@tassoevan
tassoevan dismissed stale reviews from dougfabris and sampaiodiego via cda66e7 August 12, 2026 15:29
@tassoevan
tassoevan requested a review from sampaiodiego August 12, 2026 17:03
@tassoevan tassoevan added the stat: QA assured Means it has been tested and approved by a company insider label Aug 12, 2026
@dionisio-bot dionisio-bot Bot added the stat: ready to merge PR tested and approved waiting for merge label Aug 12, 2026
@dionisio-bot
dionisio-bot Bot added this pull request to the merge queue Aug 12, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 12, 2026
@dougfabris dougfabris removed the stat: QA assured Means it has been tested and approved by a company insider label Aug 12, 2026
@dionisio-bot dionisio-bot Bot removed the stat: ready to merge PR tested and approved waiting for merge label Aug 12, 2026
@dougfabris dougfabris added the stat: QA assured Means it has been tested and approved by a company insider label Aug 12, 2026
@dionisio-bot dionisio-bot Bot added the stat: ready to merge PR tested and approved waiting for merge label Aug 12, 2026
@dionisio-bot
dionisio-bot Bot added this pull request to the merge queue Aug 12, 2026
Merged via the queue into develop with commit 742009a Aug 12, 2026
56 checks passed
@dionisio-bot
dionisio-bot Bot deleted the chore/string-helpers branch August 12, 2026 19:09
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.

3 participants