Commit Graph

65483 Commits

Author SHA1 Message Date
Mateusz Mandera
fe993032a6 validate_email_not_already_in_realm: Add kwarg for mirror dummies.
In user signup context, we are okay with there being an existing mirror
dummy user with the matching email - at the end of the signup, that
mirror dummy account will be activated and control of it given to the
user doing this signup.

However, in email change contexts (SCIM API and regular email change
flow), we can't change an account's email address to the address that
already belongs to an existing mirror dummy user.

To avoid subtle bugs like this, we make callers have to explicitly
specify whether existance of mirror dummies with the matching email
address is okay or not.
2025-07-07 17:15:08 -07:00
Mateusz Mandera
9abdb17d1f do_start_email_change_process: Don't revoke USED EmailChangeStatus objs.
We obviously shouldn't set such objects to REVOKED as that introduces
misleading information into our data. USED objects cannot be re-used, so
they can stay as they are.
2025-07-07 17:15:08 -07:00
Mateusz Mandera
2bfefe2ebd confirm_email_change: Use redirect-to-POST trick.
Just like with signup confirmation links, we shouldn't trigger email
change based on a GET to the confirmation URL - POST should be required.

So upon GET of the confirmation link, we serve a form which will
immediately be POSTed by JS code to finalize the email change.
2025-07-07 17:15:08 -07:00
Mateusz Mandera
32daab11c5 confirm_email_change: Mark the Confirmation used inside a transaction.
The get_object_from_key call should be included in the transaction - we
shouldn't modify the object if the rest of the function fails to
actually confirm the email change (e.g. due to IntegrityError occurring).
2025-07-07 17:15:08 -07:00
Karl Stolley
e43ee9dbbe compose: Correct low-attention logic for combined feeds. 2025-07-07 15:14:36 -07:00
Karl Stolley
04349a427f compose: Evaluate narrow against stream_id. 2025-07-07 15:14:36 -07:00
Vector73
c46272f009 stream_types: Rename stream_types.hbs to stream_permissions.hbs. 2025-07-07 09:50:50 -07:00
Vector73
f65fdb7bef stream_settings: Reorganize settings in subsections.
This commit reorganizes channel settings in the "Advanced
configurations" section into four subsections.

Fixes #34837.
2025-07-07 09:50:50 -07:00
Vector73
b2bd4500ab stream_settings: Reorder settings in advanced configuration section. 2025-07-07 09:50:50 -07:00
Aditya Kumar Kasaudhan
cc9d78328e users: Add SECURITY_SENSITIVE_USER_SETTINGS to UserBaseSettings.
This commit is a preparatory step for allowing organization owners to
reset user preferences, defines a set of sensitive user settings
that will be protected from resets by organization owners.
2025-07-07 09:48:25 -07:00
Tim Abbott
71e8fcbb3a zilencer: Update comments on remotepushdevice. 2025-07-07 09:41:34 -07:00
Maneesh Shukla
aa49b54fb4 topic_list: Set typeahead to only match when the prefix matches. 2025-07-07 09:29:42 -07:00
Maneesh Shukla
27587fe6b9 topic_list: Fix Enter key behavior for the typeahead.
Previously, pressing the Enter key added a shaking animation to the
input box.

This commit remove that behaviour.
2025-07-07 09:29:42 -07:00
Prakhar Pratyush
7cbd4e4880 zilencer: Add RemotePushDevice model.
This commit adds a `RemotePushDevice` model where each row
corresponds to an account on an install of the app registered
to receive mobile push notifications.
2025-07-06 21:11:26 -07:00
Prakhar Pratyush
e6bdf84363 validate_token: Move validate_token to avoid dependency cycle.
Prep commit to avoid depencency cycle.
2025-07-06 21:11:26 -07:00
Prakhar Pratyush
8b3cef554b settings: Add push_registration_encryption_keys map.
The `push_registration_encryption_keys` map stores the
assymetric key pair generated on bouncer.

The public key will be used by the client to encrypt
registration data and the bouncer will use the corresponding
private key to decrypt.

