Commit Graph

65003 Commits

Author SHA1 Message Date
Anders Kaseorg
56470bba8d install-uv: Upgrade uv from 0.7.2 to 0.7.11.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-06-06 11:35:32 -07:00
Tim Abbott
bbeede1e52 people: Optimize is_person_active.
Calling settings_data.user_can_access_all_other_users on every call to
this function could be expensive when using this function in loops
over every user in the organization.

After the previous commit, those calls are still somewhat expensive
for guest users.
2025-06-06 10:53:03 -07:00
Tim Abbott
446ba1b538 settings_data: Optimize user_can_access_all_other_users.
This fixes an important issue where this function being called in a
loop can consume as much as 1ms per iteration for users who are in a
lot of groups.
2025-06-06 10:53:03 -07:00
Tim Abbott
0ec07fe4c8 queue: Allow sharding user_activity worker.
This follows the existing patterns for the sharded mobile
notifications worker.
2025-06-06 10:33:20 -07:00
Prakhar Pratyush
9b43e5e3b3 empji_picker: Remove the usage of deprecated keypress event.
This commit removes the deprecated `keypress` event.

Now, we use the `keydown` event.

Earlier, we used `keypress` because it allowed us to distinguish
between lowercase and uppercase characters using `event.which`.

For example:
* For 'r':
  * keypress.which = 114
  * keydown.which = 82
* For 'R':
  * keypress.which = 82
  * keydown.which = 82

As shown, `keydown.which` cannot distinguish between 'r' and 'R',
which is why `keypress` was helpful.

Now, modern browsers support `event.key` on `keydown`, which directly
gives 'r' or 'R' as needed. This makes `keypress` unnecessary, and
we can safely rely on `keydown` with `event.key` to get the exact
character.

An earlier commit in this PR #34825, in which we replaced
the `event.which` with `event.key` plays a major role as a prep
commit to help removing `keypress` event in this commit.
2025-06-06 09:26:42 -07:00
Prakhar Pratyush
46b6436b19 emoji_picker: Replace deprecated e.which with e.key.
The `keydown` and `keypress` event handlers defined in
`emoji_picker.ts` were using `event.which`, which is deprecated.

This commit makes changes to use `event.key` instead.
2025-06-06 09:26:42 -07:00
apoorvapendse
080346c0e0 copy_messages: Expand selection for math expressions and blocks.
With this we introduce selection expansion when
the selection spans across multiple inline expressions
or expressions within mutliple math blocks.

This makes the selection consistent with what is pasted
while also fixing some bugs encountered in cases such as:
1. Focus present in an inline math expression and
anchor present in a different inline math expression
and vice-versa.

2. Focus present in a math block and anchor present
in a different math expression outside that math block
and vice-versa.

3. When selecting expressions within a math block, the
first expression wasn't retained in the past because
of the selection not containing <annotation>.

Fixes #33676.
Also fixes
https://chat.zulip.org/#narrow/channel/9-issues/topic/.F0.9F.93.82.20pasting.20LaTeX/near/2159869
and other related issues.

Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-05 17:42:07 -07:00
apoorvapendse
2e294e23c1 docs: Fix broken link for Monosnap screenshot tool.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-05 17:33:13 -07:00
apoorvapendse
b478415e88 docs: Fix broken BigBlueButton shared secret docs link.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-05 17:33:13 -07:00
apoorvapendse
b1d3dd6322 docs: Fix broken link for Debian 9 upgrade.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-05 17:33:13 -07:00
apoorvapendse
cdb46fd3d1 dev_docs: Fix broken GitHub OAuth app link for orgs.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-05 17:33:13 -07:00
apoorvapendse
9d1fd76951 docs: Fix broken link for GitHub Actions job.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-05 17:33:13 -07:00
Maneesh Shukla
015bd7e6c9 custom_profile_fields: Add "Alphabetize choices" button.
This commit adds a "Alphabetize choices" button for SELECT also known as
"List of options" type custom profile fields. The
options themselves can get out of order from either user text input, or
from list modifications like addition or drag.

We follow case-insensitive alphabetization such that "vim" comes before
"VS Code". This is similar to how we alphabetize elsewhere like stream
lists.

Fixes: #28607.

Co-authored-by: Tanmay Kumar <tnmdotkr@gmail.com>
2025-06-05 17:11:05 -07:00
Maneesh Shukla
bb8bda0bf7 settings_profile_fields: Refactor to use variables.
Fixes part of #28867.

Co-authored-by: Tanmay Kumar <tnmdotkr@gmail.com>
2025-06-05 17:11:05 -07:00
Aditya Kumar Kasaudhan
232c636248 list_widget: Fix placeholder for unmatched deactivated user filters.
Previously, the placeholder text displayed incorrectly after
applying filters.

This commit refactors `list_widget` to check if combinations of
filters applied, such as role and search filters. It ensures that the
correct placeholder message is displayed.

