Commit Graph

749 Commits

Author SHA1 Message Date
Anders Kaseorg
202b6735ee provision: Install Java ≥ 17.
This is required by vnu-jar now.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-13 14:20:32 -07:00
Aman Agrawal
467b4047b8 provision: Add Fedora 44 support.
Fedora 44 ships Postgres 17 in PGDG and shares Fedora 43's package
list, so support is just a matter of accepting the new version in
the provision check.
2026-05-06 07:34:15 +05:30
Sachin Kumar
2d44200fc7 provision: Add native support for GitHub Codespaces.
This automates backend provisioning, fixes RabbitMQ hostname resolution,
grants PostgreSQL passwordless sudo, and explicitly forwards only the
required web port (9991).
2026-04-26 22:28:01 -07:00
Aman Agrawal
75afa9c055 provision: Replace Fedora 38 support with Fedora 43.
Fedora 38 reached end of life upstream; replace it with Fedora 43,
which ships dnf5 and a recent enough groonga to skip the source
build. Concretely, to make `tools/provision` run cleanly on
Fedora 43:

* dnf5 (Fedora 41+) dropped the `groupinstall` alias and no longer
  resolves the "Development Tools" display name, so switch the
  Fedora branch of `setup-yum-repo` to
  `dnf group install development-tools` (by group ID). Move the
  existing CentOS/RHEL `groupinstall` calls into their own branches
  so they keep working on yum/dnf4.

* Map Fedora 43 to PostgreSQL 17, and add `groonga-devel`,
  `xxhash-devel`, `meson`, and `redhat-rpm-config` to the Fedora
  package list. PGroonga 4.0.6 switched its build system to meson;
  on Fedora, PostgreSQL's `pg_config` exports CFLAGS containing
  `-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1` and
  `-specs=.../redhat-annobin-cc1`, and without `redhat-rpm-config`
  the PGroonga build fails with "cannot read spec file".
  `xxhash-devel` is required because `xxhash-libs` is often pulled
  in transitively (by blosc2, pyarrow, etc.) without its headers,
  in which case meson detects libxxhash via pkg-config and skips
  the vendored fallback that would otherwise build it from source.

* Use the packaged groonga from Fedora's main repo (15.0.4 on
  Fedora 43, satisfying PGroonga 4.0.6's >= 14.1.0 requirement)
  instead of compiling groonga from source. This removes the only
  remaining caller of `scripts/lib/build-groonga` and the
  BUILD_GROONGA_FROM_SOURCE plumbing in provision.py, which the
  prior Fedora 38 path was the only user of.

Verified end-to-end on a Fedora 43 host and in a fresh fedora:43
podman container: setup-yum-repo, the package install, and the
PGroonga source build against the system groonga all complete
cleanly.
2026-04-25 22:27:34 -07:00
Anders Kaseorg
cf386e43a0 Vagrantfile: Share the checkout at the host’s path.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-23 09:18:20 -07:00
Anders Kaseorg
34ed22a117 install: Support Ubuntu 26.04.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-22 22:00:04 -07:00
Anders Kaseorg
cc3d4b6459 build-pgroonga: Upgrade PGroonga from 4.0.1 to 4.0.6.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-22 22:00:04 -07:00
apoorvapendse
5c7adf65d1 gifs: Introduce KLIPY as a GIF provider.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2026-04-11 22:51:27 -05:00
Anders Kaseorg
d282ef3e64 provision: Use uv sync --no-managed-python.
This is the default, but if we ever want to switch to uv’s managed
Python later, it will be necessary to have this earlier to stop uv
from keeping it after checking out an earlier branch.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-03-25 04:05:47 -07:00
The Dance
54ce6751ea video_calls: Add Nextcloud Talk as a video call provider.
This adds Nextcloud Talk as video call provider option. The implementation
creates public Nextcloud Talk conversations (roomType=3) via a new
/json/calls/nextcloud_talk/create endpoint that allow guest access without
requiring Nextcloud accounts.

It includes backend changes, frontend changes, testing and documentation.

Fixes #24439.

Co-authored-by: Niloth P <20315308+Niloth-p@users.noreply.github.com>
2026-02-16 20:11:36 -08:00
Vijay Hiremath
58d43d1608 apps: Prefer Intel macOS download when amd64 architecture is detected
Use navigator.userAgentData on supported browsers to detect macOS
architecture and highlight the appropriate download. When architecture
detection is unavailable or fails, fall back to showing both downloads
without preference.

Fixes #34357
2026-02-13 09:44:29 -08:00
Fatih Sözüer
1f4db3cbba video-calls: Add Constructor Groups video call integration.
Fixes #35623.
2026-02-11 16:04:38 -08:00
Anders Kaseorg
7cd303c9db scripts: Replace parse_os_release with platform.freedesktop_os_release.
This is available in Python ≥ 3.10.

