Commit Graph

1528 Commits

Author SHA1 Message Date
Prakhar Pratyush
087abb4314 composebox: Show 'Enter a topic (skip for general chat)' placeholder.
Use a more instructive placeholder instead of "Topic" when
topic is not mandatory in a realm.

Updated placeholder:
'Enter a topic (skip for general chat)'.
2025-02-26 14:03:24 -08:00
Karl Stolley
a3a43c2f8b compose: Handle fading with general chat.
This commit also attempts to fix a bug, present in main, where a
draft restored directly to the compose box loses its original topic
upon switching to other topic narrows.

Co-authored-by: Prakhar Pratyush <prakhar@zulip.com>
2025-02-26 13:59:03 -08:00
Karl Stolley
30b1ae7111 compose: Correctly focus when replying to general chat. 2025-02-26 13:59:03 -08:00
Prakhar Pratyush
29fb5ff934 compose: Update textarea placeholder with general chat. 2025-02-26 13:59:02 -08:00
Karl Stolley
cae48d3faa compose: Rename placeholder update function for clarity. 2025-02-26 13:59:02 -08:00
apoorvapendse
ea3e89cdd9 composebox_typeahead: Add support for empty string topic in textarea.
This commit adds support for empty string topic in compose textarea
typeahead.
2025-02-26 13:59:02 -08:00
apoorvapendse
8b9ba36465 copy_and_paste: Split copy and paste.
Note that the puppeteer tests only tested
copying whereas the node tests only tested
pasting, which is why the puppeteer tests
for pasting and node tests for copying are
absent after this split.
2025-02-26 13:15:50 -08:00
Maneesh Shukla
606d1e9691 presence_data: Fix last_active_time for users with no last_active_time.
There's a rare possibility for a user to have no last_active_time. In
such a case, we always want to fall back to date_joined for displaying
"Last active" in the UI.

Co-authored-by: Tim Abbott <tabbott@zulip.com>
2025-02-26 12:51:57 -08:00
Tim Abbott
2c8d74735a postprocess_content: Drop invalid inline image elements.
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-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
These shouldn't exist without bugs in the Markdown processor, but at
least some ancient messages in chat.zulip.org seem to have them.
2025-02-25 22:40:36 -08:00
Saubhagya Patel
f9825142c8 settings: Add frontend to change allow_edit_history to integer field.
This commit implements the frontend of migrating the
`allow_edit_history` setting to `message_edit_history_visibility`.
This allows organizations, to have an intermediate setting to
view only the "Moves" history of the messages.

Fixes #21398.

Co-authored-by: Shlok Patel <shlokcpatel2001@gmail.com>
Co-authored-by: Tim Abbott <tabbott@zulip.com>
2025-02-25 18:18:23 -08:00
Sahil Batra
166d9282b8 streams: Use can_subscribe_group setting for checking permission.
This commit adds code to use can_subscribe_group setting in webapp.

Fixes part of #33417.
2025-02-25 13:17:15 -08:00
Kislay Verma
766467c5e3 composebox_typeahead: Allow easily linking to topics in same channel.
This commit makes it easier to link to topics in the same channel.
Typing `#>` in the compose box replaces it with `#**channel_name>`
and opens the topic_list typeahead.

Channel names producing broken link syntax
are handled by generating a fallback md link
syntax when the topic is chosen.

Fixes #31420
2025-02-25 09:51:49 -08:00
Kislay Verma
676fbb6d99 composebox_typeahead: Fix bug in generating link syntax.
A minor bug was introduced in #32184 where we didn't check if the
channel name would cause a broken link syntax (and hence should
generate a fallback md link).  This would cause problems when
implementing a shortcut syntax to link to current channel.

Fixes part of #31420.
2025-02-25 09:51:49 -08:00
Aman Agrawal
19b96ce9a8 composebox_typeahead: Fix failing tests.
Fixing test failure from
6d30b10b60.
2025-02-24 22:14:31 -08:00
Aman Agrawal
6d30b10b60 composebox_typeahead: Fix topic completion broken for long stream names.
Previous value of `40` didn't account for full length of stream name
which results in topic completion not working for stream names bigger
than that.
2025-02-24 21:55:11 -08:00
Vishesh Singh
c8983c0d31 popovers: Add x-gfm content type for copied Zulip links.
Copying links to a Zulip element now generate 3 content types:
- plain url, pasteable in address bar and non rich text editor
- HTML, for rich text editors.
- x-gfm, for pasting into GitHub and other services that support
  Markdown, new in this PR.

Fixes: #31813.
2025-02-24 11:18:01 -08:00
Vishesh Singh
6619b3b589 topic_link_util: Extract get_topic_link_content and helpers.
Refactors the get_fallback_markdown_link to generate some reusable
functions.
2025-02-24 11:07:37 -08:00
Maneesh Shukla
28cbc498d7 combined-feed-ui: Add placeholder text to empty combined feed.
Also, added live update behaviour to the combined feed narrow.

Fixes #31602.
2025-02-24 11:06:29 -08:00
Maneesh Shukla
d8f609d088 unresolved: Add support for searching for unresolved topics.
Fixes: #31725.
2025-02-24 09:59:30 -08:00
Maneesh Shukla
3f88fe5903 resolved: Rename "Topics marked as resolved" -> "Resolved topics".
Fixes part of #31725.
2025-02-24 09:59:21 -08:00
apoorvapendse
0b12c51771 compose: Add tooltip support for invalid messages.
This commit adds tooltip support for various
invalid conditions mentioned in issue 32115.

A `show_banner` positional argument is added
in the `validate` method which has a default
value of true.

The reason behind introducing this is to
not trigger banners on hovering the disabled
send button, since the tooltip message is also
determined using the same validate method.

We want to only disable the button on hover,
which is why the update_send_button_status() method
is called only on "mouseenter" event, which is
added to the send button in compose_setup.js

To incorporate this change a new param is
introduced which determines whether to enable/disable
send_button by running update_send_button_status

Earlier, typing something in the textarea or
recipient box would also trigger
`update_send_button_status` which doesn't
work well since we've introduced a lot of
new booleans which determine whether send
button gets disabled causing send button to
get disabled while typing instead while hovering
Hence this change.
2025-02-23 23:11:18 -08:00
Apoorva Pendse
8496a40564 compose_banner: Assign banner priority.
Assigns priority to banner errors as
mentioned in #32115.
2025-02-23 23:11:18 -08:00
Apoorva Pendse
2b250e7e64 compose_validate: Refactor conditionals for existing errors.
Pre commit for #32115.
2025-02-23 23:11:18 -08:00
Apoorva Pendse
979b4203c7 compose_banner: Reword no channel selected banner error.
Preparatory commit for #32115.
2025-02-23 23:11:18 -08:00
apoorvapendse
6a443c0418 compose_banner: Update message for no private recipient.
This commit updates the error banner message when no
private recipient is specified.
2025-02-23 23:11:18 -08:00
apoorvapendse
fb5730a8fb copy_and_paste: Use parse instead of fixtures for inline cases.
Fixes: https://chat.zulip.org/#narrow/channel/6-frontend/topic/Use.20original.20markup.20to.20generate.20HTML.20for.20katex.20tests/near/2097702
2025-02-23 17:04:48 -08:00
Maneesh Shukla
3db2104fe9 drafts: Add a copy draft button.
This adds a button to the draft overlay that allows the user to copy
the draft to the clipboard.
2025-02-23 15:54:07 -08:00
Saubhagya Patel
d3c20f0b25 notifications: Render emoji in desktop notifications.
In desktop notifications, we no longer display an emoji's status
code. Instead, we show the corresponding Unicode emoji to
render it properly in desktop notifications. For custom
emojis, we continue to display their name.

Fixes #30598.

Co-authored-by: Tanmay Kumar <tnmdotkr@gmail.com>
Co-authored-by: Tim Abbott <tabbott@zulip.com>
2025-02-23 10:57:09 -08:00
Maneesh Shukla
b7ce31135d deactivated_user: Correctly display deactivated users in the right sidebar.
Fixes: #30797.
2025-02-21 18:01:26 -08:00
Shubham Padia
3132bdb20f composebox: Streams without content access shouldn't be in typeahead.
Other places where we use get_unsorted_subs do not require content
access.
See https://chat.zulip.org/#narrow/channel/101-design/topic/dropdown.20for.20metadata.20access.20stream/near/2096230
2025-02-21 15:36:07 -08:00
Shubham Padia
5d7a78f721 stream_data: Users with content access should be able to preview.
Before this, not all users with content access were able to see the
preview button.
2025-02-21 15:36:07 -08:00
Prakhar Pratyush
eed056a591 topic_list_data: Add support to filter empty string topic.
We show `realm_empty_topic_display_name` for empty string topics
in the left sidebar.

