Commit Graph

66534 Commits

Author SHA1 Message Date
Anders Kaseorg
b2e18f8639 build_emoji: Use clean emoji sheets without Apple fallback images.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 80b9cffb3d)
2025-10-14 11:54:10 -07:00
Anders Kaseorg
01d3fd8714 emoji: Remove deprecated Google blobs emoji set.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 85c94599c5)
2025-10-14 11:54:10 -07:00
Anders Kaseorg
e82b9140ed emoji: Remove setting for deprecated Google blobs emoji set.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit b742ab18f9)
2025-10-14 11:54:10 -07:00
Lauryn Menard
db0b50089b templates: Add rel-canonical link to documentation pages.
Updates templates/zerver/meta_tags.html to add a rel-canonical
link if REL_CANONICAL_LINK is in the template context dict.

We add REL_CANONICAL_LINK to the documentation context for the
help center, API and integrations documentation pages in all
cases.

For policies documentation pages, we add REL_CANONICAL_LINK to
the context only when settings.CORPORATE_ENABLED is true, so
that self-hosted servers' policies documentation do not have a
rel-canonical link set.
2025-10-06 09:25:59 -07:00
Alex Vandiver
a45878a41a docs: Fix broken link syntax.
(cherry picked from commit 95354366c7)
2025-10-03 16:54:48 -07:00
Anders Kaseorg
1fdeb22132 release-checklist: Prescribe docker build --pull.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 7ebadb5d41)
2025-10-03 16:54:48 -07:00
Evy Kassirer
e7a8e62850 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

(cherry picked from commit 5b0f135497)
2025-10-03 16:54:48 -07:00
Sahil Batra
f9263dfc74 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.

(cherry picked from commit 31f8dcba6c)
2025-10-03 16:54:48 -07:00
Sahil Batra
8da2272250 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.

(cherry picked from commit d8261d4b96)
2025-10-03 16:54:48 -07:00
Aman Agrawal
1770a1a1ef 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.

(cherry picked from commit f2a11c5858)
2025-10-03 16:54:48 -07:00
Karl Stolley
441aff95ba inbox: Correct margin declaration to avoid odd gap.
(cherry picked from commit c21d2918da)
2025-10-03 16:54:48 -07:00
Alex Vandiver
279f3429d5 email_mirror_server: Drop privileges before attaching file handler.
(cherry picked from commit b39188f9cf)
2025-10-03 16:54:48 -07:00
Alex Vandiver
c0ce96a541 email_mirror_server: chown the logfile before dropping privileges.
This prevents the logger from failing due to an old, root-owned,
logfile already existing.

(cherry picked from commit 3064939ff7)
2025-10-03 16:54:48 -07:00
Alex Vandiver
f1e43331b8 docs: Cross-link to the reverse proxy pages.
(cherry picked from commit 3c2ed0e202)
2025-10-03 16:54:48 -07:00
Prakhar Pratyush
6c08bf4560 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.

(cherry picked from commit 03897c42e1)
2025-10-03 16:54:48 -07:00
Aman Agrawal
fb9ed94fdd inbox: Fix user scrolling to top on rerender if filters are focused.
If one of the filters is focused or if we cannot determine the
current focus location, any rerender call will scroll user to
top.

Fixed by only scrolling to top when navigating from other views
and when we don't have a cached scroll position.

Tested by calling `complete_rerender` at 1s intervals.

(cherry picked from commit e3371cfb72)
2025-10-03 16:54:48 -07:00
Lauryn Menard
44c6c4af4d integrations: Update GitLab doc to direct to create webhook.
GitLab has both integrations and webhooks, and our documentation
should direct users to the webhooks set up for integrating with
Zulip.

Adds a link to GitLab's create a webhook documentation as well.

(cherry picked from commit 0af56bb80b)
2025-10-03 16:54:48 -07:00
Karl Stolley
faffdc231d compose: Track when the recipient box has recently had focus.
This helps to prevent an edge case where clicking the
new-topic button, `[+]`, in the left sidebar when the
topic box was already empty caused an unexpected flash
of the *general chat* topic.

