Skip to content

fix: correct issues found during the comment cleanup - #3334

Merged
oliverlaz merged 3 commits into
docs/tidy-src-commentsfrom
fix/comment-cleanup-findings
Oct 21, 2026
Merged

oliverlaz merged 3 commits into
docs/tidy-src-commentsfrom
fix/comment-cleanup-findings

Conversation

@oliverlaz

@oliverlaz oliverlaz commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Goal

Fix the code issues noticed while tidying comments in #3332. Each item was checked against the code (and against stream-chat 10.0.0-rc.22 where it depends on LLC behavior) before changing anything. Stacked on #3332: its branch is the base, so merge that first.

Implementation details

Three commits, kept apart so they can be reviewed separately:

fix: correct logic bugs (each with a regression test that fails without the fix)

  • getLastReceived never checked the first message (i > 0).
  • WAV encoding wrote audio with three or more channels at misaligned offsets. The internal encodeToWaw is renamed to encodeToWav (not exported from any entry point).
  • NumericInput: stepping an empty field with no min emitted "-Infinity"; it now steps to min, or 0.
  • .xlsb mapped to the .xlam MIME type, so it got the fallback icon.
  • MessageRepliesCountButton with only labelSingle rendered "1 " for any count.
  • InfiniteScroll / InfiniteScrollPaginator never removed the wheel listener when useCapture was true. The existing test pinned the wrong removal and is updated.
  • useStateStore returned the stale cached selection when the selection gained a key or an array selection grew with the same prefix. Otherwise unchanged; seven new tests cover the cache.
  • createTextComposerEmojiMiddleware mutated its module-level defaults, leaking one call's options into later calls.
  • Replacing a channel released every thread bound as a slot base, including threads of other channels. With a known replaced channel only its own threads (matched by cid) are released; without one the behavior is unchanged.
  • DownloadButton rendered a link to about:blank for an unsafe URL; it now renders nothing.
  • The poll creation dialog called send() even when createPoll() returned without a poll, which would send drafted text instead.
  • NotificationList immediately swapped in an older notification of the same type (with a LIFO queue), skipping the dwell window.
  • useLatestMessagePreview cast any message status to a delivery status (e.g. received leaked into the public deliveryStatus).
  • A nested WithDragAndDropUpload dropped its style.

refactor: remove dead internal code: the unused CardAudio component and useThreadState hook, mock-builders helpers for contexts removed in v15, unreachable branches, an unused internal parameter, a mid-file import. The skipped snap-back spec in MessageList.test.tsx passes (and fails with its guard disabled), so it is re-enabled. Public API is untouched; everything removed is internal per scripts/api-surface.mts.

chore: reword stale text: handleActionWarning / reactionHandlerWarning no longer mention the removed ChannelAction/ChannelState contexts, test names drop history wording and ticket IDs, and {@link} targets that do not resolve become code spans. No t() copy changed.

Not changed here, open for a decision: jump-to-latest from older history does not scroll (the v10 paginator suppresses the focus signal by default and autoscroll skips the merge into the head), the missing str-chat__message-text-inner class, Callout putting className on its close button, the Slot base remounting on the first and last layer, unused public props (getErrorNotification, acceptedFiles, activeChannel, overflowCount, MessageReactions.reverse) and AudioPlayerState.playbackError never being written.

Checks: yarn lint, tsc -p tsconfig.lib.json --noEmit, yarn validate-translations and yarn test (287 files, 3126 tests) pass. yarn types:tests goes from 1004 to 1000 errors, none on changed lines.

UI Changes

No visual changes. Behavior changes are limited to the fixes above.

Summary by CodeRabbit

  • New Features

    • Added support for Excel binary workbook (XLSB) file icons.
    • Numeric steppers now provide sensible values when starting from an empty field.
    • Drag-and-drop upload areas preserve custom styling.
    • Improved message mentions and email link formatting.
  • Bug Fixes

    • Unsafe attachment URLs are no longer rendered as download links.
    • Corrected multi-channel WAV recording and audio conversion.
    • Prevented accidental text delivery when poll creation fails.
    • Improved notification ordering, thread navigation, unread-message handling, and reply counts.
    • Fixed scroll and wheel-event cleanup after list unmounting.

- getLastReceived checks the first message too.
- WAV encoding interleaves audio with three or more channels at the right
  offsets; the internal encodeToWaw is renamed to encodeToWav.
- NumericInput steps an empty value to min, or to 0 without a lower bound,
  instead of emitting "-Infinity".
- .xlsb files get their own MIME type and the spreadsheet icon.
- MessageRepliesCountButton uses labelSingle only for a single reply.
- InfiniteScroll and InfiniteScrollPaginator remove the wheel listener on
  unmount when useCapture is true.
- useStateStore returns a new selection when it gains a key or an array
  selection grows with the same prefix.
- createTextComposerEmojiMiddleware no longer mutates its defaults, so options
  passed to one call do not leak into later ones.
- Replacing a channel releases only that channel's reply threads, not threads
  of other channels bound as a slot base.
- DownloadButton renders nothing for an unsafe URL instead of a link to
  about:blank.
- The poll creation dialog does not send the composer when no poll was
  created.
- NotificationList swaps immediately only to a newer notification of the same
  type; an older one waits for the dwell window.
- useLatestMessagePreview maps only the sending status to a delivery status.
- A nested WithDragAndDropUpload keeps its style.
- Delete the unused CardAudio component (its styles stay) and the unused
  useThreadState hook.
- Drop the mock-builders helpers for the ChannelState, ChannelAction and
  Typing contexts, which no longer exist.
- Remove unreachable branches: the email case in renderText's link branch,
  VirtualizedMessageList's null check on its always-defined message array, and
  the ID fallbacks in useIncomingMessageAnnouncements.
- Remove the unused unreadCount parameter of the internal
  useUnreadMessagesNotification and the array fallback for hasMoreHead.
- Replace the mention regex in mentionsMarkdownPlugin with the equivalent
  endsWith('@') check.
- Move a mid-file import in AttachmentContainer to the top.
- Tests: drop a dead context mock and an ignored Channel prop, and re-enable
  the snap-back spec in MessageList, which passes.
- handleActionWarning and reactionHandlerWarning no longer point at the
  removed ChannelAction and ChannelState contexts.
- Test names drop history wording, ticket IDs and an em-dash.
- Doc links to AriaLiveAnnounceOptions and TranslationDictionary, which do not
  resolve in their files, become code spans.
@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Review in Change Stack β†’

No actionable comments were generated in the recent review. πŸŽ‰

ℹ️ Recent review info
βš™οΈ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 89d8c84b-5fd6-438d-b436-b26a5fd2cbea
πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between c46f095 and 57f6e08.

πŸ“’ Files selected for processing: 52
  • src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts
  • src/components/Accessibility/hooks/useInteractionAnnouncements.ts
  • src/components/Attachment/AttachmentContainer.tsx
  • src/components/Attachment/LinkPreview/CardAudio.tsx
  • src/components/Attachment/__tests__/DownloadButton.test.tsx
  • src/components/Attachment/__tests__/Giphy.test.tsx
  • src/components/Attachment/components/DownloadButton.tsx
  • src/components/Channel/__tests__/Channel.test.tsx
  • src/components/FileIcon/__tests__/FileIcon.test.tsx
  • src/components/FileIcon/mimeTypes.ts
  • src/components/Form/NumericInput.tsx
  • src/components/Form/__tests__/NumericInput.test.tsx
  • src/components/InfiniteScrollPaginator/InfiniteScroll.tsx
  • src/components/InfiniteScrollPaginator/InfiniteScrollPaginator.tsx
  • src/components/InfiniteScrollPaginator/__tests__/InfiniteScroll.test.tsx
  • src/components/InfiniteScrollPaginator/__tests__/InfiniteScrollPaginator.test.tsx
  • src/components/MediaRecorder/classes/__tests__/MediaRecorderController.test.ts
  • src/components/MediaRecorder/transcode/__tests__/wav.test.ts
  • src/components/MediaRecorder/transcode/index.ts
  • src/components/MediaRecorder/transcode/wav.ts
  • src/components/Message/MessageRepliesCountButton.tsx
  • src/components/Message/__tests__/MessageRepliesCountButton.test.tsx
  • src/components/Message/hooks/useActionHandler.ts
  • src/components/Message/hooks/useReactionHandler.ts
  • src/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.ts
  • src/components/Message/renderText/renderText.tsx
  • src/components/MessageComposer/AttachmentSelector/__tests__/CommandsMenu.test.tsx
  • src/components/MessageComposer/WithDragAndDropUpload.tsx
  • src/components/MessageComposer/__tests__/MessageInput.test.tsx
  • src/components/MessageComposer/__tests__/WithDragAndDropUpload.test.tsx
  • src/components/MessageList/VirtualizedMessageList.tsx
  • src/components/MessageList/__tests__/MessageList.test.tsx
  • src/components/MessageList/__tests__/VirtualizedMessageListComponents.test.tsx
  • src/components/MessageList/__tests__/utils.test.ts
  • src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
  • src/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.ts
  • src/components/MessageList/utils.ts
  • src/components/Notifications/NotificationList.tsx
  • src/components/Notifications/__tests__/NotificationList.test.tsx
  • src/components/Poll/PollCreationDialog/PollCreationDialogControls.tsx
  • src/components/Poll/__tests__/PollCreationDialog.test.tsx
  • src/components/SummarizedMessagePreview/__tests__/useLatestMessagePreview.test.tsx
  • src/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.ts
  • src/components/Threads/hooks/useThreadState.ts
  • src/i18n/Streami18n.ts
  • src/mock-builders/context.ts
  • src/plugins/Emojis/middleware/__tests__/textComposerEmojiMiddleware.test.ts
  • src/plugins/Emojis/middleware/textComposerEmojiMiddleware.ts
  • src/plugins/SlotLayout/ChatViewNavigationContext.tsx
  • src/plugins/SlotLayout/__tests__/ChatViewNavigation.test.tsx
  • src/store/hooks/__tests__/useStateStoreSelection.test.tsx
  • src/store/hooks/useStateStore.ts
