Commit Graph

5696 Commits

Author SHA1 Message Date
Evy Kassirer
98e65b220a stream_list: Remove unneeded export on scroll_stream_into_view. 2025-06-29 23:13:25 -07:00
Evy Kassirer
443db4bd21 sidebar_ui: Remove unused hide_unread_counts passed to left sidebar.
Missed in #32795.
2025-06-29 23:13:15 -07:00
Tim Abbott
f4327edd81 unread_ops: Fix mark-as-unread handling of has_found_newest.
When offline, has_found_newest never ends up being true, and we'd end
up falling through to an interleaved banner. We rewrite this logic
with an explicit idea of whether we're online, and the following fixes:

- Never display the interleaved view confirmation banner in a
  conversation view.
- Avoid displaying that banner inaccurately when the actual problem
  is that we're offline.
- If we're offline, always call do_mark_unread with a list of IDs,
  such that if its helpers supported local echo (they don't), we
  will locally echo to the extent possible.

Note that following this change, being offline results in "mark
unread" being a noop until you're online again. Better than a weird
banner.

See https://chat.zulip.org/#narrow/channel/9-issues/topic/mark.20unread.20strange.20when.20disconnected/near/2201703 for more context.
2025-06-28 10:31:36 -07:00
Evy Kassirer
31fb0bd6d7 channel_folders: Let a new channel in a folder be created through a hash. 2025-06-27 17:09:08 -07:00
opmkumar
87cdea0fa1 left_sidebar: Always show home-view row popover, even with no unreads.
Fixes #28759.
2025-06-27 13:50:18 -07:00
opmkumar
2712325d1f left_sidebar: Use popover to show/hide unread summary counts.
Co-authored-by: Akarsh Jain <akarsh.jain.790@gmail.com>

Fixes part of #28759.
2025-06-27 13:50:18 -07:00
opmkumar
d3a7122b62 left_sidebar: Use personal settings to hide unread summary counts.
This commit adds code to use
`web_left_sidebar_unreads_count_summary` from personal
settings in web app.

Co-authored-by: Akarsh Jain <akarsh.jain.790@gmail.com>

Fixes part of #28759.
2025-06-27 13:50:18 -07:00
opmkumar
cf658155e7 left_sidebar: Remove logic of hiding unread counter of STREAMS header.
This removes the previous logic where the STREAMS header unread counter was
hidden when "Show unread counts for" was set to "No streams."
2025-06-27 13:38:38 -07:00
Pratik Chanda
a2fc3a0d7f unread_banner: Fix unread banner not hiding when marking topic as read.
Earlier, when we had unread banner in message list and user marks
all messages as read for topic, unread banner would persist even
though we had no unread messages in current message list.

This commit hides unread banner when there are no unreads just like
we show banner when unread messages appear in message list.

Fixes:zulip#33866.
2025-06-27 13:18:43 -07:00
Prakhar Pratyush
8e1f0c4bcf topic_list: Fix "show all topics" flashing.
Earlier, 'all_topics_in_cache' used to return `false`
in the case where we were unsure if some topics were
present even before the user subscribed to the channel
and hence missing in the cache.

Returning `false` led to visible 'show all topics',
even if all the topics were already displayed. This was
helpful if the API call to fetch channel history failed,
as users had the option to make another request.

That resulted in a bug where "show all topics" was flashing
in channels with less number of topics. We used to display
"show all topics" initially and then hide it after the API
call confirmed that there were no new topics to display.

To fix this bug, we return `true`. So, the "show all topics"
is not displayed beforehand. We let the API call fetch the history
and rebuild the topic list based on the updated data.

Instead of show then hide. We now prefer, show if needed.

To fix the issue of API call failure and users having no option
to see all topics, we did prep work in the last commit
to add retry mechanism to the concerned API call.
2025-06-26 10:11:05 -07:00
Prakhar Pratyush
43249cb431 stream_topic_history_util: Add retry mechanism to get_server_history.
Earlier, in `get_server_history` the API call to fetch stream-topic
history didn't have a retry logic.

This commit adds a retry mechanism.

If the request to fetch stream topic history fails, we now retry
the request up to a fixed number of times before giving up.
This improves UX in case of temporary network issues.
2025-06-26 10:11:05 -07:00
Kislay Verma
f448890158 channel: Add option to notify users newly added to a channel.
When a user is added to a channel, we send
the user that was added a Notification Bot
DMs to let them know about it.

In this commit, we add an option for whether or not
this message is sent.

If more than 100 users are added at once, we
do not send notification bot DMs since it would
be a performance-costly operation.

We also send this threshold value of 100 in the
initial state data to the clients.

Fixes part of #31189
2025-06-26 10:08:11 -07:00
Kislay Verma
9e854edd70 add_subscribers_pill: Export get_pill_user_ids.
This is a prep to #31189, where we need this function
out of this module, in a callback.
2025-06-26 10:08:11 -07:00
Pratik Chanda
fd355e2028 social_auth: Fix keyboard navigation on accounts in oauth.
This commit makes the accounts in oauth page navigable on `Tab`.

Fixes:zulip#34724.

Co-authored-by: Parasaran <v.parasaran@gmail.com>
2025-06-26 10:02:30 -07:00
Vector73
27bfca61c1 settings: Update move messages settings label.
Updates organzation-level move messages permission setting
labels to make it clear that the settings apply to all channels.
2025-06-26 10:01:43 -07:00
Aman Agrawal
bf1b571af5 message_reminder: Set a 6s delay before closing reminder feedback widget.
Increases the feedback widget from 4s to 6s for reminder scheduled
toast.
2025-06-25 12:05:28 -07:00
Aman Agrawal
b5f7e24669 message_reminder: Add UI to schedule message reminder.
This adds an option in message actions popover menu to schedule
a message reminder.
2025-06-25 12:05:28 -07:00
Aman Agrawal
1384a8d19b compose_send_menu_popover: Extract function to parse send_at_time.
This will be commonly used to schedule a reminder and a message.
2025-06-25 12:05:28 -07:00
Tim Abbott
b437bcd5c4 topic_link: Document get_fallback_markdown_link. 2025-06-25 12:03:54 -07:00
Vector73
b612351e48 stream_setting: Add setting for who can move messages out of channel.
Adds `can_move_messages_out_of_channel_group` channel-level
permission for who can move messages out of the channel.

Fixes #34243.
2025-06-24 16:52:53 -07:00
Vector73
703601a5d5 stream_setting: Add setting for who can move messages within channel.
Adds `can_move_messages_within_channel_group` channel-level
permission for who can move messages within the channel.
2025-06-24 16:52:53 -07:00
Vector73
43dcc6e3fd bug: Fix incorrect topic resolution check.
Previously, when sending messages to resolved topics, the warning
suggesting to resolve that topic used wrong check to verify if the
user is allowed to resolve the topic. This commit fixes that.
2025-06-24 16:52:53 -07:00
Prakhar Pratyush
0be5ea715d hotkey: Ignore keydown events with event.key=undefined.
Some browsers trigger a 'keydown' event with `key === undefined`
on selecting autocomplete suggestion. These are not real keypresses
and can be safely ignored.

See: https://issues.chromium.org/issues/41425904

Earlier, not handling it was resulting in error later in the codepath.
2025-06-24 12:44:16 -07:00
Shubham Padia
92d1fcdce6 banners: Change insecure-desktop-app intent and message.
Fixes
https://chat.zulip.org/#narrow/channel/438-release-management/topic/desktop.20minimum.20versions/near/2116356.
We have changed the intent from danger to warning.
2025-06-24 12:07:54 -07:00
Kislay Verma
9507b7b36f organization settings: Clean up labels for custom time limits.
We make the text "minutes" agree with the number
in the input field.
In the future, we could make the units configurable
as in the invitation modal.

Fixes #34692.
2025-06-24 10:12:15 -07:00
Evy Kassirer
ec65dad063 stream_pill: Fetch all subscribers before getting user ids for a stream.
Some checks failed
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Work towards #34244.
2025-06-23 17:04:47 -07:00
Vector73
c406db2480 stream_popover: Fix rename topic placeholder UI.
Previously, the placeholder in the "Rename topic" input
overlapped with the text when renaming the "general chat"
topic. Also, the placeholder was not updated to "general chat"
when the input was empty and lost focus. This commit fixes the bug.
2025-06-23 09:49:56 -07:00
apoorvapendse
b8e09b3c35 left_sidebar: Support channel-row clicks on the left.
Some checks failed
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Fixes: https://chat.zulip.org/#narrow/channel/9-issues/topic/Clicking.20the.20right.20end.20of.20DM.20list.20items.20doesn't.20work/near/2192449.

Reference: https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-20 16:23:08 -07:00
apoorvapendse
1ce2c96eee topic-box: Support clicking on the left side.
Fixes:
https://chat.zulip.org/#narrow/channel/9-issues/topic/Clicking.20the.20right.20end.20of.20DM.20list.20items.20doesn't.20work/near/2191051.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-06-20 16:23:08 -07:00
Aman Agrawal
623fa98976 narrow_history: Remove invalid assertion.
Since non message views list channel topic list can have a defined
filter, we cannot assume that having `narrow_state.filter` set
implies `message_list.current` is defined.
2025-06-20 15:56:19 -07:00
Aman Agrawal
93c4dcbdc9 hotkey: Merge uses of M hotkey.
It was not a good idea to have the hotkey
fallthrough the `case` for user not being in message list.

We merge both the cases and also remove `M` from
`message_view_only_keys`.
2025-06-20 15:56:19 -07:00
Karl Stolley
062b83bfec compose: Rename classes, CSS vars to reflect attention level. 2025-06-20 15:54:59 -07:00
Karl Stolley
e19b815eaf compose: Rename functions to reflect attention level. 2025-06-20 15:54:59 -07:00
Karl Stolley
e0860a7635 compose: Experiment with adjusted privacy icon colors. 2025-06-19 17:21:20 -07:00
Karl Stolley
723db3d9a1 compose: Account for textarea focus in mute logic. 2025-06-19 17:21:20 -07:00
Karl Stolley
f1cde90a87 compose: Allow DMs to take muted-recipient logic. 2025-06-19 17:21:20 -07:00
Karl Stolley
966c8451df compose: Add functions to mute/unmute recipient row. 2025-06-19 17:21:20 -07:00
Karl Stolley
a237f3284f compose: Add on show callback for recipient widget. 2025-06-19 17:21:20 -07:00
Karl Stolley
f5a661a462 compose: Rewrite picker as grid and adjust presentation. 2025-06-19 17:21:20 -07:00
Evy Kassirer
1ebfa6bae3 stream_types: Sort stream_schema. 2025-06-19 14:25:41 -07:00
Tim Abbott
e298eddefc inbox: Fix calls to is_complete_for_stream_id.
The call from the inbox code was asking the wrong question -- it wants
to know if we've fetched full topic data to know whether to ask for
it. The new name for the function moved in
7d55ad3c13 helped reveal it.

There also was a mention in a comment that was half-baked; wrote the
comment properly.
2025-06-19 13:05:15 -07:00
Prakhar Pratyush
4515c29d44 topic_list: Fix missing 'show all topics' when messages not cached.
Earlier, when number of topics displayed in the topic list
widget was at max `topic_list_data.max_topics` and
first_message_id of stream >= first_cached_message_id.
There was a possibility of a few topics missing for messages
which were sent when the user wasn't subscribed.

We were neither displaying 'show more topics', nor fetching it
from server to update the list asyncronously.

This commit fixes that bug to display 'show all topics' in that
case and also initiates an API call in parallel to fetch all topics
for that stream and update the topic list asyncronously if topics
were actually missing.

Fixes #28949.
2025-06-19 12:43:02 -07:00
Prakhar Pratyush
7d55ad3c13 topic_list: Move and reorganize couple of functions to topic_list.ts.
A prep commit to move `is_complete_for_stream_id` and
`all_topics_in_cache` from `stream_topic_history` to `topic_list`
as it is specifically used while building topic list widget.

As it makes more sense to use `is_complete_for_stream_id` instead of
`all_topics_in_cache` directly, we reorganize to put it inside
`is_complete_for_stream_id`.

We rename `is_complete_for_stream_id` to
`is_full_topic_history_available` for clarity.

It'll also help to avoid tackling circular import issue
while resolving #28949.

No functional change in this commit.
2025-06-19 12:43:02 -07:00
Prakhar Pratyush
f94d3bd4a2 stream_topic_history: Use first_including_muted for the oldest message.
Earlier, we were using `all_messages_data.first()` for the oldest
message ID we have in cache, which is incorrect.

`all_messages_data.first_including_muted()` returns the oldest ID.

This commit fixes the bug.
2025-06-19 12:43:02 -07:00
Prakhar Pratyush
9bd55fcb8c get_server_history: Support multiple callbacks while request is pending.
Previously, if `get_server_history()` was called while a request
for the stream was already pending, the provided `on_success`
callback was ignored.

This commit fixes that by queuing all `on_success` callbacks per
stream_id when a request is already in flight. Once the request
completes, all queued callbacks are executed.
2025-06-19 12:43:02 -07:00
bedo
7eadabe10a move_topic_modal: Only include messages senders in warning banner.
Only participants who sent the messages being moved
should appear in the warning banner.
2025-06-19 10:30:08 -07:00
Shubham Padia
37bfb7c963 message_edit: Sort message_ids when sending update_message event.
https://chat.zulip.org/#narrow/channel/412-api-documentation/topic/Make.20message_ids.20from.20message.20update.20event.20sorted
2025-06-18 16:48:21 -07:00
Kislay Verma
b4da918c00 compose_paste: Refactor is_safe_url_paste_target.
This commit eliminates a check which is covered just before
the call to this function, and renames it to better explain what
it does.
2025-06-18 14:10:10 -07:00
Kislay Verma
a62ee3f8e0 compose_paste: Don't paste formatted text at md link marker.
This prevents the case when we have text like `[abcd](url)`
in the compose box and the "url" part is selected, and we paste
a link copied from message actions popover.
2025-06-18 14:10:10 -07:00
Kislay Verma
1ece5ad15e topic_link_util: Add support for empty topics in the frontend.
Though the frontend module generated correct urls for
empty topics, it would sometime generate incorrect
link text in the fallback md link syntax. (eg, if
empty string was provided as the topic name).

This commit fixes that.
2025-06-18 13:03:56 -07:00