Commit Graph

63708 Commits

Author SHA1 Message Date
Aravind
8dfecaf29b settings: Add help link to who can manage plans and billing.
We do the direct link to what's appropriate for the customer type.

For self-hosters, We link to the zulip.com copy of the self-hosted
billing documentation, so we don't link a stale copy of it.

Fixes #33922.
2025-03-11 09:46:25 -07:00
Apoorva Pendse
54fd02b173 compose_tooltip: Remove delay for invalid messages.
Does what 714def080f
was trying to do without the side effects.
Fixes: 714def080f
2025-03-11 09:41:22 -07:00
Vector73
58f16468ca api_docs: Add Changes entry for removing is_billing_admin. 2025-03-11 09:38:36 -07:00
Aman Agrawal
834e69d17c compose_actions: Fix send button disabled without any error.
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
Reproducer:
* Upload a file.
* Close compose box before upload is finished.
* Open compose box.

Send message button is disabled without any error in this state.
Fixed by resetting the send button state when compose box is closed.
2025-03-10 21:53:10 -07:00
apoorvapendse
ef863258c2 compose_paste: Remove title formatting more carefully.
We now start to consider text nodes
with valid content to determine
whether we should remove the styling.

Fixes: #31218.
2025-03-10 17:01:13 -07:00
Alex Vandiver
721fd26442 send_email: Set the Date header according to local enqueue time.
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
Email clients tend to sort emails by the "Date" header, which is not
when the email was received -- emails can be arbitrarily delayed
during relaying.  Messages without a Date header (as all Zulip
messages previously) have one inserted by the first mailserver they
encounter.  As there are now multiple email-sending queues, we would
like the view of the database, as presented by the emails that are
sent out, to be consistent based on the Date header, which may not be
the same as when the client gets the email in their inbox.

Insert a Date header of when the Zulip system inserted the data into
the local queue, as that encodes when the full information was pulled
from the database.  This also opens the door to multiple workers
servicing the email_senders queue, to limit backlogging during large
notifications, without having to worry about inconsistent delivery
order between those two workers.

Messages which are sent synchronously via `send_email()` get a Date
header of when we attempt to send the message; this is, in practice,
no different from Django's default behaviour of doing so, but makes
the behaviour slightly more consistent.
2025-03-10 16:48:08 -07:00
evykassirer
0e152a128f message_edit: Scale resolve topic spinner with font size.
This commit also changes the width of the spinner so that the
resolve icon and spinner take up the same width.
2025-03-10 16:43:45 -07:00
Sahil Batra
e2d9d069e0 settings: Remove dense_mode setting. 2025-03-10 16:07:37 -07:00
Sahil Batra
c8b1de6076 gear_menu: Allow spectators to change font size and line height. 2025-03-10 16:07:37 -07:00
Sahil Batra
c6e840531f settings: Update UI for information density settings.
This commit adds new UI for controlling font size and
line height settings in settings panel.

Fixes #33186.
2025-03-10 16:07:37 -07:00
Sahil Batra
6f6059da73 personal_menu: Support changing information density settings.
This commit adds UI in personal popover menu for user to change
font-size and line-height.

Fixes part of #33186.
2025-03-10 16:07:37 -07:00
Sahil Batra
d8bc2f350e settings: Remove conditions for dense_mode setting. 2025-03-10 16:07:37 -07:00
Sahil Batra
63ef84d9a3 popovers: Decrease width of theme switcher in spectators menu.
Matches the width of other items in the menu.
2025-03-10 16:07:37 -07:00
Sahil Batra
222843578e settings: Fix save-discard behavior in default user settings.
Save discard widget behavior was not correct for
"General" subsection of user default settings as the
proposed value for color scheme was a string which
was being compared to the numerical current value
and thus check_realm_default_settings_property_changed
always returned true for "General" subsection.
2025-03-10 16:07:37 -07:00
Kartikay Nusture
aead403f66 bot: Set Incoming webhook the default bot type.
This commit sets "Incoming Webhook" as default bot type
when opening the "Create New Bot" modal.

Fixes: #33740.
2025-03-10 15:55:16 -07:00
evykassirer
a64a20ce38 information_density: Resize page components when changing font size.
Discussion here:
https://chat.zulip.org/#narrow/channel/431-redesign-project/topic/Weird.20bug.20possibly.20involving.20calc/near/2113977
2025-03-10 15:38:35 -07:00
Tim Abbott
6066675e3c clipboard_handler: Improve fallback text copying links.
There's no reason we need to make up weird fallback text when we're
specifically trying to copy a given link; we can just use the original
link when we determine we can't add special formatting.
2025-03-10 15:33:08 -07:00
Tim Abbott
e9dde4ba9c copy_messages: Fix browser copy code paths for Firefox.
On Firefox, with `dom.event.clipboardevents.enabled` set to false, the
previous code path (shared with the fancy "copy link" code that tries
to add extra content types) would fail.

Fix this by reverting part of 37b5d539a0.

The comments in this code were correct that we just want to let the
browser handle the copy event. We can do that by just returning the
right value to the hotkey code path such that it won't do
preventDefault, without using deprecated execCommand or doing anything
else special.

Fixes #33912.
2025-03-10 15:33:08 -07:00
Tim Abbott
acaddc2d4e copy_messages: Rename select_div for clarity. 2025-03-10 15:33:08 -07:00
Tim Abbott
26355df8e9 copy_messages: Extract restore_original_selection.
The previous naming scheme was rather confusing.
2025-03-10 15:33:08 -07:00
Alya Abbott
80078971b5 docs: Link to instructions for configuring billing admin in the UI. 2025-03-10 14:31:18 -07:00
Alya Abbott
e8ade79f93 help: Document configuration for who can manage billing. 2025-03-10 14:31:18 -07:00
Karl Stolley
54b0ba0248 compose: Hold DM picker, topic marker to top recipient line. 2025-03-10 13:39:47 -07:00
Harsh
b7a943b8cb left_sidebar: Hide menu option for home view if all messages are read.
This commit hides sidebar menu option button instead of showing
it with "Mark all messages as read" option, for home view when
there are no unread messages.
2025-03-10 13:08:39 -07:00
Mateusz Mandera
c031cf9275 import: Fix export/import of SavedSnippet.
This table's export and import weren't working:
1. It didn't have a Config in export.py, so it wasn't exported at all.
2. Its `date_created` wasn't registered in `DATE_FIELDS`.
3. It wasn't registered in `ID_MAPS` in import_realm.py, so having any
   SavedSnippets in the export would cause the import to fail with an
   exception.
4. It was missing a `fix_datetime_fields` call in its import codepath.
2025-03-10 13:07:56 -07:00
Mateusz Mandera
acb1731bf9 export: Fix export of child tables when exporting mirror dummy users.
Without this change, the child tables of UserProfile didn't get their
objects exported if those objects were tied to a mirror dummy user.

For example, a `Recipient` of type `PERSONAL`, or the associated
`Subscription` would not get exported. Same for other tables with
foreign keys to `UserProfile` - such as `UserPresence`.

This happened because the Configs for the export are defined as follows:

```python
user_profile_config = Config(
    custom_tables=[
        "zerver_userprofile",
        "zerver_userprofile_mirrordummy",
    ],
    # set table for children who treat us as normal parent
    table="zerver_userprofile",
    virtual_parent=realm_config,
    custom_fetch=custom_fetch_user_profile,
)

user_subscription_config = Config(
    table="_user_subscription",
    model=Subscription,
    normal_parent=user_profile_config,
    filter_args={"recipient__type": Recipient.PERSONAL},
    include_rows="user_profile_id__in",
)

Config(
    table="_user_recipient",
    model=Recipient,
    virtual_parent=user_subscription_config,
    id_source=("_user_subscription", "recipient"),
)
```

while in `export_from_config` we have:
```python
    elif config.normal_parent:
        # In this mode, our current model is figuratively Article,
        # and normal_parent is figuratively Blog, and
        # now we just need to get all the articles
        # contained by the blogs.
        model = config.model
        assert parent is not None
        assert parent.table is not None
        assert config.include_rows is not None
        parent_ids = {r["id"] for r in response[parent.table]}
```

This meant that when processing a table with
`normal_parent=user_profile_config`, the `parent_ids` above would only
have the ids of `UserProfile` objects under the `zerver_userprofile` key in
the exported data - completely missing those in
`zerver_userprofile_mirrordummy`.
2025-03-10 13:07:56 -07:00
Apoorva Pendse
56293b19fc user_groups: Persist the edit group view post deactivation.
Fixes:
https://github.com/zulip/zulip/pull/33820#issuecomment-2705912743.
2025-03-10 12:45:49 -07:00
apoorvapendse
be6cc5e56e user_groups: Show group name for smaller widths.
https://chat.zulip.org/#narrow/channel/9-issues/topic/.F0.9F.8E.AFdeactivated.20group.20indicator.20disappears/near/2113197
2025-03-10 12:45:49 -07:00
apoorvapendse
27ac91a8c8 user_groups: Add deactivated icon on top title.
https://chat.zulip.org/#narrow/channel/9-issues/topic/.F0.9F.8E.AFdeactivated.20group.20indicator.20disappears/near/2112723
2025-03-10 12:45:49 -07:00
apoorvapendse
525efb7c73 user_groups: Remove fa-ban icon for deactivated group settings.
prerequisite: #33812
2025-03-10 12:45:49 -07:00
Harsh
eb013580a5 user_groups: Add banner for settings for a deactivated group.
This commit adds a banner at the top of the group settings panel, to
make it super clear when a group is deactivated.