https://docs.python.org/3/library/platform.html#platform.freedesktop_os_release

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-02-10 13:38:28 -08:00
Anders Kaseorg
700a4222ee ruff: Fix RUF060 Unnecessary membership test on empty collection.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-02-04 09:37:50 -08:00
Anders Kaseorg
0c1224c228 ruff: Fix FURB171 Membership test against single-item container.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-02-04 09:37:49 -08:00
Nithyaraj Mudhaliyar
7cd7e3dc24 topic_list: Add is:followed filter to left sidebar.
Add support for filtering topics by is:followed. The negative
filter -is:followed is supported manually but excluded from
typeahead suggestions as a rare use case.

Refactor filter_topics_by_search_term to require stream_id
to check topic state, and update all callers and tests to pass
the correct ID.Remove the check that prevented the topic filter
input from appearing when a stream had no resolved topics,
ensuring the new filter is always accessible.

Fixes part of #36878.
2026-02-03 14:59:59 -08:00
Niloth P
8b714ba56b integrations: Delete the Pivotal webhook integration.
Pivotal has reached EOL on April 30, 2025.
2026-01-28 11:22:32 -08:00
Shubham Padia
b3acaf8075 ui_init: Show unsupported browser warning on load.
We are using browserslist-useragent-regexp to build a regex to compare
our user agents against. This regex is generated and stored in
web/generated and is generated on every provision. This will remain
mostly unchanged since .browserlistrc is not a frequently modified file.
Still, we run it on every provision since we don't have a good mechanism
to detect changes in that list. We can look into that in a followup PR.

In terms of chosing the library, the regexp library is the current
recommendation browserslist github. Another library called
browserslist-useragent exists but it is not actively being worked upon
and is slower as well:
https://gist.github.com/dangreen/55c41072d8891efd3a772a4739d6cd9d

In terms of which browsers to flag as unsupported, we don't flag any
browsers that are not part of >=0 % query of browserslist. If they are
part of >= 0 %, but not part of `baseline widely available with
downstream`, we flag the browser as unsupported.

