main
dependencies: Upgrade JavaScript dependencies.
templates: Add object_entries helper.
eslint: Fix unicorn/operator-assignment.
web: Use named import for jQuery.
activity tests: Improve actual coverage.
sidebars: Add drop shadow to sticky section headers when scrolled.
tests: Use typed helpers in alert_words.test.cjs.
eslint: Fix @typescript-eslint/require-array-sort-compare.
buddy_list: Introduce background_task for non awaited code.
tests: Rename the Node tests to *.cjs.
bots: Rename SERVICE_BOT_TYPES to MESSAGE_TRIGGERED_BOT_TYPES.
eslint: Fix unicorn/better-dom-traversing.
tests: Remove rewires in browser_history.test.cjs.
ui_init: Show unsupported browser warning on load.
eslint: Fix unicorn/no-unreadable-for-of-expression.
channel: Remove PATCH as POST workaround.
stream-settings: Allow filtering streams by folder.
clipboard_handler.test.cjs: Use example factories for user and stream.
eslint: Fix unicorn/prefer-else-if.
compose_call: Introduce ComposeCallSession.
compose_closed_ui: Restore label_text for stream/topic recipients.
compose paste: Convert mention HTML to markdown when quoting.
eslint: Fix unicorn/prefer-iterator-to-array.
quote: Introduce quoting multiple messages.
compose_ui: Don't let edit boxes overwrite compose_textarea_typeahead.
compose: Clarify warning when linking to a private channel.
people: Optimize is_person_active.
date: Add date_util.ts.
tests: Use `make_realm` to create type-correct realm objects.
tests: Don’t mock i18n.
people: Remove unused emails_strings_to_user_ids_string.
eslint: Fix unicorn/prefer-location-assign.
events: Fix stream/delete default streams update order.
echo: Clear failed local echoes from echo_state on abort.
tests: Remove rewires in electron_bridge.test.cjs.
emoji: Remap ':smile' emoji and update the settings UI.
stream_data: Rename add_sub to add_sub_for_tests.
submessage: Process submessage once on server message fetch.
stream_list: Restore scroll position for user after update.
fenced_code: Add tests for wrap_code, quote/math/spoiler blocks.
eslint: Fix unicorn/prefer-unicode-code-point-escapes.
filter: Redirect `mentions:me` to `is:mentioned`.
eslint: Fix unicorn/no-invalid-argument-count.
i18n: Improve displayed names for a few languages.
internal_url: Exclude stream name from encoded slug if it is too long.
eslint: Fix unicorn/no-unsafe-string-replacement.
tests: Use typed helpers in message_delete.test.cjs.
message: Make sure submessages is always defined.
messages: Add jump to date picker.
eslint: Fix no-useless-assignment.
tests: Unmock _.debounce, _.throttle.
message_list: Ignore moved messages in the trailing bookend.
eslint: Fix unicorn/prefer-object-iterable-methods.
message_util: Add a helper to fetch a narrow's last message id.
node tests: Use consistent import strategy for example_*.cjs.
search: Add support for date operator.
tests: Reformat single-line make_stream calls to multi-line style.
tests: Use typed helpers in narrow_unread.test.cjs.
tests: Use typed helpers in navigation_views.test.cjs.
eslint: Fix unicorn/no-immediate-mutation.
bot_type_values: Normalize int/string naming and migrate e2e test.
people: Demote "Added user late" log during initial events catchup.
pm_conversations: Remove empty DM conversations from the sidebar.
pm_list: Show unread DMs with deactivated users in unzoomed view.
message_actions: Show "Expand message" for condensed messages.
web: Use slash syntax for aspect-ratio to fix JSDOM tests.
tests: presence.test.cjs: Remove invalid date_joined mocks.
recent_senders test: Avoid mocking message_store.
eslint: Fix unicorn/no-negated-array-predicate.
tests: Use make_user in saved_snippets tests.
eslint: Fix unicorn/no-computed-property-existence-check.
scroll_util: Account for `$elem` not direct child of scroll container.
input_pill: Vertically center close and expand icons in pills.
message: Differentiate between new local messages and server messages.
bots: Remove duplicate fields from bot objects in realm_bots.
settings_data: Handle EVERYONE_ON_INTERNET in permission checks.
settings: Remove unused template variables for profile fields.
message: Create new LocalMessage to fix type of transmit.send_message.
tests: Use typed helpers in stream_create_subscribers_data.test.cjs.
stream_list: Filter all (cached) topics on "topic:" search.
submessage: Add helpers to detect poll messages and widget edits.
templates: Forbid looping over non-arrays.
topic_generator: Check topics in current channel before next channel.
all_messages_data: Rename to recent_view_messages_data.
topic-list-data: Add test for active topic when there are unreads.
web/tests: Use example stream factories in several test files.
typeahead: Fix multi-word queries not matching names with diacritics.
typeahead: Sort users by direct message recency, not count.
message_edit: Show typing indicator for message editing.
shared: Move typing_status.ts to web/src.
topics: Topic name case change should be reflected in inbox view.
modal: Add options for marking messages as read.
left sidebar: Hide search and filter when no groups exist.
user_events: Refresh DM pill and compose placeholder on user rename.
web: Switch to Zod mini API.
tests: user_topics.test.cjs: use example stream factories.
tests: user_topics_ui.test.cjs: use example stream factory.
tests: Switch from mockdate to @sinonjs/fake-timers.