Fixes: #33803.
2025-03-10 12:42:44 -07:00
Harsh
db53482685 user_groups: Disable permission tab for deactivated groups.
Since there can't be any permissions to display there, it seems not
helpful.
2025-03-10 12:42:25 -07:00
Tim Abbott
f4bb1ac30f realms: Require a non-empty set of users who can manage billing.
This isn't a configuration that's useful, and it seems marginally
helpful to make it hard to end up in a state where this is the empty
set.
2025-03-10 11:50:22 -07:00
Sayam Samal
6043063d21 alerts: Fix alert popup not closing in portico.
The alerts in portico were not being closed since the class responsible
for hiding them — `home-error-bar` was defined in `web/styles/zulip.css`
which isn't being shared with portico. This commit moves this class to
`web/styles/alerts.css` which is shared with portico, and fixes the bug.
2025-03-10 11:21:11 -07:00
Sayam Samal
2c84f60bbc popup_banners: Add loading indicator to connection error banner button.
This commit adds a loading indicator to visually communicate that the
retry button in the connection error banner has executed the retry
sequence.
2025-03-10 11:21:11 -07:00
Sayam Samal
80a352dc02 buttons: Add loading indicator to buttons. 2025-03-10 11:21:11 -07:00
Sayam Samal
3275fcc96e popup_banners: Redesign connection banner to use new banner component.
This commit serves as the base commit for redesigning the alert banners
by migrating them to use the new banner component. We use a new name
to refer to these banners — "Popup banners", which is more descriptive
about their behavior.

The Popup banners are appended to the container in a stacking order,
i.e., the most recent popup banner appears on the top and the oldest one
is sent to the bottom of the stack. These banners also inherit the
animations from the alert banners for visual appeal.

This commit also fixes the bug where clicking on the "Try now" button
in the popup banner resulting from an error in the `/json/messages`
endpoint resulted in call to restart_get_events in server_events.js
instead of load_messages in message_fetch.ts.

Fixes #31282.
2025-03-10 11:21:11 -07:00
Sayam Samal
cd08c628ba alerts: Modify alert-box container to use flex layout.
This is prep commit for the alert banner redesign, which adds flex
layout to the alert-box container and modifies the animations logic to
work with the new layout.
2025-03-10 11:21:11 -07:00
evykassirer
602d0f4914 right_sidebar: Remove invite users icon at bottom of buddy list.
Discussion here:
https://chat.zulip.org/#narrow/channel/101-design/topic/right.20sidebar.20design.20tweaks.20.20.2332976/near/2115335
2025-03-10 09:47:00 -07:00
Tim Abbott
4cfaf18145 api: Increment API feature level to 363. 2025-03-10 09:36:30 -07:00
Vector73
0ba3b787cf settings_config: Fix hardcoded numbers for plan_type and org_type. 2025-03-10 09:36:30 -07:00
Vector73
c049259d07 user: Remove is_billing_admin user property.
Removed `is_billing_admin` user property as it is no longer used since
billing permissions are now determined by `can_manage_billing_group`
realm setting.
2025-03-10 09:36:30 -07:00
Tim Abbott
e9334abbf4 events: Reorder fetch_initial_state_data. 2025-03-10 09:36:30 -07:00
Vector73
158fd58cde settings: Add "can_manage_billing_group" realm setting.
Added "can_manage_billing_group" realm group permission setting
to control who can manage billing and plans in the organization.

Fixes #32745.
2025-03-10 09:36:30 -07:00
Alex Vandiver
2a0f3c9746 message_send: Do not attempt to place a set into a message event.
This would have triggered exceptions in production, since orjson
cannot serialize sets.
2025-03-10 09:35:02 -07:00
evykassirer
0fe2afe8b3 settings: Standardize right panel button height for streams/usergroups. 2025-03-10 09:26:50 -07:00
Karl Stolley
6668b96b73 dropdowns: Correct columnar flex alignment in recents, inbox. 2025-03-10 09:22:41 -07:00
Vector73
47897e6f95 tools: Fix merge-api-changelogs. 2025-03-10 09:22:13 -07:00
evykassirer
d84a23f1f8 topic_edit: Scale spinner with font size. 2025-03-10 09:20:43 -07:00
Alex Vandiver
583ec00db7 zulip_update_announcements: Add missing close-paren. 2025-03-10 09:19:51 -07:00