We also allow higher versions while generating the regex, so if our
regex is outdated a little bit, users with newer browsers don't get the
unsupported browser warning.
2026-01-12 16:34:54 -08:00
Anders Kaseorg
160785b155 templates: Add {{#list_each}} helper.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-01-12 12:11:11 -08:00
Niloth P
dc60033cca custom-profile-fields: Add new default external accounts.
Codeberg does not have a corresponding FontAwesome icon.
TikTok, Threads, Bluesky, Mastodon, and Discord icons are only available
in FontAwesome 6.

Fixes #36461.
2026-01-05 17:17:20 -08:00
Anders Kaseorg
97600d8499 template_parser: Fix Handlebars comment parsing.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-01-04 09:05:33 -08:00
apoorvapendse
849e3ea510 gifs: Introduce the Tenor GIF picker.
This adds the new Tenor GIF picker in Zulip.

In case both the API keys and other credentials
for Tenor and GIPHY integrations are set, we
show the Tenor picker instead of the GIPHY picker
instead of showing two GIF picker buttons.

We currently use a hardcoded content filter
for Tenor.
The eventual goal with this is to use the existing
ids for the ratings of both integrations in
`realm_giphy_rating` as a common rating for GIFs.

Discussion: https://chat.zulip.org/#narrow/channel/101-design/topic/GIF.20picker.20service/near/2306084

Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-12-12 12:13:48 -08:00
Anders Kaseorg
649f794d5b provision: Catch mistaken extra installations of tools in user's home.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-12-03 13:16:26 -08:00
Pratik Chanda
ade60f2571 info_overlays: Use internationalized strings for message_formatting tab.
This commit changes all user facing strings to internationalized
strings in message formatting tab in info overlays.

Fixes: zulip#22875.
2025-11-13 15:58:51 -08:00
Pratik Chanda
5e33f21af8 info_overlay: Use internationalized strings in keyboard shortcut tab.
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 CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (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:trixie, , Debian 13 production install, trixie) (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
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
This commit internationalizes the strings between the keys in the
right half of the keyboard shortcut tab in info_overlay.

Fixes part of #22875.
2025-10-01 16:54:12 -07:00
PieterCK
1400ad7307 template_parser: Fix f-string not formatted. 2025-10-01 11:12:44 -04:00
Shubham Padia
3b6d8de815 help: Rename --help-center to --help-center-static-build for run-dev.
Having it name --help-center made it sound like it was the default mode.
The new name reflects that option more accurately.
2025-09-26 11:18:26 -07:00
Shubham Padia
468a7a82dd help: Do not treat Help Center as a proper noun.
Fixes https://chat.zulip.org/#narrow/channel/101-design/topic/help.20center.20capitalization
2025-09-17 13:20:25 -07:00
Anders Kaseorg
40a022dcc3 zephyr: Remove Zephyr mirroring support.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-09-16 11:18:18 -07:00
Anders Kaseorg
8691c11933 template_parser: Check for invalid combinations of HTML elements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-09-10 09:57:56 -07:00
Shubham Padia
03c73c28cd banners: Capitalise desktop in insecure-desktop-app intent and message. 2025-09-03 17:36:25 -07:00
Shubham Padia
a766c092fc help: Restore broken link checks for help center documentation.
We add a step to build help center and then test the broken links as we
used to before removing the test temporarily.

This commit focuses on just adding back the broken link checks for the
help center. We skip the fragment check since that is in-built in
starlight and starlight tests account for that already. For the image
check we can add it back in a followup issue.
2025-09-03 09:28:15 -07:00
apoorvapendse
3188d9db31 tools: Enforce '_html' suffix for unescaped hbs vars.
This adds a check to enforce the new convention of
raw HTML variables having a `_html` suffix for
better clarity.

Discussion: https://chat.zulip.org/#narrow/channel/92-learning/topic/Marking.20commits.20to.20be.20squashed.20in.20PRs
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-08-28 17:33:20 -07:00
apoorvapendse
a935866601 tools: Fix out-of-bounds error for get_handlebars_tag.
This might lead to errors in case we don't always have
a newline as the last character of a template.

Discussion: https://chat.zulip.org/#narrow/channel/6-frontend/topic/Add.20linter.20rule.20to.20denote.20HTML.20string.20in.20template/near/2240213
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2025-08-28 17:33:20 -07:00
Anders Kaseorg
ff15d746c3 install: Support Debian 13.
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2025-08-13 14:11:05 -07:00
Saubhagya Patel
bb5c87e306 bots: Add a setting to customize the Welcome Bot message.
This commit includes the following changes:
- Add an administrator setting to customize the Welcome Bot
message when sending an invitation.
- Add an API endpoint to test the customized Welcome Bot message
by sending a copy of the message to the administrator.

Fixes #27663.

Co-authored-by: Akarsh Jain <akarsh.jain.790@gmail.com>
2025-08-08 18:59:37 -07:00
Maneesh Shukla
6e43d34a34 topic-filter: Replace usage of search_pill.
Add topic_filter_pill to use for topic filtering instead of search_pill.

Fixes part of #35284.
2025-08-08 14:29:22 -07:00
Alex Vandiver
f22680da31 i18n: Update tooling from Transifex to Weblate. 2025-07-16 19:59:20 -07:00
Kislay Verma
e6dabb4ef4 compose_paste: Convert large pasted text into uploaded text file.
When pasting a long piece of text into the compose box (or
message edit textarea), we show a banner giving an option to
put the text into a file and upload it.

The banner is only shown if the text is larger than
`MINIMUM_PASTE_SIZE_FOR_FILE_TREATMENT`.

If the user chooses to "convert to file", the textarea content is
restored to its state before pasting and a file with the pasted
content is uploaded. The banner is hidden as soon as any change is
made to the textarea content to avoid inconsistent state and
confusion.

Fixes #33107.

Co-authored-by: Aditya Chaudhary <aditya.chaudhary1558@gmail.com>
2025-07-08 18:58:03 -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
Aman Agrawal
136c0f1c44 registration: Enable import from slack using realm registration form.
Co-authored-by: Alex Vandiver <alexmv@zulip.com>
Co-authored-by: Tim Abbott <tabbott@zulip.com>
2025-05-14 13:24:38 -07:00
Niloth P
b2910aa05c integration-docs: Migrate PythonAPIIntegration docs.
To zulip/python-zulip-api, to keep them closer to their source code.

- Renamed the generate_zulip_bots_static_files to
generate_bots_integrations_static_files to accomodate the new function.
- Added a new function to
tools/setup/generate_bots_integrations_static_files to copy the
integration docs into static/generated/integrations.
- Updated integrations.py and computed_settings.py to use the new doc
paths.
- Deleted the affected integration docs.
- Updated the dependency URL.
2025-03-26 11:19:31 -07:00
Anders Kaseorg
ce81d8498d provision: Ignore Python warnings while building requirements.
Build warnings are unfortunately very common in third-party packages.
They’re difficult to reliably detect since packages don’t always build
from source, and they can’t be whitelisted on a per-package basis
since they’re all attributed to setuptools or an anonymous code
string.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-03-19 17:15:09 -07:00
Niloth P
ec04aaf797 integrations-url-modal: Add URL parameter for filtering by branches.
Use the config option "branches" to enable the UI for filtering
branches.

Fixes: #33736.
2025-03-05 10:39:13 -08:00
Sahil Batra
d29ac45b99 streams: Remove unused code for can_add_subscribers_group label.
Text shown in parentheses with label for can_add_subscribers_group
was removed in befe49c293.
2025-02-25 13:17:15 -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
Anders Kaseorg
d7556b4060 requirements: Migrate to uv.
https://docs.astral.sh/uv/

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2025-02-24 22:29:24 -08:00
Aman Agrawal
2f5aea6604 message_summary: Add setting to put a monthly rate limit per user. 2025-02-06 12:03:24 -08:00
Shubham Padia
2fdb4fe53c stream: Add conditional note to can_add_subscribers_group.
Fixes #33156.
If the stream is set to on the private settings for privacy, we add a
parenthesis text `must be subscribed`.
We had to use JS to change the string since just having a conditional in
the handlebars template would not ensure that the parenthesis text
appears or disappears on changing the value.
2025-01-23 15:57:16 -08:00
Shubham Padia
82c04ebe9e stream_types: Add admin permissions note below advanced configurations.
We've also removed the label_parens_text of `in addition to organization
administrators` wherever applicable.
2025-01-23 15:57:16 -08:00