- Updated the `generate_secrets.py` script to generate the map
during installation in dev environment.
- Added a management command to add / remove key i.e. use it
for key rotation while retaining the older key-pair for a period
of time.
2025-07-06 21:11:26 -07:00
Prakhar Pratyush
86e771c982 test_classes: Use "pk" instead of "id" for primary key lookup.
Prep commit to use "pk" to get the primary keys instead of
hardcoded "id" as we plan to introduce a model with `device_id`
as the primary key name.
2025-07-06 21:07:27 -07:00
Prakhar Pratyush
0c3e0f19d2 test_event_system: Fix ordering of giphy in sorted expected_counts. 2025-07-06 21:07:27 -07:00
Saubhagya Patel
acc889ae9b css: Fix channel privacy icon gap in first stream created modal.
In the first stream created modal, a channel privacy icon
is displayed alongside the channel name. At different font sizes,
the gap between the icon and the channel name was inconsistent.
This commit fixes the above issue.
2025-07-06 16:06:42 -07:00
Saubhagya Patel
e3e322422c css: Align channel privacy icons in Personal settings > Notifications.
This commit aligns the channel privacy icons displayed for
channels with custom notifications in the notifications table
in Personal settings.
2025-07-06 16:06:42 -07:00
Maneesh Shukla
69d3900cd3 x-icon: Fix alignment of x-icon in user group subgroup. 2025-07-06 15:12:41 -07:00
Rohan Gudimetla
a3e7ef8e71 left_sidebar: Add navigation option to go to top unread topic.
This commit adds option in personal settings to allow
navigation of channel links in left sidebar to the top
unread topic in that channel.

In cases of no unread messages in unmuted topics of the channel,
it falls back to the top topic of channel.

Fixes #35066
2025-07-03 18:14:10 -07:00
Tim Abbott
35bc9d37f1 search_pill: Move user_pill_operators to top of file. 2025-07-03 15:21:53 -07:00
Evy Kassirer
0e86b01c5b search_suggestion: Move search description html into helper function.
This will be used elsewhere in upcoming commits.
2025-07-03 15:20:17 -07:00
Evy Kassirer
a35f166fac search: Use zrequire instead of mockesm for search_suggestion in tests.
Soon search_suggestion will be used more in unit tests.
2025-07-03 15:19:37 -07:00
Evy Kassirer
20722cea89 typeahead: Rename highlighter_html to item_html.
We no longer do any highlighting so it doesn't make sense to call
it that anymore.
2025-07-03 14:44:13 -07:00
Evy Kassirer
7e951b5249 search: Remove highlighting in search typeahead.
Context: https://chat.zulip.org/#narrow/channel/101-design/topic/search.20typeahead.20highlighting/near/2188093
2025-07-03 14:43:01 -07:00
PieterCK
75f2e27500 url_encoding: Refactor a encode_user_full_name_and_id.
This refactors out a function that encode user name and user id into URL
compatible format.
2025-07-03 14:40:49 -07:00
PieterCK
29d42ab6ad url_encoding: Refactor a encode_user_ids.
This refactors out a function to encode the user ids into URL compatible
format. Previously we use the "-pm" decorator to encode user ids for
group direct messages. That decoration tag is not valid, so this also
updates some existing test cases.
2025-07-03 14:40:49 -07:00
PieterCK
48e33eed31 url_encoding: Standardize to use encode_hash_component.
Previously we use `hash_util_encode` to encode channel and topic names
to be URL compatible. This uses the more capable `encode_hash_component`
from the recently added `topic_link_utils.py` module. It also moves the
function to `url_encoding.py`
2025-07-03 14:40:49 -07:00
PieterCK
c460dc3c9c url_encoding: Update encode_stream -> encode_channel. 2025-07-03 14:40:49 -07:00
Maneesh Shukla
ec60c8a70c x-buttons: Replace "Remove" and "Unsubscribe" buttons with x icons in tables.
This commit removes the "Remove" and "Unsubscribe" action buttons from
various tables and replaces them with icon buttons using the "close"
icon.

Additionally, previously the rows with and without a remove button had
different heights. This commit updates the fixed `px` values to `em`
units to ensure equal height for all rows, regardless of whether a
remove-subscription button is present.

Fixes: #34874.
2025-07-03 14:37:00 -07:00
Sayam Samal
0fe4b6b317 settings: Scale margin of input groups with font size.
This commit adjusts the margin of input groups in settings pages to
relative `em` units to ensure that the spacing scales to accommodate
different font sizes.
2025-07-03 12:00:33 -07:00
Sayam Samal
49332fb528 modals: Use relative em units for padding to scale UI with font size.
This commit modifies the modal styles to use relative `em` units for
padding instead of fixed pixel values, allowing the modal to scale
better with different font sizes.
2025-07-03 12:00:33 -07:00
Sayam Samal
22c913cc9e modals: Set modal content font size and line height to user set values.
This commit sets the font size and line height of modal content to match
the user's base font size and line height settings and updates the modal
title font size accordingly.
2025-07-03 12:00:33 -07:00
Sayam Samal
114673991e css: Replace "i" tag with ".zulip-icon-more-vertical" selector class.
Since CSS selectors are matched by browser engines from right to left,
this commit optimizes the selector to be more specific by replacing the
generic "i" tag with the more specific ".zulip-icon-more-vertical"
class selector.
2025-07-03 11:45:35 -07:00
Sayam Samal
3b0115dce7 inputs: Rename input.hbs partial block to input_wrapper.hbs. 2025-07-03 11:45:35 -07:00
Sayam Samal
2df8ee43cf left_sidebar: Align filter inputs with preexisting left sidebar grids.
This commit acts as a follow-up commit to the previous three commits
implementing the redesigned filter input in the left sidebar. This
makes some structural changes to the channel/topic/dm headers, and
aligns to filter inputs to the predefined grid lines in the left sidebar
to ensure good visual flow.