Fixes: #32971.
2025-06-05 17:09:02 -07:00
Saubhagya Patel
74ce93df3c icons: Add attribution references for follow and inherit icons. 2025-06-05 17:05:24 -07:00
Saubhagya Patel
cfadd67c75 icons: Rename zulip-icon-unmute-new to zulip-icon-unmute.
This commit removes the old `zulip-icon-unmute` icon, which is
no longer used. The `zulip-icon-unmute-new` icon is now
renamed to `zulip-icon-unmute`.
2025-06-05 17:05:24 -07:00
Saubhagya Patel
b4f2c4cafc icons: Rename zulip-icon-mute-new to zulip-icon-mute.
This commit removes the old `zulip-icon-mute` icon, which is
no longer used. The `zulip-icon-mute-new` icon is now
renamed to `zulip-icon-mute`.
2025-06-05 17:05:24 -07:00
Mohammad Reza Kianifar
df00b68529 messages: Add unread 1:1/self DMs to pm_dict if DM group exists.
In get_raw_unread_data, 1:1 or self messages are added to pm_dict.
However, if a DirectMessageGroup is the recipient, the message is
added to huddle_dict by default.

To keep API compatibility, we override this behavior to populate
pm_dict for 1:1 and self DMs when a DirectMessageGroup exists.
This ensures clients relying on pm_dict continue to work during
and after the migration.

This PR fixes part of issue #25713.
2025-06-05 17:03:49 -07:00
Mohammad Reza Kianifar
30d2d82d02 export_search: Support --dm option for 1:1 DMs using DM group.
Previously, the export_search command only supported the legacy
Personal recipient type for 1:1 direct messages. With this change,
the command first checks for a DirectMessageGroup for the two users
and uses it if present. If not, we fall back to the legacy logic. This
keeps compatibility as we migrate 1:1 DMs to use DirectMessageGroup.
2025-06-05 17:01:45 -07:00
Shubham Padia
7b925ce94a buddy_list: Set html instead of append for view all subscribers link.
Earlier, we were appending view all subscribers link using
JQuery.append, which leaves open the possibility for the component to
be appended multiple times if the function calling it gets called
multiple times.
It is better to have the link div in right_sidebar.hbs
and then insert the html when required.
2025-06-05 16:13:07 -07:00
Shubham Padia
90a1f0f7aa buddy_list: Set html instead of append for view all users link.
Fixes https://chat.zulip.org/#narrow/channel/9-issues/topic/buddy.20list.20view.20all.20users.20appears.20twice
Earlier, we were appending view all users link using JQuery.append, so
when `render_view_user_list_links` is called twice, `view all users`
appears twice. It is better to have the link div in right_sidebar.hbs
and then insert the html when required.
2025-06-05 16:13:05 -07:00
Evy Kassirer
b31d3ce5b9 search_suggestion: Canonicalize search text terms before suggesting.
Fixes bug reported here
https://chat.zulip.org/#narrow/channel/9-issues/topic/search.20typeahead.20duplicates.20.22sent.20by.20me.22/near/2183976
2025-06-05 16:10:02 -07:00
Evy Kassirer
b63b4a26c8 filter: Don't lowercase search operands.
Searching e.g. "NASA" would put "nasa" in the search bar if you
selected "search for NASA" in the typeahead. This probably looks
weird to users, so let's not lowercase search operands.
2025-06-05 16:10:02 -07:00
Mateusz Mandera
0c62a2ed4f models: Fix typo in RealmAuthenticationMethod docstring. 2025-06-05 16:08:21 -07:00
Anders Kaseorg
6bc7e94405 mypy: Remove unused exemption for aiosmtpd.
aiosmtpd added types in 1.3.0.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-06-05 16:05:43 -07:00
Evy Kassirer
fdb17ebaf0 buddy_list: Add clarity around not showing user links when searching.
Follow-up to https://github.com/zulip/zulip/pull/34677#discussion_r2112962338
2025-06-05 16:01:15 -07:00
Tim Abbott
fd6b70e1ca portico: Fix signup-column typo. 2025-06-05 15:59:34 -07:00
kumbhar-sarthak
13eb79493b ui: Improve the placement of the "Forgot password" action.
Previously, the "Forgot password" action was bit difficult to
locate due to its position. This commit adjusts its placement
to enhance discoverability and improve the user experience.
2025-06-05 15:58:29 -07:00
PieterCK
be5a6e88e1 integrations: Fix INVALID_SLACK_TOKEN_MESSAGE.
Currently the hyperlink on the "Zulip development community" string is
not properly formatted. This fixes the formatting on the string.
2025-06-05 15:47:39 -07:00
Akash Vishwakarma
bd5c096297 inbox: Fix search box overflow on screens under 450px.
Fixes #33654