(cherry picked from commit 14c51bd0ec)
2025-10-03 16:54:48 -07:00
Karl Stolley
79559e00cc compose: Update conversation arrow after clearing topic.
(cherry picked from commit 52c75b52fb)
2025-10-03 16:54:48 -07:00
Karl Stolley
fd35ec1a8c compose: Correct for undesired outline flash on pills.
(cherry picked from commit a4657a5bd7)
2025-10-03 16:54:48 -07:00
Karl Stolley
e83a27a608 compose: Remove competing transitions.
The transitions here do not work correctly across all
states, and directly interfere or look goofy with the
transitions in the recipient-row area.

Particularly with the removal from #message-content-container,
that had the annoying effect of just delaying the
appearance of the focus border, regardless of whether
focus was established via keyboard or mouse.

(cherry picked from commit 75714bb44f)
2025-10-03 16:54:48 -07:00
Karl Stolley
580f7b59ed compose: Only transition when low-attention row hovered.
Previously, if the mouse cursor were in the vicinity of
the compose box, we'd see transitions even on keyboard
interactions, which should not have been happening.

This also allows instantaneous highlighting for keyboard
users, as well as avoiding any transitions when a
mouse user clicks into a recipient-row element (at
which point the hover transitions will have already
run).

(cherry picked from commit de7419a528)
2025-10-03 16:54:48 -07:00
Karl Stolley
49cc46533f compose: Offset low-attention pill outlines.
(cherry picked from commit 2fce6fa317)
2025-10-03 16:54:48 -07:00
Karl Stolley
30a141eef3 compose: Avoid multiple 'input' handlers on topic box.
It's not good form to register an event handler on a
function that runs fairly frequently--especially one
that stands to override another listener's handler.

(cherry picked from commit 415f7610c9)
2025-10-03 16:54:48 -07:00
Sai
ddf582c6d4 slack: Fix bugs during import of thread messages.
Consider the following messages JSON (taken from real data, redacted):
```json
[
    {
        "subtype": "bot_message",
        "text": "",
        "attachments": [
            {
                "fallback": "Open Slack to cast your vote in this Simple Poll",
                "title": "Should we do a thing?",
                "id": 1,
                "color": "6ecadc",
                "fields": [
                    {
                        "title": "",
                        "value": "1️⃣ Yes 👍\n\n"",
                        "short": false
                    },
                    {
                        "title": "",
                        "value": "2️⃣ No 👎\n\n",
                        "short": false
                    },
                    {
                        "title": "",
                        "value": "3️⃣ Abstain :spock-hand:\n\n",
                        "short": false
                    }
                ],
                "mrkdwn_in": [
                    "fields"
                ]
            },
            {
                "callback_id": "12345678-1234-1234-1234-123456789abc",
                "fallback": "Open Slack to cast your vote in this Simple Poll",
                "id": 2,
                "color": "6ecadc",
                "actions": [
                    {
                        "id": "1",
                        "name": "vote",
                        "text": "1️⃣",
                        "type": "button",
                        "value": "1",
                        "style": ""
                    },
                    {
                        "id": "2",
                        "name": "vote",
                        "text": "2️⃣",
                        "type": "button",
                        "value": "2",
                        "style": ""
                    },
                    {
                        "id": "3",
                        "name": "vote",
                        "text": "3️⃣",
                        "type": "button",
                        "value": "3",
                        "style": ""
                    },
                    {
                        "id": "4",
                        "name": "delete-v2",
                        "text": "Delete Poll",
                        "type": "button",
                        "value": "",
                        "style": "danger",
                        "confirm": {
                            "text": "Are you sure you want to delete the Poll?",
                            "title": "Delete Poll?",
                            "ok_text": "Yes",
                            "dismiss_text": "No"
                        }
                    }
                ]
            },
            {
                "callback_id": "12345678-1234-1234-1234-123456789abc",
                "fallback": "Open Slack to cast your vote in this Simple Poll",
                "footer": "Simple Poll        <https:\/\/simplepoll.rocks\/dashboard\/redacted\/settings\/|Edit Settings>",
                "id": 3,
                "footer_icon": "https:\/\/simplepoll.rocks\/static\/main\/favicon.png",
                "color": "6ecadc"
            }
        ],
        "type": "message",
        "ts": "1234567890.123456",
        "bot_id": "B1ABCDEF1",
        "thread_ts": "1234567890.123456",
        "reply_count": 1,
        "reply_users_count": 1,
        "latest_reply": "1234567890.765432",
        "reply_users": [
            "U1ABC1234"
        ],
        "replies": [
            {
                "user": "U1ABC1234",
                "ts": "1234567890.765432"
            }
        ],
        "is_locked": false,
        "subscribed": false
    },
    {
        "user": "U1ABC1234",
        "type": "message",
        "ts": "1234567890.765432",
        "text": "Maybe do qux instead",
        "team": "T1AB23456",
        "user_team": "T1AB23456",
        "source_team": "T1AB23456",
        "user_profile": {
            "avatar_hash": "a123456789ab",
            "image_72": "https:\/\/avatars.slack-edge.com\/2017-01-01\/123456789abc_def123456789abcdef12_72.jpg",
            "first_name": "Alice",
            "real_name": "Alice Smith",
            "display_name": "a.smith",
            "team": "T1AB23456",
            "name": "a.smith",
            "is_restricted": false,
            "is_ultra_restricted": false
        },
        "thread_ts": "1234567890.123456",
        "blocks": [
            {
                "type": "rich_text",
                "block_id": "EoBdt",
                "elements": [
                    {
                        "type": "rich_text_section",
                        "elements": [
                            {
                                "type": "text",
                                "text": "Maybe do qux instead"
                            }
                        ]
                    }
                ]
            }
        ]
    }
]
```