πŸ’€ Files with no reviewable changes: 5
  • src/components/Threads/hooks/useThreadState.ts
  • src/components/Attachment/LinkPreview/CardAudio.tsx
  • src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts
  • src/components/Attachment/tests/Giphy.test.tsx
  • src/mock-builders/context.ts

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

πŸ“ Walkthrough

This pull request updates behavior across attachment, form, media, message, notification, poll, navigation, and state-store components. It also removes several components and helpers, and adds tests for the changed behavior.

Changes: Accessibility announcements

Layer / File(s) Summary
Announcement deduplication and documentation
src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts, src/components/Accessibility/hooks/useInteractionAnnouncements.ts
Announcement deduplication checks and records message IDs directly. Two JSDoc references now use plain text.

Attachment rendering

Layer / File(s) Summary
Attachment components and tests
src/components/Attachment/AttachmentContainer.tsx, src/components/Attachment/LinkPreview/CardAudio.tsx, src/components/Attachment/components/DownloadButton.tsx, src/components/Attachment/__tests__/*
The attachment container imports its context from the updated location. The audio card is removed. The download button rejects sanitized unsafe URLs, with tests for safe, missing, and unsafe URLs.

File icon MIME types

Layer / File(s) Summary
XLSB icon mapping and tests
src/components/FileIcon/mimeTypes.ts, src/components/FileIcon/__tests__/FileIcon.test.tsx
The Excel binary workbook MIME type maps to the spreadsheet icon and the xlsb extension. Tests cover the icon and rendered label.

Numeric input stepping

Layer / File(s) Summary
Empty-value step behavior
src/components/Form/NumericInput.tsx, src/components/Form/__tests__/NumericInput.test.tsx
Empty inputs step to zero or the minimum, clamped to the effective bounds. Tests cover increment and decrement with and without a minimum.

Infinite scroll wheel listeners

Layer / File(s) Summary
Listener cleanup and unmount behavior
src/components/InfiniteScrollPaginator/InfiniteScroll.tsx, src/components/InfiniteScrollPaginator/InfiniteScrollPaginator.tsx, src/components/InfiniteScrollPaginator/__tests__/*
Both components remove wheel listeners without a capture argument. Tests check event prevention while mounted and after unmount for both capture settings.

WAV encoding

Layer / File(s) Summary
Encoder naming, channel offsets, and tests
src/components/MediaRecorder/transcode/*, src/components/MediaRecorder/transcode/__tests__/wav.test.ts, src/components/MediaRecorder/classes/__tests__/MediaRecorderController.test.ts
The transcode entry point uses encodeToWav. WAV writing adjusts each channel offset by the sample width. Tests cover mono, stereo, and three-channel PCM output.

Message labels and rendering

Layer / File(s) Summary
Reply labels, warnings, and links
src/components/Message/MessageRepliesCountButton.tsx, src/components/Message/hooks/*, src/components/Message/renderText/*, src/components/Message/__tests__/MessageRepliesCountButton.test.tsx
Single-reply labels apply only to one reply. Hook warnings use revised wording. Email mention detection and displayed-link formatting are updated.

Message composer

Layer / File(s) Summary
Nested upload props and test descriptions
src/components/MessageComposer/WithDragAndDropUpload.tsx, src/components/MessageComposer/__tests__/*, src/components/MessageComposer/AttachmentSelector/__tests__/CommandsMenu.test.tsx
Nested upload wrappers forward style alongside className and children. Tests verify the forwarded props. Two test descriptions remove obsolete references.

Message list and preview state

Layer / File(s) Summary
List rendering, message status, and utility behavior
src/components/MessageList/VirtualizedMessageList.tsx, src/components/MessageList/utils.ts, src/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.ts, src/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.ts, src/components/MessageList/__tests__/*, src/components/SummarizedMessagePreview/__tests__/useLatestMessagePreview.test.tsx
The virtualized list no longer returns early for falsy processed messages. Received-message lookup includes the first message, and preview delivery status is restricted to explicit status or sending. Tests cover these behaviors and related list utilities.
Pagination inputs and scroll tests
src/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.ts, src/components/MessageList/__tests__/MessageList.test.tsx, src/components/Channel/__tests__/Channel.test.tsx
The unread notification parameter no longer includes unreadCount, and hasMoreNewer preserves the paginator value. Tests cover newer-page scroll behavior and the disconnected-client channel case.

Transient notification ordering

Layer / File(s) Summary
Newer same-type notification selection
src/components/Notifications/NotificationList.tsx, src/components/Notifications/__tests__/NotificationList.test.tsx
Selection and scheduling compare creation times for same-type transient notifications. A regression test checks that an older queued notification does not replace the active one.

Poll creation

Layer / File(s) Summary
Poll ID check and regression test
src/components/Poll/PollCreationDialog/PollCreationDialogControls.tsx, src/components/Poll/__tests__/PollCreationDialog.test.tsx
Submission is skipped when poll creation returns no poll ID. The test verifies that drafted text is not sent, the dialog closes, and no success notification appears.

Reply-thread slot navigation

Layer / File(s) Summary
Channel-aware thread cleanup
src/plugins/SlotLayout/ChatViewNavigationContext.tsx, src/plugins/SlotLayout/__tests__/ChatViewNavigation.test.tsx
Thread cleanup checks thread kind and, when provided, the replaced channel ID. Tests cover threads from the replaced channel and another channel.

Removed thread and context helpers

Layer / File(s) Summary
Thread hook and context mock removal
src/components/Threads/hooks/useThreadState.ts, src/mock-builders/context.ts
The thread state hook and mock builders for channel state, channel actions, and typing contexts are removed.

Emoji middleware options

Layer / File(s) Summary
Option isolation and middleware tests
src/plugins/Emojis/middleware/textComposerEmojiMiddleware.ts, src/plugins/Emojis/middleware/__tests__/textComposerEmojiMiddleware.test.ts
Middleware option merging no longer mutates shared defaults. Tests cover the default trigger and isolation of custom trigger settings.

State store selection equality

Layer / File(s) Summary
Selection comparison and hook tests
src/store/hooks/useStateStore.ts, src/store/hooks/__tests__/useStateStoreSelection.test.tsx
Selection equality checks keys and values in both selections before reusing a cached selection. Tests cover object and array changes, reference reuse, and a missing store.

Priority: βž– Normal

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Bug fix

Merge Risk: βšͺ Minimal Β· up to 57f6e

This PR fixes several small behavior bugs and adds tests for them. No concrete merge-blocking risk was found.

Pre-merge checks: Passed 4 Β· Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 47 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title accurately summarizes the pull request as fixes for issues found during the comment cleanup. It is concise and related to the main change, although it does not name the individual fixes.
Description check Passed The description covers the goal, implementation details, UI impact, regression tests, validation results, stacked-PR context, and known out-of-scope issues. The headings omit the template emojis, but …
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: Description check

Explanation

The description covers the goal, implementation details, UI impact, regression tests, validation results, stacked-PR context, and known out-of-scope issues. The headings omit the template emojis, but all required sections and information are present.

  • Fix all pre-merge checks with AI
✨ Finishing Touches: πŸ’‘ 1
πŸ“ Generate docstrings: πŸ’‘
  • Commit to this branch
  • Create a new PR
πŸ§ͺ Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix Β· Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@codecov

codecov Bot commented Oct 20, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.95918% with 1 line in your changes missing coverage. Please review.
βœ… Project coverage is 87.72%. Comparing base (c46f095) to head (57f6e08).

Files with missing lines Patch % Lines
...ssibility/hooks/useIncomingMessageAnnouncements.ts 75.00% 1 Missing ⚠️
Additional details and impacted files
@@                    Coverage Diff                     @@
##           docs/tidy-src-comments    #3334      +/-   ##
==========================================================
+ Coverage                   87.02%   87.72%   +0.70%     
==========================================================
  Files                         547      545       -2     
  Lines                       16251    16217      -34     
  Branches                     5097     5077      -20     
==========================================================
+ Hits                        14142    14227      +85     
+ Misses                       2109     1990     -119     

β˜” View full report in Codecov by Harness.
πŸ“’ Have feedback on the report? Share it here.

πŸš€ 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.

@oliverlaz
oliverlaz added this pull request to stack #3335 October 20, 2026 13:53
@github-actions

Copy link
Copy Markdown
Contributor

Size Change: -1.39 kB (-0.16%)

Total Size: 847 kB

πŸ“¦ View Changed
Filename Size Change
dist/cjs/ai-components.js 6.43 kB -4 B (-0.06%)
dist/cjs/channel-detail.js 24.5 kB +1 B (0%)
dist/cjs/Chart.js 1.1 kB -2 B (-0.18%)
dist/cjs/emojis.js 2.83 kB +2 B (+0.07%)
dist/cjs/index.js 146 kB -28 B (-0.02%)
dist/cjs/ListItemLayout.js 21.7 kB +30 B (+0.14%)
dist/cjs/MessageComposerControllerContext.js 1.18 kB -1 B (-0.08%)
dist/cjs/ReactPlayerWrapper.js 521 B -1 B (-0.19%)
dist/cjs/slot-layout.js 13.9 kB +16 B (+0.12%)
dist/cjs/Thread.js 40.2 kB +4 B (+0.01%)
dist/cjs/useComponentContextIcons.js 22.2 kB +30 B (+0.14%)
dist/cjs/useMessageTextStreaming.js 817 B -3 B (-0.37%)
dist/cjs/usePopoverPosition.js 2.05 kB -1 B (-0.05%)
dist/cjs/useStableCallback.js 933 B -1 B (-0.11%)
dist/cjs/WorkspaceNavigationContext.js 19.7 kB +32 B (+0.16%)
dist/es/components/Accessibility/hooks/useIncomingMessageAnnouncements.mjs 1.25 kB -11 B (-0.88%)
dist/es/components/Accessibility/hooks/useInteractionAnnouncements.mjs 2.64 kB -1 B (-0.04%)
dist/es/components/Attachment/components/DownloadButton.mjs 692 B +19 B (+2.82%)
dist/es/components/ChannelListItem/ChannelListItemActionButtons.mjs 1.07 kB -1.54 kB (-58.84%) πŸ†
dist/es/components/FileIcon/mimeTypes.mjs 1.75 kB +12 B (+0.69%)
dist/es/components/Form/NumericInput.mjs 1.39 kB +21 B (+1.53%)
dist/es/components/InfiniteScrollPaginator/InfiniteScroll.mjs 1.06 kB -3 B (-0.28%)
dist/es/components/InfiniteScrollPaginator/InfiniteScrollPaginator.mjs 1.03 kB -1 B (-0.1%)
dist/es/components/MediaRecorder/transcode/wav.mjs 1.32 kB +1 B (+0.08%)
dist/es/components/Message/hooks/useActionHandler.mjs 585 B -19 B (-3.15%)
dist/es/components/Message/hooks/useReactionHandler.mjs 1.29 kB -35 B (-2.64%)
dist/es/components/Message/MessageRepliesCountButton.mjs 1.11 kB +5 B (+0.45%)
dist/es/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.mjs 1.61 kB -10 B (-0.62%)
dist/es/components/Message/renderText/renderText.mjs 1.58 kB -6 B (-0.38%)
dist/es/components/MessageComposer/WithDragAndDropUpload.mjs 1.54 kB +5 B (+0.33%)
dist/es/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.mjs 585 B -5 B (-0.85%)
dist/es/components/MessageList/VirtualizedMessageList.mjs 4.27 kB -11 B (-0.26%)
dist/es/components/Notifications/NotificationList.mjs 2.79 kB +31 B (+1.12%)
dist/es/components/Poll/PollCreationDialog/PollCreationDialogControls.mjs 832 B +12 B (+1.46%)
dist/es/components/SummarizedMessagePreview/hooks/useLatestMessagePreview.mjs 1.53 kB +11 B (+0.72%)
dist/es/i18n/Streami18n.mjs 792 B -4 B (-0.5%)
dist/es/plugins/Emojis/middleware/textComposerEmojiMiddleware.mjs 1.53 kB +3 B (+0.2%)
dist/es/plugins/SlotLayout/ChatViewNavigationContext.mjs 2.47 kB +22 B (+0.9%)
dist/es/store/hooks/useStateStore.mjs 550 B +34 B (+6.59%) πŸ”
ℹ️ View Unchanged
Filename Size
dist/cjs/audioProcessing.js 1.53 kB
dist/cjs/chartTypes.js 584 B
dist/cjs/mp3-encoder.js 816 B
dist/cjs/slot-js 2.05 kB
dist/cjs/useChannel.js 412 B
dist/css/ai-components.css 2.99 kB
dist/css/channel-detail.css 2.84 kB
dist/css/emoji-picker.css 178 B
dist/css/emoji-replacement.css 456 B
dist/css/index.css 43.4 kB
dist/es/_virtual/_rolldown/runtime.mjs 252 B
dist/es/a11y/a11yUtils.mjs 630 B
dist/es/a11y/accessibleLabel.mjs 627 B
dist/es/a11y/hooks/useAriaIdentifiers.mjs 455 B
dist/es/a11y/hooks/useListboxKeyboardNavigation.mjs 1.24 kB
dist/es/a11y/hooks/useResolvedModalAriaProps.mjs 484 B
dist/es/a11y/hooks/useVirtualizedListboxKeyboardNavigation.mjs 1.18 kB
dist/es/ai-components.mjs 221 B
dist/es/channel-detail.mjs 802 B
dist/es/components/Accessibility/AriaLiveAnnouncerProvider.mjs 1.47 kB
dist/es/components/Accessibility/AriaLiveOutlet.mjs 882 B
dist/es/components/Accessibility/AriaLiveOutletContext.mjs 194 B
dist/es/components/Accessibility/hooks/useAudioPlaybackChangeAnnouncements.mjs 425 B
dist/es/components/Accessibility/hooks/useFocusReturn.mjs 551 B
dist/es/components/Accessibility/hooks/useInertWhenHidden.mjs 909 B
dist/es/components/Accessibility/NotificationAnnouncer.mjs 988 B
dist/es/components/Accessibility/scheduling/useAnnouncementQueue.mjs 582 B
dist/es/components/Accessibility/scheduling/useDebouncedAnnounce.mjs 747 B
dist/es/components/Accessibility/scheduling/useSettledAnnouncement.mjs 780 B
dist/es/components/Accessibility/useAriaLiveAnnouncer.mjs 314 B
dist/es/components/AIStateIndicator/AIStateIndicator.mjs 475 B
dist/es/components/AIStateIndicator/hooks/useAIState.mjs 428 B
dist/es/components/Attachment/attachment-sizing.mjs 1.05 kB
dist/es/components/Attachment/Attachment.mjs 1.15 kB
dist/es/components/Attachment/AttachmentActions.mjs 1.64 kB
dist/es/components/Attachment/AttachmentContainer.mjs 2.4 kB
dist/es/components/Attachment/Audio.mjs 1.23 kB
dist/es/components/Attachment/audioSampling.mjs 1.39 kB
dist/es/components/Attachment/components/AttachmentUploadProgressIndicator.mjs 644 B
dist/es/components/Attachment/components/FileSizeIndicator.mjs 436 B
dist/es/components/Attachment/FileAttachment.mjs 642 B
dist/es/components/Attachment/Geolocation.mjs 1.42 kB
dist/es/components/Attachment/Giphy.mjs 1.05 kB
dist/es/components/Attachment/giphyAccessibility.mjs 461 B
dist/es/components/Attachment/hooks/useAttachmentUploadState.mjs 1.33 kB
dist/es/components/Attachment/hooks/useLocalVideoDimensions.mjs 1.05 kB
dist/es/components/Attachment/icons.mjs 411 B
dist/es/components/Attachment/Image.mjs 344 B
dist/es/components/Attachment/LinkPreview/Card.mjs 1.02 kB
dist/es/components/Attachment/LinkPreview/UnableToRenderCard.mjs 411 B
dist/es/components/Attachment/ModalGallery.mjs 2.09 kB
dist/es/components/Attachment/UnsupportedAttachment.mjs 413 B
dist/es/components/Attachment/utils.mjs 817 B
dist/es/components/Attachment/VideoAttachment.mjs 926 B
dist/es/components/Attachment/VisibilityDisclaimer.mjs 373 B
dist/es/components/Attachment/VoiceRecording.mjs 1.51 kB
dist/es/components/AudioPlayback/AudioPlaybackArbiter.mjs 939 B
dist/es/components/AudioPlayback/AudioPlayer.mjs 3.74 kB
dist/es/components/AudioPlayback/AudioPlayerPool.mjs 862 B
dist/es/components/AudioPlayback/components/DurationDisplay.mjs 596 B
dist/es/components/AudioPlayback/components/formatTime.mjs 339 B
dist/es/components/AudioPlayback/components/keyboardSeek.mjs 524 B
dist/es/components/AudioPlayback/components/PlaybackRateButton.mjs 300 B
dist/es/components/AudioPlayback/components/ProgressBar.mjs 833 B
dist/es/components/AudioPlayback/components/progressBarA11y.mjs 484 B
dist/es/components/AudioPlayback/components/useInteractiveProgressBar.mjs 1.07 kB
dist/es/components/AudioPlayback/components/WaveProgressBar.mjs 1.74 kB
dist/es/components/AudioPlayback/plugins/AudioPlayerNotificationsPlugin.mjs 659 B
dist/es/components/AudioPlayback/WithAudioPlayback.mjs 1.1 kB
dist/es/components/Avatar/Avatar.mjs 1.02 kB
dist/es/components/Avatar/AvatarStack.mjs 665 B
dist/es/components/Avatar/ChannelAvatar.mjs 344 B
dist/es/components/Avatar/GroupAvatar.mjs 850 B
dist/es/components/Avatar/utils.mjs 183 B
dist/es/components/Badge/Badge.mjs 518 B
dist/es/components/Badge/MediaBadge.mjs 439 B
dist/es/components/BaseImage/BaseImage.mjs 682 B
dist/es/components/BaseImage/ImagePlaceholder.mjs 416 B
dist/es/components/BaseImage/toBaseImageDescriptors.mjs 662 B
dist/es/components/Button/Button.mjs 529 B
dist/es/components/Button/PlayButton.mjs 493 B
dist/es/components/Button/WorkspaceNavigationButtons.mjs 1.03 kB
dist/es/components/Channel/Channel.mjs 1 kB
dist/es/components/Channel/constants.mjs 156 B
dist/es/components/Channel/hooks/useChannelCapabilities.mjs 350 B
dist/es/components/Channel/hooks/useChannelContainerClasses.mjs 346 B
dist/es/components/ChannelHeader/ChannelHeader.mjs 1.05 kB
dist/es/components/ChannelHeader/hooks/useChannelHasMembersOnline.mjs 539 B
dist/es/components/ChannelHeader/hooks/useChannelHeaderOnlineStatus.mjs 578 B
dist/es/components/ChannelList/ChannelList.mjs 1.16 kB
dist/es/components/ChannelList/ChannelListHeader.mjs 430 B
dist/es/components/ChannelList/ChannelLists.mjs 575 B
dist/es/components/ChannelList/ChannelNavigation.mjs 893 B
dist/es/components/ChannelList/hooks/useChannelListKeyboardNavigation.mjs 1.21 kB
dist/es/components/ChannelList/hooks/useChannelMembershipState.mjs 230 B
dist/es/components/ChannelList/hooks/useChannelMembersState.mjs 226 B
dist/es/components/ChannelList/hooks/useChannelPaginatorState.mjs 497 B
dist/es/components/ChannelListItem/channelDisplayState.mjs 934 B
dist/es/components/ChannelListItem/ChannelListItem.mjs 1.06 kB
dist/es/components/ChannelListItem/ChannelListItemTimestamp.mjs 518 B
dist/es/components/ChannelListItem/ChannelListItemUI.mjs 1.5 kB
dist/es/components/ChannelListItem/hooks/useChannelDisplayName.mjs 695 B
dist/es/components/ChannelListItem/hooks/useChannelPreviewInfo.mjs 621 B
dist/es/components/ChannelListItem/hooks/useIsChannelMuted.mjs 320 B
dist/es/components/ChannelListItem/hooks/useIsUserMuted.mjs 271 B
dist/es/components/ChannelListItem/hooks/useMessageDeliveryStatus.mjs 657 B
dist/es/components/ChannelListItem/utils.a11y.mjs 2.08 kB
dist/es/components/ChannelListItem/utils.mjs 2.46 kB
dist/es/components/Chat/Chat.mjs 1.26 kB
dist/es/components/Chat/hooks/useChat.mjs 580 B
dist/es/components/Chat/hooks/useCreateChatClient.mjs 766 B
dist/es/components/Chat/hooks/useCreateChatContext.mjs 445 B
dist/es/components/Chat/hooks/useNetworkConnectionState.mjs 681 B
dist/es/components/Chat/hooks/useReportLostConnectionSystemNotification.mjs 1.5 kB
dist/es/components/Chat/hooks/useSplitActionSet.mjs 317 B
dist/es/components/Chat/hooks/useWSConnectionState.mjs 546 B
dist/es/components/DateSeparator/DateSeparator.mjs 566 B
dist/es/components/Dialog/components/Alert.mjs 647 B
dist/es/components/Dialog/components/Callout.mjs 815 B
dist/es/components/Dialog/components/ContextMenu.mjs 5.3 kB
dist/es/components/Dialog/components/Prompt.mjs 1.09 kB
dist/es/components/Dialog/components/Viewer.mjs 990 B
dist/es/components/Dialog/hooks/useDialog.mjs 688 B
dist/es/components/Dialog/hooks/usePopoverPosition.mjs 925 B
dist/es/components/Dialog/service/DialogAnchor.mjs 1.69 kB
dist/es/components/Dialog/service/DialogManager.mjs 1.18 kB
dist/es/components/Dialog/service/DialogPortal.mjs 1.02 kB
dist/es/components/DragAndDrop/DragAndDropContainer.mjs 1.16 kB
dist/es/components/EmptyStateIndicator/EmptyStateIndicator.mjs 614 B
dist/es/components/EventComponent/EventComponent.mjs 470 B
dist/es/components/FileIcon/FileIconSet.mjs 6.69 kB
dist/es/components/FileIcon/iconMap.mjs 512 B
dist/es/components/FileIcon/mjs 599 B
dist/es/components/Form/FieldError.mjs 261 B
dist/es/components/Form/hooks/useFormState.mjs 550 B
dist/es/components/Form/mjs 1.58 kB
dist/es/components/Form/SwitchField.mjs 1.54 kB
dist/es/components/Form/TextInput.mjs 1.3 kB
dist/es/components/Form/TextInputFieldSet.mjs 376 B
dist/es/components/Gallery/Gallery.mjs 654 B
dist/es/components/Gallery/GalleryContext.mjs 341 B
dist/es/components/Gallery/GalleryHeader.mjs 1.26 kB
dist/es/components/Gallery/GalleryUI.mjs 2.03 kB
dist/es/components/Icons/createIcon.mjs 429 B
dist/es/components/Icons/icons.mjs 19.3 kB
dist/es/components/Icons/mjs 378 B
dist/es/components/InfiniteScrollPaginator/hooks/useCursorPaginator.mjs 598 B
dist/es/components/InfiniteScrollPaginator/InfiniteScrollWithComponents.mjs 734 B
dist/es/components/ListItemLayout/ListItemLayout.mjs 707 B
dist/es/components/Loading/AttachmentUploadedSizeIndicator.mjs 523 B
dist/es/components/Loading/LoadingChannel.mjs 639 B
dist/es/components/Loading/LoadingChannels.mjs 377 B
dist/es/components/Loading/LoadingErrorIndicator.mjs 416 B
dist/es/components/Loading/LoadingIndicator.mjs 286 B
dist/es/components/Loading/progress-indicators.mjs 736 B
dist/es/components/Loading/UploadedSizeIndicator.mjs 413 B
dist/es/components/Loading/UploadProgressIndicator.mjs 366 B
dist/es/components/LoadMore/LoadMoreButton.mjs 503 B
dist/es/components/LoadMore/LoadMorePaginator.mjs 378 B
dist/es/components/Location/hooks/useLiveLocationSharingManager.mjs 644 B
dist/es/components/Location/ShareLocationDialog.mjs 2.27 kB
dist/es/components/MediaRecorder/AudioRecorder/AudioRecorder.mjs 627 B
dist/es/components/MediaRecorder/AudioRecorder/AudioRecorderRecordingControls.mjs 1.04 kB
dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingButtonWithNotification.mjs 1.06 kB
dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPlayback.mjs 1.01 kB
dist/es/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.mjs 910 B
dist/es/components/MediaRecorder/AudioRecorder/hooks/useTimeElapsed.mjs 434 B
dist/es/components/MediaRecorder/AudioRecorder/recordingStateIdentity.mjs 227 B
dist/es/components/MediaRecorder/AudioRecorder/RecordingTimer.mjs 322 B
dist/es/components/MediaRecorder/classes/AmplitudeRecorder.mjs 1.07 kB
dist/es/components/MediaRecorder/classes/BrowserPermission.mjs 758 B
dist/es/components/MediaRecorder/classes/MediaRecorderController.mjs 2.58 kB
dist/es/components/MediaRecorder/hooks/useMediaRecorder.mjs 911 B
dist/es/components/MediaRecorder/observable/BehaviorSubject.mjs 353 B
dist/es/components/MediaRecorder/observable/mjs 186 B
dist/es/components/MediaRecorder/observable/Observable.mjs 315 B
dist/es/components/MediaRecorder/observable/Subject.mjs 550 B
dist/es/components/MediaRecorder/observable/Subscription.mjs 211 B
dist/es/components/MediaRecorder/RecordingPermissionDeniedNotification.mjs 503 B
dist/es/components/MediaRecorder/transcode/audioProcessing.mjs 560 B
dist/es/components/MediaRecorder/transcode/index.mjs 351 B
dist/es/components/Message/emojiRegex.mjs 350 B
dist/es/components/Message/hooks/useDeleteHandler.mjs 610 B
dist/es/components/Message/hooks/useFlagHandler.mjs 383 B
dist/es/components/Message/hooks/useMarkUnreadHandler.mjs 414 B
dist/es/components/Message/hooks/useMentionsHandler.mjs 377 B
dist/es/components/Message/hooks/useMessageAlsoSentInChannelNavigation.mjs 919 B
dist/es/components/Message/hooks/useMessageReminder.mjs 299 B
dist/es/components/Message/hooks/useMessageTextStreaming.mjs 749 B
dist/es/components/Message/hooks/useMuteHandler.mjs 704 B
dist/es/components/Message/hooks/useOpenThreadHandler.mjs 488 B
dist/es/components/Message/hooks/usePinHandler.mjs 608 B
dist/es/components/Message/hooks/useReactionsFetcher.mjs 500 B
dist/es/components/Message/hooks/useRetryHandler.mjs 294 B
dist/es/components/Message/hooks/useUserHandler.mjs 255 B
dist/es/components/Message/hooks/useUserRole.mjs 678 B
dist/es/components/Message/Message.mjs 1.36 kB
dist/es/components/Message/MessageAlsoSentInChannelIndicator.mjs 645 B
dist/es/components/Message/MessageBlocked.mjs 451 B
dist/es/components/Message/MessageBubble.mjs 246 B
dist/es/components/Message/MessageDeletedBubble.mjs 412 B
dist/es/components/Message/MessageEditedIndicator.mjs 722 B
dist/es/components/Message/MessageStatus.mjs 1.29 kB
dist/es/components/Message/MessageText.mjs 1.34 kB
dist/es/components/Message/MessageTimestamp.mjs 418 B
dist/es/components/Message/MessageTranslationIndicator.mjs 896 B
dist/es/components/Message/MessageUI.mjs 2.76 kB
dist/es/components/Message/PinIndicator.mjs 638 B
dist/es/components/Message/QuotedMessage.mjs 427 B
dist/es/components/Message/ReminderNotification.mjs 1.02 kB
dist/es/components/Message/renderText/componentRenderers/Anchor.mjs 406 B
dist/es/components/Message/renderText/componentRenderers/Emoji.mjs 246 B
dist/es/components/Message/renderText/componentRenderers/Mention.mjs 307 B
dist/es/components/Message/renderText/regex.mjs 440 B
dist/es/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.mjs 338 B
dist/es/components/Message/renderText/remarkPlugins/htmlToTextPlugin.mjs 243 B
dist/es/components/Message/renderText/remarkPlugins/imageToLink.mjs 610 B
dist/es/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.mjs 732 B
dist/es/components/Message/renderText/remarkPlugins/plusPlusToEmphasis.mjs 827 B
dist/es/components/Message/renderText/remarkPlugins/remarkIgnoreMarkdown.mjs 316 B
dist/es/components/Message/StreamedMessageText.mjs 500 B
dist/es/components/Message/Timestamp.mjs 525 B
dist/es/components/Message/utils.mjs 2.31 kB
dist/es/components/MessageActions/DeleteMessageAlert.mjs 616 B
dist/es/components/MessageActions/DownloadSubmenu.mjs 857 B
dist/es/components/MessageActions/downloadUtils.mjs 1.27 kB
dist/es/components/MessageActions/hooks/useBaseMessageActionSetFilter.mjs 1.33 kB
dist/es/components/MessageActions/MessageActions.mjs 4.23 kB
dist/es/components/MessageActions/QuickMessageActionButton.mjs 359 B
dist/es/components/MessageActions/RemindMeSubmenu.mjs 1.01 kB
dist/es/components/MessageBounce/MessageBounceModal.mjs 347 B
dist/es/components/MessageBounce/MessageBouncePrompt.mjs 817 B
dist/es/components/MessageComposer/AttachmentPreviewList/AttachmentPreviewList.mjs 1.19 kB
dist/es/components/MessageComposer/AttachmentPreviewList/AudioAttachmentPreview.mjs 1.85 kB
dist/es/components/MessageComposer/AttachmentPreviewList/FileAttachmentPreview.mjs 1.11 kB
dist/es/components/MessageComposer/AttachmentPreviewList/GeolocationPreview.mjs 771 B
dist/es/components/MessageComposer/AttachmentPreviewList/MediaAttachmentPreview.mjs 1.33 kB
dist/es/components/MessageComposer/AttachmentPreviewList/UnsupportedAttachmentPreview.mjs 541 B
dist/es/components/MessageComposer/AttachmentPreviewList/utils/AttachmentPreviewRoot.mjs 919 B
dist/es/components/MessageComposer/AttachmentPreviewList/VoiceRecordingPreviewSlot.mjs 533 B
dist/es/components/MessageComposer/AttachmentSelector/AttachmentSelector.mjs 3.3 kB
dist/es/components/MessageComposer/AttachmentSelector/CommandsMenu.mjs 1.39 kB
dist/es/components/MessageComposer/CommandChip.mjs 569 B
dist/es/components/MessageComposer/CooldownTimer.mjs 294 B
dist/es/components/MessageComposer/EditedMessagePreview.mjs 334 B
dist/es/components/MessageComposer/hooks/useAttachmentManagerState.mjs 542 B
dist/es/components/MessageComposer/hooks/useAttachmentsForPreview.mjs 362 B
dist/es/components/MessageComposer/hooks/useCanCreatePoll.mjs 285 B
dist/es/components/MessageComposer/hooks/useCooldownRemaining.mjs 342 B
dist/es/components/MessageComposer/hooks/useCreateMessageComposerContext.mjs 419 B
dist/es/components/MessageComposer/hooks/useIsCooldownActive.mjs 274 B
dist/es/components/MessageComposer/hooks/useMessageComposerBindings.mjs 348 B
dist/es/components/MessageComposer/hooks/useMessageComposerCommands.mjs 414 B
dist/es/components/MessageComposer/hooks/useMessageComposerController.mjs 467 B
dist/es/components/MessageComposer/hooks/useMessageComposerHasSendableData.mjs 274 B
dist/es/components/MessageComposer/hooks/useMessageComposerSubmitFn.mjs 412 B
dist/es/components/MessageComposer/hooks/useMessageContentIsEmpty.mjs 274 B
dist/es/components/MessageComposer/hooks/usePasteHandler.mjs 579 B
dist/es/components/MessageComposer/hooks/useTextareaRef.mjs 252 B
dist/es/components/MessageComposer/hooks/utils.mjs 339 B
dist/es/components/MessageComposer/icons.mjs 1.28 kB
dist/es/components/MessageComposer/LinkPreviewList.mjs 1.08 kB
dist/es/components/MessageComposer/MessageComposer.mjs 880 B
dist/es/components/MessageComposer/MessageComposerActions.mjs 1.16 kB
dist/es/components/MessageComposer/MessageComposerUI.mjs 1.43 kB
dist/es/components/MessageComposer/preEditSnapshot.mjs 556 B
dist/es/components/MessageComposer/QuotedMessageIndicator.mjs 263 B
dist/es/components/MessageComposer/QuotedMessagePreview.mjs 3.1 kB
dist/es/components/MessageComposer/RemoveAttachmentPreviewButton.mjs 609 B
dist/es/components/MessageComposer/SendButton.mjs 499 B
dist/es/components/MessageComposer/SendToChannelCheckbox.mjs 773 B
dist/es/components/MessageComposer/StopAIGenerationButton.mjs 373 B
dist/es/components/MessageList/FloatingDateSeparator.mjs 688 B
dist/es/components/MessageList/GiphyPreviewMessage.mjs 278 B
dist/es/components/MessageList/hooks/MessageList/useEnrichedMessages.mjs 629 B
dist/es/components/MessageList/hooks/MessageList/useFloatingDateSeparatorMessageList.mjs 929 B
dist/es/components/MessageList/hooks/MessageList/useMessageListElements.mjs 638 B
dist/es/components/MessageList/hooks/MessageList/useMessageListScrollManager.mjs 1.66 kB
dist/es/components/MessageList/hooks/MessageList/useScrollLocationLogic.mjs 2.24 kB
dist/es/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.mjs 1.07 kB
dist/es/components/MessageList/hooks/useCanPaginateReplies.mjs 732 B
dist/es/components/MessageList/hooks/useLastDeliveredData.mjs 244 B
dist/es/components/MessageList/hooks/useLastOwnMessage.mjs 249 B
dist/es/components/MessageList/hooks/useLastReadData.mjs 240 B
dist/es/components/MessageList/hooks/useMarkRead.mjs 1.3 kB
dist/es/components/MessageList/hooks/useReceiptsByMessageId.mjs 981 B
dist/es/components/MessageList/hooks/useThreadHead.mjs 482 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/useFloatingDateSeparator.mjs 840 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.mjs 434 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.mjs 383 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.mjs 647 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/useScrollerViewport.mjs 910 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.mjs 499 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.mjs 422 B
dist/es/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.mjs 740 B
dist/es/components/MessageList/MessageList.mjs 3.33 kB
dist/es/components/MessageList/MessageListMainPanel.mjs 284 B
dist/es/components/MessageList/messageSourceKey.mjs 691 B
dist/es/components/MessageList/NewMessageNotification.mjs 561 B
dist/es/components/MessageList/renderMessages.mjs 1.1 kB
dist/es/components/MessageList/ScrollToLatestMessageButton.mjs 1.18 kB
dist/es/components/MessageList/UnreadMessagesNotification.mjs 862 B
dist/es/components/MessageList/UnreadMessagesSeparator.mjs 752 B
dist/es/components/MessageList/utils.mjs 2.48 kB
dist/es/components/MessageList/VirtualizedMessageListComponents.mjs 1.64 kB
dist/es/components/Modal/GlobalModal.mjs 1.81 kB
dist/es/components/Notifications/hooks/useNotificationApi.mjs 1.29 kB
dist/es/components/Notifications/hooks/useNotifications.mjs 564 B
dist/es/components/Notifications/hooks/useNotificationTarget.mjs 415 B
dist/es/components/Notifications/hooks/useSystemNotifications.mjs 456 B
dist/es/components/Notifications/Notification.mjs 1.24 kB
dist/es/components/Notifications/NotificationConfigurationContext.mjs 386 B
dist/es/components/Notifications/notificationTarget.mjs 699 B
dist/es/components/Poll/hooks/useManagePollVotesRealtime.mjs 686 B
dist/es/components/Poll/hooks/usePollAnswerPagination.mjs 586 B
dist/es/components/Poll/hooks/usePollOptionVotesPagination.mjs 601 B
dist/es/components/Poll/mjs 926 B
dist/es/components/Poll/Poll.mjs 302 B
dist/es/components/Poll/PollActions/AddCommentPrompt.mjs 1.32 kB
dist/es/components/Poll/PollActions/EndPollAlert.mjs 820 B
dist/es/components/Poll/PollActions/PollAction.mjs 492 B
dist/es/components/Poll/PollActions/PollActions.mjs 1.37 kB
dist/es/components/Poll/PollActions/PollAnswerList.mjs 1.05 kB
dist/es/components/Poll/PollActions/PollOptionsFullList.mjs 583 B
dist/es/components/Poll/PollActions/PollQuestion.mjs 346 B
dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotes.mjs 852 B
dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.mjs 723 B
dist/es/components/Poll/PollActions/PollResults/PollOptionWithVotesList.mjs 614 B
dist/es/components/Poll/PollActions/PollResults/PollResults.mjs 1.11 kB
dist/es/components/Poll/PollActions/SuggestPollOptionPrompt.mjs 1.32 kB
dist/es/components/Poll/PollContent.mjs 489 B
dist/es/components/Poll/PollCreationDialog/MultipleAnswersField.mjs 1.44 kB
dist/es/components/Poll/PollCreationDialog/NameField.mjs 761 B
dist/es/components/Poll/PollCreationDialog/OptionFieldSet.mjs 2.5 kB
dist/es/components/Poll/PollCreationDialog/PollCreationDialog.mjs 1.1 kB
dist/es/components/Poll/PollCreationDialog/PollOptionReorderHandle.mjs 1.02 kB
dist/es/components/Poll/PollHeader.mjs 683 B
dist/es/components/Poll/PollOptionList.mjs 845 B
dist/es/components/Poll/PollOptionSelector.mjs 1.51 kB
dist/es/components/Portal/Portal.mjs 300 B
dist/es/components/ReactFileUtilities/UploadButton.mjs 813 B
dist/es/components/ReactFileUtilities/utils.mjs 1.06 kB
dist/es/components/Reactions/hooks/useFetchReactions.mjs 714 B
dist/es/components/Reactions/hooks/useProcessReactions.mjs 1.2 kB
dist/es/components/Reactions/MessageReactions.mjs 1.77 kB
dist/es/components/Reactions/MessageReactionsDetail.mjs 1.99 kB
dist/es/components/Reactions/reactionOptions.mjs 1.09 kB
dist/es/components/Reactions/ReactionSelector.mjs 1.57 kB
dist/es/components/Reactions/ReactionSelectorWithButton.mjs 877 B
dist/es/components/Reactions/SpriteImage.mjs 727 B
dist/es/components/Reactions/utils/utils.mjs 284 B
dist/es/components/SafeAnchor/SafeAnchor.mjs 365 B
dist/es/components/Search/hooks/useAnnounceSearchResultCount.mjs 926 B
dist/es/components/Search/hooks/useSearchQueriesInProgress.mjs 450 B
dist/es/components/Search/hooks/useSearchResultsKeyboardNavigation.mjs 644 B
dist/es/components/Search/Search.mjs 642 B
dist/es/components/Search/SearchBar/SearchBar.mjs 1.36 kB
dist/es/components/Search/SearchContext.mjs 333 B
dist/es/components/Search/SearchResults/SearchResultItem.mjs 1.9 kB
dist/es/components/Search/SearchResults/SearchResults.mjs 716 B
dist/es/components/Search/SearchResults/SearchResultsHeader.mjs 910 B
dist/es/components/Search/SearchResults/SearchResultsPresearch.mjs 322 B
dist/es/components/Search/SearchResults/SearchSourceResultList.mjs 649 B
dist/es/components/Search/SearchResults/SearchSourceResultListFooter.mjs 562 B
dist/es/components/Search/SearchResults/SearchSourceResults.mjs 561 B
dist/es/components/Search/SearchResults/SearchSourceResultsEmpty.mjs 326 B
dist/es/components/Search/SearchResults/SearchSourceResultsHeader.mjs 148 B
dist/es/components/Search/SearchResults/SearchSourceResultsLoadingIndicator.mjs 390 B
dist/es/components/Search/SearchSourceResultsContext.mjs 347 B
dist/es/components/SkipNavigation/SkipNavigation.mjs 1.28 kB
dist/es/components/SummarizedMessagePreview/SummarizedMessagePreview.mjs 821 B
dist/es/components/TextareaComposer/hooks/useTextareaPlaceholder.mjs 685 B
dist/es/components/TextareaComposer/SuggestionList/CommandItem.mjs 480 B
dist/es/components/TextareaComposer/SuggestionList/EmoticonItem.mjs 508 B
dist/es/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.mjs 643 B
dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.mjs 439 B
dist/es/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.mjs 236 B
dist/es/components/TextareaComposer/SuggestionList/MentionItem/mjs 767 B
dist/es/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.mjs 161 B
dist/es/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.mjs 590 B
dist/es/components/TextareaComposer/SuggestionList/SuggestionList.mjs 2.43 kB
dist/es/components/TextareaComposer/SuggestionList/SuggestionListItem.mjs 649 B
dist/es/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.mjs 608 B
dist/es/components/TextareaComposer/TextareaComposer.mjs 3.34 kB
dist/es/components/Thread/Thread.mjs 947 B
dist/es/components/Thread/ThreadHead.mjs 453 B
dist/es/components/Thread/ThreadHeader.mjs 1.27 kB
dist/es/components/Thread/ThreadStart.mjs 458 B
dist/es/components/Threads/hooks/useCloseThread.mjs 524 B
dist/es/components/Threads/ThreadContext.mjs 265 B
dist/es/components/Threads/ThreadList/ThreadList.mjs 1.36 kB
dist/es/components/Threads/ThreadList/ThreadListEmptyPlaceholder.mjs 397 B
dist/es/components/Threads/ThreadList/ThreadListHeader.mjs 428 B
dist/es/components/Threads/ThreadList/ThreadListItem.mjs 351 B
dist/es/components/Threads/ThreadList/ThreadListItemUI.mjs 1.87 kB
dist/es/components/Threads/ThreadList/ThreadListLoadingIndicator.mjs 455 B
dist/es/components/Threads/ThreadList/ThreadListUnseenThreadsBanner.mjs 794 B
dist/es/components/Threads/ThreadList/useThreadHighlighting.mjs 830 B
dist/es/components/Threads/ThreadList/utils.a11y.mjs 1.56 kB
dist/es/components/Threads/UnreadCountBadge.mjs 332 B
dist/es/components/Tooltip/hooks/useEnterLeaveHandlers.mjs 296 B
dist/es/components/Tooltip/Tooltip.mjs 556 B
dist/es/components/TypingIndicator/hooks/useDebouncedTypingActive.mjs 664 B
dist/es/components/TypingIndicator/TypingIndicator.mjs 1.33 kB
dist/es/components/TypingIndicator/TypingIndicatorDots.mjs 406 B
dist/es/components/TypingIndicator/TypingIndicatorHeader.mjs 927 B
dist/es/components/TypingIndicator/utils/getTypingStatusMessage.mjs 441 B
dist/es/components/UtilityComponents/ErrorBoundary.mjs 313 B
dist/es/components/UtilityComponents/hooks/useMutationObserver.mjs 684 B
dist/es/components/UtilityComponents/useStableId.mjs 468 B
dist/es/components/VideoPlayer/ReactPlayerWrapper.mjs 448 B
dist/es/components/VideoPlayer/VideoPlayer.mjs 466 B
dist/es/components/VideoPlayer/VideoThumbnail.mjs 569 B
dist/es/components/VisuallyHidden/VisuallyHidden.mjs 399 B
dist/es/constants/messageTypes.mjs 173 B
dist/es/context/AttachmentContext.mjs 344 B
dist/es/context/AttachmentSelectorContext.mjs 272 B
dist/es/context/ChannelInstanceContext.mjs 376 B
dist/es/context/ChannelListContext.mjs 313 B
dist/es/context/ChatContext.mjs 282 B
dist/es/context/ComponentContext.mjs 257 B
dist/es/context/DialogManagerContext.mjs 1.54 kB
dist/es/context/MessageBounceContext.mjs 712 B
dist/es/context/MessageComposerContext.mjs 410 B
dist/es/context/MessageComposerControllerContext.mjs 418 B
dist/es/context/MessageContext.mjs 285 B
dist/es/context/MessageListContext.mjs 325 B
dist/es/context/MessageTranslationViewContext.mjs 584 B
dist/es/context/ModalContext.mjs 403 B
dist/es/context/PollContext.mjs 300 B
dist/es/context/requireContext.mjs 364 B
dist/es/context/ThemeScopeContext.mjs 736 B
dist/es/context/TranslationContext.mjs 261 B
dist/es/context/useChannel.mjs 333 B
dist/es/context/useComponentContextIcons.mjs 402 B
dist/es/context/VirtualizedMessageListContext.mjs 338 B
dist/es/context/WithComponents.mjs 331 B
dist/es/context/WorkspaceNavigationContext.mjs 922 B
dist/es/emojis.mjs 126 B
dist/es/hooks/useIsDmChannel.mjs 469 B
dist/es/hooks/useMessagePaginator.mjs 304 B
dist/es/i18n/runtimeDefaults.mjs 909 B
dist/es/i18n/TranslationBuilder/index.mjs 122 B
dist/es/i18n/TranslationBuilder/notifications/NotificationTranslationTopic.mjs 563 B
dist/es/i18n/TranslationBuilder/notifications/translators.mjs 669 B
dist/es/i18n/TranslationBuilder/notifications/translatorsByNotificationType.mjs 954 B
dist/es/i18n/useStreami18n.mjs 587 B
dist/es/i18n/utils.mjs 335 B
dist/es/index.mjs 7.98 kB
dist/es/mp3-encoder.mjs 778 B
dist/es/plugins/AIComponents/AIMarkdown/AIMarkdown.mjs 1.19 kB
dist/es/plugins/AIComponents/AIMarkdown/tools/charts/Chart.mjs 814 B
dist/es/plugins/AIComponents/AIMarkdown/tools/charts/chartJsSchema.mjs 425 B
dist/es/plugins/AIComponents/AIMarkdown/tools/charts/chartTypes.mjs 517 B
dist/es/plugins/AIComponents/AIMarkdown/tools/charts/JsonChart.mjs 407 B
dist/es/plugins/AIComponents/AIMarkdown/tools/charts/SuspendedChart.mjs 707 B
dist/es/plugins/AIComponents/AIMessageComposer/AIMessageComposer.mjs 2.75 kB
dist/es/plugins/AIComponents/AIMessageComposer/AttachmentPreview.mjs 1.01 kB
dist/es/plugins/AIComponents/AIMessageComposer/hooks/useSpeechToText.mjs 1.12 kB
dist/es/plugins/AIComponents/AIStateIndicator/AIStateIndicator.mjs 798 B
dist/es/plugins/AIComponents/StreamingMessage/StreamingMessage.mjs 456 B
dist/es/plugins/ChannelDetail/AvatarWithChannelDetail.mjs 934 B
dist/es/plugins/ChannelDetail/ChannelDetail.mjs 942 B
dist/es/plugins/ChannelDetail/ChannelDetailContext.mjs 373 B
dist/es/plugins/ChannelDetail/ChannelDetailEmptyList.mjs 337 B
dist/es/plugins/ChannelDetail/ChannelDetailListLoadingIndicator.mjs 419 B
dist/es/plugins/ChannelDetail/ChannelDetailNavButton.mjs 494 B
dist/es/plugins/ChannelDetail/ChannelDetailSearchInput.mjs 585 B
dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigator.mjs 1.79 kB
dist/es/plugins/ChannelDetail/SectionNavigator/SectionNavigatorHeader.mjs 783 B
dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesEmptyList.mjs 465 B
dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.mjs 1.5 kB
dist/es/plugins/ChannelDetail/Views/ChannelFilesView/ChannelFilesView.utils.mjs 1.06 kB
dist/es/plugins/ChannelDetail/Views/ChannelFilesView/useChannelFilesSearch.mjs 723 B
dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementActions.mjs 3.92 kB
dist/es/plugins/ChannelDetail/Views/ChannelManagementView/ChannelManagementView.mjs 3.61 kB
dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaEmptyList.mjs 482 B
dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.mjs 2.34 kB
dist/es/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.utils.mjs 723 B
dist/es/plugins/ChannelDetail/Views/ChannelMediaView/useChannelMediaSearch.mjs 720 B
dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberActions.mjs 3.45 kB
dist/es/plugins/ChannelDetail/Views/ChannelMemberDetailView/ChannelMemberDetail.mjs 1.08 kB
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.mjs 2.31 kB
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.mjs 1.67 kB
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersHeaderActions.mjs 1.56 kB
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.mjs 1.31 kB
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersView.utils.mjs 369 B
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberCount.mjs 392 B
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMemberIds.mjs 417 B
dist/es/plugins/ChannelDetail/Views/ChannelMembersView/useChannelMembersSearch.mjs 744 B
dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesEmptyList.mjs 475 B
dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.mjs 1.82 kB
dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesCount.mjs 348 B
dist/es/plugins/ChannelDetail/Views/PinnedMessagesView/usePinnedMessagesSearch.mjs 879 B
dist/es/plugins/ChannelDetail/VirtualizedList/VirtualizedList.mjs 579 B
dist/es/plugins/Emojis/EmojiPicker.mjs 1.32 kB
dist/es/plugins/Emojis/Picker.mjs 324 B
dist/es/plugins/SlotGeometry/SlotGeometry.mjs 1.99 kB
dist/es/plugins/SlotLayout/a11y.utility.mjs 295 B
dist/es/plugins/SlotLayout/ChannelSlot.mjs 552 B
dist/es/plugins/SlotLayout/ChatViewEmptyPlaceholder.mjs 613 B
dist/es/plugins/SlotLayout/DisposedChannelRelease.mjs 725 B
dist/es/plugins/SlotLayout/hooks/useLayoutViewState.mjs 470 B
dist/es/plugins/SlotLayout/hooks/useSlotEntity.mjs 1.37 kB
dist/es/plugins/SlotLayout/layout/Slot.mjs 781 B
dist/es/plugins/SlotLayout/layout/WorkspaceLayout.mjs 482 B
dist/es/plugins/SlotLayout/layoutController/LayoutController.mjs 2.67 kB
dist/es/plugins/SlotLayout/layoutController/serialization.mjs 805 B
dist/es/plugins/SlotLayout/mjs 3.68 kB
dist/es/plugins/SlotLayout/slotBinding.mjs 331 B
dist/es/plugins/SlotLayout/slotRegistry.mjs 1.12 kB
dist/es/plugins/SlotLayout/SupersededChannelSwap.mjs 992 B
dist/es/plugins/SlotLayout/ThreadListSlot.mjs 680 B
dist/es/plugins/SlotLayout/ThreadSlot.mjs 515 B
dist/es/plugins/SlotLayout/workspaceNavigationAdapter.mjs 1.57 kB
dist/es/slot-layout.mjs 524 B
dist/es/slot-mjs 125 B
dist/es/utils/findReverse.mjs 231 B
dist/es/utils/getTextareaCaretRect.mjs 923 B
dist/es/utils/getWholeChar.mjs 626 B
dist/es/utils/isDmChannel.mjs 247 B
dist/es/utils/mergeDeep.mjs 197 B
dist/es/utils/useStableCallback.mjs 494 B

compressed-size-action

@oliverlaz
oliverlaz merged commit 7f87026 into master Oct 21, 2026
14 checks passed
@oliverlaz
oliverlaz deleted the fix/comment-cleanup-findings branch October 21, 2026 11:40
github-actions Bot pushed a commit that referenced this pull request Oct 28, 2026
## [15.0.0-rc.3](v15.0.0-rc.2...v15.0.0-rc.3) (2026-10-28)

### ⚠ BREAKING CHANGES

* channel.watch() resolves with the channel instance to use (the channel, or the instance that superseded it), not the server response: read channel.data, channel.state and channel.messagePaginator instead.
- channel.watch() sends no query for a channel already watched and loaded unless it asks for options the current watch was not sent with, so it no longer refreshes one: refresh with channel.reload(), load other messages through channel.messagePaginator.
- A channel.watch() while another with the same options is in flight joins it instead of sending a request.
* **MessageList:** useMessageListScrollManager no longer takes onScrollToTop. Loading older messages keeps the message the reader was looking at in place, also when loading starts at the very top, instead of pinning the newly loaded page to the top.
- InfiniteScrollPaginator's loadNextDebounceMs now rate-limits the edge check while scrolling (the first check runs at once, then at most once per loadNextDebounceMs) instead of waiting until scrolling stops for that long. Older and newer pages start loading before the reader reaches the edge.
- MessageList and VirtualizedMessageList pass showNotification to NewMessageNotification only when a message from someone else arrives while the list is scrolled up. Being on an older message set no longer shows it; ScrollToLatestMessageButton signals that.
- In a channel, ScrollToLatestMessageButton shows the current user's unread count from the channel's read state instead of counting message.new events, so messages a reconnect brought in are included. In a thread it counts new replies from 0.
* marker: the removals are v14 API, so the branch has a
`fix!:` commit with a `BREAKING CHANGE:` footer, per the AGENTS.md
convention. The footer to keep in the squash commit:
* `MessageList` no longer accepts `messages`, `hasMore`,
`jumpToLatestMessage`, `loadingMoreNewer` or `messageLimit`, and
`VirtualizedMessageList` no longer accepts `messages`; the lists render
and paginate the message paginator. `CustomClasses.chatContainer` and
the `ComponentContext.LoadingErrorIndicator` slot are removed. Inside
`ChatView` the channel list no longer renders its own `str-chat <theme>`
scope. See ai-docs/v15-breaking-changes.md (BC-019, BC-046, BC-047,
BC-073, BC-074).

Verification: `yarn lint`, `tsc -p tsconfig.lib.json --noEmit`, `yarn
types:scripts`, `yarn validate-translations` and `yarn test` (281 files,
3090 tests) pass. `yarn build`, `validate-cjs`, `validate-esm`,
`validate-entry-isolation`, and the tutorial and vite example builds
passed before the rebase onto the guides branch, which brought in only
docs and the api-surface script. The ai-chatbot example build was not
verified: it hung locally in a sandboxed environment. The theme-scope
change was not checked visually in a browser.

### UI Changes

No intended visual change inside `ChatView`. Outside `ChatView`, the
channel list picks up the design tokens again, as in v14. The
`MessageList` loading indicator now appears while older messages load.
No screenshots: the examples need Stream credentials to run.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
  * Gallery items can display message-specific timestamp overrides.
* Reply-count buttons honor a message’s custom thread-opening behavior.
* Standalone channel lists now inherit the chat theme, and
channel-detail actions use workspace navigation.
* `useMessagePaginator` and `useIsCooldownActive` are available from the
package entry point.
* Message timestamps can render with an explicit message outside a
message context.

* **Bug Fixes**
* Message-list loading indicators and pagination behavior now reflect
active page loads more accurately.
* Workspace navigation warns when navigation actions are used without a
provider.

* **Breaking Changes**
* Removed legacy message-list props and the `LoadingErrorIndicator`
component override slot.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

### Bug Fixes

* correct issues found during the comment cleanup ([#3334](#3334)) ([7f87026](7f87026))
* **examples:** translate the voice visualization keys in the vite example ([#3352](#3352)) ([c88ab33](c88ab33)), closes [#3347](#3347)
* **MediaRecorder:** stop the recording timer when the preview unmounts ([#3351](#3351)) ([3c8b30a](3c8b30a))
* **MessageList:** keep the reader's place on older pages and count only arrived messages as new ([#3342](#3342)) ([ab00d67](ab00d67))
* remove dead v15 surface and restore v14 behaviors found by the API audit ([#3328](#3328)) ([d721f40](d721f40)), closes [#3327](#3327) [#3305](#3305) [#3237](#3237)

### Features

* **ai-components:** add useHeardText for voice-paced text ([#3348](#3348)) ([ec7c956](ec7c956)), closes [#3343](#3343) [#3344](#3344) [#3344](#3344) [#3343](#3343) [#3339](#3339) [#3347](#3347)
* **ai-components:** add VoiceWave and VoiceGlow voice-agent visualizations ([#3347](#3347)) ([216d00d](216d00d)), closes [#3339](#3339) [#3339](#3339) [#3339](#3339)

### Refactors

* call Channel.watch(), which replaces ensureWatched() in stream-chat ([#3346](#3346)) ([0100d98](0100d98))
@stream-ci-bot

Copy link
Copy Markdown

πŸŽ‰ This PR is included in version 15.0.0-rc.3 πŸŽ‰

The release is available on:

Your semantic-release bot πŸ“¦πŸš€

This branch was successfully deployed

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants