9579 Commits

Author SHA1 Message Date
Evy Kassirer
e9135cdc34 stream_data: Use clearer name for attrs for create_sub_from_server_data. 2025-09-30 12:52:47 -07:00
Evy Kassirer
06845359bd peer_data: Store subscriber counts off of the sub object. 2025-09-30 12:52:47 -07:00
Evy Kassirer
10a815cae7 stream_data: Rename add_sub to add_sub_for_tests. 2025-09-30 12:52:47 -07:00
Evy Kassirer
665bce3c13 transmit: Pass params directly instead of using opts. 2025-09-30 11:49:16 -07:00
Evy Kassirer
53cbfb9086 compose: Rename request to more specific sent_message. 2025-09-30 11:49:16 -07:00
Evy Kassirer
240177b87e events: Use more realistic avatar_url in tests. 2025-09-30 11:49:16 -07:00
Evy Kassirer
1b9da1e3c7 transmit: Convert module to typescript. 2025-09-30 11:49:16 -07:00
Evy Kassirer
8a25069dd6 echo: Ensure avatar_url is defined when creating a local message.
`current_user.avatar_url` can be undefined, and we want to make
sure it's always defined here. Using `small_avatar_url_for_person`
returns the `person.avatar_url` if it is defined, but then properly
sets up and returns backup values if it's not.
2025-09-30 11:49:16 -07:00
Sayam Samal
b894df61a4 drafts: Use span instead of em for placeholders without DM recipient.
The `em` tag is typically used to denote emphasis, which may not be
semantically appropriate for placeholder text, where we just want to
style the text as italic.
2025-09-30 11:37:16 -07:00
Sayam Samal
0d9e503add drafts: Add placeholder text for drafts with no channel selected.
This commit handles the empty channel placeholder for drafts saved
without a channel selected. When these drafts also do not have a topic,
we display "No topic selected" in tandem with "No channel selected",
since we are unable to access the channel configuration to determine
if we should display realm_empty_topic_display_name.
2025-09-30 11:37:16 -07:00
Sahil Batra
e3fb292fb1 settings: Fix input field overflowing in channel and group edit UI.
Name input for stream and group edit modal was too wide in narrow
width screens and overflowed the modal. This commit adds CSS to
make sure that maximum width of input field is set to fit inside
the modal respecting the modal container paddings on narrow width
screens.

Fixes #35301.
2025-09-30 11:26:25 -07:00
Sahil Batra
31f8dcba6c settings: Improve label of can_set_topics_policy_group.
This commit updates the label for can_set_topics_policy_group
to specify that the user must be a channel administrator in
order to change the topics policy for a channel.

We did that before but it was removed in d8261d4b96.
2025-09-30 11:26:01 -07:00
Evy Kassirer
5b0f135497 stream_list: Fix inactive/muted count bug.
We shouldn't include muted topics from unmuted channels in the
inactive/muted toggle count, since those unreads aren't in the
inactive/muted section. This fixes that.

Reported here: https://github.com/zulip/zulip/issues/36011#issuecomment-3327042885
2025-09-29 15:14:00 -07:00
Sahil Batra
d8261d4b96 settings: Improve label for can_set_topics_policy_group setting.
This commit updates the label for can_set_topics_policy_group
setting to be more clear by mentioning that it is used to
configure who can set the per-channel "general chat" configuration.

We also add a link to "/help/require-topics" with the label.
2025-09-29 11:00:26 -07:00
Karl Stolley
c609b55950 postprocess: Access data- attributes directly.
This makes for much easier grepping of these values
across the codebase, especially for squaring server-
side processing and tests.
2025-09-26 16:53:20 -07:00
Karl Stolley
b7b409002e postprocess: Set up new loop for message embeds. 2025-09-26 16:53:20 -07:00
Karl Stolley
31c49a7258 postprocess: Process YouTube images in image loop. 2025-09-26 16:53:20 -07:00
Karl Stolley
c7a651da60 postprocess: Handle images all within a single loop. 2025-09-26 16:53:20 -07:00
Karl Stolley
2e40359dd6 postprocess: Move refactored upload processing to own loop. 2025-09-26 16:53:20 -07:00
Karl Stolley
f9b52d4df5 postprocess: Move download processing nearer to links. 2025-09-26 16:53:20 -07:00
Karl Stolley
716333c6be postprocess: Move list-processing to the top.
This is the most simple loop, so sticking it at the top
keeps it from getting lost among the more complex
processing that follows.
2025-09-26 16:53:20 -07:00
Shubham Padia
c3fbe00eb0 help: Add default page to display on /help when help server is off.
We've copied the button and error colors from portico_signin.css. We did
not want the new HTML file to depend on portico_signin.css since they
are unrelated. In addition, having those colors diverge over time might
not be an issue.