533f177175/zerver/data_import/slack.py (L922-L924)
fails for the first message, because it lacks a 'user' key. It should fall back to the bot_id.

533f177175/zerver/data_import/slack.py (L925-L926)
fails for the second message, because it lacks a 'parent_user_id' key.
However, the thread root will have been processed earlier, so
memoization of thread parents fixes this issue. Because the original
message may not be in the same file, the memoization needs to be global
rather than in `channel_message_to_zerver_message`.

(cherry picked from commit eaa2ece4e1)
2025-10-03 16:54:48 -07:00
Alex Vandiver
fed5894cf2 version: Update version after 11.2 release. 2025-09-16 14:13:04 +00:00
Alex Vandiver
692a25ce9a Release Zulip Server 11.2. 11.2 2025-09-16 13:46:22 +00:00
Anders Kaseorg
cec6a9af4e starlight_help: Downgrade sharp to the version Astro expects.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 473c8fa81a)
2025-09-15 15:50:22 +00:00
Alex Vandiver
1efc762dfb update_subscriber_counts: Fix calling without any flags.
(cherry picked from commit 8c37e9c7a6)
2025-09-15 15:12:59 +00:00
Alex Vandiver
25c066eb41 version: Update version after 11.1 release. 2025-09-11 18:41:06 +00:00
Alex Vandiver
f36bdd7933 Release Zulip Server 11.1. 11.1 2025-09-11 18:11:06 +00:00
Alex Vandiver
3f4497a373 puppet: Add options for allow/deny rules in Smokescreen.
Fixes: #20490
(cherry picked from commit 4739c4b057)
2025-09-11 11:13:48 -04:00
Alex Vandiver
9ece37d925 puppet: Add a daily cron job to re-sync subscriber counts.
Default installs will re-examine every stream, since the process is
relatively fast.  Large installs have the option to only examine
streams which have the potential to have changed subscriber counts.

(cherry picked from commit 94a0f02acc)
2025-09-11 11:10:52 -04:00
Alex Vandiver
23de6ae1dd update_subscriber_counts: Add tool to re-sync subscriber counts.
(cherry picked from commit f915498e48)
2025-09-11 11:10:52 -04:00
Anders Kaseorg
0d253b0989 requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 7a8b340ad2)
2025-09-10 14:50:32 -07:00
Anders Kaseorg
5963e5c6a5 install-uv: Upgrade uv from 0.7.21 to 0.8.10.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 26dc355bf5)
2025-09-10 14:50:32 -07:00
Alya Abbott
6735f23cbb help: Add more links to self-hosted export instructions.
(cherry picked from commit 6027344ad5)
2025-09-10 12:09:57 -07:00
Alex Vandiver
b3919c433d sentry: Use TornadoIntegration when running under Tornado.
The DjangoIntegration is explicitly disabled, because it attempts to
hook into the request handling in a way which is not compatible with
Tornado, and leaks event handlers.

(cherry picked from commit 70b709494c)
2025-09-10 12:09:57 -07:00
Alex Vandiver
c4d3547ddf settings: Derive RUNNING_INSIDE_TORNADO based on sys.argv.
This allows it to be used at application startup time.

(cherry picked from commit 169daa31a0)
2025-09-10 12:09:57 -07:00
Alex Vandiver
18b800fbfc run-dev: Let Sentry be enabled, if configured.
It was being automatically forced off by dint of being run with a TTY
still attached to STDIN.  `./manage.py rundjangoserver` was
unaffected, as it does not descend from ZulipBaseCommand.

(cherry picked from commit 8bb0768c4b)
2025-09-10 12:09:57 -07:00
Karl Stolley
651df27e04 search_pills: Increase opacity in dark mode.
(cherry picked from commit 8022e26ed4)
2025-09-10 12:09:57 -07:00
Evy Kassirer
75917a9019 subscription_info: Improve subscriber fetch preformance.
Discussed here:
https://chat.zulip.org/#narrow/channel/141-kandra-ops/topic/partial.20subscribers.20query.20does.20users.20sequential.20scan/near/2255421

(cherry picked from commit 31505e90f7)
2025-09-10 12:09:57 -07:00
Alex Vandiver
6d89cd7135 docs: Document Tornado sharding configurations.
(cherry picked from commit 530685a597)
2025-09-10 12:09:57 -07:00
Alex Vandiver
7c8af81075 sync-translations: Provide more framework to updating to/from Weblate.
(cherry picked from commit b8b9444023)
2025-09-10 12:09:57 -07:00
Lauryn Menard
cf5c77d8a5 test-subs: Make new channel name consistent in notification bot test.
Updates final check in test_notification_bot_dm_on_subscription to
use the same pattern for the new channel name, and adds a comment
to clarify what that final check is for since it doesn't look at
the Notification Bot DM or channel messages for that case.

(cherry picked from commit 1030f41884)
2025-09-10 12:09:57 -07:00
Lauryn Menard
b1b5b66bf6 test-subs: Fix comment in test_notification_bot_dm_on_subscription.
(cherry picked from commit 14581de0de)
2025-09-10 12:09:57 -07:00
Aman Agrawal
55bd5c0aeb inbox: Remove empty space below filters for hidden folders.
Hidden folders occupied space due to bottom margin.

Fixed by moving the margin to elements which have `display: none`
property so that margin is removed.

(cherry picked from commit 39b560e611)
2025-09-10 12:09:57 -07:00
Prakhar Pratyush
2d203f1743 api_docs: Fix 500 error on /api/register-remote-push-device.
`settings.ZULIP_SERVICES_URL` is used to construct curl
example for `/api/register-remote-push-device`.

On zulip cloud `settings.ZULIP_SERVICES_URL=None`, it resulted
in 500 error on visiting that page.

This commit fixes the bug by using "https://push.zulipchat.com"
as the default value if `settings.ZULIP_SERVICES_URL=None`.

The doc already mentions that the endpoint is meant to be used
by self-hosted servers, so the default value makes sense if
ZULIP_SERVICES_URL=None.

(cherry picked from commit 271aba001c)
2025-09-10 12:09:57 -07:00
Alex Vandiver
90fb8c5c9a i18n: Updated .po files for new strings. 2025-09-08 12:39:00 -04:00
Hosted Weblate
fa2034203e i18n: Sync translations from Weblate. 2025-09-08 12:39:00 -04:00