This commit makes it possible for users to search for
the `realm_empty_topic_display_name` value to filter out empty
string topics.
2025-02-21 14:13:22 -08:00
Prakhar Pratyush
c777fede07 compose_state: Remove empty_topic_placeholder function.
This commit removes `empty_topic_placeholder` function as
it is no longer used.
2025-02-20 10:09:41 -08:00
Sahil Batra
434a145e31 typeahead: Handle matching for "role:members" system group.
The name displayed for "role:members" group is
"Everyone, except guests" and "role:members" group should
be shown in the typeahead when searching for "Members" as
well, i.e. while matching the query in the input "Members"
and "Everyone, except guests" both should be considered as
display names for "role:members" group.
2025-02-19 17:02:51 -08:00
Sahil Batra
ff05fd558c groups: Change display names of everyone and members system groups.
"role:members" group name is displayed as "Everyone except guests"
in the UI and "role:everyone" group name is displayed as
"Everyone including guests".
2025-02-19 17:02:51 -08:00
Maneesh Shukla
a98135649f deactivated_user: Show deactivated status for deactivated users.
Fixes: #26833.
2025-02-18 22:20:05 -08:00
Anders Kaseorg
949e5004cb codespell: Fix typos caught by codespell.
“Brunch” wasn’t a typo, but, whatever.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-02-18 22:04:43 -08:00
Anders Kaseorg
4e04eed745 typos: Fix typos caught by typos and mwic.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-02-18 19:44:02 -08:00
Shubham Padia
89ea21f7f0 stream_data: Use user_has_permission_for_group_setting.
Before this, we were using `is_user_in_setting_group` which does not do
the extra checks around a guest user's permissions (and in future, some
other checks).
We introduced `initialize_and_override_current_user` in stream_data test
to make it easier to set current_user.user_id.
2025-02-18 12:49:05 -08:00
Maneesh Shukla
dc95699862 code_playground: Add custom playground options in the default_options list.
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-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
We can configure a custom playground for any language, including ones
which we don't have in our typeahead suggestions. One might then want to
make that language the default for code blocks, which is now possible
with this commit.

Fixes: #33282.
2025-02-16 17:22:47 -08:00
Sahil Batra
0d1d805ee5 settings_data: Check server setting in user_can_summarize_topics. 2025-02-14 11:52:28 -08:00
Vector73
7440444a90 saved_snippets: Move initialization directly to ui_init.ts.
Defer saved snippets dropdown creation until the compose box
is opened for better performance.

Fixes #31831.
2025-02-14 11:51:40 -08:00
roanster007
f3fbf314e2 echo: Update channel-topic link to permalink upon new message arrival.
This commit updates the traditional url of a channel-topic narrow
to topic permalink upon arrival of new message in the narrow, by
using the `with` operator on it.

The requirement for this change arises when we navigate to an
empty topic. Since it has no messages yet, we fallback to the
traditional channel-topic links. However, when a new message
arrives to this empty topic, we want the url to live update to
a permalink of the narrow.

This is done as an effort to make sure channel-topic narrows
always contain `with` term.
2025-02-13 12:40:37 -08:00
Vector73
2ef9695ef0 settings: Migrate wildcard_mention_policy to group-based permission.
Added new group-based permission setting
`can_mention_many_users_group` to replace `wildcard_mention_policy`.
2025-02-12 23:21:33 -08:00
roanster007
41f30e1052 topics: Change topic links of left sidebar to use new permalinks.
This commit updates the topic links obtained from clicking
the topics in the left sidebar, recent view and inbox, and
those obtained from "Copy link to topic" to use the new
topic permalinks.

Fixes part of #21505.
2025-02-12 16:21:03 -08:00
opmkumar
2a15da47d9 message_edit: Show typing indicator for message editing.
This commit adds typing indicators for message editing in stream
as well as in dm, if the send typing notification
for corresponding is enabled.

Based on earlier work in #28585.

Co-authored-by: Rohan Gudimetla <rohan.gudimetla07@gmail.com>

Fixes #25719.
2025-02-12 15:08:56 -08:00
Prakhar Pratyush
1aa048df35 channel_email: Make sender configurable when generating channel email.
Earlier, it was not possible to configure the user that the forwarded
email will be sent by.

This commit updates the 'Generate channel email address' modal to
make sender configurable when generating channel email.

Fixes #31566.
2025-02-12 15:08:32 -08:00
Prakhar Pratyush
1acf309d57 stream_data: Fix 'can_access_stream_email' function.
'can_access_stream_email' function determines who can
generate email to send message in a channel.

Earlier, the function was not considering channel post policy.
So, a user which doesn't have permission to post in
a channel as per channel post policy could generate channel email.

This commit makes sure to not show the "Generate email address"
button in such cases.

We show the button only if the current user or any of the bots
they control has the permission to post in the channel.

Fixes part of #31566.
2025-02-12 15:08:32 -08:00
Prakhar Pratyush
a94cc47879 bot_data: Remove the stale 'get_editable' function. 2025-02-12 15:08:32 -08:00
Sahil Batra
4ca28bb850 settings: Add setting to control permission for topic summarization. 2025-02-12 12:05:04 -08:00