We make the raw mode work with /help and /help/ both.

See https://chat.zulip.org/#narrow/channel/19-documentation/topic/edits.20not.20appearing.20with.20vagrant/near/2257442

Co-authored-by: Alya Abbott <alya@zulip.com>
2025-09-26 11:41:10 -07:00
Alya Abbott
0ea04f31bc compose and feed: Improve label for DMs to yourself. 2025-09-26 11:07:48 -07:00
Aman Agrawal
8b8d23cc5f realm_redirect: Add help for self hosted users to login. 2025-09-26 11:02:26 -07:00
Lauryn Menard
05b2036acd narrow-banner: Update invalid "sender" case for empty narrow banner.
Updates the empty narrow banner for an invalid user in the "Messages
sent by ..." view to better match what we show for an unknown channel.
2025-09-26 10:16:19 -07:00
Lauryn Menard
52cad38f3e narrow-title: Use filter title for invalid "sender" operand case.
Since we have a generic title for the unknown user case for the
"sender" operator, we can now use that when we set the document
title for the narrow view.
2025-09-26 10:16:19 -07:00
Lauryn Menard
d82083ca24 filter: Add title for an unknown user for the "sender" narrow case.
Previously, the message header for the "Messages sent by" view for
an invalid or unknown user was the value of the "sender" operand,
which was not a valid/known user email.

Now we show a standard title in the message header for this case:
"Messages sent by unknown user".
2025-09-26 10:16:19 -07:00
Lauryn Menard
ba33ef0054 narrow-title: Use filter title for valid sender view.
If the operand value for the "sender" operand is a known/valid
user, then we can return the value of filter.get_title here,
which correctly handles the guest user case.

Because filter.get_title already returns the translated "Reactions"
string, we can also remove the duplicate logic in compute_narrow_title
for that special view.
2025-09-26 10:16:03 -07:00
Lauryn Menard
be4af12366 narrow-state: Move pm_emails_string logic to pm_ids_string.
As the only caller of pm_emails_string is now pm_ids_string, we
can move getting and checking for the operand value of the "dm"
operator's to be in one function.

Removing pm_emails_string is helpful because it was less obvious
that it could return a value that was not a valid direct message
recipient, i.e., in the case that the user changed the URL manually
or made an error when copy/pasting the URL into the browser.
2025-09-26 09:52:51 -07:00
Lauryn Menard
328f2e217a search-suggestions: Use narrowed_by_pm_reply for empty search query.
Use narrow_state.narrowed_by_pm_reply when getting suggestions for
an empty search query to check if the current filter corresponds to
a particular direct message conversation.
2025-09-26 09:52:51 -07:00
Lauryn Menard
11dcf3bef7 search-suggestions: Use narrowed_by_topic for empty search query.
Use narrow_state.narrowed_by_topic when getting suggestions for
an empty search query to check if the current filter corresponds to
a specific channel/topic conversation.

This is functionally equivalent to what we have been doing since
these suggestions are only added when the search query is empty.
For narrows that have a term with a near operator or additional
filter terms (is:starred, has:link, etc.), the search query would
not be empty when constructing the attacher for the search box
suggestions.
2025-09-26 09:52:49 -07:00
Lauryn Menard
1706aa5c1e search-suggestions: Rename suggestions_for_current_filter.
So that it is clearer that this function is only used when the
search query is empty, we rename suggestions_for_current_filter to
suggestions_for_empty_search_query.
2025-09-26 09:26:23 -07:00
Kislay Verma
951fd388fb compose_banner: Clear convert_pasted_text_to_file_banner correctly.
This is a follow-up to #35476 where we made a change in
`compose.clear_compose_box` to clear this banner.
In this commit, we instead club the clearing logic together
with `compose_banner.clear_uploads`.
2025-09-26 09:21:11 -07:00
Sahil Batra
aa0051abc2 image_upload_widget: Remove blue outline when clicking.
"Upload profile picture" and similar text shown when hovering
over the image shows a blue outline while clicking on it
and same blue outline is shown when clicking on the delete
button ("x") as well. This commit updates the CSS to remove
that outline.
2025-09-26 09:19:45 -07:00
Aman Agrawal
f2a11c5858 inbox: Avoid extra margin from folders hidden by filters.
If all channels in a folder are muted, then this margin is present
in "Standard view", without there being any folder present.