Fixes #34476.
2025-07-03 11:45:35 -07:00
Sayam Samal
82edac0166 left_sidebar: Standardize DM list filter input.
This follow-up commit replaces the current left sidebar DM list
filter input implementation with the redesigned input component.

Fixes part of #34476.
2025-07-03 11:45:35 -07:00
Sayam Samal
7c19727168 left_sidebar: Standardize channel list filter input.
This follow-up commit replaces the current left sidebar channel list
filter input implementation with the redesigned input component.

Note: This commit removes `clear_search` method from `stream_list.ts`,
since the `.input-button` onclick handler over at `inputs.ts` handles
the clearing of the filter input fields by sending an empty text input
event. This input event triggers the filter update handler of the
module, in this case the `update_streams_for_search` function and
resets the filter list, eliminating the need for a separate per-module
input clearing/resetting workflow.

Fixes part of #34476.
2025-07-03 11:45:35 -07:00
Sayam Samal
046918e92a recent_view: Adjust height of sibling elements to match filter input. 2025-07-03 11:45:35 -07:00
Sayam Samal
93d14cada1 recent_view: Standardize recent view filter input.
This follow-up commit replaces the current recent view filter input
implementation with the redesigned input component.

Fixes part of #34476.
2025-07-03 11:45:35 -07:00
Sayam Samal
892ee1d76e right_sidebar: Improve user list header vdots icon.
Firstly, this commit modifies the styling of the vdots icon in the user
list header, to match the height of the user list filter input. Other
than that, this commit also makes some non-visual structural changes
to the icon-related code for code quality improvements.
2025-07-03 11:45:35 -07:00
Sayam Samal
f493303c2c right_sidebar: Standardize user list filter input.
This follow-up commit replaces the current right sidebar user list
filter input implementation with the redesigned input component.

Fixes part of #34476.
2025-07-03 11:45:35 -07:00
Sayam Samal
26f0b755af inbox: Adjust height of inbox dropdown widget to match filter input. 2025-07-03 11:45:35 -07:00
Sayam Samal
b6ff748602 inbox: Standardize inbox filter input.
This follow-up commit replaces the current inbox filter input
implementation with the redesigned input component.

Fixes part of #34476.
2025-07-03 11:45:35 -07:00
Sayam Samal
71d75532fe inputs: Implement redesigned input component.
This commit serves as the base for the ongoing effort to standardize
redesigned input elements throughout the Zulip Web UI. It introduces a
new Handlebars partial block for inputs, located at
web/templates/components/input.hbs.

The partial can be used with the partial block syntax: {{#> input}},
allowing contributors to pass in the input element as a template. This
approach wraps the input with a consistent structure that includes
support for an icon and an action button. It also applies the necessary
styling to ensure visual and functional consistency across the web UI.

This commit also implements the filter input component at
/devtools/inputs/ showroom page for design discussions and prototyping.
2025-07-03 11:45:35 -07:00
Sayam Samal
f8d82775d1 showroom: Set up devtools/inputs page for showcasing input components.
This is a prep commit to setup the devtools/inputs page for the
redesigned input components.
2025-07-03 11:45:35 -07:00
evykassirer
236e595438 settings: Use grid and flex for the two-pane settings overlay.
Instead of changing the height of the button subheader depending
on the width of the modal, which was fiddly and error prone, we now
let grid determine the height of the button subheader, and determine
the height of the body through javascript resize calculations.
2025-07-03 11:22:31 -07:00
Sahil Batra
e66431f128 group-settings: Fix how long names are handled in groups UI.
This commit fixes code to correctly show the long group
names by clipping them and showing ellipsis in group rows
in left panel and in the header shown in right section.

Group names are handled in a different way than stream
names because we need to show deactivated icons as well
for stream names.
2025-07-03 11:22:31 -07:00