Set the inbox search input width to 100% to prevent overflow on small
devices. This Ensures the search box stays within its container for a cleaner
layout. Setting the element's width to 100% overrides the default width.
2025-06-05 15:46:18 -07:00
Niloth P
625b41d987 integration-url-modal: Focus on the topic input when it is displayed.
When the override-topic checkbox becomes checked, and the topic-input
gets its "hide" class removed, place the cursor inside the textbox.

Close the stream dropdown before processing the selected option, to
prevent it overriding the focus.
2025-06-05 15:38:06 -07:00
Aditya Kumar Kasaudhan
1680846f8b drafts: Refactor remove_drafts to support bulk deletion.
This commit updates `remove_drafts` to delete mutiple drafts
at a time while calling `show_delete_banner` only once to avoid
repeated banner updates.
2025-06-05 15:34:11 -07:00
Aditya Kumar Kasaudhan
a5632a9356 drafts: Refactor draft deletion to support bulk operations.
This commit updates the draft deletion functionality to handle
multiple draft IDs at once, reducing localStorage writes.
2025-06-05 15:34:11 -07:00
Aditya Kumar Kasaudhan
a0d86aeca4 drafts: Add confirmation banner and undo option for drafts deletion.
Previously, deleting drafts was too easy, which could result in
accidentally losing important information.

This commit adds a green confirmation banner showing "N drafts were
deleted" and "Undo" button to restore deleted drafts.

Fixes: #32995.
2025-06-05 15:34:11 -07:00
Aditya Kumar Kasaudhan
9a4de8d9b8 drafts: Enable dynamic re-rendering of draft list in overlay.
This commit laying the groundwork for dynamic re-rendering of
drafts.

Previously, the draft list was rendered once with the overlay,
and re-rendering wasn't needed. However, to support features like
"undo," we now need to re-render the draft list dynamically.
2025-06-05 15:34:11 -07:00
Aditya Kumar Kasaudhan
1ad95ea000 drafts: Separate get_formatted_drafts_data from launch.
This commit is prep work for implementing drafts undo
functionality.
2025-06-05 15:34:11 -07:00
Aditya Kumar Kasaudhan
51e367a1cd drafts: Separate bulk action handlers from event handlers.
This commit splits `setup_bulk_actions_handlers` from
`setup_event_handlers` as prep for drafts undo functionality.
By isolating bulk actions, it reduces redundancy when reusing
`setup_event_handlers` for re-rendering after undoing deletions.
2025-06-05 15:34:11 -07:00
Aditya Kumar Kasaudhan
464fa0a033 drafts: Move functions outside launch for draft restoration.
Previously, these functions were nested inside `launch`, limiting their
accessibility. This commit moves them outside, making them accessible
for draft restoration in the draft undo feature.
2025-06-05 15:34:11 -07:00
Anders Kaseorg
b6f111cc0c test-documentation: Remove unneeded HTML validation exemptions.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-06-04 16:52:08 -07:00
Aman Agrawal
87694e9606 support: Add field to ask type of hosting request in demo form. 2025-06-04 16:29:03 -07:00
Alex Vandiver
5d8076345b i18n: Trim and remove "fuzzy" flag from msgstr with trimmed msgid.
4ab77e519b trimmed the msgid for translation blocks in templates;
however, this marked the translations as "fuzzy", which makes them not
used by gettext, by default.

For all "fuzzy" translations where the recorded previous `msgid`
differs from the current one only by the trimming normalization,
perform the same normalization on the `msgstr` and mark the string as
non-fuzzy, allowing it to be used.
2025-06-04 16:27:20 -07:00
Anders Kaseorg
9dd4dc08fd dependencies: Upgrade JavaScript dependencies.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-06-04 16:24:47 -07:00
Anders Kaseorg
f6be163bcc install-node: Upgrade Node.js from 22.15.0 to 22.16.0.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-06-04 16:24:47 -07:00
Lauryn Menard
7a0471c97c demo-orgs: Update gear menu for demo organizations. 2025-06-04 16:22:49 -07:00
Karl Stolley
dfdac12248 app: Disallow overscroll on x-axis. 2025-06-04 16:19:43 -07:00
whilstsomebody
d70f7ba9e1 left_sidebar: Show sidebar menu icon for muted unread messages.
It was reported that there was no option to mark messages as read
when only unread messages in muted streams and topics remained.

This happened because the logic to show or hide the sidebar menu
icon relied solely on the home view count, which excludes unread
messages in muted streams and topics.

This commit fixes the issue by including the count of unread
messages in muted streams and topics when determining whether to
show or hide the sidebar menu icon.

Fixes: #34682
2025-06-04 16:19:18 -07:00
Sayam Samal
e5716faea4 blueslip: Prevent overflow of content by breaking long file paths. 2025-06-04 11:28:49 -07:00
Sayam Samal
d23f1b74d3 blueslip: Increase max-width and add horizontal gap from screen edge. 2025-06-04 11:28:49 -07:00
Sayam Samal
c373f2c919 blueslip: Scroll to top when a new stacktrace is added. 2025-06-04 11:28:49 -07:00