Fixed by only applying margin if the folder has any header or rows
that are not hidden by filters.

This is an alternative fix to #35962 which was reverted in #36123.
2025-09-26 09:16:26 -07:00
Evy Kassirer
19880797db channel_folders: Fix remaining test TODOs.
Fixes #35494.
2025-09-25 17:31:21 -07:00
Karl Stolley
c21d2918da inbox: Correct margin declaration to avoid odd gap. 2025-09-25 17:27:35 -07:00
Evy Kassirer
cb36774b14 message_events: Use MessageEditHistoryEntry type.
Followup to https://github.com/zulip/zulip/pull/32492#discussion_r1878636631
2025-09-25 09:24:32 -07:00
Evy Kassirer
51e056f49f topic_list: Don't treat clicked topics as potentially undefined. 2025-09-25 09:24:07 -07:00
Evy Kassirer
d14ef2046b recent_view_ui: Type avatar_element as HTMLElement. 2025-09-25 09:24:07 -07:00
Evy Kassirer
68e86b0905 pygments_data: Remove undefined option for lang value.
It's clear from the removed assert that it's never undefined.
2025-09-25 09:24:07 -07:00
Aman Agrawal
40f4ad2cb0 register: Add AI/LLM as option for how user found Zulip. 2025-09-24 10:24:23 -07:00
Lauryn Menard
8e385661c5 compose-close: Consolidate current logic for updating buttons.
Refactors compose_closed_ui.update_buttons to cover all three
cases for these button states: direct, stream and non-specfic.

Moves the logic in update_buttons_for_non_specific_views,
update_buttons_for_private, and update_buttons_for_stream_views
to the update_buttons function.

The default case, which is used in views without a filter (i.e.,
recent conversations and inbox), is the non-specific case.
2025-09-23 12:32:40 -07:00
Lauryn Menard
725d22c4c3 compose-closed: Extract shared new conversation button helper. 2025-09-23 12:32:40 -07:00
Lauryn Menard
1c7e4a5e09 compose-closed: Fix updating buttons when not in DM narrow.
When processing a server event or an empty message fetch,
we were incorrectly updating the closed new conversation
button attribute, "data-conversation-type" to be "direct"
without checking to see if the current narrow filter was
actually a direct message view.

Adds a helper function that checks the current filter for
contains_only_private_messages and then calls
compose_closed_ui.update_buttons_for_private when true.

That's the same check that's used in
message_view.handle_post_view_change when
compose_closed_ui.update_buttons_for_private is called,
so we're consistently using the same check when updating
the closed compose box buttons for this state.
2025-09-23 12:32:40 -07:00
Lauryn Menard
c1480bec36 compose-closed: Extract helper for disable reply to dm recipient.
Extracts a helper function with the logic for disabling the reply
to conversation button for the direct message recipient case.
2025-09-23 12:32:40 -07:00
Sahil Batra
1e21f7b224 register: Rename stream_creator_or_nobody to channel_creator.
This commit renames `stream_creator_or_nobody` value for
`default_group_name` field in `server_supported_permission_settings`
object to `channel_creator`.
2025-09-23 12:12:23 -07:00
Evy Kassirer
fc9bbd37a0 search: Align suggestion left padding with search bar icon space. 2025-09-23 11:39:12 -07:00
Prakhar Pratyush
03897c42e1 ui_init: Fix flashing of 'try zulip' modal.
On visiting 'https://chat.zulip.org/?show_try_zulip_modal',
a 'try zulip' modal is displayed to spectators.

Previously, the modal flashed briefly and disappeared.

Reason:
Earlier, in 'ui_init.js' we called 'show_try_zulip_modal'
followed by a network call - which on success called
'initialize_everything'.

'hashchange.initialize' (in 'initialize_everything') closes
any active modal.

So, the race between 'show_try_zulip_modal' & 'hashchange.initialize'
was resulting in this flash.

Fix:
We call 'show_try_zulip_modal' only after 'initialize_everything'
completes - there's no point to try to display modal when the
loading screen is still visible to users.
2025-09-23 11:20:22 -07:00
Aman Agrawal
7f81665b58 views_util: Fix hotkeys not working when views filter is in focus.
When focus for recent view / inbox is in focus, hotkeys were
not working since #36035 didn't account for inputs inside the
view.

Fixed by removing recent view and inbox filter elements from
`.input-element` selector.

Tested that hotkeys now work for recent view, inbox and
channels topics list as expected.
2025-09-23 07:28:28 -07:00